Commit 85d4cbb8 by Ulrich Weigand Committed by Ulrich Weigand

rs6000.md (""*tls_gd_low<TLSmode:tls_abi_suffix>"): Require GOT register as…

rs6000.md (""*tls_gd_low<TLSmode:tls_abi_suffix>"): Require GOT register as additional operand in UNSPEC.

	* 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
parent 52b3f9e2
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> 2013-07-11 Georg-Johann Lay <avr@gjlay.de>
PR target/57631 PR target/57631
......
...@@ -10989,7 +10989,7 @@ ...@@ -10989,7 +10989,7 @@
(unspec:TLSmode [(match_dup 1) (match_dup 2)] UNSPEC_TLSGD))) (unspec:TLSmode [(match_dup 1) (match_dup 2)] UNSPEC_TLSGD)))
(set (match_dup 0) (set (match_dup 0)
(lo_sum:TLSmode (match_dup 3) (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); operands[3] = gen_reg_rtx (TARGET_64BIT ? DImode : SImode);
...@@ -11012,7 +11012,8 @@ ...@@ -11012,7 +11012,8 @@
(define_insn "*tls_gd_low<TLSmode:tls_abi_suffix>" (define_insn "*tls_gd_low<TLSmode:tls_abi_suffix>"
[(set (match_operand:TLSmode 0 "gpc_reg_operand" "=b") [(set (match_operand:TLSmode 0 "gpc_reg_operand" "=b")
(lo_sum:TLSmode (match_operand:TLSmode 1 "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)))] UNSPEC_TLSGD)))]
"HAVE_AS_TLS && TARGET_TLS_MARKERS && TARGET_CMODEL != CMODEL_SMALL" "HAVE_AS_TLS && TARGET_TLS_MARKERS && TARGET_CMODEL != CMODEL_SMALL"
"addi %0,%1,%2@got@tlsgd@l" "addi %0,%1,%2@got@tlsgd@l"
...@@ -11124,7 +11125,7 @@ ...@@ -11124,7 +11125,7 @@
(unspec:TLSmode [(const_int 0) (match_dup 1)] UNSPEC_TLSLD))) (unspec:TLSmode [(const_int 0) (match_dup 1)] UNSPEC_TLSLD)))
(set (match_dup 0) (set (match_dup 0)
(lo_sum:TLSmode (match_dup 2) (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); operands[2] = gen_reg_rtx (TARGET_64BIT ? DImode : SImode);
...@@ -11147,7 +11148,9 @@ ...@@ -11147,7 +11148,9 @@
(define_insn "*tls_ld_low<TLSmode:tls_abi_suffix>" (define_insn "*tls_ld_low<TLSmode:tls_abi_suffix>"
[(set (match_operand:TLSmode 0 "gpc_reg_operand" "=b") [(set (match_operand:TLSmode 0 "gpc_reg_operand" "=b")
(lo_sum:TLSmode (match_operand:TLSmode 1 "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" "HAVE_AS_TLS && TARGET_TLS_MARKERS && TARGET_CMODEL != CMODEL_SMALL"
"addi %0,%1,%&@got@tlsld@l" "addi %0,%1,%&@got@tlsld@l"
[(set_attr "length" "4")]) [(set_attr "length" "4")])
...@@ -11219,7 +11222,7 @@ ...@@ -11219,7 +11222,7 @@
(unspec:TLSmode [(match_dup 1) (match_dup 2)] UNSPEC_TLSGOTDTPREL))) (unspec:TLSmode [(match_dup 1) (match_dup 2)] UNSPEC_TLSGOTDTPREL)))
(set (match_dup 0) (set (match_dup 0)
(lo_sum:TLSmode (match_dup 3) (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); operands[3] = gen_reg_rtx (TARGET_64BIT ? DImode : SImode);
...@@ -11242,7 +11245,8 @@ ...@@ -11242,7 +11245,8 @@
(define_insn "*tls_got_dtprel_low<TLSmode:tls_abi_suffix>" (define_insn "*tls_got_dtprel_low<TLSmode:tls_abi_suffix>"
[(set (match_operand:TLSmode 0 "gpc_reg_operand" "=r") [(set (match_operand:TLSmode 0 "gpc_reg_operand" "=r")
(lo_sum:TLSmode (match_operand:TLSmode 1 "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_TLSGOTDTPREL)))] UNSPEC_TLSGOTDTPREL)))]
"HAVE_AS_TLS && TARGET_CMODEL != CMODEL_SMALL" "HAVE_AS_TLS && TARGET_CMODEL != CMODEL_SMALL"
"l<TLSmode:tls_insn_suffix> %0,%2@got@dtprel@l(%1)" "l<TLSmode:tls_insn_suffix> %0,%2@got@dtprel@l(%1)"
...@@ -11288,7 +11292,7 @@ ...@@ -11288,7 +11292,7 @@
(unspec:TLSmode [(match_dup 1) (match_dup 2)] UNSPEC_TLSGOTTPREL))) (unspec:TLSmode [(match_dup 1) (match_dup 2)] UNSPEC_TLSGOTTPREL)))
(set (match_dup 0) (set (match_dup 0)
(lo_sum:TLSmode (match_dup 3) (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); operands[3] = gen_reg_rtx (TARGET_64BIT ? DImode : SImode);
...@@ -11311,7 +11315,8 @@ ...@@ -11311,7 +11315,8 @@
(define_insn "*tls_got_tprel_low<TLSmode:tls_abi_suffix>" (define_insn "*tls_got_tprel_low<TLSmode:tls_abi_suffix>"
[(set (match_operand:TLSmode 0 "gpc_reg_operand" "=r") [(set (match_operand:TLSmode 0 "gpc_reg_operand" "=r")
(lo_sum:TLSmode (match_operand:TLSmode 1 "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_TLSGOTTPREL)))] UNSPEC_TLSGOTTPREL)))]
"HAVE_AS_TLS && TARGET_CMODEL != CMODEL_SMALL" "HAVE_AS_TLS && TARGET_CMODEL != CMODEL_SMALL"
"l<TLSmode:tls_insn_suffix> %0,%2@got@tprel@l(%1)" "l<TLSmode:tls_insn_suffix> %0,%2@got@tprel@l(%1)"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment