predicates.md (tls_symbolic_operand): Declare as special predicate.
* config/i386/predicates.md (tls_symbolic_operand): Declare as special predicate. (tls_modbase_operand): Ditto. * config/i386/i386.md: Remove mode from tls_symbolic_operand and tls_modbase_operand predicates. From-SVN: r185341
This commit is contained in:
parent
7e9e7e6cea
commit
62a1c0416f
3 changed files with 21 additions and 13 deletions
|
@ -1,3 +1,11 @@
|
|||
2012-03-13 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
* config/i386/predicates.md (tls_symbolic_operand): Declare as
|
||||
special predicate.
|
||||
(tls_modbase_operand): Ditto.
|
||||
* config/i386/i386.md: Remove mode from tls_symbolic_operand and
|
||||
tls_modbase_operand predicates.
|
||||
|
||||
2012-03-13 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
* expr.c (expand_assignment): Handle misaligned scalar writes to
|
||||
|
|
|
@ -12591,7 +12591,7 @@
|
|||
[(set (match_operand:SI 0 "register_operand" "=a")
|
||||
(unspec:SI
|
||||
[(match_operand:SI 1 "register_operand" "b")
|
||||
(match_operand:SI 2 "tls_symbolic_operand" "")
|
||||
(match_operand 2 "tls_symbolic_operand" "")
|
||||
(match_operand:SI 3 "constant_call_address_operand" "z")]
|
||||
UNSPEC_TLS_GD))
|
||||
(clobber (match_scratch:SI 4 "=d"))
|
||||
|
@ -12616,7 +12616,7 @@
|
|||
[(parallel
|
||||
[(set (match_operand:SI 0 "register_operand" "")
|
||||
(unspec:SI [(match_operand:SI 2 "register_operand" "")
|
||||
(match_operand:SI 1 "tls_symbolic_operand" "")
|
||||
(match_operand 1 "tls_symbolic_operand" "")
|
||||
(match_operand:SI 3 "constant_call_address_operand" "")]
|
||||
UNSPEC_TLS_GD))
|
||||
(clobber (match_scratch:SI 4 ""))
|
||||
|
@ -12727,7 +12727,7 @@
|
|||
(match_operand:SI 2 "constant_call_address_operand" "z")]
|
||||
UNSPEC_TLS_LD_BASE)
|
||||
(const:SI (unspec:SI
|
||||
[(match_operand:SI 3 "tls_symbolic_operand" "")]
|
||||
[(match_operand 3 "tls_symbolic_operand" "")]
|
||||
UNSPEC_DTPOFF))))
|
||||
(clobber (match_scratch:SI 4 "=d"))
|
||||
(clobber (match_scratch:SI 5 "=c"))
|
||||
|
@ -12825,7 +12825,7 @@
|
|||
(define_insn "tls_initial_exec_64_sun"
|
||||
[(set (match_operand:DI 0 "register_operand" "=a")
|
||||
(unspec:DI
|
||||
[(match_operand:DI 1 "tls_symbolic_operand" "")]
|
||||
[(match_operand 1 "tls_symbolic_operand" "")]
|
||||
UNSPEC_TLS_IE_SUN))
|
||||
(clobber (reg:CC FLAGS_REG))]
|
||||
"TARGET_64BIT && TARGET_SUN_TLS"
|
||||
|
@ -12847,7 +12847,7 @@
|
|||
(define_insn "tls_initial_exec_x32"
|
||||
[(set (match_operand:SI 0 "register_operand" "=r")
|
||||
(unspec:SI
|
||||
[(match_operand:SI 1 "tls_symbolic_operand" "")]
|
||||
[(match_operand 1 "tls_symbolic_operand" "")]
|
||||
UNSPEC_TLS_IE_X32))
|
||||
(clobber (reg:CC FLAGS_REG))]
|
||||
"TARGET_X32"
|
||||
|
@ -12864,7 +12864,7 @@
|
|||
[(set (match_dup 3)
|
||||
(plus:SI (match_operand:SI 2 "register_operand" "")
|
||||
(const:SI
|
||||
(unspec:SI [(match_operand:SI 1 "tls_symbolic_operand" "")]
|
||||
(unspec:SI [(match_operand 1 "tls_symbolic_operand" "")]
|
||||
UNSPEC_TLSDESC))))
|
||||
(parallel
|
||||
[(set (match_operand:SI 0 "register_operand" "")
|
||||
|
@ -12882,7 +12882,7 @@
|
|||
[(set (match_operand:SI 0 "register_operand" "=r")
|
||||
(plus:SI (match_operand:SI 1 "register_operand" "b")
|
||||
(const:SI
|
||||
(unspec:SI [(match_operand:SI 2 "tls_symbolic_operand" "")]
|
||||
(unspec:SI [(match_operand 2 "tls_symbolic_operand" "")]
|
||||
UNSPEC_TLSDESC))))]
|
||||
"!TARGET_64BIT && TARGET_GNU2_TLS"
|
||||
"lea{l}\t{%E2@TLSDESC(%1), %0|%0, %E2@TLSDESC[%1]}"
|
||||
|
@ -12893,7 +12893,7 @@
|
|||
|
||||
(define_insn "*tls_dynamic_gnu2_call_32"
|
||||
[(set (match_operand:SI 0 "register_operand" "=a")
|
||||
(unspec:SI [(match_operand:SI 1 "tls_symbolic_operand" "")
|
||||
(unspec:SI [(match_operand 1 "tls_symbolic_operand" "")
|
||||
(match_operand:SI 2 "register_operand" "0")
|
||||
;; we have to make sure %ebx still points to the GOT
|
||||
(match_operand:SI 3 "register_operand" "b")
|
||||
|
@ -12909,13 +12909,13 @@
|
|||
(define_insn_and_split "*tls_dynamic_gnu2_combine_32"
|
||||
[(set (match_operand:SI 0 "register_operand" "=&a")
|
||||
(plus:SI
|
||||
(unspec:SI [(match_operand:SI 3 "tls_modbase_operand" "")
|
||||
(unspec:SI [(match_operand 3 "tls_modbase_operand" "")
|
||||
(match_operand:SI 4 "" "")
|
||||
(match_operand:SI 2 "register_operand" "b")
|
||||
(reg:SI SP_REG)]
|
||||
UNSPEC_TLSDESC)
|
||||
(const:SI (unspec:SI
|
||||
[(match_operand:SI 1 "tls_symbolic_operand" "")]
|
||||
[(match_operand 1 "tls_symbolic_operand" "")]
|
||||
UNSPEC_DTPOFF))))
|
||||
(clobber (reg:CC FLAGS_REG))]
|
||||
"!TARGET_64BIT && TARGET_GNU2_TLS"
|
||||
|
@ -12969,7 +12969,7 @@
|
|||
(define_insn_and_split "*tls_dynamic_gnu2_combine_64"
|
||||
[(set (match_operand:DI 0 "register_operand" "=&a")
|
||||
(plus:DI
|
||||
(unspec:DI [(match_operand:DI 2 "tls_modbase_operand" "")
|
||||
(unspec:DI [(match_operand 2 "tls_modbase_operand" "")
|
||||
(match_operand:DI 3 "" "")
|
||||
(reg:DI SP_REG)]
|
||||
UNSPEC_TLSDESC)
|
||||
|
|
|
@ -491,11 +491,11 @@
|
|||
(match_operand 0 "local_symbolic_operand")))
|
||||
|
||||
;; Test for various thread-local symbols.
|
||||
(define_predicate "tls_symbolic_operand"
|
||||
(define_special_predicate "tls_symbolic_operand"
|
||||
(and (match_code "symbol_ref")
|
||||
(match_test "SYMBOL_REF_TLS_MODEL (op)")))
|
||||
|
||||
(define_predicate "tls_modbase_operand"
|
||||
(define_special_predicate "tls_modbase_operand"
|
||||
(and (match_code "symbol_ref")
|
||||
(match_test "op == ix86_tls_module_base ()")))
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue