aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <richard@codesourcery.com>2007-01-18 19:49:17 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2007-01-18 19:49:17 +0000
commit17e143a1730125d9630c8fb1b0ec9a334330a1c0 (patch)
treefb7fba72f202290451478fc41f45a8942c8697ef
parentbb017fc18e6e94e3d33ca6ee54db7a54d436d3dd (diff)
downloadgcc-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
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/m68k/m68k.md26
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