(fix_truncdfsi2, movsf, movdi): Use assign_stack_temp.
authorRichard Kenner <kenner@gcc.gnu.org>
Thu, 23 Jun 1994 23:19:33 +0000 (19:19 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Thu, 23 Jun 1994 23:19:33 +0000 (19:19 -0400)
(mulsidi3): Add earlyclobber constraint modifier to PowerPC version
and !TARGET_POWERPC64 to final condition.

From-SVN: r7548

gcc/config/rs6000/rs6000.md

index ee9b8d648673220753f830c0398f54bd0ff094d7..1f2872536059d6dd8ff8ef80183916c4e6134779 100644 (file)
 {
   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));
    (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")])
 
   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
          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;
 
   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)
          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;
          || (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;