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