rs6000.md (largetoc_low): Revert.
authorDavid Edelsohn <dje.gcc@gmail.com>
Tue, 20 Nov 2012 16:27:57 +0000 (16:27 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Tue, 20 Nov 2012 16:27:57 +0000 (11:27 -0500)
        * config/rs6000/rs6000.md (largetoc_low): Revert.
        (largetoc_low_aix<mode>): New.

From-SVN: r193669

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

index cfcaa6c13e25a14e08c727cda063750b6d883a07..e022c8a839ac302a3f81047e41447ca43c8b64fa 100644 (file)
@@ -1,3 +1,8 @@
+2012-11-20  David Edelsohn  <dje.gcc@gmail.com>
+
+       * config/rs6000/rs6000.md (largetoc_low): Revert.
+       (largetoc_low_aix<mode>): New.
+
 2012-11-20  Diego Novillo  <dnovillo@google.com>
 
        * Makefile.in (tlink.o): Add dependency on VEC_H.
index dc5a5710a592ca59a735c2ce074c828efe70a955..25682036de533c41758d7f87f756d0673a1c9352 100644 (file)
    "TARGET_XCOFF && TARGET_CMODEL != CMODEL_SMALL"
    "addis %0,%1+%3@u(%2)")
 
-(define_insn "*largetoc_low<mode>"
-  [(set (match_operand:P 0 "gpc_reg_operand" "=r,r")
-        (lo_sum:P (match_operand:P 1 "gpc_reg_operand" "b,!*r")
-                  (match_operand:P 2 "" "")))]
-   "TARGET_TOC && TARGET_CMODEL != CMODEL_SMALL"
+(define_insn "*largetoc_low"
+  [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
+        (lo_sum:DI (match_operand:DI 1 "gpc_reg_operand" "b,!*r")
+                  (match_operand:DI 2 "" "")))]
+   "TARGET_ELF && TARGET_CMODEL != CMODEL_SMALL"
    "@
     addi %0,%1,%2@l
     addic %0,%1,%2@l")
 
+(define_insn "*largetoc_low_aix<mode>"
+  [(set (match_operand:P 0 "gpc_reg_operand" "=r")
+        (lo_sum:P (match_operand:P 1 "gpc_reg_operand" "b")
+                  (match_operand:P 2 "" "")))]
+   "TARGET_XCOFF && TARGET_CMODEL != CMODEL_SMALL"
+   "la %0,%2@l(%1)")
+
 (define_insn_and_split "*tocref<mode>"
   [(set (match_operand:P 0 "gpc_reg_operand" "=b*r")
        (match_operand:P 1 "small_toc_ref" "R"))]