diff options
author | Richard Sandiford <richard@codesourcery.com> | 2007-01-18 19:49:17 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2007-01-18 19:49:17 +0000 |
commit | 17e143a1730125d9630c8fb1b0ec9a334330a1c0 (patch) | |
tree | fb7fba72f202290451478fc41f45a8942c8697ef /gcc | |
parent | bb017fc18e6e94e3d33ca6ee54db7a54d436d3dd (diff) | |
download | gcc-17e143a1730125d9630c8fb1b0ec9a334330a1c0.zip gcc-17e143a1730125d9630c8fb1b0ec9a334330a1c0.tar.gz gcc-17e143a1730125d9630c8fb1b0ec9a334330a1c0.tar.bz2 |
m68k.md (movsf_cf_hard): Use fsmove instead of f%$smove and f%$move.
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>.
From-SVN: r120924
Diffstat (limited to 'gcc')
-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 354fdf0..4f4801b 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 d54006a..35f944c 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 |