xref: /dflybsd-src/contrib/gcc-8.0/gcc/config/i386/constraints.md (revision 38fd149817dfbff97799f62fcb70be98c4e32523)
1*38fd1498Szrj;; Constraint definitions for IA-32 and x86-64.
2*38fd1498Szrj;; Copyright (C) 2006-2018 Free Software Foundation, Inc.
3*38fd1498Szrj;;
4*38fd1498Szrj;; This file is part of GCC.
5*38fd1498Szrj;;
6*38fd1498Szrj;; GCC is free software; you can redistribute it and/or modify
7*38fd1498Szrj;; it under the terms of the GNU General Public License as published by
8*38fd1498Szrj;; the Free Software Foundation; either version 3, or (at your option)
9*38fd1498Szrj;; any later version.
10*38fd1498Szrj;;
11*38fd1498Szrj;; GCC is distributed in the hope that it will be useful,
12*38fd1498Szrj;; but WITHOUT ANY WARRANTY; without even the implied warranty of
13*38fd1498Szrj;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*38fd1498Szrj;; GNU General Public License for more details.
15*38fd1498Szrj;;
16*38fd1498Szrj;; You should have received a copy of the GNU General Public License
17*38fd1498Szrj;; along with GCC; see the file COPYING3.  If not see
18*38fd1498Szrj;; <http://www.gnu.org/licenses/>.
19*38fd1498Szrj
20*38fd1498Szrj;;; Unused letters:
21*38fd1498Szrj;;;           H
22*38fd1498Szrj;;;           h j               z
23*38fd1498Szrj
24*38fd1498Szrj;; Integer register constraints.
25*38fd1498Szrj;; It is not necessary to define 'r' here.
26*38fd1498Szrj(define_register_constraint "R" "LEGACY_REGS"
27*38fd1498Szrj "Legacy register---the eight integer registers available on all
28*38fd1498Szrj  i386 processors (@code{a}, @code{b}, @code{c}, @code{d},
29*38fd1498Szrj  @code{si}, @code{di}, @code{bp}, @code{sp}).")
30*38fd1498Szrj
31*38fd1498Szrj(define_register_constraint "q" "TARGET_64BIT ? GENERAL_REGS : Q_REGS"
32*38fd1498Szrj "Any register accessible as @code{@var{r}l}.  In 32-bit mode, @code{a},
33*38fd1498Szrj  @code{b}, @code{c}, and @code{d}; in 64-bit mode, any integer register.")
34*38fd1498Szrj
35*38fd1498Szrj(define_register_constraint "Q" "Q_REGS"
36*38fd1498Szrj "Any register accessible as @code{@var{r}h}: @code{a}, @code{b},
37*38fd1498Szrj  @code{c}, and @code{d}.")
38*38fd1498Szrj
39*38fd1498Szrj(define_register_constraint "l" "INDEX_REGS"
40*38fd1498Szrj "@internal Any register that can be used as the index in a base+index
41*38fd1498Szrj  memory access: that is, any general register except the stack pointer.")
42*38fd1498Szrj
43*38fd1498Szrj(define_register_constraint "a" "AREG"
44*38fd1498Szrj "The @code{a} register.")
45*38fd1498Szrj
46*38fd1498Szrj(define_register_constraint "b" "BREG"
47*38fd1498Szrj "The @code{b} register.")
48*38fd1498Szrj
49*38fd1498Szrj(define_register_constraint "c" "CREG"
50*38fd1498Szrj "The @code{c} register.")
51*38fd1498Szrj
52*38fd1498Szrj(define_register_constraint "d" "DREG"
53*38fd1498Szrj "The @code{d} register.")
54*38fd1498Szrj
55*38fd1498Szrj(define_register_constraint "S" "SIREG"
56*38fd1498Szrj "The @code{si} register.")
57*38fd1498Szrj
58*38fd1498Szrj(define_register_constraint "D" "DIREG"
59*38fd1498Szrj "The @code{di} register.")
60*38fd1498Szrj
61*38fd1498Szrj(define_register_constraint "A" "AD_REGS"
62*38fd1498Szrj "The @code{a} and @code{d} registers, as a pair (for instructions
63*38fd1498Szrj  that return half the result in one and half in the other).")
64*38fd1498Szrj
65*38fd1498Szrj(define_register_constraint "U" "CLOBBERED_REGS"
66*38fd1498Szrj "The call-clobbered integer registers.")
67*38fd1498Szrj
68*38fd1498Szrj;; Floating-point register constraints.
69*38fd1498Szrj(define_register_constraint "f"
70*38fd1498Szrj "TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387 ? FLOAT_REGS : NO_REGS"
71*38fd1498Szrj "Any 80387 floating-point (stack) register.")
72*38fd1498Szrj
73*38fd1498Szrj(define_register_constraint "t"
74*38fd1498Szrj "TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387 ? FP_TOP_REG : NO_REGS"
75*38fd1498Szrj "Top of 80387 floating-point stack (@code{%st(0)}).")
76*38fd1498Szrj
77*38fd1498Szrj(define_register_constraint "u"
78*38fd1498Szrj "TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387 ? FP_SECOND_REG : NO_REGS"
79*38fd1498Szrj "Second from top of 80387 floating-point stack (@code{%st(1)}).")
80*38fd1498Szrj
81*38fd1498Szrj(define_register_constraint "Yk" "TARGET_AVX512F ? MASK_EVEX_REGS : NO_REGS"
82*38fd1498Szrj"@internal Any mask register that can be used as predicate, i.e. k1-k7.")
83*38fd1498Szrj
84*38fd1498Szrj(define_register_constraint "k" "TARGET_AVX512F ? MASK_REGS : NO_REGS"
85*38fd1498Szrj"@internal Any mask register.")
86*38fd1498Szrj
87*38fd1498Szrj;; Vector registers (also used for plain floating point nowadays).
88*38fd1498Szrj(define_register_constraint "y" "TARGET_MMX ? MMX_REGS : NO_REGS"
89*38fd1498Szrj "Any MMX register.")
90*38fd1498Szrj
91*38fd1498Szrj(define_register_constraint "x" "TARGET_SSE ? SSE_REGS : NO_REGS"
92*38fd1498Szrj "Any SSE register.")
93*38fd1498Szrj
94*38fd1498Szrj(define_register_constraint "v" "TARGET_SSE ? ALL_SSE_REGS : NO_REGS"
95*38fd1498Szrj "Any EVEX encodable SSE register (@code{%xmm0-%xmm31}).")
96*38fd1498Szrj
97*38fd1498Szrj(define_register_constraint "w" "TARGET_MPX ? BND_REGS : NO_REGS"
98*38fd1498Szrj "@internal Any bound register.")
99*38fd1498Szrj
100*38fd1498Szrj;; We use the Y prefix to denote any number of conditional register sets:
101*38fd1498Szrj;;  z	First SSE register.
102*38fd1498Szrj;;  i	SSE2 inter-unit moves to SSE register enabled
103*38fd1498Szrj;;  j	SSE2 inter-unit moves from SSE register enabled
104*38fd1498Szrj;;  d	any EVEX encodable SSE register for AVX512BW target or any SSE register
105*38fd1498Szrj;;	for SSE4_1 target, when inter-unit moves to SSE register are enabled
106*38fd1498Szrj;;  e	any EVEX encodable SSE register for AVX512BW target or any SSE register
107*38fd1498Szrj;;	for SSE4_1 target, when inter-unit moves from SSE register are enabled
108*38fd1498Szrj;;  m	MMX inter-unit moves to MMX register enabled
109*38fd1498Szrj;;  n	MMX inter-unit moves from MMX register enabled
110*38fd1498Szrj;;  p	Integer register when TARGET_PARTIAL_REG_STALL is disabled
111*38fd1498Szrj;;  a	Integer register when zero extensions with AND are disabled
112*38fd1498Szrj;;  b	Any register that can be used as the GOT base when calling
113*38fd1498Szrj;;	___tls_get_addr: that is, any general register except EAX
114*38fd1498Szrj;;	and ESP, for -fno-plt if linker supports it.  Otherwise,
115*38fd1498Szrj;;	EBX.
116*38fd1498Szrj;;  f	x87 register when 80387 floating point arithmetic is enabled
117*38fd1498Szrj;;  r	SSE regs not requiring REX prefix when prefixes avoidance is enabled
118*38fd1498Szrj;;	and all SSE regs otherwise
119*38fd1498Szrj;;  v	any EVEX encodable SSE register for AVX512VL target,
120*38fd1498Szrj;;	otherwise any SSE register
121*38fd1498Szrj;;  h	EVEX encodable SSE register with number factor of four
122*38fd1498Szrj
123*38fd1498Szrj(define_register_constraint "Yz" "TARGET_SSE ? SSE_FIRST_REG : NO_REGS"
124*38fd1498Szrj "First SSE register (@code{%xmm0}).")
125*38fd1498Szrj
126*38fd1498Szrj(define_register_constraint "Yi"
127*38fd1498Szrj "TARGET_SSE2 && TARGET_INTER_UNIT_MOVES_TO_VEC ? ALL_SSE_REGS : NO_REGS"
128*38fd1498Szrj "@internal Any SSE register, when SSE2 and inter-unit moves to vector registers are enabled.")
129*38fd1498Szrj
130*38fd1498Szrj(define_register_constraint "Yj"
131*38fd1498Szrj "TARGET_SSE2 && TARGET_INTER_UNIT_MOVES_FROM_VEC ? ALL_SSE_REGS : NO_REGS"
132*38fd1498Szrj "@internal Any SSE register, when SSE2 and inter-unit moves from vector registers are enabled.")
133*38fd1498Szrj
134*38fd1498Szrj(define_register_constraint "Yd"
135*38fd1498Szrj "TARGET_INTER_UNIT_MOVES_TO_VEC
136*38fd1498Szrj  ? (TARGET_AVX512DQ
137*38fd1498Szrj     ? ALL_SSE_REGS
138*38fd1498Szrj     : (TARGET_SSE4_1 ? SSE_REGS : NO_REGS))
139*38fd1498Szrj  : NO_REGS"
140*38fd1498Szrj "@internal Any EVEX encodable SSE register (@code{%xmm0-%xmm31}) for AVX512DQ target or any SSE register for SSE4_1 target, when inter-unit moves to vector registers are enabled.")
141*38fd1498Szrj
142*38fd1498Szrj(define_register_constraint "Ye"
143*38fd1498Szrj "TARGET_INTER_UNIT_MOVES_FROM_VEC
144*38fd1498Szrj  ? (TARGET_AVX512DQ
145*38fd1498Szrj     ? ALL_SSE_REGS
146*38fd1498Szrj     : (TARGET_SSE4_1 ? SSE_REGS : NO_REGS))
147*38fd1498Szrj  : NO_REGS"
148*38fd1498Szrj "@internal Any EVEX encodable SSE register (@code{%xmm0-%xmm31}) for AVX512DQ target or any SSE register for SSE4_1 target, when inter-unit moves from vector registers are enabled.")
149*38fd1498Szrj
150*38fd1498Szrj(define_register_constraint "Ym"
151*38fd1498Szrj "TARGET_MMX && TARGET_INTER_UNIT_MOVES_TO_VEC ? MMX_REGS : NO_REGS"
152*38fd1498Szrj "@internal Any MMX register, when inter-unit moves to vector registers are enabled.")
153*38fd1498Szrj
154*38fd1498Szrj(define_register_constraint "Yn"
155*38fd1498Szrj "TARGET_MMX && TARGET_INTER_UNIT_MOVES_FROM_VEC ? MMX_REGS : NO_REGS"
156*38fd1498Szrj "@internal Any MMX register, when inter-unit moves from vector registers are enabled.")
157*38fd1498Szrj
158*38fd1498Szrj(define_register_constraint "Yp"
159*38fd1498Szrj "TARGET_PARTIAL_REG_STALL ? NO_REGS : GENERAL_REGS"
160*38fd1498Szrj "@internal Any integer register when TARGET_PARTIAL_REG_STALL is disabled.")
161*38fd1498Szrj
162*38fd1498Szrj(define_register_constraint "Ya"
163*38fd1498Szrj "TARGET_ZERO_EXTEND_WITH_AND && optimize_function_for_speed_p (cfun)
164*38fd1498Szrj  ? NO_REGS : GENERAL_REGS"
165*38fd1498Szrj "@internal Any integer register when zero extensions with AND are disabled.")
166*38fd1498Szrj
167*38fd1498Szrj(define_register_constraint "Yb"
168*38fd1498Szrj "(!flag_plt && HAVE_AS_IX86_TLS_GET_ADDR_GOT) ? TLS_GOTBASE_REGS : BREG"
169*38fd1498Szrj "@internal Any register that can be used as the GOT base when calling
170*38fd1498Szrj  ___tls_get_addr: that is, any general register except @code{a} and
171*38fd1498Szrj  @code{sp} registers, for -fno-plt if linker supports it.  Otherwise,
172*38fd1498Szrj  @code{b} register.")
173*38fd1498Szrj
174*38fd1498Szrj(define_register_constraint "Yf"
175*38fd1498Szrj "(ix86_fpmath & FPMATH_387) ? FLOAT_REGS : NO_REGS"
176*38fd1498Szrj "@internal Any x87 register when 80387 FP arithmetic is enabled.")
177*38fd1498Szrj
178*38fd1498Szrj(define_register_constraint "Yr"
179*38fd1498Szrj "TARGET_SSE ? (TARGET_AVOID_4BYTE_PREFIXES ? NO_REX_SSE_REGS : ALL_SSE_REGS) : NO_REGS"
180*38fd1498Szrj "@internal Lower SSE register when avoiding REX prefix and all SSE registers otherwise.")
181*38fd1498Szrj
182*38fd1498Szrj(define_register_constraint "Yv"
183*38fd1498Szrj "TARGET_AVX512VL ? ALL_SSE_REGS : TARGET_SSE ? SSE_REGS : NO_REGS"
184*38fd1498Szrj "@internal For AVX512VL, any EVEX encodable SSE register (@code{%xmm0-%xmm31}), otherwise any SSE register.")
185*38fd1498Szrj
186*38fd1498Szrj(define_register_constraint "Yh" "TARGET_AVX512F ? MOD4_SSE_REGS : NO_REGS"
187*38fd1498Szrj "@internal Any EVEX encodable SSE register, which has number factor of four.")
188*38fd1498Szrj
189*38fd1498Szrj;; We use the B prefix to denote any number of internal operands:
190*38fd1498Szrj;;  f  FLAGS_REG
191*38fd1498Szrj;;  g  GOT memory operand.
192*38fd1498Szrj;;  m  Vector memory operand
193*38fd1498Szrj;;  c  Constant memory operand
194*38fd1498Szrj;;  n  Memory operand without REX prefix
195*38fd1498Szrj;;  s  Sibcall memory operand, not valid for TARGET_X32
196*38fd1498Szrj;;  w  Call memory operand, not valid for TARGET_X32
197*38fd1498Szrj;;  z  Constant call address operand.
198*38fd1498Szrj;;  C  SSE constant operand.
199*38fd1498Szrj
200*38fd1498Szrj(define_constraint "Bf"
201*38fd1498Szrj  "@internal Flags register operand."
202*38fd1498Szrj  (match_operand 0 "flags_reg_operand"))
203*38fd1498Szrj
204*38fd1498Szrj(define_constraint "Bg"
205*38fd1498Szrj  "@internal GOT memory operand."
206*38fd1498Szrj  (match_operand 0 "GOT_memory_operand"))
207*38fd1498Szrj
208*38fd1498Szrj(define_special_memory_constraint "Bm"
209*38fd1498Szrj  "@internal Vector memory operand."
210*38fd1498Szrj  (match_operand 0 "vector_memory_operand"))
211*38fd1498Szrj
212*38fd1498Szrj(define_special_memory_constraint "Bc"
213*38fd1498Szrj  "@internal Constant memory operand."
214*38fd1498Szrj  (and (match_operand 0 "memory_operand")
215*38fd1498Szrj       (match_test "constant_address_p (XEXP (op, 0))")))
216*38fd1498Szrj
217*38fd1498Szrj(define_special_memory_constraint "Bn"
218*38fd1498Szrj  "@internal Memory operand without REX prefix."
219*38fd1498Szrj  (match_operand 0 "norex_memory_operand"))
220*38fd1498Szrj
221*38fd1498Szrj(define_constraint "Bs"
222*38fd1498Szrj  "@internal Sibcall memory operand."
223*38fd1498Szrj  (ior (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER"))
224*38fd1498Szrj	    (not (match_test "TARGET_X32"))
225*38fd1498Szrj	    (match_operand 0 "sibcall_memory_operand"))
226*38fd1498Szrj       (and (match_test "TARGET_X32 && Pmode == DImode")
227*38fd1498Szrj	    (match_operand 0 "GOT_memory_operand"))))
228*38fd1498Szrj
229*38fd1498Szrj(define_constraint "Bw"
230*38fd1498Szrj  "@internal Call memory operand."
231*38fd1498Szrj  (ior (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER"))
232*38fd1498Szrj	    (not (match_test "TARGET_X32"))
233*38fd1498Szrj	    (match_operand 0 "memory_operand"))
234*38fd1498Szrj       (and (match_test "TARGET_X32 && Pmode == DImode")
235*38fd1498Szrj	    (match_operand 0 "GOT_memory_operand"))))
236*38fd1498Szrj
237*38fd1498Szrj(define_constraint "Bz"
238*38fd1498Szrj  "@internal Constant call address operand."
239*38fd1498Szrj  (match_operand 0 "constant_call_address_operand"))
240*38fd1498Szrj
241*38fd1498Szrj(define_constraint "BC"
242*38fd1498Szrj  "@internal SSE constant -1 operand."
243*38fd1498Szrj  (and (match_test "TARGET_SSE")
244*38fd1498Szrj       (ior (match_test "op == constm1_rtx")
245*38fd1498Szrj	    (match_operand 0 "vector_all_ones_operand"))))
246*38fd1498Szrj
247*38fd1498Szrj;; Integer constant constraints.
248*38fd1498Szrj(define_constraint "I"
249*38fd1498Szrj  "Integer constant in the range 0 @dots{} 31, for 32-bit shifts."
250*38fd1498Szrj  (and (match_code "const_int")
251*38fd1498Szrj       (match_test "IN_RANGE (ival, 0, 31)")))
252*38fd1498Szrj
253*38fd1498Szrj(define_constraint "J"
254*38fd1498Szrj  "Integer constant in the range 0 @dots{} 63, for 64-bit shifts."
255*38fd1498Szrj  (and (match_code "const_int")
256*38fd1498Szrj       (match_test "IN_RANGE (ival, 0, 63)")))
257*38fd1498Szrj
258*38fd1498Szrj(define_constraint "K"
259*38fd1498Szrj  "Signed 8-bit integer constant."
260*38fd1498Szrj  (and (match_code "const_int")
261*38fd1498Szrj       (match_test "IN_RANGE (ival, -128, 127)")))
262*38fd1498Szrj
263*38fd1498Szrj(define_constraint "L"
264*38fd1498Szrj  "@code{0xFF}, @code{0xFFFF} or @code{0xFFFFFFFF}
265*38fd1498Szrj   for AND as a zero-extending move."
266*38fd1498Szrj  (and (match_code "const_int")
267*38fd1498Szrj       (match_test "ival == 0xff || ival == 0xffff
268*38fd1498Szrj		    || ival == (HOST_WIDE_INT) 0xffffffff")))
269*38fd1498Szrj
270*38fd1498Szrj(define_constraint "M"
271*38fd1498Szrj  "0, 1, 2, or 3 (shifts for the @code{lea} instruction)."
272*38fd1498Szrj  (and (match_code "const_int")
273*38fd1498Szrj       (match_test "IN_RANGE (ival, 0, 3)")))
274*38fd1498Szrj
275*38fd1498Szrj(define_constraint "N"
276*38fd1498Szrj  "Unsigned 8-bit integer constant (for @code{in} and @code{out}
277*38fd1498Szrj   instructions)."
278*38fd1498Szrj  (and (match_code "const_int")
279*38fd1498Szrj       (match_test "IN_RANGE (ival, 0, 255)")))
280*38fd1498Szrj
281*38fd1498Szrj(define_constraint "O"
282*38fd1498Szrj  "@internal Integer constant in the range 0 @dots{} 127, for 128-bit shifts."
283*38fd1498Szrj  (and (match_code "const_int")
284*38fd1498Szrj       (match_test "IN_RANGE (ival, 0, 127)")))
285*38fd1498Szrj
286*38fd1498Szrj;; Floating-point constant constraints.
287*38fd1498Szrj;; We allow constants even if TARGET_80387 isn't set, because the
288*38fd1498Szrj;; stack register converter may need to load 0.0 into the function
289*38fd1498Szrj;; value register (top of stack).
290*38fd1498Szrj(define_constraint "G"
291*38fd1498Szrj  "Standard 80387 floating point constant."
292*38fd1498Szrj  (and (match_code "const_double")
293*38fd1498Szrj       (match_test "standard_80387_constant_p (op) > 0")))
294*38fd1498Szrj
295*38fd1498Szrj;; This can theoretically be any mode's CONST0_RTX.
296*38fd1498Szrj(define_constraint "C"
297*38fd1498Szrj  "SSE constant zero operand."
298*38fd1498Szrj  (and (match_test "TARGET_SSE")
299*38fd1498Szrj       (ior (match_test "op == const0_rtx")
300*38fd1498Szrj	    (match_operand 0 "const0_operand"))))
301*38fd1498Szrj
302*38fd1498Szrj;; Constant-or-symbol-reference constraints.
303*38fd1498Szrj
304*38fd1498Szrj(define_constraint "e"
305*38fd1498Szrj  "32-bit signed integer constant, or a symbolic reference known
306*38fd1498Szrj   to fit that range (for immediate operands in sign-extending x86-64
307*38fd1498Szrj   instructions)."
308*38fd1498Szrj  (match_operand 0 "x86_64_immediate_operand"))
309*38fd1498Szrj
310*38fd1498Szrj;; We use W prefix to denote any number of
311*38fd1498Szrj;; constant-or-symbol-reference constraints
312*38fd1498Szrj
313*38fd1498Szrj(define_constraint "We"
314*38fd1498Szrj  "32-bit signed integer constant, or a symbolic reference known
315*38fd1498Szrj   to fit that range (for sign-extending conversion operations that
316*38fd1498Szrj   require non-VOIDmode immediate operands)."
317*38fd1498Szrj  (and (match_operand 0 "x86_64_immediate_operand")
318*38fd1498Szrj       (match_test "GET_MODE (op) != VOIDmode")))
319*38fd1498Szrj
320*38fd1498Szrj(define_constraint "Wz"
321*38fd1498Szrj  "32-bit unsigned integer constant, or a symbolic reference known
322*38fd1498Szrj   to fit that range (for zero-extending conversion operations that
323*38fd1498Szrj   require non-VOIDmode immediate operands)."
324*38fd1498Szrj  (and (match_operand 0 "x86_64_zext_immediate_operand")
325*38fd1498Szrj       (match_test "GET_MODE (op) != VOIDmode")))
326*38fd1498Szrj
327*38fd1498Szrj(define_constraint "Wd"
328*38fd1498Szrj  "128-bit integer constant where both the high and low 64-bit word
329*38fd1498Szrj   of it satisfies the e constraint."
330*38fd1498Szrj  (match_operand 0 "x86_64_hilo_int_operand"))
331*38fd1498Szrj
332*38fd1498Szrj(define_constraint "Wf"
333*38fd1498Szrj  "32-bit signed integer constant zero extended from word size
334*38fd1498Szrj   to double word size."
335*38fd1498Szrj  (match_operand 0 "x86_64_dwzext_immediate_operand"))
336*38fd1498Szrj
337*38fd1498Szrj(define_constraint "Z"
338*38fd1498Szrj  "32-bit unsigned integer constant, or a symbolic reference known
339*38fd1498Szrj   to fit that range (for immediate operands in zero-extending x86-64
340*38fd1498Szrj   instructions)."
341*38fd1498Szrj  (match_operand 0 "x86_64_zext_immediate_operand"))
342*38fd1498Szrj
343*38fd1498Szrj;; T prefix is used for different address constraints
344*38fd1498Szrj;;   v - VSIB address
345*38fd1498Szrj;;   s - address with no segment register
346*38fd1498Szrj;;   i - address with no index and no rip
347*38fd1498Szrj;;   b - address with no base and no rip
348*38fd1498Szrj
349*38fd1498Szrj(define_address_constraint "Tv"
350*38fd1498Szrj  "VSIB address operand"
351*38fd1498Szrj  (match_operand 0 "vsib_address_operand"))
352*38fd1498Szrj
353*38fd1498Szrj(define_address_constraint "Ts"
354*38fd1498Szrj  "Address operand without segment register"
355*38fd1498Szrj  (match_operand 0 "address_no_seg_operand"))
356*38fd1498Szrj
357*38fd1498Szrj(define_address_constraint "Ti"
358*38fd1498Szrj  "MPX address operand without index"
359*38fd1498Szrj  (match_operand 0 "address_mpx_no_index_operand"))
360*38fd1498Szrj
361*38fd1498Szrj(define_address_constraint "Tb"
362*38fd1498Szrj  "MPX address operand without base"
363*38fd1498Szrj  (match_operand 0 "address_mpx_no_base_operand"))
364