对应iu的自增操作,需要mem支持相应的pattern模板; 否则attempt_change中的检查会失败
242 (define_memory_constraint "Zmu"
243 ".iu for the scalar load/store instruction"
244 (and (match_code "mem")
245 (match_test("GET_RTX_CLASS (GET_CODE (XEXP (op,0))) == RTX_AUTOINC
246 && (GET_CODE (XEXP (op, 0)) == PRE_INC
247 || GET_CODE (XEXP (op, 0)) == PRE_DEC
248 || GET_CODE (XEXP (op, 0))== PRE_MODIFY)"))))
具体和后端的关联方式;
if (! validate_change (mem_insn.insn, mem_insn.mem_loc, new_mem, 0))
{
if (dump_file)
fprintf (dump_file, "validation failure\n");
return false;
}
公共代码不需要做调整%G0
@@ -974,8 +974,8 @@
;; L16U* and L16S* diff from the original meaning of intrinsics ??
(define_insn "movhi_internal"
+ [(set (match_operand:HI 0 "hidsp_move_operand" "=r,r,r,r,r,Zmu,Zms")
+ (match_operand:HI 1 "move_operand" "r,I,i,Zml,Zmn,r,r"))]
"hidsp_valid_move (HImode, operands)"
"@
or@%.\t\t%0, %1, %1
+ s16%G0@ags\t%1, %0
s16%G0@ags\t%1, %0"