rs6000.md (""*tls_gd_low<TLSmode:tls_abi_suffix>"): Require GOT register as additiona...
authorUlrich Weigand <uweigand@de.ibm.com>
Thu, 11 Jul 2013 16:36:09 +0000 (16:36 +0000)
committerUlrich Weigand <uweigand@gcc.gnu.org>
Thu, 11 Jul 2013 16:36:09 +0000 (16:36 +0000)
* config/rs6000/rs6000.md (""*tls_gd_low<TLSmode:tls_abi_suffix>"):
Require GOT register as additional operand in UNSPEC.
("*tls_ld_low<TLSmode:tls_abi_suffix>"): Likewise.
("*tls_got_dtprel_low<TLSmode:tls_abi_suffix>"): Likewise.
("*tls_got_tprel_low<TLSmode:tls_abi_suffix>"): Likewise.
("*tls_gd<TLSmode:tls_abi_suffix>"): Update splitter.
("*tls_ld<TLSmode:tls_abi_suffix>"): Likewise.
("tls_got_dtprel_<TLSmode:tls_abi_suffix>"): Likewise.
("tls_got_tprel_<TLSmode:tls_abi_suffix>"): Likewise.

From-SVN: r200904

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

index 298fc1a4850c8a3ff932744932e723326015d497..30f63c4b4da677937e96699b39869a1bf531b8ab 100644 (file)
@@ -1,3 +1,15 @@
+2013-07-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+       * config/rs6000/rs6000.md (""*tls_gd_low<TLSmode:tls_abi_suffix>"):
+       Require GOT register as additional operand in UNSPEC.
+       ("*tls_ld_low<TLSmode:tls_abi_suffix>"): Likewise.
+       ("*tls_got_dtprel_low<TLSmode:tls_abi_suffix>"): Likewise.
+       ("*tls_got_tprel_low<TLSmode:tls_abi_suffix>"): Likewise.
+       ("*tls_gd<TLSmode:tls_abi_suffix>"): Update splitter.
+       ("*tls_ld<TLSmode:tls_abi_suffix>"): Likewise.
+       ("tls_got_dtprel_<TLSmode:tls_abi_suffix>"): Likewise.
+       ("tls_got_tprel_<TLSmode:tls_abi_suffix>"): Likewise.
+
 2013-07-11  Georg-Johann Lay  <avr@gjlay.de>
 
        PR target/57631
index 010e21f7413fc1d55dec5fb6a47a9807ce5db719..731cfae930aa05fdbd4487e76f080b7c7adf775c 100644 (file)
            (unspec:TLSmode [(match_dup 1) (match_dup 2)] UNSPEC_TLSGD)))
    (set (match_dup 0)
        (lo_sum:TLSmode (match_dup 3)
-           (unspec:TLSmode [(match_dup 2)] UNSPEC_TLSGD)))]
+           (unspec:TLSmode [(match_dup 1) (match_dup 2)] UNSPEC_TLSGD)))]
   "
 {
   operands[3] = gen_reg_rtx (TARGET_64BIT ? DImode : SImode);
 (define_insn "*tls_gd_low<TLSmode:tls_abi_suffix>"
   [(set (match_operand:TLSmode 0 "gpc_reg_operand" "=b")
      (lo_sum:TLSmode (match_operand:TLSmode 1 "gpc_reg_operand" "b")
-       (unspec:TLSmode [(match_operand:TLSmode 2 "rs6000_tls_symbol_ref" "")]
+       (unspec:TLSmode [(match_operand:TLSmode 3 "gpc_reg_operand" "b")
+                       (match_operand:TLSmode 2 "rs6000_tls_symbol_ref" "")]
                       UNSPEC_TLSGD)))]
   "HAVE_AS_TLS && TARGET_TLS_MARKERS && TARGET_CMODEL != CMODEL_SMALL"
   "addi %0,%1,%2@got@tlsgd@l"
            (unspec:TLSmode [(const_int 0) (match_dup 1)] UNSPEC_TLSLD)))
    (set (match_dup 0)
        (lo_sum:TLSmode (match_dup 2)
-           (unspec:TLSmode [(const_int 0)] UNSPEC_TLSLD)))]
+           (unspec:TLSmode [(const_int 0) (match_dup 1)] UNSPEC_TLSLD)))]
   "
 {
   operands[2] = gen_reg_rtx (TARGET_64BIT ? DImode : SImode);
 (define_insn "*tls_ld_low<TLSmode:tls_abi_suffix>"
   [(set (match_operand:TLSmode 0 "gpc_reg_operand" "=b")
      (lo_sum:TLSmode (match_operand:TLSmode 1 "gpc_reg_operand" "b")
-       (unspec:TLSmode [(const_int 0)] UNSPEC_TLSLD)))]
+       (unspec:TLSmode [(const_int 0)
+                        (match_operand:TLSmode 2 "gpc_reg_operand" "b")]
+                       UNSPEC_TLSLD)))]
   "HAVE_AS_TLS && TARGET_TLS_MARKERS && TARGET_CMODEL != CMODEL_SMALL"
   "addi %0,%1,%&@got@tlsld@l"
   [(set_attr "length" "4")])
            (unspec:TLSmode [(match_dup 1) (match_dup 2)] UNSPEC_TLSGOTDTPREL)))
    (set (match_dup 0)
        (lo_sum:TLSmode (match_dup 3)
-           (unspec:TLSmode [(match_dup 2)] UNSPEC_TLSGOTDTPREL)))]
+           (unspec:TLSmode [(match_dup 1) (match_dup 2)] UNSPEC_TLSGOTDTPREL)))]
   "
 {
   operands[3] = gen_reg_rtx (TARGET_64BIT ? DImode : SImode);
 (define_insn "*tls_got_dtprel_low<TLSmode:tls_abi_suffix>"
   [(set (match_operand:TLSmode 0 "gpc_reg_operand" "=r")
      (lo_sum:TLSmode (match_operand:TLSmode 1 "gpc_reg_operand" "b")
-        (unspec:TLSmode [(match_operand:TLSmode 2 "rs6000_tls_symbol_ref" "")]
+        (unspec:TLSmode [(match_operand:TLSmode 3 "gpc_reg_operand" "b")
+                         (match_operand:TLSmode 2 "rs6000_tls_symbol_ref" "")]
                         UNSPEC_TLSGOTDTPREL)))]
   "HAVE_AS_TLS && TARGET_CMODEL != CMODEL_SMALL"
   "l<TLSmode:tls_insn_suffix> %0,%2@got@dtprel@l(%1)"
            (unspec:TLSmode [(match_dup 1) (match_dup 2)] UNSPEC_TLSGOTTPREL)))
    (set (match_dup 0)
        (lo_sum:TLSmode (match_dup 3)
-           (unspec:TLSmode [(match_dup 2)] UNSPEC_TLSGOTTPREL)))]
+           (unspec:TLSmode [(match_dup 1) (match_dup 2)] UNSPEC_TLSGOTTPREL)))]
   "
 {
   operands[3] = gen_reg_rtx (TARGET_64BIT ? DImode : SImode);
 (define_insn "*tls_got_tprel_low<TLSmode:tls_abi_suffix>"
   [(set (match_operand:TLSmode 0 "gpc_reg_operand" "=r")
      (lo_sum:TLSmode (match_operand:TLSmode 1 "gpc_reg_operand" "b")
-        (unspec:TLSmode [(match_operand:TLSmode 2 "rs6000_tls_symbol_ref" "")]
+        (unspec:TLSmode [(match_operand:TLSmode 3 "gpc_reg_operand" "b")
+                         (match_operand:TLSmode 2 "rs6000_tls_symbol_ref" "")]
                         UNSPEC_TLSGOTTPREL)))]
   "HAVE_AS_TLS && TARGET_CMODEL != CMODEL_SMALL"
   "l<TLSmode:tls_insn_suffix> %0,%2@got@tprel@l(%1)"