)
(define_insn "movqi_topbyte"
- [(set (match_operand:QI 0 "msp430_nonimmediate_operand" "=r")
+ [(set (match_operand:QI 0 "msp430_general_dst_operand" "=r")
(subreg:QI (match_operand:PSI 1 "msp430_general_operand" "r") 2))]
"msp430x"
"PUSHM.A\t#1,%1 { POPM.W\t#1,%0 { POPM.W\t#1,%0"
)
(define_insn "movqi"
- [(set (match_operand:QI 0 "msp430_nonimmediate_operand" "=rYsYx,rm")
+ [(set (match_operand:QI 0 "msp430_general_dst_operand" "=rYsYx,rm")
(match_operand:QI 1 "msp430_general_operand" "riYsYx,rmi"))]
""
"@
)
(define_insn "movhi"
- [(set (match_operand:HI 0 "msp430_nonimmediate_operand" "=r,rYsYx,rm")
+ [(set (match_operand:HI 0 "msp430_general_dst_operand" "=r,rYsYx,rm")
(match_operand:HI 1 "msp430_general_operand" "N,riYsYx,rmi"))]
""
"@
)
(define_expand "movsi"
- [(set (match_operand:SI 0 "nonimmediate_operand")
+ [(set (match_operand:SI 0 "msp430_general_dst_nonv_operand")
(match_operand:SI 1 "general_operand"))]
""
""
)
(define_insn_and_split "movsi_s"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=rm")
+ [(set (match_operand:SI 0 "msp430_general_dst_nonv_operand" "=rm")
(subreg:SI (match_operand:PSI 1 "msp430_symbol_operand" "i") 0))]
""
""
"reload_completed"
- [(set (match_operand:HI 2 "nonimmediate_operand")
+ [(set (match_operand:HI 2 "msp430_general_dst_nonv_operand")
(match_operand:HI 4 "general_operand"))
- (set (match_operand:HI 3 "nonimmediate_operand")
+ (set (match_operand:HI 3 "msp430_general_dst_nonv_operand")
(match_operand:HI 5 "general_operand"))]
"msp430_split_movsi (operands);"
)
(define_insn_and_split "movsi_x"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=rm")
+ [(set (match_operand:SI 0 "msp430_general_dst_nonv_operand" "=rm")
(match_operand:SI 1 "general_operand" "rmi"))]
""
"#"
"reload_completed"
- [(set (match_operand:HI 2 "nonimmediate_operand")
+ [(set (match_operand:HI 2 "msp430_general_dst_nonv_operand")
(match_operand:HI 4 "general_operand"))
- (set (match_operand:HI 3 "nonimmediate_operand")
+ (set (match_operand:HI 3 "msp430_general_dst_nonv_operand")
(match_operand:HI 5 "general_operand"))]
"msp430_split_movsi (operands);"
)
;; FIXME: Some MOVX.A cases can be done with MOVA, this is only a few of them.
(define_insn "movpsi"
- [(set (match_operand:PSI 0 "msp430_nonimmediate_operand" "=r,r,r,Ya,rm")
+ [(set (match_operand:PSI 0 "msp430_general_dst_operand" "=r,r,r,Ya,rm")
(match_operand:PSI 1 "msp430_general_operand" "N,O,riYa,r,rmi"))]
""
"@
;; Math
(define_insn "addpsi3"
- [(set (match_operand:PSI 0 "msp430_nonimmediate_operand" "=r,rm")
- (plus:PSI (match_operand:PSI 1 "msp430_nonimmediate_operand" "%0,0")
+ [(set (match_operand:PSI 0 "msp430_general_dst_operand" "=r,rm")
+ (plus:PSI (match_operand:PSI 1 "msp430_general_operand" "%0,0")
(match_operand:PSI 2 "msp430_general_operand" "rLs,rmi")))]
""
"@
)
(define_insn "addqi3"
- [(set (match_operand:QI 0 "msp430_nonimmediate_operand" "=rYsYx,rm")
- (plus:QI (match_operand:QI 1 "msp430_nonimmediate_operand" "%0,0")
+ [(set (match_operand:QI 0 "msp430_general_dst_operand" "=rYsYx,rm")
+ (plus:QI (match_operand:QI 1 "msp430_general_operand" "%0,0")
(match_operand:QI 2 "msp430_general_operand" "riYsYx,rmi")))]
""
"@
)
(define_insn "addhi3"
- [(set (match_operand:HI 0 "msp430_nonimmediate_operand" "=rYsYx,rm")
- (plus:HI (match_operand:HI 1 "msp430_nonimmediate_operand" "%0,0")
+ [(set (match_operand:HI 0 "msp430_general_dst_operand" "=rYsYx,rm")
+ (plus:HI (match_operand:HI 1 "msp430_general_operand" "%0,0")
(match_operand:HI 2 "msp430_general_operand" "riYsYx,rmi")))]
""
"@
)
(define_insn "addsi3"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=&rYsYx,rm")
- (plus:SI (match_operand:SI 1 "nonimmediate_operand" "%0,0")
+ [(set (match_operand:SI 0 "msp430_general_dst_nonv_operand" "=&rYsYx,rm")
+ (plus:SI (match_operand:SI 1 "general_operand" "%0,0")
(match_operand:SI 2 "general_operand" "rYsYxi,mi")))]
""
"@
; increased register pressure. Or possibly reload does not handle ADD patterns
; that are not single_set() very well.
+; match_operand 3 is likely to be the same as op2 most of the time - except
+; when op2 is a post_inc and we have stripped the post_inc from match_operand 3
+
(define_insn "addhi3_cy"
- [(set (match_operand:HI 0 "msp430_nonimmediate_operand" "=rYsYx,rm")
- (plus:HI (match_operand:HI 1 "msp430_nonimmediate_operand" "%0,0")
+ [(set (match_operand:HI 0 "msp430_general_dst_operand" "=rYsYx,rm")
+ (plus:HI (match_operand:HI 1 "msp430_general_operand" "%0,0")
(match_operand:HI 2 "msp430_nonimmediate_operand" "rYsYxi,rm")))
(set (reg:BI CARRY)
(truncate:BI (lshiftrt:SI (plus:SI (zero_extend:SI (match_dup 1))
- (zero_extend:SI (match_dup 2)))
+ (zero_extend:SI (match_operand:HI 3 "msp430_nonimmediate_operand" "rYsYxi,rm")))
(const_int 16))))
]
""
)
(define_insn "addhi3_cy_i"
- [(set (match_operand:HI 0 "nonimmediate_operand" "=r,rm")
- (plus:HI (match_operand:HI 1 "nonimmediate_operand" "%0,0")
+ [(set (match_operand:HI 0 "msp430_general_dst_nonv_operand" "=r,rm")
+ (plus:HI (match_operand:HI 1 "general_operand" "%0,0")
(match_operand:HI 2 "immediate_operand" "i,i")))
(set (reg:BI CARRY)
(truncate:BI (lshiftrt:SI (plus:SI (zero_extend:SI (match_dup 1))
; Version of addhi that adds the carry, for SImode adds.
(define_insn "addchi4_cy"
- [(set (match_operand:HI 0 "msp430_nonimmediate_operand" "=rYsYx,rm")
- (plus:HI (plus:HI (match_operand:HI 1 "msp430_nonimmediate_operand" "%0,0")
+ [(set (match_operand:HI 0 "msp430_general_dst_operand" "=rYsYx,rm")
+ (plus:HI (plus:HI (match_operand:HI 1 "msp430_general_operand" "%0,0")
(match_operand:HI 2 "msp430_general_operand" "riYsYx,rmi"))
(zero_extend:HI (reg:BI CARRY))))
]
; Split an SImode add into two HImode adds, keeping track of the carry
; so that gcc knows when it can and can't optimize away the two
; halves.
+; We use the ugly predicate "msp430_nonsubregnonpostinc_or_imm_operand" to
+; enforce the position of a post_inc into op2 if present
(define_split
- [(set (match_operand:SI 0 "msp430_nonsubreg_operand")
- (plus:SI (match_operand:SI 1 "msp430_nonsubreg_operand")
+ [(set (match_operand:SI 0 "msp430_nonsubreg_dst_operand")
+ (plus:SI (match_operand:SI 1 "msp430_nonsubregnonpostinc_or_imm_operand")
(match_operand:SI 2 "msp430_nonsubreg_or_imm_operand")))
]
""
- [(parallel [(set (match_operand:HI 3 "nonimmediate_operand" "=&rm")
+ [(parallel [(set (match_operand:HI 3 "msp430_general_dst_nonv_operand" "=&rm")
(plus:HI (match_dup 4)
(match_dup 5)))
(set (reg:BI CARRY)
(match_dup 9))
(const_int 16))))
])
- (set (match_operand:HI 6 "nonimmediate_operand" "=&rm")
+ (set (match_operand:HI 6 "msp430_general_dst_nonv_operand" "=&rm")
(plus:HI (plus:HI (match_dup 7)
(match_dup 8))
(zero_extend:HI (reg:BI CARRY))))
;; Alternatives 2 and 3 are to handle cases generated by reload.
(define_insn "subpsi3"
- [(set (match_operand:PSI 0 "nonimmediate_operand" "=r, rm, &?r, ?&r")
- (minus:PSI (match_operand:PSI 1 "general_operand" "0, 0, !r, !i")
- (match_operand:PSI 2 "general_operand" "rLs, rmi, rmi, r")))]
+ [(set (match_operand:PSI 0 "msp430_general_dst_nonv_operand" "=r, rm, &?r, ?&r")
+ (minus:PSI (match_operand:PSI 1 "general_operand" "0, 0, !r, !i")
+ (match_operand:PSI 2 "general_operand" "rLs, rmi, rmi, r")))]
""
"@
SUBA\t%2, %0
;; Alternatives 2 and 3 are to handle cases generated by reload.
(define_insn "subqi3"
- [(set (match_operand:QI 0 "nonimmediate_operand" "=rYsYx, rm, &?r, ?&r")
+ [(set (match_operand:QI 0 "msp430_general_dst_nonv_operand" "=rYsYx, rm, &?r, ?&r")
(minus:QI (match_operand:QI 1 "general_operand" "0, 0, !r, !i")
(match_operand:QI 2 "general_operand" " riYsYx, rmi, rmi, r")))]
""
;; Alternatives 2 and 3 are to handle cases generated by reload.
(define_insn "subhi3"
- [(set (match_operand:HI 0 "nonimmediate_operand" "=rYsYx, rm, &?r, ?&r")
+ [(set (match_operand:HI 0 "msp430_general_dst_nonv_operand" "=rYsYx, rm, &?r, ?&r")
(minus:HI (match_operand:HI 1 "general_operand" "0, 0, !r, !i")
(match_operand:HI 2 "general_operand" " riYsYx, rmi, rmi, r")))]
""
)
(define_insn "subsi3"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=&rYsYx,m")
- (minus:SI (match_operand:SI 1 "nonimmediate_operand" "0,0")
+ [(set (match_operand:SI 0 "msp430_general_dst_nonv_operand" "=&rYsYx,m")
+ (minus:SI (match_operand:SI 1 "general_operand" "0,0")
(match_operand:SI 2 "general_operand" "riYsYx,mi")))]
""
"@
)
(define_insn "*bic<mode>_cg"
- [(set (match_operand:QHI 0 "msp430_nonimmediate_operand" "=rYs,m")
+ [(set (match_operand:QHI 0 "msp430_general_dst_operand" "=rYs,m")
(and:QHI (match_operand:QHI 1 "msp430_general_operand" "0,0")
(match_operand 2 "msp430_inv_constgen_operator" "n,n")))]
""
)
(define_insn "bic<mode>3"
- [(set (match_operand:QHI 0 "msp430_nonimmediate_operand" "=rYsYx,rm")
+ [(set (match_operand:QHI 0 "msp430_general_dst_operand" "=rYsYx,rm")
(and:QHI (not:QHI (match_operand:QHI 1 "msp430_general_operand" "rYsYx,rmn"))
- (match_operand:QHI 2 "msp430_nonimmediate_operand" "0,0")))]
+ (match_operand:QHI 2 "msp430_general_operand" "0,0")))]
""
"@
BIC%x0%b0\t%1, %0
)
(define_insn "and<mode>3"
- [(set (match_operand:QHI 0 "msp430_nonimmediate_operand" "=r,rYsYx,rm")
- (and:QHI (match_operand:QHI 1 "msp430_nonimmediate_operand" "%0,0,0")
+ [(set (match_operand:QHI 0 "msp430_general_dst_operand" "=r,rYsYx,rm")
+ (and:QHI (match_operand:QHI 1 "msp430_general_operand" "%0,0,0")
(match_operand:QHI 2 "msp430_general_operand" "N,riYsYx,rmi")))]
""
"@
)
(define_insn "ior<mode>3"
- [(set (match_operand:QHI 0 "msp430_nonimmediate_operand" "=rYsYx,rm")
- (ior:QHI (match_operand:QHI 1 "msp430_nonimmediate_operand" "%0,0")
+ [(set (match_operand:QHI 0 "msp430_general_dst_operand" "=rYsYx,rm")
+ (ior:QHI (match_operand:QHI 1 "msp430_general_operand" "%0,0")
(match_operand:QHI 2 "msp430_general_operand" "riYsYx,rmi")))]
""
"@
)
(define_insn "xor<mode>3"
- [(set (match_operand:QHI 0 "msp430_nonimmediate_operand" "=rYsYx,rm")
- (xor:QHI (match_operand:QHI 1 "msp430_nonimmediate_operand" "%0,0")
+ [(set (match_operand:QHI 0 "msp430_general_dst_operand" "=rYsYx,rm")
+ (xor:QHI (match_operand:QHI 1 "msp430_general_operand" "%0,0")
(match_operand:QHI 2 "msp430_general_operand" "riYsYx,rmi")))]
""
"@
;; Macro : XOR #~0, %0
(define_insn "one_cmpl<mode>2"
- [(set (match_operand:QHI 0 "msp430_nonimmediate_operand" "=rYs,m")
- (not:QHI (match_operand:QHI 1 "msp430_nonimmediate_operand" "0,0")))]
+ [(set (match_operand:QHI 0 "msp430_general_dst_operand" "=rYs,m")
+ (not:QHI (match_operand:QHI 1 "msp430_general_operand" "0,0")))]
""
"@
INV%x0%b0\t%0
)
(define_insn "extendqihi2"
- [(set (match_operand:HI 0 "msp430_nonimmediate_operand" "=rYs,m")
- (sign_extend:HI (match_operand:QI 1 "msp430_nonimmediate_operand" "0,0")))]
+ [(set (match_operand:HI 0 "msp430_general_dst_operand" "=rYs,m")
+ (sign_extend:HI (match_operand:QI 1 "msp430_general_operand" "0,0")))]
""
"@
SXT%X0\t%0
)
(define_insn "zero_extendqihi2"
- [(set (match_operand:HI 0 "msp430_nonimmediate_operand" "=rYs,r,r,m")
- (zero_extend:HI (match_operand:QI 1 "msp430_nonimmediate_operand" "0,rYs,m,0")))]
+ [(set (match_operand:HI 0 "msp430_general_dst_operand" "=rYs,r,r,m")
+ (zero_extend:HI (match_operand:QI 1 "msp430_general_operand" "0,rYs,m,0")))]
""
"@
AND\t#0xff, %0
)
(define_insn "zero_extendhipsi2"
- [(set (match_operand:PSI 0 "msp430_nonimmediate_operand" "=r,m")
- (zero_extend:PSI (match_operand:HI 1 "msp430_nonimmediate_operand" "rm,r")))]
+ [(set (match_operand:PSI 0 "msp430_general_dst_operand" "=r,m")
+ (zero_extend:PSI (match_operand:HI 1 "msp430_general_operand" "rm,r")))]
""
"@
MOVX\t%1, %0
)
(define_insn "truncpsihi2"
- [(set (match_operand:HI 0 "msp430_nonimmediate_operand" "=rm")
+ [(set (match_operand:HI 0 "msp430_general_dst_operand" "=rm")
(truncate:HI (match_operand:PSI 1 "register_operand" "r")))]
""
"MOVX\t%1, %0"
)
(define_insn "extendhisi2"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=r")
+ [(set (match_operand:SI 0 "msp430_general_dst_nonv_operand" "=r")
(sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "r")))]
""
{ return msp430x_extendhisi (operands); }
)
(define_insn "extendhipsi2"
- [(set (match_operand:PSI 0 "nonimmediate_operand" "=r")
- (subreg:PSI (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "0")) 0))]
+ [(set (match_operand:PSI 0 "msp430_general_dst_nonv_operand" "=r")
+ (subreg:PSI (sign_extend:SI (match_operand:HI 1 "general_operand" "0")) 0))]
"msp430x"
"RLAM.A #4, %0 { RRAM.A #4, %0"
)
;; paths.
(define_insn "zero_extendqisi2"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=r")
+ [(set (match_operand:SI 0 "msp430_general_dst_nonv_operand" "=r")
(zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "rm")))]
""
"MOV%X1.B\t%1,%L0 { CLR\t%H0"
)
(define_insn "zero_extendhisi2"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=rm,r")
- (zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "0,r")))]
+ [(set (match_operand:SI 0 "msp430_general_dst_nonv_operand" "=rm,r")
+ (zero_extend:SI (match_operand:HI 1 "general_operand" "0,r")))]
""
"@
MOV%X0.W\t#0,%H0
)
(define_insn "zero_extendhisipsi2"
- [(set (match_operand:PSI 0 "nonimmediate_operand" "=r,r")
- (subreg:PSI (zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "0,r")) 0))]
+ [(set (match_operand:PSI 0 "msp430_general_dst_nonv_operand" "=r,r")
+ (subreg:PSI (zero_extend:SI (match_operand:HI 1 "general_operand" "0,r")) 0))]
"msp430x"
"@
AND.W\t#-1,%0
)
(define_insn "extend_and_shift1_hipsi2"
- [(set (subreg:SI (match_operand:PSI 0 "nonimmediate_operand" "=r") 0)
- (ashift:SI (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "0"))
+ [(set (subreg:SI (match_operand:PSI 0 "msp430_general_dst_nonv_operand" "=r") 0)
+ (ashift:SI (sign_extend:SI (match_operand:HI 1 "general_operand" "0"))
(const_int 1)))]
"msp430x"
"RLAM.A #4, %0 { RRAM.A #3, %0"
)
(define_insn "extend_and_shift2_hipsi2"
- [(set (subreg:SI (match_operand:PSI 0 "nonimmediate_operand" "=r") 0)
- (ashift:SI (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "0"))
+ [(set (subreg:SI (match_operand:PSI 0 "msp430_general_dst_nonv_operand" "=r") 0)
+ (ashift:SI (sign_extend:SI (match_operand:HI 1 "general_operand" "0"))
(const_int 2)))]
"msp430x"
"RLAM.A #4, %0 { RRAM.A #2, %0"
;; signed A << C
(define_expand "ashlhi3"
- [(set (match_operand:HI 0 "nonimmediate_operand")
+ [(set (match_operand:HI 0 "msp430_general_dst_nonv_operand")
(ashift:HI (match_operand:HI 1 "general_operand")
(match_operand:HI 2 "general_operand")))]
""
)
(define_insn "slli_1"
- [(set (match_operand:HI 0 "nonimmediate_operand" "=rm")
+ [(set (match_operand:HI 0 "msp430_general_dst_nonv_operand" "=rm")
(ashift:HI (match_operand:HI 1 "general_operand" "0")
(const_int 1)))]
""
)
(define_insn "slll_1"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=rm")
+ [(set (match_operand:SI 0 "msp430_general_dst_nonv_operand" "=rm")
(ashift:SI (match_operand:SI 1 "general_operand" "0")
(const_int 1)))]
""
)
(define_insn "slll_2"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=rm")
+ [(set (match_operand:SI 0 "msp430_general_dst_nonv_operand" "=rm")
(ashift:SI (match_operand:SI 1 "general_operand" "0")
(const_int 2)))]
""
)
(define_expand "ashlsi3"
- [(set (match_operand:SI 0 "nonimmediate_operand")
+ [(set (match_operand:SI 0 "msp430_general_dst_nonv_operand")
(ashift:SI (match_operand:SI 1 "general_operand")
(match_operand:SI 2 "general_operand")))]
""
)
(define_expand "ashldi3"
- [(set (match_operand:DI 0 "nonimmediate_operand")
+ [(set (match_operand:DI 0 "msp430_general_dst_nonv_operand")
(ashift:DI (match_operand:DI 1 "general_operand")
(match_operand:DI 2 "general_operand")))]
""
;; signed A >> C
(define_expand "ashrhi3"
- [(set (match_operand:HI 0 "nonimmediate_operand")
+ [(set (match_operand:HI 0 "msp430_general_dst_nonv_operand")
(ashiftrt:HI (match_operand:HI 1 "general_operand")
(match_operand:HI 2 "general_operand")))]
""
)
(define_insn "srai_1"
- [(set (match_operand:HI 0 "msp430_nonimmediate_operand" "=rm")
+ [(set (match_operand:HI 0 "msp430_general_dst_operand" "=rm")
(ashiftrt:HI (match_operand:HI 1 "msp430_general_operand" "0")
(const_int 1)))]
""
)
(define_insn "sral_1"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=rm")
+ [(set (match_operand:SI 0 "msp430_general_dst_nonv_operand" "=rm")
(ashiftrt:SI (match_operand:SI 1 "general_operand" "0")
(const_int 1)))]
""
)
(define_insn "sral_2"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=rm")
+ [(set (match_operand:SI 0 "msp430_general_dst_nonv_operand" "=rm")
(ashiftrt:SI (match_operand:SI 1 "general_operand" "0")
(const_int 2)))]
""
)
(define_expand "ashrsi3"
- [(set (match_operand:SI 0 "nonimmediate_operand")
+ [(set (match_operand:SI 0 "msp430_general_dst_nonv_operand")
(ashiftrt:SI (match_operand:SI 1 "general_operand")
(match_operand:SI 2 "general_operand")))]
""
)
(define_expand "ashrdi3"
- [(set (match_operand:DI 0 "nonimmediate_operand")
+ [(set (match_operand:DI 0 "msp430_general_dst_nonv_operand")
(ashift:DI (match_operand:DI 1 "general_operand")
(match_operand:DI 2 "general_operand")))]
""
;; unsigned A >> C
(define_expand "lshrhi3"
- [(set (match_operand:HI 0 "nonimmediate_operand")
+ [(set (match_operand:HI 0 "msp430_general_dst_nonv_operand")
(lshiftrt:HI (match_operand:HI 1 "general_operand")
(match_operand:HI 2 "general_operand")))]
""
)
(define_insn "srli_1"
- [(set (match_operand:HI 0 "nonimmediate_operand" "=rm")
+ [(set (match_operand:HI 0 "msp430_general_dst_nonv_operand" "=rm")
(lshiftrt:HI (match_operand:HI 1 "general_operand" "0")
(const_int 1)))]
""
)
(define_insn "srll_1"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=rm")
+ [(set (match_operand:SI 0 "msp430_general_dst_nonv_operand" "=rm")
(lshiftrt:SI (match_operand:SI 1 "general_operand" "0")
(const_int 1)))]
""
)
(define_insn "srll_2x"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=r")
+ [(set (match_operand:SI 0 "msp430_general_dst_nonv_operand" "=r")
(lshiftrt:SI (match_operand:SI 1 "general_operand" "0")
(const_int 2)))]
"msp430x"
)
(define_expand "lshrsi3"
- [(set (match_operand:SI 0 "nonimmediate_operand")
+ [(set (match_operand:SI 0 "msp430_general_dst_nonv_operand")
(lshiftrt:SI (match_operand:SI 1 "general_operand")
(match_operand:SI 2 "general_operand")))]
""
)
(define_expand "lshrdi3"
- [(set (match_operand:DI 0 "nonimmediate_operand")
+ [(set (match_operand:DI 0 "msp430_general_dst_nonv_operand")
(ashift:DI (match_operand:DI 1 "general_operand")
(match_operand:DI 2 "general_operand")))]
""
(define_insn "*bitbranch<mode>4"
[(set (pc) (if_then_else
- (ne (and:QHI (match_operand:QHI 0 "msp430_nonimmediate_operand" "rYsYx,rm")
+ (ne (and:QHI (match_operand:QHI 0 "msp430_general_dst_operand" "rYsYx,rm")
(match_operand:QHI 1 "msp430_general_operand" "rYsYxi,rmi"))
(const_int 0))
(label_ref (match_operand 2 "" ""))
(define_insn "*bitbranch<mode>4"
[(set (pc) (if_then_else
- (eq (and:QHI (match_operand:QHI 0 "msp430_nonimmediate_operand" "rYsYx,rm")
+ (eq (and:QHI (match_operand:QHI 0 "msp430_general_dst_operand" "rYsYx,rm")
(match_operand:QHI 1 "msp430_general_operand" "rYsYxi,rmi"))
(const_int 0))
(label_ref (match_operand 2 "" ""))
(define_insn "*bitbranch<mode>4"
[(set (pc) (if_then_else
- (eq (and:QHI (match_operand:QHI 0 "msp430_nonimmediate_operand" "rYsYx,rm")
+ (eq (and:QHI (match_operand:QHI 0 "msp430_general_dst_operand" "rYsYx,rm")
(match_operand:QHI 1 "msp430_general_operand" "rYsYxi,rmi"))
(const_int 0))
(pc)
(define_insn "*bitbranch<mode>4"
[(set (pc) (if_then_else
- (ne (and:QHI (match_operand:QHI 0 "msp430_nonimmediate_operand" "rYsYx,rm")
+ (ne (and:QHI (match_operand:QHI 0 "msp430_general_dst_operand" "rYsYx,rm")
(match_operand:QHI 1 "msp430_general_operand" "rYsYxi,rmi"))
(const_int 0))
(pc)
(define_insn "*bitbranch<mode>4_z"
[(set (pc) (if_then_else
- (ne (zero_extract:HI (match_operand:QHI 0 "msp430_nonimmediate_operand" "rYs,rm")
+ (ne (zero_extract:HI (match_operand:QHI 0 "msp430_general_dst_operand" "rYs,rm")
(const_int 1)
(match_operand 1 "msp430_bitpos" "i,i"))
(const_int 0))
(define_insn "*bitbranch<mode>4_z"
[(set (pc) (if_then_else
- (eq (zero_extract:HI (match_operand:QHI 0 "msp430_nonimmediate_operand" "rm")
+ (eq (zero_extract:HI (match_operand:QHI 0 "msp430_general_dst_operand" "rm")
(const_int 1)
(match_operand 1 "msp430_bitpos" "i"))
(const_int 0))
(define_insn "*bitbranch<mode>4_z"
[(set (pc) (if_then_else
- (eq (zero_extract:HI (match_operand:QHI 0 "msp430_nonimmediate_operand" "rm")
+ (eq (zero_extract:HI (match_operand:QHI 0 "msp430_general_dst_operand" "rm")
(const_int 1)
(match_operand 1 "msp430_bitpos" "i"))
(const_int 0))
(define_insn "*bitbranch<mode>4_z"
[(set (pc) (if_then_else
- (ne (zero_extract:HI (match_operand:QHI 0 "msp430_nonimmediate_operand" "rm")
+ (ne (zero_extract:HI (match_operand:QHI 0 "msp430_general_dst_operand" "rm")
(const_int 1)
(match_operand 1 "msp430_bitpos" "i"))
(const_int 0))