rs6000.md (movsf): Disable explicit secondary-reload-like functionality if TARGET_POW...
authorDavid Edelsohn <edelsohn@mhpcc.edu>
Thu, 3 Sep 1998 15:12:09 +0000 (15:12 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Thu, 3 Sep 1998 15:12:09 +0000 (11:12 -0400)
* rs6000.md (movsf): Disable explicit secondary-reload-like
functionality if TARGET_POWERPC64.
(movdf): Remove TARGET_POWERPC64 explicit secondary-reload-like
functionality.

From-SVN: r22213

gcc/ChangeLog
gcc/config/rs6000/rs6000.md

index 0d89f27..77aaa27 100644 (file)
@@ -1,3 +1,10 @@
+Thu Sep  3 18:05:16 1998  David Edelsohn  <edelsohn@mhpcc.edu>
+
+       * rs6000.md (movsf): Disable explicit secondary-reload-like
+       functionality if TARGET_POWERPC64.
+       (movdf): Remove TARGET_POWERPC64 explicit secondary-reload-like
+       functionality.
+
 Thu Sep  3 11:41:40 1998  Robert Lipe   <robertl@dgii.com>
 
        * fixinc.sco: Borrow code to wrap 'bool' typedefs from tinfo.h
index 65af962..2306407 100644 (file)
 
   else if (TARGET_HARD_FLOAT)
     {
-      if (GET_CODE (operands[1]) == REG && REGNO (operands[1]) < 32)
+      if (! TARGET_POWERPC64
+         && GET_CODE (operands[1]) == REG && REGNO (operands[1]) < 32)
        {
          /* If this is a store to memory or another integer register do the
             move directly.  Otherwise store to a temporary stack slot and
          operands[1] = force_reg (SFmode, operands[1]);
        }
 
-      if (GET_CODE (operands[0]) == REG && REGNO (operands[0]) < 32)
+      if (! TARGET_POWERPC64
+         && GET_CODE (operands[0]) == REG && REGNO (operands[0]) < 32)
        {
          if (GET_CODE (operands[1]) == MEM
 #if HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT && ! defined(REAL_IS_NOT_DOUBLE)
   if (GET_CODE (operands[0]) != REG)
     operands[1] = force_reg (DFmode, operands[1]);
 
-      /* Stores between FPR and any non-FPR registers must go through a
-         temporary stack slot.  */
-
-  if (TARGET_POWERPC64
-      && GET_CODE (operands[0]) == REG && GET_CODE (operands[1]) == REG
-      && ((FP_REGNO_P (REGNO (operands[0]))
-          && ! FP_REGNO_P (REGNO (operands[1])))
-         || (FP_REGNO_P (REGNO (operands[1]))
-             && ! FP_REGNO_P (REGNO (operands[0])))))
-    {
-      rtx stack_slot = assign_stack_temp (DFmode, 8, 0);
-
-      emit_move_insn (stack_slot, operands[1]);
-      emit_move_insn (operands[0], stack_slot);
-      DONE;
-    }
-
   if (CONSTANT_P (operands[1]) && ! easy_fp_constant (operands[1], DFmode))
     {
       operands[1] = force_const_mem (DFmode, operands[1]);