(define_insn_and_split "*call_pop_vzeroupper"
[(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lzm"))
- (match_operand:SI 1 "" ""))
+ (match_operand 1 "" ""))
(set (reg:SI SP_REG)
(plus:SI (reg:SI SP_REG)
(match_operand:SI 2 "immediate_operand" "i")))
(unspec:SI
[(match_operand:SI 1 "register_operand" "b")
(match_operand 2 "tls_symbolic_operand" "")
- (match_operand:SI 3 "constant_call_address_operand" "z")]
+ (match_operand 3 "constant_call_address_operand" "z")]
UNSPEC_TLS_GD))
(clobber (match_scratch:SI 4 "=d"))
(clobber (match_scratch:SI 5 "=c"))
[(set (match_operand:SI 0 "register_operand" "")
(unspec:SI [(match_operand:SI 2 "register_operand" "")
(match_operand 1 "tls_symbolic_operand" "")
- (match_operand:SI 3 "constant_call_address_operand" "")]
+ (match_operand 3 "constant_call_address_operand" "")]
UNSPEC_TLS_GD))
(clobber (match_scratch:SI 4 ""))
(clobber (match_scratch:SI 5 ""))
(define_insn "*tls_global_dynamic_64_<mode>"
[(set (match_operand:P 0 "register_operand" "=a")
(call:P
- (mem:QI (match_operand:P 2 "constant_call_address_operand" "z"))
- (match_operand:P 3 "" "")))
+ (mem:QI (match_operand 2 "constant_call_address_operand" "z"))
+ (match_operand 3 "" "")))
(unspec:P [(match_operand 1 "tls_symbolic_operand" "")]
UNSPEC_TLS_GD)]
"TARGET_64BIT"
[(parallel
[(set (match_operand:P 0 "register_operand" "")
(call:P
- (mem:QI (match_operand:P 2 "constant_call_address_operand" ""))
+ (mem:QI (match_operand 2 "constant_call_address_operand" ""))
(const_int 0)))
(unspec:P [(match_operand 1 "tls_symbolic_operand" "")]
UNSPEC_TLS_GD)])]
[(set (match_operand:SI 0 "register_operand" "=a")
(unspec:SI
[(match_operand:SI 1 "register_operand" "b")
- (match_operand:SI 2 "constant_call_address_operand" "z")]
+ (match_operand 2 "constant_call_address_operand" "z")]
UNSPEC_TLS_LD_BASE))
(clobber (match_scratch:SI 3 "=d"))
(clobber (match_scratch:SI 4 "=c"))
[(set (match_operand:SI 0 "register_operand" "")
(unspec:SI
[(match_operand:SI 1 "register_operand" "")
- (match_operand:SI 2 "constant_call_address_operand" "")]
+ (match_operand 2 "constant_call_address_operand" "")]
UNSPEC_TLS_LD_BASE))
(clobber (match_scratch:SI 3 ""))
(clobber (match_scratch:SI 4 ""))
(define_insn "*tls_local_dynamic_base_64_<mode>"
[(set (match_operand:P 0 "register_operand" "=a")
(call:P
- (mem:QI (match_operand:P 1 "constant_call_address_operand" "z"))
- (match_operand:P 2 "" "")))
+ (mem:QI (match_operand 1 "constant_call_address_operand" "z"))
+ (match_operand 2 "" "")))
(unspec:P [(const_int 0)] UNSPEC_TLS_LD_BASE)]
"TARGET_64BIT"
{
[(parallel
[(set (match_operand:P 0 "register_operand" "")
(call:P
- (mem:QI (match_operand:P 1 "constant_call_address_operand" ""))
+ (mem:QI (match_operand 1 "constant_call_address_operand" ""))
(const_int 0)))
(unspec:P [(const_int 0)] UNSPEC_TLS_LD_BASE)])]
"TARGET_64BIT")
[(set (match_operand:SI 0 "register_operand" "=a")
(plus:SI
(unspec:SI [(match_operand:SI 1 "register_operand" "b")
- (match_operand:SI 2 "constant_call_address_operand" "z")]
+ (match_operand 2 "constant_call_address_operand" "z")]
UNSPEC_TLS_LD_BASE)
(const:SI (unspec:SI
[(match_operand 3 "tls_symbolic_operand" "")]
(match_test "op == ix86_tls_module_base ()")))
;; Test for a pc-relative call operand
-(define_predicate "constant_call_address_operand"
+(define_special_predicate "constant_call_address_operand"
(match_code "symbol_ref")
{
if (ix86_cmodel == CM_LARGE || ix86_cmodel == CM_LARGE_PIC)
;; Test for a valid operand for a call instruction.
;; Allow constant call address operands in Pmode only.
(define_special_predicate "call_insn_operand"
- (ior (match_test "constant_call_address_operand
- (op, mode == VOIDmode ? mode : Pmode)")
+ (ior (match_operand 0 "constant_call_address_operand")
(match_operand 0 "call_register_no_elim_operand")
(and (not (match_test "TARGET_X32"))
(match_operand 0 "memory_operand"))))
;; Similarly, but for tail calls, in which we cannot allow memory references.
(define_special_predicate "sibcall_insn_operand"
- (ior (match_test "constant_call_address_operand
- (op, mode == VOIDmode ? mode : Pmode)")
+ (ior (match_operand 0 "constant_call_address_operand")
(match_operand 0 "register_no_elim_operand")))
;; Match exactly zero.