diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-06-23 19:19:33 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-06-23 19:19:33 -0400 |
commit | 425c176f742d2629288b9f3211310cf3f806d051 (patch) | |
tree | 42272257db415489bf59bbfc650b6cff6f7d966e /gcc | |
parent | 138cec5908fc120ca13370a99c26158e755591d9 (diff) | |
download | gcc-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.md | 27 |
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; |