diff options
author | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-19 13:42:00 +0000 |
---|---|---|
committer | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-19 13:42:00 +0000 |
commit | b5489b01f3e068a16d62a4fe9626235abd1b8d66 (patch) | |
tree | 508c630dd957070604424839b174629c57f7153a /gcc/config/m68k/m68k.md | |
parent | 12e6817ce83e4984f8021a353ab012fa75262581 (diff) | |
download | gcc-b5489b01f3e068a16d62a4fe9626235abd1b8d66.tar.gz |
gcc/
* config/m68k/m68k.md (adddi_dilshr32): Rename to...
(*adddi_dilshr32): ...this. Fix formatting. Remove commented-out
non-canonical pattern. Restrict to !TARGET_COLDFIRE.
(*adddi_dilshr32_cf): New pattern.
(adddi3, subdi3): Remove first alternatives.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120963 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/m68k/m68k.md')
-rw-r--r-- | gcc/config/m68k/m68k.md | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md index 4d92e180111..77a0dd0c9ea 100644 --- a/gcc/config/m68k/m68k.md +++ b/gcc/config/m68k/m68k.md @@ -1907,15 +1907,12 @@ return "move%.w %1,%3\;ext%.l %3\;add%.l %3,%0"; }) -(define_insn "adddi_dilshr32" +(define_insn "*adddi_dilshr32" [(set (match_operand:DI 0 "nonimmediate_operand" "=d,o") -;; (plus:DI (match_operand:DI 2 "general_operand" "%0") -;; (lshiftrt:DI (match_operand:DI 1 "general_operand" "ro") -;; (const_int 32))))] - (plus:DI (lshiftrt:DI (match_operand:DI 1 "general_operand" "ro,d") - (const_int 32)) - (match_operand:DI 2 "general_operand" "0,0")))] - "" + (plus:DI (lshiftrt:DI (match_operand:DI 1 "general_operand" "ro,d") + (const_int 32)) + (match_operand:DI 2 "general_operand" "0,0")))] + "!TARGET_COLDFIRE" { CC_STATUS_INIT; if (GET_CODE (operands[0]) == REG) @@ -1925,6 +1922,17 @@ return "add%.l %1,%2\;negx%.l %0\;neg%.l %0"; }) +(define_insn "*adddi_dilshr32_cf" + [(set (match_operand:DI 0 "register_operand" "=d") + (plus:DI (lshiftrt:DI (match_operand:DI 1 "nonimmediate_operand" "ro") + (const_int 32)) + (match_operand:DI 2 "register_operand" "0")))] + "TARGET_COLDFIRE" +{ + CC_STATUS_INIT; + return "add%.l %1,%R0\;negx%.l %0\;neg%.l %0"; +}) + (define_insn "adddi_dishl32" [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o") ;; (plus:DI (match_operand:DI 2 "general_operand" "%0") @@ -1944,10 +1952,10 @@ }) (define_insn "adddi3" - [(set (match_operand:DI 0 "nonimmediate_operand" "=<,o<>,d,d,d") - (plus:DI (match_operand:DI 1 "general_operand" "%0,0,0,0,0") - (match_operand:DI 2 "general_operand" "<,d,no>,d,a"))) - (clobber (match_scratch:SI 3 "=X,&d,&d,X,&d"))] + [(set (match_operand:DI 0 "nonimmediate_operand" "=o<>,d,d,d") + (plus:DI (match_operand:DI 1 "general_operand" "%0,0,0,0") + (match_operand:DI 2 "general_operand" "d,no>,d,a"))) + (clobber (match_scratch:SI 3 "=&d,&d,X,&d"))] "" { if (DATA_REG_P (operands[0])) @@ -2000,9 +2008,6 @@ else { gcc_assert (GET_CODE (operands[0]) == MEM); - if (GET_CODE (operands[2]) == MEM - && GET_CODE (XEXP (operands[2], 0)) == PRE_DEC) - return "add%.l %2,%0\;addx%.l %2,%0"; CC_STATUS_INIT; if (GET_CODE (XEXP (operands[0], 0)) == POST_INC) { @@ -2389,10 +2394,10 @@ }) (define_insn "subdi3" - [(set (match_operand:DI 0 "nonimmediate_operand" "=<,o<>,d,d,d") - (minus:DI (match_operand:DI 1 "general_operand" "0,0,0,0,0") - (match_operand:DI 2 "general_operand" "<,d,no>,d,a"))) - (clobber (match_scratch:SI 3 "=X,&d,&d,X,&d"))] + [(set (match_operand:DI 0 "nonimmediate_operand" "=o<>,d,d,d") + (minus:DI (match_operand:DI 1 "general_operand" "0,0,0,0") + (match_operand:DI 2 "general_operand" "d,no>,d,a"))) + (clobber (match_scratch:SI 3 "=&d,&d,X,&d"))] "" { if (DATA_REG_P (operands[0])) @@ -2447,9 +2452,6 @@ else { gcc_assert (GET_CODE (operands[0]) == MEM); - if (GET_CODE (operands[2]) == MEM - && GET_CODE (XEXP (operands[2], 0)) == PRE_DEC) - return "sub%.l %2,%0\;subx%.l %2,%0"; CC_STATUS_INIT; if (GET_CODE (XEXP (operands[0], 0)) == POST_INC) { |