diff options
author | Richard Sandiford <richard@codesourcery.com> | 2007-01-19 13:42:00 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2007-01-19 13:42:00 +0000 |
commit | b6d2f42e5e45a1db9f2851709c9db33d7b79b0d2 (patch) | |
tree | 508c630dd957070604424839b174629c57f7153a /gcc | |
parent | f6ab62e8ead1cb8abd0ad3987d61594ac3812116 (diff) | |
download | gcc-b6d2f42e5e45a1db9f2851709c9db33d7b79b0d2.tar.gz |
m68k.md (adddi_dilshr32): Rename to...
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.
From-SVN: r120963
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.md | 46 |
2 files changed, 32 insertions, 22 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bfe24382402..6fb680a4500 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@ 2007-01-19 Richard Sandiford <richard@codesourcery.com> + * 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. + +2007-01-19 Richard Sandiford <richard@codesourcery.com> + * config/m68k/m68k.c (notice_update_cc): If an SFmode move is implemented using move.l, do not use its cc result for floating-point comparisons. 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) { |