OSDN Git Service

gcc/
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 18 Jan 2007 19:49:17 +0000 (19:49 +0000)
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 18 Jan 2007 19:49:17 +0000 (19:49 +0000)
* 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

gcc/ChangeLog
gcc/config/m68k/m68k.md

index 354fdf0..4f4801b 100644 (file)
@@ -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.
 
index d54006a..35f944c 100644 (file)
   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]))
     {
   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:
          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
          (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 ""
   "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";
 })
 \f
 ;; subtract instructions
   "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";
 })
 \f
 ;; multiply instructions