diff options
| author | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-18 19:49:17 +0000 |
|---|---|---|
| committer | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-18 19:49:17 +0000 |
| commit | 6026414cf668dbf9b3f9f4c01ac1e7bc8871dff3 (patch) | |
| tree | fb7fba72f202290451478fc41f45a8942c8697ef | |
| parent | 301b951bd404e29cc5aa9ff8ac29f0b4722b76b5 (diff) | |
| download | ppe42-gcc-6026414cf668dbf9b3f9f4c01ac1e7bc8871dff3.tar.gz ppe42-gcc-6026414cf668dbf9b3f9f4c01ac1e7bc8871dff3.zip | |
gcc/
* config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
f%$smove and f%$move.
(movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
(extendsfdf2_cf): Use fdmove instead of f%&move.
(truncdfsf2_cf): Use fsmove instead of f%$smove.
(add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120924 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 9 | ||||
| -rw-r--r-- | gcc/config/m68k/m68k.md | 26 |
2 files changed, 22 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 354fdf09dc5..4f4801b7826 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,14 @@ 2007-01-18 Richard Sandiford <richard@codesourcery.com> + * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of + f%$smove and f%$move. + (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1. + (extendsfdf2_cf): Use fdmove instead of f%&move. + (truncdfsf2_cf): Use fsmove instead of f%$smove. + (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>. + +2007-01-18 Richard Sandiford <richard@codesourcery.com> + * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for GPR<-GPR moves. diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md index d54006ac01c..35f944c790b 100644 --- a/gcc/config/m68k/m68k.md +++ b/gcc/config/m68k/m68k.md @@ -891,12 +891,10 @@ if (FP_REG_P (operands[0])) { if (ADDRESS_REG_P (operands[1])) - return "move%.l %1,%-;f%$smove%.s %+,%0"; + return "move%.l %1,%-;fsmove%.s %+,%0"; if (FP_REG_P (operands[1])) - return "f%$move%.d %1,%0"; - if (GET_CODE (operands[1]) == CONST_DOUBLE) - return output_move_const_single (operands); - return "f%$move%.s %f1,%0"; + return "fsmove%.d %1,%0"; + return "fsmove%.s %f1,%0"; } if (FP_REG_P (operands[1])) { @@ -1008,11 +1006,13 @@ switch (which_alternative) { default: + return "fdmove%.d %1,%0"; + case 1: return "fmove%.d %1,%0"; case 2: return "fmove%.d %1,%-;move%.l %+,%0;move%.l %+,%R0"; case 3: - return "move%.l %R1,%-;move%.l %1,%-;f%&move%.d %+,%0"; + return "move%.l %R1,%-;move%.l %1,%-;fdmove%.d %+,%0"; case 4: case 5: case 6: return output_move_double (operands); case 7: @@ -1627,9 +1627,9 @@ cc_status = cc_prev_status; return ""; } - return "f%&move%.d %1,%0"; + return "fdmove%.d %1,%0"; } - return "f%&move%.s %f1,%0"; + return "fdmove%.s %f1,%0"; }) ;; This cannot output into an f-reg because there is no way to be @@ -1659,7 +1659,7 @@ (match_operand:DF 1 "general_operand" "<Q>U,f")))] "TARGET_COLDFIRE_FPU" "@ - f%$move%.d %1,%0 + fsmove%.d %1,%0 fmove%.s %1,%0") (define_insn "" @@ -2354,8 +2354,8 @@ "TARGET_COLDFIRE_FPU" { if (FP_REG_P (operands[2])) - return "f<FP:round>add%.d %2,%0"; - return "f<FP:round>add%.<FP:prec> %2,%0"; + return "f<FP:prec>add%.d %2,%0"; + return "f<FP:prec>add%.<FP:prec> %2,%0"; }) ;; subtract instructions @@ -2563,8 +2563,8 @@ "TARGET_COLDFIRE_FPU" { if (FP_REG_P (operands[2])) - return "f<FP:round>sub%.d %2,%0"; - return "f<FP:round>sub%.<FP:prec> %2,%0"; + return "f<FP:prec>sub%.d %2,%0"; + return "f<FP:prec>sub%.<FP:prec> %2,%0"; }) ;; multiply instructions |

