re PR target/24007 (very weird register allocation, putting a fp in the ctr register)
authorDavid Edelsohn <edelsohn@gnu.org>
Thu, 22 Sep 2005 15:03:27 +0000 (15:03 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Thu, 22 Sep 2005 15:03:27 +0000 (11:03 -0400)
        PR target/24007
        * config/rs6000/rs6000.md (movsf_hardfloat): Ignore special
        registers when choosing register preferences.
        (movdf_hardfloat): Same.

From-SVN: r104529

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

index f1a1d8e26ba488d94204dc090cc708c7a2c27fc7..efcba755998d1e1a5f0b60733cee4557cc51a516 100644 (file)
@@ -1,3 +1,10 @@
+2005-09-22  David Edelsohn  <edelsohn@gnu.org>
+
+        PR target/24007
+        * config/rs6000/rs6000.md (movsf_hardfloat): Ignore special
+        registers when choosing register preferences.
+        (movdf_hardfloat): Same.
+
 2005-09-22  Andreas Krebbel  <krebbel1@de.ibm.com>
 
        * expmed.c (expand_shift): Don't use the target of the rotate as
index 8868f53e965ffe1869422b87eb5bc40bda3ce13c..ef98384d4053ad1e9aa29ec65ae068c8965ae8ef 100644 (file)
 }")
 
 (define_insn "*movsf_hardfloat"
-  [(set (match_operand:SF 0 "nonimmediate_operand" "=!r,!r,m,f,f,m,!cl,!q,!r,!h,!r,!r")
+  [(set (match_operand:SF 0 "nonimmediate_operand" "=!r,!r,m,f,f,m,*c*l,*q,!r,*h,!r,!r")
        (match_operand:SF 1 "input_operand" "r,m,r,f,m,f,r,r,h,0,G,Fn"))]
   "(gpc_reg_operand (operands[0], SFmode)
    || gpc_reg_operand (operands[1], SFmode))
 ; ld/std require word-aligned displacements -> 'Y' constraint.
 ; List Y->r and r->Y before r->r for reload.
 (define_insn "*movdf_hardfloat64"
-  [(set (match_operand:DF 0 "nonimmediate_operand" "=Y,r,!r,f,f,m,!cl,!r,!h,!r,!r,!r")
+  [(set (match_operand:DF 0 "nonimmediate_operand" "=Y,r,!r,f,f,m,*c*l,!r,*h,!r,!r,!r")
        (match_operand:DF 1 "input_operand" "r,Y,r,f,m,f,r,h,0,G,H,F"))]
   "TARGET_POWERPC64 && TARGET_HARD_FLOAT && TARGET_FPRS
    && (gpc_reg_operand (operands[0], DFmode)