Commit 425c176f by Richard Kenner

(fix_truncdfsi2, movsf, movdi): Use assign_stack_temp.

(mulsidi3): Add earlyclobber constraint modifier to PowerPC version
and !TARGET_POWERPC64 to final condition.

From-SVN: r7548
parent 138cec59
......@@ -3094,10 +3094,10 @@
{
if (TARGET_POWER2 || TARGET_POWERPC)
{
rtx stack_slot, temp = gen_reg_rtx (DImode);
rtx stack_slot = assign_stack_temp (DImode, 8, 0),
temp = gen_reg_rtx (DImode);
emit_insn (gen_fpcvtsi (temp, operands[1]));
stack_slot = gen_rtx (MEM, DImode,
plus_constant (stack_pointer_rtx, 8));
emit_move_insn (stack_slot, temp);
emit_move_insn (operands[0],
operand_subword (stack_slot, 1, 0, DImode));
......@@ -3288,10 +3288,10 @@
(set_attr "length" "8")])
(define_insn ""
[(set (match_operand:DI 0 "gpc_reg_operand" "=r")
[(set (match_operand:DI 0 "gpc_reg_operand" "=&r")
(mult:DI (sign_extend:DI (match_operand:SI 1 "gpc_reg_operand" "%r"))
(sign_extend:DI (match_operand:SI 2 "gpc_reg_operand" "r"))))]
"TARGET_POWERPC"
"TARGET_POWERPC && ! TARGET_POWERPC64"
"mulhw %0,%1,%2\;mullw %L0,%1,%2"
[(set_attr "type" "imul")
(set_attr "length" "8")])
......@@ -3763,7 +3763,7 @@
if (GET_CODE (operands[1]) == REG && REGNO (operands[1]) < 32)
{
rtx stack_slot;
rtx stack_slot = assign_stack_temp (SFmode, 4, 0);
/* If this is a store to memory or another integer register do the
move directly. Otherwise store to a temporary stack slot and
......@@ -3780,7 +3780,6 @@
DONE;
}
stack_slot = gen_rtx (MEM, SFmode, plus_constant (stack_pointer_rtx, 4));
emit_move_insn (stack_slot, operands[1]);
emit_move_insn (operands[0], stack_slot);
DONE;
......@@ -3791,7 +3790,7 @@
if (GET_CODE (operands[0]) == REG && REGNO (operands[0]) < 32)
{
rtx stack_slot;
rtx stack_slot = assign_stack_temp (SFmode, 4, 0);
if (GET_CODE (operands[1]) == MEM
#if HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT && ! defined(REAL_IS_NOT_DOUBLE)
......@@ -3807,11 +3806,6 @@
DONE;
}
if (reload_in_progress)
stack_slot = gen_rtx (MEM, SFmode,
plus_constant (stack_pointer_rtx, 4));
else
stack_slot = assign_stack_temp (SFmode, 4, 0);
emit_move_insn (stack_slot, operands[1]);
emit_move_insn (operands[0], stack_slot);
DONE;
......@@ -3981,13 +3975,8 @@
|| (FP_REGNO_P (REGNO (operands[1]))
&& ! FP_REGNO_P (REGNO (operands[0])))))
{
rtx stack_slot;
rtx stack_slot = assign_stack_temp (DImode, 8, 0);
if (reload_in_progress)
stack_slot = gen_rtx (MEM, DImode,
plus_constant (stack_pointer_rtx, 8));
else
stack_slot = assign_stack_temp (DImode, 8, 0);
emit_move_insn (stack_slot, operands[1]);
emit_move_insn (operands[0], stack_slot);
DONE;
......
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