Commit 17e143a1 by Richard Sandiford Committed by Richard Sandiford

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
parent bb017fc1
2007-01-18 Richard Sandiford <richard@codesourcery.com> 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 * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
GPR<-GPR moves. GPR<-GPR moves.
......
...@@ -891,12 +891,10 @@ ...@@ -891,12 +891,10 @@
if (FP_REG_P (operands[0])) if (FP_REG_P (operands[0]))
{ {
if (ADDRESS_REG_P (operands[1])) 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])) if (FP_REG_P (operands[1]))
return "f%$move%.d %1,%0"; return "fsmove%.d %1,%0";
if (GET_CODE (operands[1]) == CONST_DOUBLE) return "fsmove%.s %f1,%0";
return output_move_const_single (operands);
return "f%$move%.s %f1,%0";
} }
if (FP_REG_P (operands[1])) if (FP_REG_P (operands[1]))
{ {
...@@ -1008,11 +1006,13 @@ ...@@ -1008,11 +1006,13 @@
switch (which_alternative) switch (which_alternative)
{ {
default: default:
return "fdmove%.d %1,%0";
case 1:
return "fmove%.d %1,%0"; return "fmove%.d %1,%0";
case 2: case 2:
return "fmove%.d %1,%-;move%.l %+,%0;move%.l %+,%R0"; return "fmove%.d %1,%-;move%.l %+,%0;move%.l %+,%R0";
case 3: 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: case 4: case 5: case 6:
return output_move_double (operands); return output_move_double (operands);
case 7: case 7:
...@@ -1627,9 +1627,9 @@ ...@@ -1627,9 +1627,9 @@
cc_status = cc_prev_status; cc_status = cc_prev_status;
return ""; 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 ;; This cannot output into an f-reg because there is no way to be
...@@ -1659,7 +1659,7 @@ ...@@ -1659,7 +1659,7 @@
(match_operand:DF 1 "general_operand" "<Q>U,f")))] (match_operand:DF 1 "general_operand" "<Q>U,f")))]
"TARGET_COLDFIRE_FPU" "TARGET_COLDFIRE_FPU"
"@ "@
f%$move%.d %1,%0 fsmove%.d %1,%0
fmove%.s %1,%0") fmove%.s %1,%0")
(define_insn "" (define_insn ""
...@@ -2354,8 +2354,8 @@ ...@@ -2354,8 +2354,8 @@
"TARGET_COLDFIRE_FPU" "TARGET_COLDFIRE_FPU"
{ {
if (FP_REG_P (operands[2])) if (FP_REG_P (operands[2]))
return "f<FP:round>add%.d %2,%0"; return "f<FP:prec>add%.d %2,%0";
return "f<FP:round>add%.<FP:prec> %2,%0"; return "f<FP:prec>add%.<FP:prec> %2,%0";
}) })
;; subtract instructions ;; subtract instructions
...@@ -2563,8 +2563,8 @@ ...@@ -2563,8 +2563,8 @@
"TARGET_COLDFIRE_FPU" "TARGET_COLDFIRE_FPU"
{ {
if (FP_REG_P (operands[2])) if (FP_REG_P (operands[2]))
return "f<FP:round>sub%.d %2,%0"; return "f<FP:prec>sub%.d %2,%0";
return "f<FP:round>sub%.<FP:prec> %2,%0"; return "f<FP:prec>sub%.<FP:prec> %2,%0";
}) })
;; multiply instructions ;; multiply instructions
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment