diff options
-rw-r--r-- | gcc/ChangeLog | 19 | ||||
-rw-r--r-- | gcc/config/msp430/msp430.md | 70 |
2 files changed, 54 insertions, 35 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4f7b79a..1d7c12e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,22 @@ +2013-12-13 DJ Delorie <dj@redhat.com> + + * config/msp430/msp430.md (movqi): replace general_operand with + msp_general_operand and nonimmediate_operand with + msp_nonimmediate_operand to allow volatile operands. + (movhi): Likewise. + (movpsi): Likewise. + (addpsi3): Likewise. + (addhi3): Likewise. + (addhi3_cy): Likewise. + (addchi4_cy): Likewise. + (xor<mode>3): Likewise. + (ome_cmpl<mode>2): Likewise. + (extendqihi2): Likewise. + (zero_extendqihi2): Likewise. + (zero_extendhipsi2): Likewise. + (truncpsihi2): Likewise. + (srai_1): Likewise. + 2013-12-13 Vladimir Makarov <vmakarov@redhat.com> * ira.h (struct ira_reg_equiv): Rename to ira_reg_equiv_s. diff --git a/gcc/config/msp430/msp430.md b/gcc/config/msp430/msp430.md index 21720a4..93ff3bd 100644 --- a/gcc/config/msp430/msp430.md +++ b/gcc/config/msp430/msp430.md @@ -172,8 +172,8 @@ ) (define_insn "movqi" - [(set (match_operand:QI 0 "nonimmediate_operand" "=rYs,rm") - (match_operand:QI 1 "general_operand" "riYs,rmi"))] + [(set (match_operand:QI 0 "msp_nonimmediate_operand" "=rYs,rm") + (match_operand:QI 1 "msp_general_operand" "riYs,rmi"))] "" "@ MOV.B\t%1, %0 @@ -181,8 +181,8 @@ ) (define_insn "movhi" - [(set (match_operand:HI 0 "nonimmediate_operand" "=rYs,rm") - (match_operand:HI 1 "general_operand" "riYs,rmi"))] + [(set (match_operand:HI 0 "msp_nonimmediate_operand" "=rYs,rm") + (match_operand:HI 1 "msp_general_operand" "riYs,rmi"))] "" "@ MOV.W\t%1, %0 @@ -211,8 +211,8 @@ ;; Some MOVX.A cases can be done with MOVA, this is only a few of them. (define_insn "movpsi" - [(set (match_operand:PSI 0 "nonimmediate_operand" "=r,Ya,rm") - (match_operand:PSI 1 "general_operand" "riYa,r,rmi"))] + [(set (match_operand:PSI 0 "msp_nonimmediate_operand" "=r,Ya,rm") + (match_operand:PSI 1 "msp_general_operand" "riYa,r,rmi"))] "" "@ MOV%A0\t%1, %0 @@ -237,9 +237,9 @@ ;; Math (define_insn "addpsi3" - [(set (match_operand:PSI 0 "nonimmediate_operand" "=r,rm") - (plus:PSI (match_operand:PSI 1 "nonimmediate_operand" "%0,0") - (match_operand:PSI 2 "general_operand" "rLs,rmi")))] + [(set (match_operand:PSI 0 "msp_nonimmediate_operand" "=r,rm") + (plus:PSI (match_operand:PSI 1 "msp_nonimmediate_operand" "%0,0") + (match_operand:PSI 2 "msp_general_operand" "rLs,rmi")))] "" "@ ADDA\t%2, %0 @@ -247,9 +247,9 @@ ) (define_insn "addqi3" - [(set (match_operand:QI 0 "nonimmediate_operand" "=rYs,rm") - (plus:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0") - (match_operand:QI 2 "general_operand" "riYs,rmi")))] + [(set (match_operand:QI 0 "msp_nonimmediate_operand" "=rYs,rm") + (plus:QI (match_operand:QI 1 "msp_nonimmediate_operand" "%0,0") + (match_operand:QI 2 "msp_general_operand" "riYs,rmi")))] "" "@ ADD.B\t%2, %0 @@ -257,9 +257,9 @@ ) (define_insn "addhi3" - [(set (match_operand:HI 0 "nonimmediate_operand" "=rYs,rm") - (plus:HI (match_operand:HI 1 "nonimmediate_operand" "%0,0") - (match_operand:HI 2 "general_operand" "riYs,rmi")))] + [(set (match_operand:HI 0 "msp_nonimmediate_operand" "=rYs,rm") + (plus:HI (match_operand:HI 1 "msp_nonimmediate_operand" "%0,0") + (match_operand:HI 2 "msp_general_operand" "riYs,rmi")))] "" "@ ADD.W\t%2, %0 @@ -316,9 +316,9 @@ ; that are not single_set() very well. (define_insn "addhi3_cy" - [(set (match_operand:HI 0 "nonimmediate_operand" "=r,rm") - (plus:HI (match_operand:HI 1 "nonimmediate_operand" "%0,0") - (match_operand:HI 2 "general_operand" "r,rm"))) + [(set (match_operand:HI 0 "msp_nonimmediate_operand" "=r,rm") + (plus:HI (match_operand:HI 1 "msp_nonimmediate_operand" "%0,0") + (match_operand:HI 2 "msp_general_operand" "r,rm"))) (set (reg:BI CARRY) (truncate:BI (lshiftrt:SI (plus:SI (zero_extend:SI (match_dup 1)) (zero_extend:SI (match_dup 2))) @@ -347,9 +347,9 @@ ; Version of addhi that adds the carry, for SImode adds. (define_insn "addchi4_cy" - [(set (match_operand:HI 0 "nonimmediate_operand" "=r,rm") - (plus:HI (plus:HI (match_operand:HI 1 "nonimmediate_operand" "%0,0") - (match_operand:HI 2 "general_operand" "ri,rmi")) + [(set (match_operand:HI 0 "msp_nonimmediate_operand" "=r,rm") + (plus:HI (plus:HI (match_operand:HI 1 "msp_nonimmediate_operand" "%0,0") + (match_operand:HI 2 "msp_general_operand" "ri,rmi")) (zero_extend:HI (reg:BI CARRY)))) ] "" @@ -487,9 +487,9 @@ ) (define_insn "xor<mode>3" - [(set (match_operand:QHI 0 "nonimmediate_operand" "=rYs,rm") - (xor:QHI (match_operand:QHI 1 "nonimmediate_operand" "%0,0") - (match_operand:QHI 2 "general_operand" "riYs,rmi")))] + [(set (match_operand:QHI 0 "msp_nonimmediate_operand" "=rYs,rm") + (xor:QHI (match_operand:QHI 1 "msp_nonimmediate_operand" "%0,0") + (match_operand:QHI 2 "msp_general_operand" "riYs,rmi")))] "" "@ XOR%x0%B0\t%2, %0 @@ -498,8 +498,8 @@ ;; Macro : XOR #~0, %0 (define_insn "one_cmpl<mode>2" - [(set (match_operand:QHI 0 "nonimmediate_operand" "=rYs,m") - (not:QHI (match_operand:QHI 1 "nonimmediate_operand" "0,0")))] + [(set (match_operand:QHI 0 "msp_nonimmediate_operand" "=rYs,m") + (not:QHI (match_operand:QHI 1 "msp_nonimmediate_operand" "0,0")))] "" "@ INV%x0%B0\t%0 @@ -507,8 +507,8 @@ ) (define_insn "extendqihi2" - [(set (match_operand:HI 0 "nonimmediate_operand" "=rYs,m") - (sign_extend:HI (match_operand:QI 1 "nonimmediate_operand" "0,0")))] + [(set (match_operand:HI 0 "msp_nonimmediate_operand" "=rYs,m") + (sign_extend:HI (match_operand:QI 1 "msp_nonimmediate_operand" "0,0")))] "" "@ SXT%X0\t%0 @@ -516,8 +516,8 @@ ) (define_insn "zero_extendqihi2" - [(set (match_operand:HI 0 "nonimmediate_operand" "=rYs,m") - (zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "0,0")))] + [(set (match_operand:HI 0 "msp_nonimmediate_operand" "=rYs,m") + (zero_extend:HI (match_operand:QI 1 "msp_nonimmediate_operand" "0,0")))] "" "@ AND\t#0xff, %0 @@ -536,14 +536,14 @@ ) (define_insn "zero_extendhipsi2" - [(set (match_operand:PSI 0 "nonimmediate_operand" "=r,m") - (zero_extend:PSI (match_operand:HI 1 "nonimmediate_operand" "rm,r")))] + [(set (match_operand:PSI 0 "msp_nonimmediate_operand" "=r,m") + (zero_extend:PSI (match_operand:HI 1 "msp_nonimmediate_operand" "rm,r")))] "" "MOVX\t%1, %0" ) (define_insn "truncpsihi2" - [(set (match_operand:HI 0 "nonimmediate_operand" "=rm") + [(set (match_operand:HI 0 "msp_nonimmediate_operand" "=rm") (truncate:HI (match_operand:PSI 1 "register_operand" "r")))] "" "MOVX\t%1, %0" @@ -769,8 +769,8 @@ ) (define_insn "srai_1" - [(set (match_operand:HI 0 "nonimmediate_operand" "=rm") - (ashiftrt:HI (match_operand:HI 1 "general_operand" "0") + [(set (match_operand:HI 0 "msp_nonimmediate_operand" "=rm") + (ashiftrt:HI (match_operand:HI 1 "msp_general_operand" "0") (const_int 1)))] "" "RRA.W\t%0" |