+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
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