aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-06-23 19:19:33 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-06-23 19:19:33 -0400
commit425c176f742d2629288b9f3211310cf3f806d051 (patch)
tree42272257db415489bf59bbfc650b6cff6f7d966e /gcc
parent138cec5908fc120ca13370a99c26158e755591d9 (diff)
downloadgcc-425c176f742d2629288b9f3211310cf3f806d051.zip
gcc-425c176f742d2629288b9f3211310cf3f806d051.tar.gz
gcc-425c176f742d2629288b9f3211310cf3f806d051.tar.bz2
(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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/rs6000/rs6000.md27
1 files changed, 8 insertions, 19 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index ee9b8d6..1f28725 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -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;