(R1_REG 1)
(R2_REG 2)
(R3_REG 3)
+ (R4_REG 4)
+
+ (R9_REG 9)
(R10_REG 10)
+
(R12_REG 12)
+
+ (R15_REG 15)
+ (R16_REG 16)
+
+ (R25_REG 25)
(SP_REG 28)
- (ILINK1_REGNUM 29)
- (ILINK2_REGNUM 30)
+ (ILINK1_REG 29)
+ (ILINK2_REG 30)
+ (R30_REG 30)
(RETURN_ADDR_REGNUM 31)
+ (R32_REG 32)
+ (R40_REG 40)
+ (R41_REG 41)
+ (R42_REG 42)
+ (R43_REG 43)
+ (R44_REG 44)
+ (R57_REG 57)
(MUL64_OUT_REG 58)
(MUL32x16_REG 56)
(ARCV2_ACC 58)
+ (R59_REG 59)
(LP_COUNT 60)
(CC_REG 61)
+ (PCL_REG 63)
(LP_START 144)
(LP_END 145)
]
; The iscompact attribute allows the epilogue expander to know for which
; insns it should lengthen the return insn.
(define_insn "*movqi_insn"
- [(set (match_operand:QI 0 "move_dest_operand" "=Rcq,Rcq#q, w,Rcq#q, h,w*l,w*l,???w,h,w*l,Rcq, S,!*x, r,r, Ucm,m,???m, m,Usc")
- (match_operand:QI 1 "move_src_operand" " cL, cP,Rcq#q, P,hCm1, cL, I,?Rac,i, ?i, T,Rcq,Usd,Ucm,m,?Rac,c,?Rac,Cm3,i"))]
+ [(set (match_operand:QI 0 "move_dest_operand" "=Rcq,Rcq#q, w,Rcq#q, h, w, w,???w,h, w,Rcq, S,!*x, r,r, Ucm,m,???m, m,Usc")
+ (match_operand:QI 1 "move_src_operand" " cL, cP,Rcq#q, P,hCm1,cL, I,?Rac,i,?i, T,Rcq,Usd,Ucm,m,?Rac,c,?Rac,Cm3,i"))]
"register_operand (operands[0], QImode)
|| register_operand (operands[1], QImode)"
"@
"if (prepare_move_operands (operands, HImode)) DONE;")
(define_insn "*movhi_insn"
- [(set (match_operand:HI 0 "move_dest_operand" "=Rcq,Rcq#q, w,Rcq#q, h,w*l,w*l,???w,Rcq#q,h,w*l,Rcq, S, r,r, Ucm,m,???m, m,VUsc")
- (match_operand:HI 1 "move_src_operand" " cL, cP,Rcq#q, P,hCm1, cL, I,?Rac, i,i, ?i, T,Rcq,Ucm,m,?Rac,c,?Rac,Cm3,i"))]
+ [(set (match_operand:HI 0 "move_dest_operand" "=Rcq,Rcq#q, w,Rcq#q, h, w, w,???w,Rcq#q,h, w,Rcq, S, r,r, Ucm,m,???m, m,VUsc")
+ (match_operand:HI 1 "move_src_operand" " cL, cP,Rcq#q, P,hCm1,cL, I,?Rac, i,i,?i, T,Rcq,Ucm,m,?Rac,c,?Rac,Cm3,i"))]
"register_operand (operands[0], HImode)
|| register_operand (operands[1], HImode)
|| (CONSTANT_P (operands[1])
; the iscompact attribute allows the epilogue expander to know for which
; insns it should lengthen the return insn.
; N.B. operand 1 of alternative 7 expands into pcl,symbol@gotpc .
-(define_insn "*movsi_insn" ; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
- [(set (match_operand:SI 0 "move_dest_operand" "=Rcq,Rcq#q, w,Rcq#q, h,w*l,w*l, w, w, w, w, ???w, ?w, w,Rcq#q, h, w*l,Rcq, S, Us<,RcqRck,!*x, r,!*Rsd,!*Rcd,r,Ucm, Usd,m,???m, m,VUsc")
- (match_operand:SI 1 "move_src_operand" " cL, cP,Rcq#q, P,hCm1, cL, I,Crr,Clo,Chi,Cbi,?Rac*l,Cpc,Clb, ?Cal,Cal,?Cal,Uts,Rcq,RcqRck, Us>,Usd,Ucm, Usd, Ucd,m, w,!*Rzd,c,?Rac,Cm3, C32"))]
+(define_insn "*movsi_insn" ; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
+ [(set (match_operand:SI 0 "move_dest_operand" "=Rcq,Rcq#q, w,Rcq#q, h,wl, w, w, w, w, w,???w, ?w, w,Rcq#q, h, wl,Rcq, S, Us<,RcqRck,!*x, r,!*Rsd,!*Rcd,r,Ucm, Usd,m,???m, m,VUsc")
+ (match_operand:SI 1 "move_src_operand" " cL, cP,Rcq#q, P,hCm1,cL, I,Crr,Clo,Chi,Cbi,?Rac,Cpc,Clb, ?Cal,Cal,?Cal,Uts,Rcq,RcqRck, Us>,Usd,Ucm, Usd, Ucd,m, w,!*Rzd,c,?Rac,Cm3, C32"))]
"register_operand (operands[0], SImode)
|| register_operand (operands[1], SImode)
|| (CONSTANT_P (operands[1])
})
(define_insn "arc_lp"
- [(unspec:SI [(match_operand:SI 0 "register_operand" "l")]
+ [(unspec:SI [(reg:SI LP_COUNT)]
UNSPEC_ARC_LP)
- (use (label_ref (match_operand 1 "" "")))
- (use (label_ref (match_operand 2 "" "")))]
+ (use (label_ref (match_operand 0 "" "")))
+ (use (label_ref (match_operand 1 "" "")))]
""
- "lp\\t@%l2\\t; %0:@%l1->@%l2"
+ "lp\\t@%l1\\t; lp_count:@%l0->@%l1"
[(set_attr "type" "loop_setup")
(set_attr "length" "4")])
;; register, instead of going to memory.
(define_insn "loop_end"
[(set (pc)
- (if_then_else (ne (match_operand:SI 2 "nonimmediate_operand" "0,0")
+ (if_then_else (ne (match_operand:SI 2 "nonimmediate_operand" "0,m")
(const_int 1))
(label_ref (match_operand 1 "" ""))
(pc)))
- (set (match_operand:SI 0 "nonimmediate_operand" "=l!r,m")
+ (set (match_operand:SI 0 "nonimmediate_operand" "=r,m")
(plus (match_dup 2) (const_int -1)))
(unspec [(const_int 0)] UNSPEC_ARC_LP)
(clobber (match_scratch:SI 3 "=X,&r"))]
""
- "\\t;%0 %1 %2"
+ "; ZOL_END, begins @%l1"
[(set_attr "length" "0")
(set_attr "predicable" "no")
(set_attr "type" "loop_end")])
(define_insn_and_split "dbnz"
[(set (pc)
(if_then_else
- (ne (plus:SI (match_operand:SI 0 "nonimmediate_operand" "+r!l,m")
+ (ne (plus:SI (match_operand:SI 0 "nonimmediate_operand" "+rl,m")
(const_int -1))
(const_int 0))
(label_ref (match_operand 1 "" ""))
(define_insn "stack_tie"
[(set (mem:BLK (scratch))
- (unspec:BLK [(match_operand:SI 0 "register_operand" "rb")
- (match_operand:SI 1 "register_operand" "rb")]
+ (unspec:BLK [(match_operand:SI 0 "register_operand" "r")
+ (match_operand:SI 1 "register_operand" "r")]
UNSPEC_ARC_STKTIE))]
""
""