]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
revert: [multiple changes]
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Tue, 15 Apr 2014 18:30:21 +0000 (18:30 +0000)
committerWilliam Schmidt <wschmidt@gcc.gnu.org>
Tue, 15 Apr 2014 18:30:21 +0000 (18:30 +0000)
2014-04-15  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

PR target/60839
Revert the following patch

2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

Back port mainline subversion id 209025.
2014-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/60735
* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): If we have
software floating point or no floating point registers, do not
allow any type in the FPRs.  Eliminate a test for SPE SIMD types
in GPRs that occurs after we tested for GPRs that would never be
true.

* config/rs6000/rs6000.md (mov<mode>_softfloat32, FMOVE64):
Rewrite tests to use TARGET_DOUBLE_FLOAT and TARGET_E500_DOUBLE,
since the FMOVE64 type is DFmode/DDmode.  If TARGET_E500_DOUBLE,
specifically allow DDmode, since that does not use the SPE SIMD
instructions.

From-SVN: r209430

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

index f3d348d6f9c960b6a790c52e3a24a09909bc255f..d50b4554f3c429489ef239216f7c23bf7413f0fa 100644 (file)
@@ -1,3 +1,26 @@
+2014-04-15  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       PR target/60839
+       Revert the following patch
+
+       2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       Back port mainline subversion id 209025.
+       2014-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
+
+       PR target/60735
+       * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): If we have
+       software floating point or no floating point registers, do not
+       allow any type in the FPRs.  Eliminate a test for SPE SIMD types
+       in GPRs that occurs after we tested for GPRs that would never be
+       true.
+
+       * config/rs6000/rs6000.md (mov<mode>_softfloat32, FMOVE64):
+       Rewrite tests to use TARGET_DOUBLE_FLOAT and TARGET_E500_DOUBLE,
+       since the FMOVE64 type is DFmode/DDmode.  If TARGET_E500_DOUBLE,
+       specifically allow DDmode, since that does not use the SPE SIMD
+       instructions.
+
 2014-04-10  Vladimir Makarov  <vmakarov@redhat.com>
 
        PR rtl-optimization/60769
index 96772618d1c8d358778fa56816d20dc27d7fbb1a..2f3d8fd82f13a782461c6889ceef8440d8b2cce5 100644 (file)
@@ -1733,9 +1733,6 @@ rs6000_hard_regno_mode_ok (int regno, enum machine_mode mode)
      modes and DImode.  */
   if (FP_REGNO_P (regno))
     {
-      if (TARGET_SOFT_FLOAT || !TARGET_FPRS)
-       return 0;
-
       if (SCALAR_FLOAT_MODE_P (mode)
          && (mode != TDmode || (regno % 2) == 0)
          && FP_REGNO_P (last_regno))
@@ -1764,6 +1761,10 @@ rs6000_hard_regno_mode_ok (int regno, enum machine_mode mode)
     return (VECTOR_MEM_ALTIVEC_OR_VSX_P (mode)
            || mode == V1TImode);
 
+  /* ...but GPRs can hold SIMD data on the SPE in one register.  */
+  if (SPE_SIMD_REGNO_P (regno) && TARGET_SPE && SPE_VECTOR_MODE (mode))
+    return 1;
+
   /* We cannot put non-VSX TImode or PTImode anywhere except general register
      and it must be able to fit within the register set.  */
 
index 23c7d4cda029aa59f0c2e61ae3e6f5fd640dcf96..359f088035b5ce7ca2a6b330f70fcf7a78a9f779 100644 (file)
   [(set (match_operand:FMOVE64 0 "nonimmediate_operand" "=Y,r,r,r,r,r")
        (match_operand:FMOVE64 1 "input_operand" "r,Y,r,G,H,F"))]
   "! TARGET_POWERPC64 
-   && ((TARGET_FPRS && TARGET_DOUBLE_FLOAT) 
-       || TARGET_SOFT_FLOAT
-       || (<MODE>mode == DDmode && TARGET_E500_DOUBLE))
+   && ((TARGET_FPRS && TARGET_SINGLE_FLOAT) 
+       || TARGET_SOFT_FLOAT || TARGET_E500_SINGLE)
    && (gpc_reg_operand (operands[0], <MODE>mode)
        || gpc_reg_operand (operands[1], <MODE>mode))"
   "#"