LCOV - code coverage report
Current view: top level - build-llvm/lib/Target/X86 - X86GenRegisterInfo.inc (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 70 106 66.0 %
Date: 2018-09-23 13:06:45 Functions: 15 18 83.3 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
       2             : |*                                                                            *|
       3             : |* Target Register Enum Values                                                *|
       4             : |*                                                                            *|
       5             : |* Automatically generated file, do not edit!                                 *|
       6             : |*                                                                            *|
       7             : \*===----------------------------------------------------------------------===*/
       8             : 
       9             : 
      10             : #ifdef GET_REGINFO_ENUM
      11             : #undef GET_REGINFO_ENUM
      12             : 
      13             : namespace llvm {
      14             : 
      15             : class MCRegisterClass;
      16             : extern const MCRegisterClass X86MCRegisterClasses[];
      17             : 
      18             : namespace X86 {
      19             : enum {
      20             :   NoRegister,
      21             :   AH = 1,
      22             :   AL = 2,
      23             :   AX = 3,
      24             :   BH = 4,
      25             :   BL = 5,
      26             :   BP = 6,
      27             :   BPH = 7,
      28             :   BPL = 8,
      29             :   BX = 9,
      30             :   CH = 10,
      31             :   CL = 11,
      32             :   CS = 12,
      33             :   CX = 13,
      34             :   DF = 14,
      35             :   DH = 15,
      36             :   DI = 16,
      37             :   DIH = 17,
      38             :   DIL = 18,
      39             :   DL = 19,
      40             :   DS = 20,
      41             :   DX = 21,
      42             :   EAX = 22,
      43             :   EBP = 23,
      44             :   EBX = 24,
      45             :   ECX = 25,
      46             :   EDI = 26,
      47             :   EDX = 27,
      48             :   EFLAGS = 28,
      49             :   EIP = 29,
      50             :   EIZ = 30,
      51             :   ES = 31,
      52             :   ESI = 32,
      53             :   ESP = 33,
      54             :   FPSW = 34,
      55             :   FS = 35,
      56             :   GS = 36,
      57             :   HAX = 37,
      58             :   HBP = 38,
      59             :   HBX = 39,
      60             :   HCX = 40,
      61             :   HDI = 41,
      62             :   HDX = 42,
      63             :   HIP = 43,
      64             :   HSI = 44,
      65             :   HSP = 45,
      66             :   IP = 46,
      67             :   RAX = 47,
      68             :   RBP = 48,
      69             :   RBX = 49,
      70             :   RCX = 50,
      71             :   RDI = 51,
      72             :   RDX = 52,
      73             :   RIP = 53,
      74             :   RIZ = 54,
      75             :   RSI = 55,
      76             :   RSP = 56,
      77             :   SI = 57,
      78             :   SIH = 58,
      79             :   SIL = 59,
      80             :   SP = 60,
      81             :   SPH = 61,
      82             :   SPL = 62,
      83             :   SS = 63,
      84             :   SSP = 64,
      85             :   BND0 = 65,
      86             :   BND1 = 66,
      87             :   BND2 = 67,
      88             :   BND3 = 68,
      89             :   CR0 = 69,
      90             :   CR1 = 70,
      91             :   CR2 = 71,
      92             :   CR3 = 72,
      93             :   CR4 = 73,
      94             :   CR5 = 74,
      95             :   CR6 = 75,
      96             :   CR7 = 76,
      97             :   CR8 = 77,
      98             :   CR9 = 78,
      99             :   CR10 = 79,
     100             :   CR11 = 80,
     101             :   CR12 = 81,
     102             :   CR13 = 82,
     103             :   CR14 = 83,
     104             :   CR15 = 84,
     105             :   DR0 = 85,
     106             :   DR1 = 86,
     107             :   DR2 = 87,
     108             :   DR3 = 88,
     109             :   DR4 = 89,
     110             :   DR5 = 90,
     111             :   DR6 = 91,
     112             :   DR7 = 92,
     113             :   DR8 = 93,
     114             :   DR9 = 94,
     115             :   DR10 = 95,
     116             :   DR11 = 96,
     117             :   DR12 = 97,
     118             :   DR13 = 98,
     119             :   DR14 = 99,
     120             :   DR15 = 100,
     121             :   FP0 = 101,
     122             :   FP1 = 102,
     123             :   FP2 = 103,
     124             :   FP3 = 104,
     125             :   FP4 = 105,
     126             :   FP5 = 106,
     127             :   FP6 = 107,
     128             :   FP7 = 108,
     129             :   K0 = 109,
     130             :   K1 = 110,
     131             :   K2 = 111,
     132             :   K3 = 112,
     133             :   K4 = 113,
     134             :   K5 = 114,
     135             :   K6 = 115,
     136             :   K7 = 116,
     137             :   MM0 = 117,
     138             :   MM1 = 118,
     139             :   MM2 = 119,
     140             :   MM3 = 120,
     141             :   MM4 = 121,
     142             :   MM5 = 122,
     143             :   MM6 = 123,
     144             :   MM7 = 124,
     145             :   R8 = 125,
     146             :   R9 = 126,
     147             :   R10 = 127,
     148             :   R11 = 128,
     149             :   R12 = 129,
     150             :   R13 = 130,
     151             :   R14 = 131,
     152             :   R15 = 132,
     153             :   ST0 = 133,
     154             :   ST1 = 134,
     155             :   ST2 = 135,
     156             :   ST3 = 136,
     157             :   ST4 = 137,
     158             :   ST5 = 138,
     159             :   ST6 = 139,
     160             :   ST7 = 140,
     161             :   XMM0 = 141,
     162             :   XMM1 = 142,
     163             :   XMM2 = 143,
     164             :   XMM3 = 144,
     165             :   XMM4 = 145,
     166             :   XMM5 = 146,
     167             :   XMM6 = 147,
     168             :   XMM7 = 148,
     169             :   XMM8 = 149,
     170             :   XMM9 = 150,
     171             :   XMM10 = 151,
     172             :   XMM11 = 152,
     173             :   XMM12 = 153,
     174             :   XMM13 = 154,
     175             :   XMM14 = 155,
     176             :   XMM15 = 156,
     177             :   XMM16 = 157,
     178             :   XMM17 = 158,
     179             :   XMM18 = 159,
     180             :   XMM19 = 160,
     181             :   XMM20 = 161,
     182             :   XMM21 = 162,
     183             :   XMM22 = 163,
     184             :   XMM23 = 164,
     185             :   XMM24 = 165,
     186             :   XMM25 = 166,
     187             :   XMM26 = 167,
     188             :   XMM27 = 168,
     189             :   XMM28 = 169,
     190             :   XMM29 = 170,
     191             :   XMM30 = 171,
     192             :   XMM31 = 172,
     193             :   YMM0 = 173,
     194             :   YMM1 = 174,
     195             :   YMM2 = 175,
     196             :   YMM3 = 176,
     197             :   YMM4 = 177,
     198             :   YMM5 = 178,
     199             :   YMM6 = 179,
     200             :   YMM7 = 180,
     201             :   YMM8 = 181,
     202             :   YMM9 = 182,
     203             :   YMM10 = 183,
     204             :   YMM11 = 184,
     205             :   YMM12 = 185,
     206             :   YMM13 = 186,
     207             :   YMM14 = 187,
     208             :   YMM15 = 188,
     209             :   YMM16 = 189,
     210             :   YMM17 = 190,
     211             :   YMM18 = 191,
     212             :   YMM19 = 192,
     213             :   YMM20 = 193,
     214             :   YMM21 = 194,
     215             :   YMM22 = 195,
     216             :   YMM23 = 196,
     217             :   YMM24 = 197,
     218             :   YMM25 = 198,
     219             :   YMM26 = 199,
     220             :   YMM27 = 200,
     221             :   YMM28 = 201,
     222             :   YMM29 = 202,
     223             :   YMM30 = 203,
     224             :   YMM31 = 204,
     225             :   ZMM0 = 205,
     226             :   ZMM1 = 206,
     227             :   ZMM2 = 207,
     228             :   ZMM3 = 208,
     229             :   ZMM4 = 209,
     230             :   ZMM5 = 210,
     231             :   ZMM6 = 211,
     232             :   ZMM7 = 212,
     233             :   ZMM8 = 213,
     234             :   ZMM9 = 214,
     235             :   ZMM10 = 215,
     236             :   ZMM11 = 216,
     237             :   ZMM12 = 217,
     238             :   ZMM13 = 218,
     239             :   ZMM14 = 219,
     240             :   ZMM15 = 220,
     241             :   ZMM16 = 221,
     242             :   ZMM17 = 222,
     243             :   ZMM18 = 223,
     244             :   ZMM19 = 224,
     245             :   ZMM20 = 225,
     246             :   ZMM21 = 226,
     247             :   ZMM22 = 227,
     248             :   ZMM23 = 228,
     249             :   ZMM24 = 229,
     250             :   ZMM25 = 230,
     251             :   ZMM26 = 231,
     252             :   ZMM27 = 232,
     253             :   ZMM28 = 233,
     254             :   ZMM29 = 234,
     255             :   ZMM30 = 235,
     256             :   ZMM31 = 236,
     257             :   R8B = 237,
     258             :   R9B = 238,
     259             :   R10B = 239,
     260             :   R11B = 240,
     261             :   R12B = 241,
     262             :   R13B = 242,
     263             :   R14B = 243,
     264             :   R15B = 244,
     265             :   R8BH = 245,
     266             :   R9BH = 246,
     267             :   R10BH = 247,
     268             :   R11BH = 248,
     269             :   R12BH = 249,
     270             :   R13BH = 250,
     271             :   R14BH = 251,
     272             :   R15BH = 252,
     273             :   R8D = 253,
     274             :   R9D = 254,
     275             :   R10D = 255,
     276             :   R11D = 256,
     277             :   R12D = 257,
     278             :   R13D = 258,
     279             :   R14D = 259,
     280             :   R15D = 260,
     281             :   R8W = 261,
     282             :   R9W = 262,
     283             :   R10W = 263,
     284             :   R11W = 264,
     285             :   R12W = 265,
     286             :   R13W = 266,
     287             :   R14W = 267,
     288             :   R15W = 268,
     289             :   R8WH = 269,
     290             :   R9WH = 270,
     291             :   R10WH = 271,
     292             :   R11WH = 272,
     293             :   R12WH = 273,
     294             :   R13WH = 274,
     295             :   R14WH = 275,
     296             :   R15WH = 276,
     297             :   NUM_TARGET_REGS       // 277
     298             : };
     299             : } // end namespace X86
     300             : 
     301             : // Register classes
     302             : 
     303             : namespace X86 {
     304             : enum {
     305             :   GR8RegClassID = 0,
     306             :   GRH8RegClassID = 1,
     307             :   GR8_NOREXRegClassID = 2,
     308             :   GR8_ABCD_HRegClassID = 3,
     309             :   GR8_ABCD_LRegClassID = 4,
     310             :   GRH16RegClassID = 5,
     311             :   GR16RegClassID = 6,
     312             :   GR16_NOREXRegClassID = 7,
     313             :   VK1RegClassID = 8,
     314             :   VK16RegClassID = 9,
     315             :   VK2RegClassID = 10,
     316             :   VK4RegClassID = 11,
     317             :   VK8RegClassID = 12,
     318             :   VK16WMRegClassID = 13,
     319             :   VK1WMRegClassID = 14,
     320             :   VK2WMRegClassID = 15,
     321             :   VK4WMRegClassID = 16,
     322             :   VK8WMRegClassID = 17,
     323             :   SEGMENT_REGRegClassID = 18,
     324             :   GR16_ABCDRegClassID = 19,
     325             :   FPCCRRegClassID = 20,
     326             :   FR32XRegClassID = 21,
     327             :   LOW32_ADDR_ACCESS_RBPRegClassID = 22,
     328             :   LOW32_ADDR_ACCESSRegClassID = 23,
     329             :   LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID = 24,
     330             :   DEBUG_REGRegClassID = 25,
     331             :   FR32RegClassID = 26,
     332             :   GR32RegClassID = 27,
     333             :   GR32_NOSPRegClassID = 28,
     334             :   LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClassID = 29,
     335             :   GR32_NOREXRegClassID = 30,
     336             :   VK32RegClassID = 31,
     337             :   GR32_NOREX_NOSPRegClassID = 32,
     338             :   RFP32RegClassID = 33,
     339             :   VK32WMRegClassID = 34,
     340             :   GR32_ABCDRegClassID = 35,
     341             :   GR32_TCRegClassID = 36,
     342             :   GR32_ADRegClassID = 37,
     343             :   GR32_BPSPRegClassID = 38,
     344             :   GR32_BSIRegClassID = 39,
     345             :   GR32_CBRegClassID = 40,
     346             :   GR32_DCRegClassID = 41,
     347             :   GR32_DIBPRegClassID = 42,
     348             :   GR32_SIDIRegClassID = 43,
     349             :   LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClassID = 44,
     350             :   CCRRegClassID = 45,
     351             :   DFCCRRegClassID = 46,
     352             :   GR32_ABCD_and_GR32_BSIRegClassID = 47,
     353             :   GR32_AD_and_GR32_DCRegClassID = 48,
     354             :   GR32_BPSP_and_GR32_DIBPRegClassID = 49,
     355             :   GR32_BSI_and_GR32_SIDIRegClassID = 50,
     356             :   GR32_CB_and_GR32_DCRegClassID = 51,
     357             :   GR32_DIBP_and_GR32_SIDIRegClassID = 52,
     358             :   LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitRegClassID = 53,
     359             :   LOW32_ADDR_ACCESS_with_sub_32bitRegClassID = 54,
     360             :   RFP64RegClassID = 55,
     361             :   FR64XRegClassID = 56,
     362             :   GR64RegClassID = 57,
     363             :   CONTROL_REGRegClassID = 58,
     364             :   FR64RegClassID = 59,
     365             :   GR64_with_sub_8bitRegClassID = 60,
     366             :   GR64_NOSPRegClassID = 61,
     367             :   GR64_NOREXRegClassID = 62,
     368             :   GR64_TCRegClassID = 63,
     369             :   GR64_NOSP_and_GR64_TCRegClassID = 64,
     370             :   GR64_TCW64RegClassID = 65,
     371             :   GR64_with_sub_16bit_in_GR16_NOREXRegClassID = 66,
     372             :   VK64RegClassID = 67,
     373             :   VR64RegClassID = 68,
     374             :   GR64_NOREX_NOSPRegClassID = 69,
     375             :   GR64_NOSP_and_GR64_TCW64RegClassID = 70,
     376             :   GR64_TC_and_GR64_TCW64RegClassID = 71,
     377             :   VK64WMRegClassID = 72,
     378             :   GR64_NOREX_and_GR64_TCRegClassID = 73,
     379             :   GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClassID = 74,
     380             :   GR64_NOREX_NOSP_and_GR64_TCRegClassID = 75,
     381             :   GR64_ABCDRegClassID = 76,
     382             :   GR64_NOREX_and_GR64_TCW64RegClassID = 77,
     383             :   GR64_with_sub_32bit_in_GR32_TCRegClassID = 78,
     384             :   GR64_ADRegClassID = 79,
     385             :   GR64_and_LOW32_ADDR_ACCESS_RBPRegClassID = 80,
     386             :   GR64_with_sub_32bit_in_GR32_BPSPRegClassID = 81,
     387             :   GR64_with_sub_32bit_in_GR32_BSIRegClassID = 82,
     388             :   GR64_with_sub_32bit_in_GR32_CBRegClassID = 83,
     389             :   GR64_with_sub_32bit_in_GR32_DCRegClassID = 84,
     390             :   GR64_with_sub_32bit_in_GR32_DIBPRegClassID = 85,
     391             :   GR64_with_sub_32bit_in_GR32_SIDIRegClassID = 86,
     392             :   GR64_and_LOW32_ADDR_ACCESSRegClassID = 87,
     393             :   GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSIRegClassID = 88,
     394             :   GR64_with_sub_32bit_in_GR32_AD_and_GR32_DCRegClassID = 89,
     395             :   GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBPRegClassID = 90,
     396             :   GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDIRegClassID = 91,
     397             :   GR64_with_sub_32bit_in_GR32_CB_and_GR32_DCRegClassID = 92,
     398             :   GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDIRegClassID = 93,
     399             :   RSTRegClassID = 94,
     400             :   RFP80RegClassID = 95,
     401             :   VR128XRegClassID = 96,
     402             :   VR128RegClassID = 97,
     403             :   VR128HRegClassID = 98,
     404             :   VR128LRegClassID = 99,
     405             :   BNDRRegClassID = 100,
     406             :   VR256XRegClassID = 101,
     407             :   VR256RegClassID = 102,
     408             :   VR256HRegClassID = 103,
     409             :   VR256LRegClassID = 104,
     410             :   VR512RegClassID = 105,
     411             :   VR512_with_sub_xmm_in_FR32RegClassID = 106,
     412             :   VR512_with_sub_xmm_in_VR128HRegClassID = 107,
     413             :   VR512_with_sub_xmm_in_VR128LRegClassID = 108,
     414             : 
     415             :   };
     416             : } // end namespace X86
     417             : 
     418             : 
     419             : // Subregister indices
     420             : 
     421             : namespace X86 {
     422             : enum {
     423             :   NoSubRegister,
     424             :   sub_8bit,     // 1
     425             :   sub_8bit_hi,  // 2
     426             :   sub_8bit_hi_phony,    // 3
     427             :   sub_16bit,    // 4
     428             :   sub_16bit_hi, // 5
     429             :   sub_32bit,    // 6
     430             :   sub_xmm,      // 7
     431             :   sub_ymm,      // 8
     432             :   NUM_TARGET_SUBREGS
     433             : };
     434             : } // end namespace X86
     435             : 
     436             : } // end namespace llvm
     437             : 
     438             : #endif // GET_REGINFO_ENUM
     439             : 
     440             : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
     441             : |*                                                                            *|
     442             : |* MC Register Information                                                    *|
     443             : |*                                                                            *|
     444             : |* Automatically generated file, do not edit!                                 *|
     445             : |*                                                                            *|
     446             : \*===----------------------------------------------------------------------===*/
     447             : 
     448             : 
     449             : #ifdef GET_REGINFO_MC_DESC
     450             : #undef GET_REGINFO_MC_DESC
     451             : 
     452             : namespace llvm {
     453             : 
     454             : extern const MCPhysReg X86RegDiffLists[] = {
     455             :   /* 0 */ 0, 1, 0,
     456             :   /* 3 */ 64875, 1, 1, 0,
     457             :   /* 7 */ 65259, 1, 1, 0,
     458             :   /* 11 */ 65397, 1, 1, 0,
     459             :   /* 15 */ 65466, 1, 1, 0,
     460             :   /* 19 */ 2, 1, 0,
     461             :   /* 22 */ 4, 1, 0,
     462             :   /* 25 */ 6, 1, 0,
     463             :   /* 28 */ 11, 1, 0,
     464             :   /* 31 */ 22, 1, 0,
     465             :   /* 34 */ 26, 1, 0,
     466             :   /* 37 */ 29, 1, 0,
     467             :   /* 40 */ 64851, 1, 0,
     468             :   /* 43 */ 10, 3, 0,
     469             :   /* 46 */ 4, 0,
     470             :   /* 48 */ 5, 0,
     471             :   /* 50 */ 65292, 1, 7, 0,
     472             :   /* 54 */ 65417, 1, 7, 0,
     473             :   /* 58 */ 10, 3, 7, 0,
     474             :   /* 62 */ 65512, 8, 0,
     475             :   /* 65 */ 65342, 1, 11, 0,
     476             :   /* 69 */ 65348, 1, 11, 0,
     477             :   /* 73 */ 65442, 1, 11, 0,
     478             :   /* 77 */ 65448, 1, 11, 0,
     479             :   /* 81 */ 12, 0,
     480             :   /* 83 */ 65342, 1, 14, 0,
     481             :   /* 87 */ 65348, 1, 14, 0,
     482             :   /* 91 */ 65442, 1, 14, 0,
     483             :   /* 95 */ 65448, 1, 14, 0,
     484             :   /* 99 */ 21, 0,
     485             :   /* 101 */ 22, 0,
     486             :   /* 103 */ 65534, 65509, 23, 0,
     487             :   /* 107 */ 65535, 65509, 23, 0,
     488             :   /* 111 */ 65534, 65511, 23, 0,
     489             :   /* 115 */ 65535, 65511, 23, 0,
     490             :   /* 119 */ 65524, 23, 0,
     491             :   /* 122 */ 128, 8, 65512, 8, 24, 0,
     492             :   /* 128 */ 65519, 24, 0,
     493             :   /* 131 */ 65522, 24, 0,
     494             :   /* 134 */ 65511, 65526, 2, 65535, 24, 0,
     495             :   /* 140 */ 2, 6, 25, 0,
     496             :   /* 144 */ 6, 6, 25, 0,
     497             :   /* 148 */ 65534, 10, 25, 0,
     498             :   /* 152 */ 65535, 10, 25, 0,
     499             :   /* 156 */ 2, 12, 25, 0,
     500             :   /* 160 */ 3, 12, 25, 0,
     501             :   /* 164 */ 4, 15, 25, 0,
     502             :   /* 168 */ 5, 15, 25, 0,
     503             :   /* 172 */ 65534, 17, 25, 0,
     504             :   /* 176 */ 65535, 17, 25, 0,
     505             :   /* 180 */ 1, 19, 25, 0,
     506             :   /* 184 */ 2, 19, 25, 0,
     507             :   /* 188 */ 65521, 25, 0,
     508             :   /* 191 */ 26, 0,
     509             :   /* 193 */ 65511, 65530, 65534, 65532, 27, 0,
     510             :   /* 199 */ 65511, 65524, 65534, 65535, 30, 0,
     511             :   /* 205 */ 65511, 65519, 2, 65535, 31, 0,
     512             :   /* 211 */ 32, 32, 0,
     513             :   /* 214 */ 65511, 65521, 65532, 65535, 35, 0,
     514             :   /* 220 */ 65511, 65517, 65535, 65535, 36, 0,
     515             :   /* 226 */ 64829, 0,
     516             :   /* 228 */ 64900, 0,
     517             :   /* 230 */ 64923, 0,
     518             :   /* 232 */ 65131, 0,
     519             :   /* 234 */ 65520, 65408, 0,
     520             :   /* 237 */ 16, 65528, 65408, 0,
     521             :   /* 241 */ 24, 65528, 65408, 0,
     522             :   /* 245 */ 65430, 0,
     523             :   /* 247 */ 65432, 0,
     524             :   /* 249 */ 65461, 0,
     525             :   /* 251 */ 65493, 0,
     526             :   /* 253 */ 65504, 65504, 0,
     527             :   /* 256 */ 65509, 0,
     528             :   /* 258 */ 65511, 0,
     529             :   /* 260 */ 65514, 0,
     530             :   /* 262 */ 65513, 27, 2, 65535, 65520, 0,
     531             :   /* 268 */ 65513, 25, 2, 65535, 65522, 0,
     532             :   /* 274 */ 65525, 0,
     533             :   /* 276 */ 65530, 0,
     534             :   /* 278 */ 65531, 0,
     535             :   /* 280 */ 65534, 65532, 0,
     536             :   /* 283 */ 65512, 17, 65533, 0,
     537             :   /* 287 */ 65534, 0,
     538             :   /* 289 */ 2, 65535, 0,
     539             :   /* 292 */ 65532, 65535, 0,
     540             :   /* 295 */ 65534, 65535, 0,
     541             :   /* 298 */ 65535, 65535, 0,
     542             : };
     543             : 
     544             : extern const LaneBitmask X86LaneMaskLists[] = {
     545             :   /* 0 */ LaneBitmask(0x00000000), LaneBitmask::getAll(),
     546             :   /* 2 */ LaneBitmask(0x00000002), LaneBitmask(0x00000001), LaneBitmask::getAll(),
     547             :   /* 5 */ LaneBitmask(0x00000001), LaneBitmask(0x00000004), LaneBitmask::getAll(),
     548             :   /* 8 */ LaneBitmask(0x00000002), LaneBitmask(0x00000001), LaneBitmask(0x00000008), LaneBitmask::getAll(),
     549             :   /* 12 */ LaneBitmask(0x00000001), LaneBitmask(0x00000004), LaneBitmask(0x00000008), LaneBitmask::getAll(),
     550             :   /* 16 */ LaneBitmask(0x00000007), LaneBitmask(0x00000008), LaneBitmask::getAll(),
     551             :   /* 19 */ LaneBitmask(0x00000010), LaneBitmask::getAll(),
     552             : };
     553             : 
     554             : extern const uint16_t X86SubRegIdxLists[] = {
     555             :   /* 0 */ 1, 2, 0,
     556             :   /* 3 */ 1, 3, 0,
     557             :   /* 6 */ 6, 4, 1, 2, 5, 0,
     558             :   /* 12 */ 6, 4, 1, 3, 5, 0,
     559             :   /* 18 */ 6, 4, 5, 0,
     560             :   /* 22 */ 8, 7, 0,
     561             : };
     562             : 
     563             : extern const MCRegisterInfo::SubRegCoveredBits X86SubRegIdxRanges[] = {
     564             :   { 65535, 65535 },
     565             :   { 0, 8 },     // sub_8bit
     566             :   { 8, 8 },     // sub_8bit_hi
     567             :   { 8, 8 },     // sub_8bit_hi_phony
     568             :   { 0, 16 },    // sub_16bit
     569             :   { 16, 16 },   // sub_16bit_hi
     570             :   { 0, 32 },    // sub_32bit
     571             :   { 0, 128 },   // sub_xmm
     572             :   { 0, 256 },   // sub_ymm
     573             : };
     574             : 
     575             : extern const char X86RegStrings[] = {
     576             :   /* 0 */ 'X', 'M', 'M', '1', '0', 0,
     577             :   /* 6 */ 'Y', 'M', 'M', '1', '0', 0,
     578             :   /* 12 */ 'Z', 'M', 'M', '1', '0', 0,
     579             :   /* 18 */ 'C', 'R', '1', '0', 0,
     580             :   /* 23 */ 'D', 'R', '1', '0', 0,
     581             :   /* 28 */ 'X', 'M', 'M', '2', '0', 0,
     582             :   /* 34 */ 'Y', 'M', 'M', '2', '0', 0,
     583             :   /* 40 */ 'Z', 'M', 'M', '2', '0', 0,
     584             :   /* 46 */ 'X', 'M', 'M', '3', '0', 0,
     585             :   /* 52 */ 'Y', 'M', 'M', '3', '0', 0,
     586             :   /* 58 */ 'Z', 'M', 'M', '3', '0', 0,
     587             :   /* 64 */ 'B', 'N', 'D', '0', 0,
     588             :   /* 69 */ 'K', '0', 0,
     589             :   /* 72 */ 'X', 'M', 'M', '0', 0,
     590             :   /* 77 */ 'Y', 'M', 'M', '0', 0,
     591             :   /* 82 */ 'Z', 'M', 'M', '0', 0,
     592             :   /* 87 */ 'F', 'P', '0', 0,
     593             :   /* 91 */ 'C', 'R', '0', 0,
     594             :   /* 95 */ 'D', 'R', '0', 0,
     595             :   /* 99 */ 'S', 'T', '0', 0,
     596             :   /* 103 */ 'X', 'M', 'M', '1', '1', 0,
     597             :   /* 109 */ 'Y', 'M', 'M', '1', '1', 0,
     598             :   /* 115 */ 'Z', 'M', 'M', '1', '1', 0,
     599             :   /* 121 */ 'C', 'R', '1', '1', 0,
     600             :   /* 126 */ 'D', 'R', '1', '1', 0,
     601             :   /* 131 */ 'X', 'M', 'M', '2', '1', 0,
     602             :   /* 137 */ 'Y', 'M', 'M', '2', '1', 0,
     603             :   /* 143 */ 'Z', 'M', 'M', '2', '1', 0,
     604             :   /* 149 */ 'X', 'M', 'M', '3', '1', 0,
     605             :   /* 155 */ 'Y', 'M', 'M', '3', '1', 0,
     606             :   /* 161 */ 'Z', 'M', 'M', '3', '1', 0,
     607             :   /* 167 */ 'B', 'N', 'D', '1', 0,
     608             :   /* 172 */ 'K', '1', 0,
     609             :   /* 175 */ 'X', 'M', 'M', '1', 0,
     610             :   /* 180 */ 'Y', 'M', 'M', '1', 0,
     611             :   /* 185 */ 'Z', 'M', 'M', '1', 0,
     612             :   /* 190 */ 'F', 'P', '1', 0,
     613             :   /* 194 */ 'C', 'R', '1', 0,
     614             :   /* 198 */ 'D', 'R', '1', 0,
     615             :   /* 202 */ 'S', 'T', '1', 0,
     616             :   /* 206 */ 'X', 'M', 'M', '1', '2', 0,
     617             :   /* 212 */ 'Y', 'M', 'M', '1', '2', 0,
     618             :   /* 218 */ 'Z', 'M', 'M', '1', '2', 0,
     619             :   /* 224 */ 'C', 'R', '1', '2', 0,
     620             :   /* 229 */ 'D', 'R', '1', '2', 0,
     621             :   /* 234 */ 'X', 'M', 'M', '2', '2', 0,
     622             :   /* 240 */ 'Y', 'M', 'M', '2', '2', 0,
     623             :   /* 246 */ 'Z', 'M', 'M', '2', '2', 0,
     624             :   /* 252 */ 'B', 'N', 'D', '2', 0,
     625             :   /* 257 */ 'K', '2', 0,
     626             :   /* 260 */ 'X', 'M', 'M', '2', 0,
     627             :   /* 265 */ 'Y', 'M', 'M', '2', 0,
     628             :   /* 270 */ 'Z', 'M', 'M', '2', 0,
     629             :   /* 275 */ 'F', 'P', '2', 0,
     630             :   /* 279 */ 'C', 'R', '2', 0,
     631             :   /* 283 */ 'D', 'R', '2', 0,
     632             :   /* 287 */ 'S', 'T', '2', 0,
     633             :   /* 291 */ 'X', 'M', 'M', '1', '3', 0,
     634             :   /* 297 */ 'Y', 'M', 'M', '1', '3', 0,
     635             :   /* 303 */ 'Z', 'M', 'M', '1', '3', 0,
     636             :   /* 309 */ 'C', 'R', '1', '3', 0,
     637             :   /* 314 */ 'D', 'R', '1', '3', 0,
     638             :   /* 319 */ 'X', 'M', 'M', '2', '3', 0,
     639             :   /* 325 */ 'Y', 'M', 'M', '2', '3', 0,
     640             :   /* 331 */ 'Z', 'M', 'M', '2', '3', 0,
     641             :   /* 337 */ 'B', 'N', 'D', '3', 0,
     642             :   /* 342 */ 'K', '3', 0,
     643             :   /* 345 */ 'X', 'M', 'M', '3', 0,
     644             :   /* 350 */ 'Y', 'M', 'M', '3', 0,
     645             :   /* 355 */ 'Z', 'M', 'M', '3', 0,
     646             :   /* 360 */ 'F', 'P', '3', 0,
     647             :   /* 364 */ 'C', 'R', '3', 0,
     648             :   /* 368 */ 'D', 'R', '3', 0,
     649             :   /* 372 */ 'S', 'T', '3', 0,
     650             :   /* 376 */ 'X', 'M', 'M', '1', '4', 0,
     651             :   /* 382 */ 'Y', 'M', 'M', '1', '4', 0,
     652             :   /* 388 */ 'Z', 'M', 'M', '1', '4', 0,
     653             :   /* 394 */ 'C', 'R', '1', '4', 0,
     654             :   /* 399 */ 'D', 'R', '1', '4', 0,
     655             :   /* 404 */ 'X', 'M', 'M', '2', '4', 0,
     656             :   /* 410 */ 'Y', 'M', 'M', '2', '4', 0,
     657             :   /* 416 */ 'Z', 'M', 'M', '2', '4', 0,
     658             :   /* 422 */ 'K', '4', 0,
     659             :   /* 425 */ 'X', 'M', 'M', '4', 0,
     660             :   /* 430 */ 'Y', 'M', 'M', '4', 0,
     661             :   /* 435 */ 'Z', 'M', 'M', '4', 0,
     662             :   /* 440 */ 'F', 'P', '4', 0,
     663             :   /* 444 */ 'C', 'R', '4', 0,
     664             :   /* 448 */ 'D', 'R', '4', 0,
     665             :   /* 452 */ 'S', 'T', '4', 0,
     666             :   /* 456 */ 'X', 'M', 'M', '1', '5', 0,
     667             :   /* 462 */ 'Y', 'M', 'M', '1', '5', 0,
     668             :   /* 468 */ 'Z', 'M', 'M', '1', '5', 0,
     669             :   /* 474 */ 'C', 'R', '1', '5', 0,
     670             :   /* 479 */ 'D', 'R', '1', '5', 0,
     671             :   /* 484 */ 'X', 'M', 'M', '2', '5', 0,
     672             :   /* 490 */ 'Y', 'M', 'M', '2', '5', 0,
     673             :   /* 496 */ 'Z', 'M', 'M', '2', '5', 0,
     674             :   /* 502 */ 'K', '5', 0,
     675             :   /* 505 */ 'X', 'M', 'M', '5', 0,
     676             :   /* 510 */ 'Y', 'M', 'M', '5', 0,
     677             :   /* 515 */ 'Z', 'M', 'M', '5', 0,
     678             :   /* 520 */ 'F', 'P', '5', 0,
     679             :   /* 524 */ 'C', 'R', '5', 0,
     680             :   /* 528 */ 'D', 'R', '5', 0,
     681             :   /* 532 */ 'S', 'T', '5', 0,
     682             :   /* 536 */ 'X', 'M', 'M', '1', '6', 0,
     683             :   /* 542 */ 'Y', 'M', 'M', '1', '6', 0,
     684             :   /* 548 */ 'Z', 'M', 'M', '1', '6', 0,
     685             :   /* 554 */ 'X', 'M', 'M', '2', '6', 0,
     686             :   /* 560 */ 'Y', 'M', 'M', '2', '6', 0,
     687             :   /* 566 */ 'Z', 'M', 'M', '2', '6', 0,
     688             :   /* 572 */ 'K', '6', 0,
     689             :   /* 575 */ 'X', 'M', 'M', '6', 0,
     690             :   /* 580 */ 'Y', 'M', 'M', '6', 0,
     691             :   /* 585 */ 'Z', 'M', 'M', '6', 0,
     692             :   /* 590 */ 'F', 'P', '6', 0,
     693             :   /* 594 */ 'C', 'R', '6', 0,
     694             :   /* 598 */ 'D', 'R', '6', 0,
     695             :   /* 602 */ 'S', 'T', '6', 0,
     696             :   /* 606 */ 'X', 'M', 'M', '1', '7', 0,
     697             :   /* 612 */ 'Y', 'M', 'M', '1', '7', 0,
     698             :   /* 618 */ 'Z', 'M', 'M', '1', '7', 0,
     699             :   /* 624 */ 'X', 'M', 'M', '2', '7', 0,
     700             :   /* 630 */ 'Y', 'M', 'M', '2', '7', 0,
     701             :   /* 636 */ 'Z', 'M', 'M', '2', '7', 0,
     702             :   /* 642 */ 'K', '7', 0,
     703             :   /* 645 */ 'X', 'M', 'M', '7', 0,
     704             :   /* 650 */ 'Y', 'M', 'M', '7', 0,
     705             :   /* 655 */ 'Z', 'M', 'M', '7', 0,
     706             :   /* 660 */ 'F', 'P', '7', 0,
     707             :   /* 664 */ 'C', 'R', '7', 0,
     708             :   /* 668 */ 'D', 'R', '7', 0,
     709             :   /* 672 */ 'S', 'T', '7', 0,
     710             :   /* 676 */ 'X', 'M', 'M', '1', '8', 0,
     711             :   /* 682 */ 'Y', 'M', 'M', '1', '8', 0,
     712             :   /* 688 */ 'Z', 'M', 'M', '1', '8', 0,
     713             :   /* 694 */ 'X', 'M', 'M', '2', '8', 0,
     714             :   /* 700 */ 'Y', 'M', 'M', '2', '8', 0,
     715             :   /* 706 */ 'Z', 'M', 'M', '2', '8', 0,
     716             :   /* 712 */ 'X', 'M', 'M', '8', 0,
     717             :   /* 717 */ 'Y', 'M', 'M', '8', 0,
     718             :   /* 722 */ 'Z', 'M', 'M', '8', 0,
     719             :   /* 727 */ 'C', 'R', '8', 0,
     720             :   /* 731 */ 'D', 'R', '8', 0,
     721             :   /* 735 */ 'X', 'M', 'M', '1', '9', 0,
     722             :   /* 741 */ 'Y', 'M', 'M', '1', '9', 0,
     723             :   /* 747 */ 'Z', 'M', 'M', '1', '9', 0,
     724             :   /* 753 */ 'X', 'M', 'M', '2', '9', 0,
     725             :   /* 759 */ 'Y', 'M', 'M', '2', '9', 0,
     726             :   /* 765 */ 'Z', 'M', 'M', '2', '9', 0,
     727             :   /* 771 */ 'X', 'M', 'M', '9', 0,
     728             :   /* 776 */ 'Y', 'M', 'M', '9', 0,
     729             :   /* 781 */ 'Z', 'M', 'M', '9', 0,
     730             :   /* 786 */ 'C', 'R', '9', 0,
     731             :   /* 790 */ 'D', 'R', '9', 0,
     732             :   /* 794 */ 'R', '1', '0', 'B', 0,
     733             :   /* 799 */ 'R', '1', '1', 'B', 0,
     734             :   /* 804 */ 'R', '1', '2', 'B', 0,
     735             :   /* 809 */ 'R', '1', '3', 'B', 0,
     736             :   /* 814 */ 'R', '1', '4', 'B', 0,
     737             :   /* 819 */ 'R', '1', '5', 'B', 0,
     738             :   /* 824 */ 'R', '8', 'B', 0,
     739             :   /* 828 */ 'R', '9', 'B', 0,
     740             :   /* 832 */ 'R', '1', '0', 'D', 0,
     741             :   /* 837 */ 'R', '1', '1', 'D', 0,
     742             :   /* 842 */ 'R', '1', '2', 'D', 0,
     743             :   /* 847 */ 'R', '1', '3', 'D', 0,
     744             :   /* 852 */ 'R', '1', '4', 'D', 0,
     745             :   /* 857 */ 'R', '1', '5', 'D', 0,
     746             :   /* 862 */ 'R', '8', 'D', 0,
     747             :   /* 866 */ 'R', '9', 'D', 0,
     748             :   /* 870 */ 'D', 'F', 0,
     749             :   /* 873 */ 'A', 'H', 0,
     750             :   /* 876 */ 'R', '1', '0', 'B', 'H', 0,
     751             :   /* 882 */ 'R', '1', '1', 'B', 'H', 0,
     752             :   /* 888 */ 'R', '1', '2', 'B', 'H', 0,
     753             :   /* 894 */ 'R', '1', '3', 'B', 'H', 0,
     754             :   /* 900 */ 'R', '1', '4', 'B', 'H', 0,
     755             :   /* 906 */ 'R', '1', '5', 'B', 'H', 0,
     756             :   /* 912 */ 'R', '8', 'B', 'H', 0,
     757             :   /* 917 */ 'R', '9', 'B', 'H', 0,
     758             :   /* 922 */ 'C', 'H', 0,
     759             :   /* 925 */ 'D', 'H', 0,
     760             :   /* 928 */ 'D', 'I', 'H', 0,
     761             :   /* 932 */ 'S', 'I', 'H', 0,
     762             :   /* 936 */ 'B', 'P', 'H', 0,
     763             :   /* 940 */ 'S', 'P', 'H', 0,
     764             :   /* 944 */ 'R', '1', '0', 'W', 'H', 0,
     765             :   /* 950 */ 'R', '1', '1', 'W', 'H', 0,
     766             :   /* 956 */ 'R', '1', '2', 'W', 'H', 0,
     767             :   /* 962 */ 'R', '1', '3', 'W', 'H', 0,
     768             :   /* 968 */ 'R', '1', '4', 'W', 'H', 0,
     769             :   /* 974 */ 'R', '1', '5', 'W', 'H', 0,
     770             :   /* 980 */ 'R', '8', 'W', 'H', 0,
     771             :   /* 985 */ 'R', '9', 'W', 'H', 0,
     772             :   /* 990 */ 'E', 'D', 'I', 0,
     773             :   /* 994 */ 'H', 'D', 'I', 0,
     774             :   /* 998 */ 'R', 'D', 'I', 0,
     775             :   /* 1002 */ 'E', 'S', 'I', 0,
     776             :   /* 1006 */ 'H', 'S', 'I', 0,
     777             :   /* 1010 */ 'R', 'S', 'I', 0,
     778             :   /* 1014 */ 'A', 'L', 0,
     779             :   /* 1017 */ 'B', 'L', 0,
     780             :   /* 1020 */ 'C', 'L', 0,
     781             :   /* 1023 */ 'D', 'L', 0,
     782             :   /* 1026 */ 'D', 'I', 'L', 0,
     783             :   /* 1030 */ 'S', 'I', 'L', 0,
     784             :   /* 1034 */ 'B', 'P', 'L', 0,
     785             :   /* 1038 */ 'S', 'P', 'L', 0,
     786             :   /* 1042 */ 'E', 'B', 'P', 0,
     787             :   /* 1046 */ 'H', 'B', 'P', 0,
     788             :   /* 1050 */ 'R', 'B', 'P', 0,
     789             :   /* 1054 */ 'E', 'I', 'P', 0,
     790             :   /* 1058 */ 'H', 'I', 'P', 0,
     791             :   /* 1062 */ 'R', 'I', 'P', 0,
     792             :   /* 1066 */ 'E', 'S', 'P', 0,
     793             :   /* 1070 */ 'H', 'S', 'P', 0,
     794             :   /* 1074 */ 'R', 'S', 'P', 0,
     795             :   /* 1078 */ 'S', 'S', 'P', 0,
     796             :   /* 1082 */ 'C', 'S', 0,
     797             :   /* 1085 */ 'D', 'S', 0,
     798             :   /* 1088 */ 'E', 'S', 0,
     799             :   /* 1091 */ 'F', 'S', 0,
     800             :   /* 1094 */ 'E', 'F', 'L', 'A', 'G', 'S', 0,
     801             :   /* 1101 */ 'S', 'S', 0,
     802             :   /* 1104 */ 'R', '1', '0', 'W', 0,
     803             :   /* 1109 */ 'R', '1', '1', 'W', 0,
     804             :   /* 1114 */ 'R', '1', '2', 'W', 0,
     805             :   /* 1119 */ 'R', '1', '3', 'W', 0,
     806             :   /* 1124 */ 'R', '1', '4', 'W', 0,
     807             :   /* 1129 */ 'R', '1', '5', 'W', 0,
     808             :   /* 1134 */ 'R', '8', 'W', 0,
     809             :   /* 1138 */ 'R', '9', 'W', 0,
     810             :   /* 1142 */ 'F', 'P', 'S', 'W', 0,
     811             :   /* 1147 */ 'E', 'A', 'X', 0,
     812             :   /* 1151 */ 'H', 'A', 'X', 0,
     813             :   /* 1155 */ 'R', 'A', 'X', 0,
     814             :   /* 1159 */ 'E', 'B', 'X', 0,
     815             :   /* 1163 */ 'H', 'B', 'X', 0,
     816             :   /* 1167 */ 'R', 'B', 'X', 0,
     817             :   /* 1171 */ 'E', 'C', 'X', 0,
     818             :   /* 1175 */ 'H', 'C', 'X', 0,
     819             :   /* 1179 */ 'R', 'C', 'X', 0,
     820             :   /* 1183 */ 'E', 'D', 'X', 0,
     821             :   /* 1187 */ 'H', 'D', 'X', 0,
     822             :   /* 1191 */ 'R', 'D', 'X', 0,
     823             :   /* 1195 */ 'E', 'I', 'Z', 0,
     824             :   /* 1199 */ 'R', 'I', 'Z', 0,
     825             : };
     826             : 
     827             : extern const MCRegisterDesc X86RegDesc[] = { // Descriptors
     828             :   { 5, 0, 0, 0, 0, 0 },
     829             :   { 873, 2, 184, 2, 4641, 0 },
     830             :   { 1014, 2, 180, 2, 4641, 0 },
     831             :   { 1148, 298, 181, 0, 0, 2 },
     832             :   { 879, 2, 168, 2, 4593, 0 },
     833             :   { 1017, 2, 164, 2, 4593, 0 },
     834             :   { 1043, 289, 173, 3, 352, 5 },
     835             :   { 936, 2, 176, 2, 768, 0 },
     836             :   { 1034, 2, 172, 2, 736, 0 },
     837             :   { 1160, 292, 165, 0, 304, 2 },
     838             :   { 922, 2, 160, 2, 4497, 0 },
     839             :   { 1020, 2, 156, 2, 4497, 0 },
     840             :   { 1082, 2, 2, 2, 4497, 0 },
     841             :   { 1172, 295, 157, 0, 400, 2 },
     842             :   { 870, 2, 2, 2, 4449, 0 },
     843             :   { 925, 2, 144, 2, 4449, 0 },
     844             :   { 991, 289, 149, 3, 448, 5 },
     845             :   { 928, 2, 152, 2, 1296, 0 },
     846             :   { 1026, 2, 148, 2, 4130, 0 },
     847             :   { 1023, 2, 140, 2, 4417, 0 },
     848             :   { 1085, 2, 2, 2, 4417, 0 },
     849             :   { 1184, 280, 141, 0, 688, 2 },
     850             :   { 1147, 221, 142, 7, 1524, 8 },
     851             :   { 1042, 206, 142, 13, 1236, 12 },
     852             :   { 1159, 215, 142, 7, 1460, 8 },
     853             :   { 1171, 200, 142, 7, 1172, 8 },
     854             :   { 990, 135, 142, 13, 869, 12 },
     855             :   { 1183, 194, 142, 7, 928, 8 },
     856             :   { 1094, 2, 2, 2, 1584, 0 },
     857             :   { 1054, 284, 126, 19, 496, 16 },
     858             :   { 1195, 2, 2, 2, 4417, 0 },
     859             :   { 1088, 2, 2, 2, 4417, 0 },
     860             :   { 1002, 269, 105, 13, 243, 12 },
     861             :   { 1066, 263, 105, 13, 243, 12 },
     862             :   { 1142, 2, 2, 2, 4593, 0 },
     863             :   { 1091, 2, 2, 2, 4593, 0 },
     864             :   { 1098, 2, 2, 2, 4593, 0 },
     865             :   { 1151, 2, 188, 2, 4161, 0 },
     866             :   { 1046, 2, 188, 2, 4161, 0 },
     867             :   { 1163, 2, 188, 2, 4161, 0 },
     868             :   { 1175, 2, 188, 2, 4161, 0 },
     869             :   { 994, 2, 188, 2, 4161, 0 },
     870             :   { 1187, 2, 188, 2, 4161, 0 },
     871             :   { 1058, 2, 131, 2, 3923, 0 },
     872             :   { 1006, 2, 119, 2, 3955, 0 },
     873             :   { 1070, 2, 119, 2, 3955, 0 },
     874             :   { 1055, 2, 128, 2, 1616, 0 },
     875             :   { 1155, 220, 2, 6, 1396, 8 },
     876             :   { 1050, 205, 2, 12, 1108, 12 },
     877             :   { 1167, 214, 2, 6, 1332, 8 },
     878             :   { 1179, 199, 2, 6, 1044, 8 },
     879             :   { 998, 134, 2, 12, 805, 12 },
     880             :   { 1191, 193, 2, 6, 928, 8 },
     881             :   { 1062, 283, 2, 18, 496, 16 },
     882             :   { 1199, 2, 2, 2, 3488, 0 },
     883             :   { 1010, 268, 2, 12, 179, 12 },
     884             :   { 1074, 262, 2, 12, 179, 12 },
     885             :   { 1003, 289, 112, 3, 544, 5 },
     886             :   { 932, 2, 115, 2, 3152, 0 },
     887             :   { 1030, 2, 111, 2, 3056, 0 },
     888             :   { 1067, 289, 104, 3, 592, 5 },
     889             :   { 940, 2, 107, 2, 3248, 0 },
     890             :   { 1038, 2, 103, 2, 3719, 0 },
     891             :   { 1101, 2, 2, 2, 4097, 0 },
     892             :   { 1078, 2, 2, 2, 4097, 0 },
     893             :   { 64, 2, 2, 2, 4097, 0 },
     894             :   { 167, 2, 2, 2, 4097, 0 },
     895             :   { 252, 2, 2, 2, 4097, 0 },
     896             :   { 337, 2, 2, 2, 4097, 0 },
     897             :   { 91, 2, 2, 2, 4097, 0 },
     898             :   { 194, 2, 2, 2, 4097, 0 },
     899             :   { 279, 2, 2, 2, 4097, 0 },
     900             :   { 364, 2, 2, 2, 4097, 0 },
     901             :   { 444, 2, 2, 2, 4097, 0 },
     902             :   { 524, 2, 2, 2, 4097, 0 },
     903             :   { 594, 2, 2, 2, 4097, 0 },
     904             :   { 664, 2, 2, 2, 4097, 0 },
     905             :   { 727, 2, 2, 2, 4097, 0 },
     906             :   { 786, 2, 2, 2, 4097, 0 },
     907             :   { 18, 2, 2, 2, 4097, 0 },
     908             :   { 121, 2, 2, 2, 4097, 0 },
     909             :   { 224, 2, 2, 2, 4097, 0 },
     910             :   { 309, 2, 2, 2, 4097, 0 },
     911             :   { 394, 2, 2, 2, 4097, 0 },
     912             :   { 474, 2, 2, 2, 4097, 0 },
     913             :   { 95, 2, 2, 2, 4097, 0 },
     914             :   { 198, 2, 2, 2, 4097, 0 },
     915             :   { 283, 2, 2, 2, 4097, 0 },
     916             :   { 368, 2, 2, 2, 4097, 0 },
     917             :   { 448, 2, 2, 2, 4097, 0 },
     918             :   { 528, 2, 2, 2, 4097, 0 },
     919             :   { 598, 2, 2, 2, 4097, 0 },
     920             :   { 668, 2, 2, 2, 4097, 0 },
     921             :   { 731, 2, 2, 2, 4097, 0 },
     922             :   { 790, 2, 2, 2, 4097, 0 },
     923             :   { 23, 2, 2, 2, 4097, 0 },
     924             :   { 126, 2, 2, 2, 4097, 0 },
     925             :   { 229, 2, 2, 2, 4097, 0 },
     926             :   { 314, 2, 2, 2, 4097, 0 },
     927             :   { 399, 2, 2, 2, 4097, 0 },
     928             :   { 479, 2, 2, 2, 4097, 0 },
     929             :   { 87, 2, 2, 2, 4097, 0 },
     930             :   { 190, 2, 2, 2, 4097, 0 },
     931             :   { 275, 2, 2, 2, 4097, 0 },
     932             :   { 360, 2, 2, 2, 4097, 0 },
     933             :   { 440, 2, 2, 2, 4097, 0 },
     934             :   { 520, 2, 2, 2, 4097, 0 },
     935             :   { 590, 2, 2, 2, 4097, 0 },
     936             :   { 660, 2, 2, 2, 4097, 0 },
     937             :   { 69, 2, 2, 2, 4097, 0 },
     938             :   { 172, 2, 2, 2, 4097, 0 },
     939             :   { 257, 2, 2, 2, 4097, 0 },
     940             :   { 342, 2, 2, 2, 4097, 0 },
     941             :   { 422, 2, 2, 2, 4097, 0 },
     942             :   { 502, 2, 2, 2, 4097, 0 },
     943             :   { 572, 2, 2, 2, 4097, 0 },
     944             :   { 642, 2, 2, 2, 4097, 0 },
     945             :   { 73, 2, 2, 2, 4097, 0 },
     946             :   { 176, 2, 2, 2, 4097, 0 },
     947             :   { 261, 2, 2, 2, 4097, 0 },
     948             :   { 346, 2, 2, 2, 4097, 0 },
     949             :   { 426, 2, 2, 2, 4097, 0 },
     950             :   { 506, 2, 2, 2, 4097, 0 },
     951             :   { 576, 2, 2, 2, 4097, 0 },
     952             :   { 646, 2, 2, 2, 4097, 0 },
     953             :   { 728, 122, 2, 12, 115, 12 },
     954             :   { 787, 122, 2, 12, 115, 12 },
     955             :   { 19, 122, 2, 12, 115, 12 },
     956             :   { 122, 122, 2, 12, 115, 12 },
     957             :   { 225, 122, 2, 12, 115, 12 },
     958             :   { 310, 122, 2, 12, 115, 12 },
     959             :   { 395, 122, 2, 12, 115, 12 },
     960             :   { 475, 122, 2, 12, 115, 12 },
     961             :   { 99, 2, 2, 2, 4385, 0 },
     962             :   { 202, 2, 2, 2, 4385, 0 },
     963             :   { 287, 2, 2, 2, 4385, 0 },
     964             :   { 372, 2, 2, 2, 4385, 0 },
     965             :   { 452, 2, 2, 2, 4385, 0 },
     966             :   { 532, 2, 2, 2, 4385, 0 },
     967             :   { 602, 2, 2, 2, 4385, 0 },
     968             :   { 672, 2, 2, 2, 4385, 0 },
     969             :   { 72, 2, 211, 2, 4385, 0 },
     970             :   { 175, 2, 211, 2, 4385, 0 },
     971             :   { 260, 2, 211, 2, 4385, 0 },
     972             :   { 345, 2, 211, 2, 4385, 0 },
     973             :   { 425, 2, 211, 2, 4385, 0 },
     974             :   { 505, 2, 211, 2, 4385, 0 },
     975             :   { 575, 2, 211, 2, 4385, 0 },
     976             :   { 645, 2, 211, 2, 4385, 0 },
     977             :   { 712, 2, 211, 2, 4385, 0 },
     978             :   { 771, 2, 211, 2, 4385, 0 },
     979             :   { 0, 2, 211, 2, 4385, 0 },
     980             :   { 103, 2, 211, 2, 4385, 0 },
     981             :   { 206, 2, 211, 2, 4385, 0 },
     982             :   { 291, 2, 211, 2, 4385, 0 },
     983             :   { 376, 2, 211, 2, 4385, 0 },
     984             :   { 456, 2, 211, 2, 4385, 0 },
     985             :   { 536, 2, 211, 2, 4385, 0 },
     986             :   { 606, 2, 211, 2, 4385, 0 },
     987             :   { 676, 2, 211, 2, 4385, 0 },
     988             :   { 735, 2, 211, 2, 4385, 0 },
     989             :   { 28, 2, 211, 2, 4385, 0 },
     990             :   { 131, 2, 211, 2, 4385, 0 },
     991             :   { 234, 2, 211, 2, 4385, 0 },
     992             :   { 319, 2, 211, 2, 4385, 0 },
     993             :   { 404, 2, 211, 2, 4385, 0 },
     994             :   { 484, 2, 211, 2, 4385, 0 },
     995             :   { 554, 2, 211, 2, 4385, 0 },
     996             :   { 624, 2, 211, 2, 4385, 0 },
     997             :   { 694, 2, 211, 2, 4385, 0 },
     998             :   { 753, 2, 211, 2, 4385, 0 },
     999             :   { 46, 2, 211, 2, 4385, 0 },
    1000             :   { 149, 2, 211, 2, 4385, 0 },
    1001             :   { 77, 254, 212, 23, 4017, 19 },
    1002             :   { 180, 254, 212, 23, 4017, 19 },
    1003             :   { 265, 254, 212, 23, 4017, 19 },
    1004             :   { 350, 254, 212, 23, 4017, 19 },
    1005             :   { 430, 254, 212, 23, 4017, 19 },
    1006             :   { 510, 254, 212, 23, 4017, 19 },
    1007             :   { 580, 254, 212, 23, 4017, 19 },
    1008             :   { 650, 254, 212, 23, 4017, 19 },
    1009             :   { 717, 254, 212, 23, 4017, 19 },
    1010             :   { 776, 254, 212, 23, 4017, 19 },
    1011             :   { 6, 254, 212, 23, 4017, 19 },
    1012             :   { 109, 254, 212, 23, 4017, 19 },
    1013             :   { 212, 254, 212, 23, 4017, 19 },
    1014             :   { 297, 254, 212, 23, 4017, 19 },
    1015             :   { 382, 254, 212, 23, 4017, 19 },
    1016             :   { 462, 254, 212, 23, 4017, 19 },
    1017             :   { 542, 254, 212, 23, 4017, 19 },
    1018             :   { 612, 254, 212, 23, 4017, 19 },
    1019             :   { 682, 254, 212, 23, 4017, 19 },
    1020             :   { 741, 254, 212, 23, 4017, 19 },
    1021             :   { 34, 254, 212, 23, 4017, 19 },
    1022             :   { 137, 254, 212, 23, 4017, 19 },
    1023             :   { 240, 254, 212, 23, 4017, 19 },
    1024             :   { 325, 254, 212, 23, 4017, 19 },
    1025             :   { 410, 254, 212, 23, 4017, 19 },
    1026             :   { 490, 254, 212, 23, 4017, 19 },
    1027             :   { 560, 254, 212, 23, 4017, 19 },
    1028             :   { 630, 254, 212, 23, 4017, 19 },
    1029             :   { 700, 254, 212, 23, 4017, 19 },
    1030             :   { 759, 254, 212, 23, 4017, 19 },
    1031             :   { 52, 254, 212, 23, 4017, 19 },
    1032             :   { 155, 254, 212, 23, 4017, 19 },
    1033             :   { 82, 253, 2, 22, 3985, 19 },
    1034             :   { 185, 253, 2, 22, 3985, 19 },
    1035             :   { 270, 253, 2, 22, 3985, 19 },
    1036             :   { 355, 253, 2, 22, 3985, 19 },
    1037             :   { 435, 253, 2, 22, 3985, 19 },
    1038             :   { 515, 253, 2, 22, 3985, 19 },
    1039             :   { 585, 253, 2, 22, 3985, 19 },
    1040             :   { 655, 253, 2, 22, 3985, 19 },
    1041             :   { 722, 253, 2, 22, 3985, 19 },
    1042             :   { 781, 253, 2, 22, 3985, 19 },
    1043             :   { 12, 253, 2, 22, 3985, 19 },
    1044             :   { 115, 253, 2, 22, 3985, 19 },
    1045             :   { 218, 253, 2, 22, 3985, 19 },
    1046             :   { 303, 253, 2, 22, 3985, 19 },
    1047             :   { 388, 253, 2, 22, 3985, 19 },
    1048             :   { 468, 253, 2, 22, 3985, 19 },
    1049             :   { 548, 253, 2, 22, 3985, 19 },
    1050             :   { 618, 253, 2, 22, 3985, 19 },
    1051             :   { 688, 253, 2, 22, 3985, 19 },
    1052             :   { 747, 253, 2, 22, 3985, 19 },
    1053             :   { 40, 253, 2, 22, 3985, 19 },
    1054             :   { 143, 253, 2, 22, 3985, 19 },
    1055             :   { 246, 253, 2, 22, 3985, 19 },
    1056             :   { 331, 253, 2, 22, 3985, 19 },
    1057             :   { 416, 253, 2, 22, 3985, 19 },
    1058             :   { 496, 253, 2, 22, 3985, 19 },
    1059             :   { 566, 253, 2, 22, 3985, 19 },
    1060             :   { 636, 253, 2, 22, 3985, 19 },
    1061             :   { 706, 253, 2, 22, 3985, 19 },
    1062             :   { 765, 253, 2, 22, 3985, 19 },
    1063             :   { 58, 253, 2, 22, 3985, 19 },
    1064             :   { 161, 253, 2, 22, 3985, 19 },
    1065             :   { 824, 2, 241, 2, 3683, 0 },
    1066             :   { 828, 2, 241, 2, 3683, 0 },
    1067             :   { 794, 2, 241, 2, 3683, 0 },
    1068             :   { 799, 2, 241, 2, 3683, 0 },
    1069             :   { 804, 2, 241, 2, 3683, 0 },
    1070             :   { 809, 2, 241, 2, 3683, 0 },
    1071             :   { 814, 2, 241, 2, 3683, 0 },
    1072             :   { 819, 2, 241, 2, 3683, 0 },
    1073             :   { 912, 2, 237, 2, 3651, 0 },
    1074             :   { 917, 2, 237, 2, 3651, 0 },
    1075             :   { 876, 2, 237, 2, 3651, 0 },
    1076             :   { 882, 2, 237, 2, 3651, 0 },
    1077             :   { 888, 2, 237, 2, 3651, 0 },
    1078             :   { 894, 2, 237, 2, 3651, 0 },
    1079             :   { 900, 2, 237, 2, 3651, 0 },
    1080             :   { 906, 2, 237, 2, 3651, 0 },
    1081             :   { 862, 123, 235, 13, 51, 12 },
    1082             :   { 866, 123, 235, 13, 51, 12 },
    1083             :   { 832, 123, 235, 13, 51, 12 },
    1084             :   { 837, 123, 235, 13, 51, 12 },
    1085             :   { 842, 123, 235, 13, 51, 12 },
    1086             :   { 847, 123, 235, 13, 51, 12 },
    1087             :   { 852, 123, 235, 13, 51, 12 },
    1088             :   { 857, 123, 235, 13, 51, 12 },
    1089             :   { 1134, 62, 238, 3, 643, 5 },
    1090             :   { 1138, 62, 238, 3, 643, 5 },
    1091             :   { 1104, 62, 238, 3, 643, 5 },
    1092             :   { 1109, 62, 238, 3, 643, 5 },
    1093             :   { 1114, 62, 238, 3, 643, 5 },
    1094             :   { 1119, 62, 238, 3, 643, 5 },
    1095             :   { 1124, 62, 238, 3, 643, 5 },
    1096             :   { 1129, 62, 238, 3, 643, 5 },
    1097             :   { 980, 2, 234, 2, 3619, 0 },
    1098             :   { 985, 2, 234, 2, 3619, 0 },
    1099             :   { 944, 2, 234, 2, 3619, 0 },
    1100             :   { 950, 2, 234, 2, 3619, 0 },
    1101             :   { 956, 2, 234, 2, 3619, 0 },
    1102             :   { 962, 2, 234, 2, 3619, 0 },
    1103             :   { 968, 2, 234, 2, 3619, 0 },
    1104             :   { 974, 2, 234, 2, 3619, 0 },
    1105             : };
    1106             : 
    1107             : extern const MCPhysReg X86RegUnitRoots[][2] = {
    1108             :   { X86::AH },
    1109             :   { X86::AL },
    1110             :   { X86::BH },
    1111             :   { X86::BL },
    1112             :   { X86::BPL },
    1113             :   { X86::BPH },
    1114             :   { X86::CH },
    1115             :   { X86::CL },
    1116             :   { X86::CS },
    1117             :   { X86::DF },
    1118             :   { X86::DH },
    1119             :   { X86::DIL },
    1120             :   { X86::DIH },
    1121             :   { X86::DL },
    1122             :   { X86::DS },
    1123             :   { X86::HAX },
    1124             :   { X86::HBP },
    1125             :   { X86::HBX },
    1126             :   { X86::HCX },
    1127             :   { X86::HDI },
    1128             :   { X86::HDX },
    1129             :   { X86::EFLAGS },
    1130             :   { X86::IP },
    1131             :   { X86::HIP },
    1132             :   { X86::EIZ },
    1133             :   { X86::ES },
    1134             :   { X86::SIL },
    1135             :   { X86::SIH },
    1136             :   { X86::HSI },
    1137             :   { X86::SPL },
    1138             :   { X86::SPH },
    1139             :   { X86::HSP },
    1140             :   { X86::FPSW },
    1141             :   { X86::FS },
    1142             :   { X86::GS },
    1143             :   { X86::RIZ },
    1144             :   { X86::SS },
    1145             :   { X86::SSP },
    1146             :   { X86::BND0 },
    1147             :   { X86::BND1 },
    1148             :   { X86::BND2 },
    1149             :   { X86::BND3 },
    1150             :   { X86::CR0 },
    1151             :   { X86::CR1 },
    1152             :   { X86::CR2 },
    1153             :   { X86::CR3 },
    1154             :   { X86::CR4 },
    1155             :   { X86::CR5 },
    1156             :   { X86::CR6 },
    1157             :   { X86::CR7 },
    1158             :   { X86::CR8 },
    1159             :   { X86::CR9 },
    1160             :   { X86::CR10 },
    1161             :   { X86::CR11 },
    1162             :   { X86::CR12 },
    1163             :   { X86::CR13 },
    1164             :   { X86::CR14 },
    1165             :   { X86::CR15 },
    1166             :   { X86::DR0 },
    1167             :   { X86::DR1 },
    1168             :   { X86::DR2 },
    1169             :   { X86::DR3 },
    1170             :   { X86::DR4 },
    1171             :   { X86::DR5 },
    1172             :   { X86::DR6 },
    1173             :   { X86::DR7 },
    1174             :   { X86::DR8 },
    1175             :   { X86::DR9 },
    1176             :   { X86::DR10 },
    1177             :   { X86::DR11 },
    1178             :   { X86::DR12 },
    1179             :   { X86::DR13 },
    1180             :   { X86::DR14 },
    1181             :   { X86::DR15 },
    1182             :   { X86::FP0 },
    1183             :   { X86::FP1 },
    1184             :   { X86::FP2 },
    1185             :   { X86::FP3 },
    1186             :   { X86::FP4 },
    1187             :   { X86::FP5 },
    1188             :   { X86::FP6 },
    1189             :   { X86::FP7 },
    1190             :   { X86::K0 },
    1191             :   { X86::K1 },
    1192             :   { X86::K2 },
    1193             :   { X86::K3 },
    1194             :   { X86::K4 },
    1195             :   { X86::K5 },
    1196             :   { X86::K6 },
    1197             :   { X86::K7 },
    1198             :   { X86::MM0 },
    1199             :   { X86::MM1 },
    1200             :   { X86::MM2 },
    1201             :   { X86::MM3 },
    1202             :   { X86::MM4 },
    1203             :   { X86::MM5 },
    1204             :   { X86::MM6 },
    1205             :   { X86::MM7 },
    1206             :   { X86::R8B },
    1207             :   { X86::R8BH },
    1208             :   { X86::R8WH },
    1209             :   { X86::R9B },
    1210             :   { X86::R9BH },
    1211             :   { X86::R9WH },
    1212             :   { X86::R10B },
    1213             :   { X86::R10BH },
    1214             :   { X86::R10WH },
    1215             :   { X86::R11B },
    1216             :   { X86::R11BH },
    1217             :   { X86::R11WH },
    1218             :   { X86::R12B },
    1219             :   { X86::R12BH },
    1220             :   { X86::R12WH },
    1221             :   { X86::R13B },
    1222             :   { X86::R13BH },
    1223             :   { X86::R13WH },
    1224             :   { X86::R14B },
    1225             :   { X86::R14BH },
    1226             :   { X86::R14WH },
    1227             :   { X86::R15B },
    1228             :   { X86::R15BH },
    1229             :   { X86::R15WH },
    1230             :   { X86::ST0 },
    1231             :   { X86::ST1 },
    1232             :   { X86::ST2 },
    1233             :   { X86::ST3 },
    1234             :   { X86::ST4 },
    1235             :   { X86::ST5 },
    1236             :   { X86::ST6 },
    1237             :   { X86::ST7 },
    1238             :   { X86::XMM0 },
    1239             :   { X86::XMM1 },
    1240             :   { X86::XMM2 },
    1241             :   { X86::XMM3 },
    1242             :   { X86::XMM4 },
    1243             :   { X86::XMM5 },
    1244             :   { X86::XMM6 },
    1245             :   { X86::XMM7 },
    1246             :   { X86::XMM8 },
    1247             :   { X86::XMM9 },
    1248             :   { X86::XMM10 },
    1249             :   { X86::XMM11 },
    1250             :   { X86::XMM12 },
    1251             :   { X86::XMM13 },
    1252             :   { X86::XMM14 },
    1253             :   { X86::XMM15 },
    1254             :   { X86::XMM16 },
    1255             :   { X86::XMM17 },
    1256             :   { X86::XMM18 },
    1257             :   { X86::XMM19 },
    1258             :   { X86::XMM20 },
    1259             :   { X86::XMM21 },
    1260             :   { X86::XMM22 },
    1261             :   { X86::XMM23 },
    1262             :   { X86::XMM24 },
    1263             :   { X86::XMM25 },
    1264             :   { X86::XMM26 },
    1265             :   { X86::XMM27 },
    1266             :   { X86::XMM28 },
    1267             :   { X86::XMM29 },
    1268             :   { X86::XMM30 },
    1269             :   { X86::XMM31 },
    1270             : };
    1271             : 
    1272             : namespace {     // Register classes...
    1273             :   // GR8 Register Class...
    1274             :   const MCPhysReg GR8[] = {
    1275             :     X86::AL, X86::CL, X86::DL, X86::AH, X86::CH, X86::DH, X86::BL, X86::BH, X86::SIL, X86::DIL, X86::BPL, X86::SPL, X86::R8B, X86::R9B, X86::R10B, X86::R11B, X86::R14B, X86::R15B, X86::R12B, X86::R13B, 
    1276             :   };
    1277             : 
    1278             :   // GR8 Bit set.
    1279             :   const uint8_t GR8Bits[] = {
    1280             :     0x36, 0x8d, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1281             :   };
    1282             : 
    1283             :   // GRH8 Register Class...
    1284             :   const MCPhysReg GRH8[] = {
    1285             :     X86::SIH, X86::DIH, X86::BPH, X86::SPH, X86::R8BH, X86::R9BH, X86::R10BH, X86::R11BH, X86::R12BH, X86::R13BH, X86::R14BH, X86::R15BH, 
    1286             :   };
    1287             : 
    1288             :   // GRH8 Bit set.
    1289             :   const uint8_t GRH8Bits[] = {
    1290             :     0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1291             :   };
    1292             : 
    1293             :   // GR8_NOREX Register Class...
    1294             :   const MCPhysReg GR8_NOREX[] = {
    1295             :     X86::AL, X86::CL, X86::DL, X86::AH, X86::CH, X86::DH, X86::BL, X86::BH, 
    1296             :   };
    1297             : 
    1298             :   // GR8_NOREX Bit set.
    1299             :   const uint8_t GR8_NOREXBits[] = {
    1300             :     0x36, 0x8c, 0x08, 
    1301             :   };
    1302             : 
    1303             :   // GR8_ABCD_H Register Class...
    1304             :   const MCPhysReg GR8_ABCD_H[] = {
    1305             :     X86::AH, X86::CH, X86::DH, X86::BH, 
    1306             :   };
    1307             : 
    1308             :   // GR8_ABCD_H Bit set.
    1309             :   const uint8_t GR8_ABCD_HBits[] = {
    1310             :     0x12, 0x84, 
    1311             :   };
    1312             : 
    1313             :   // GR8_ABCD_L Register Class...
    1314             :   const MCPhysReg GR8_ABCD_L[] = {
    1315             :     X86::AL, X86::CL, X86::DL, X86::BL, 
    1316             :   };
    1317             : 
    1318             :   // GR8_ABCD_L Bit set.
    1319             :   const uint8_t GR8_ABCD_LBits[] = {
    1320             :     0x24, 0x08, 0x08, 
    1321             :   };
    1322             : 
    1323             :   // GRH16 Register Class...
    1324             :   const MCPhysReg GRH16[] = {
    1325             :     X86::HAX, X86::HCX, X86::HDX, X86::HSI, X86::HDI, X86::HBX, X86::HBP, X86::HSP, X86::HIP, X86::R8WH, X86::R9WH, X86::R10WH, X86::R11WH, X86::R12WH, X86::R13WH, X86::R14WH, X86::R15WH, 
    1326             :   };
    1327             : 
    1328             :   // GRH16 Bit set.
    1329             :   const uint8_t GRH16Bits[] = {
    1330             :     0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1331             :   };
    1332             : 
    1333             :   // GR16 Register Class...
    1334             :   const MCPhysReg GR16[] = {
    1335             :     X86::AX, X86::CX, X86::DX, X86::SI, X86::DI, X86::BX, X86::BP, X86::SP, X86::R8W, X86::R9W, X86::R10W, X86::R11W, X86::R14W, X86::R15W, X86::R12W, X86::R13W, 
    1336             :   };
    1337             : 
    1338             :   // GR16 Bit set.
    1339             :   const uint8_t GR16Bits[] = {
    1340             :     0x48, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1341             :   };
    1342             : 
    1343             :   // GR16_NOREX Register Class...
    1344             :   const MCPhysReg GR16_NOREX[] = {
    1345             :     X86::AX, X86::CX, X86::DX, X86::SI, X86::DI, X86::BX, X86::BP, X86::SP, 
    1346             :   };
    1347             : 
    1348             :   // GR16_NOREX Bit set.
    1349             :   const uint8_t GR16_NOREXBits[] = {
    1350             :     0x48, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x12, 
    1351             :   };
    1352             : 
    1353             :   // VK1 Register Class...
    1354             :   const MCPhysReg VK1[] = {
    1355             :     X86::K0, X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7, 
    1356             :   };
    1357             : 
    1358             :   // VK1 Bit set.
    1359             :   const uint8_t VK1Bits[] = {
    1360             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1361             :   };
    1362             : 
    1363             :   // VK16 Register Class...
    1364             :   const MCPhysReg VK16[] = {
    1365             :     X86::K0, X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7, 
    1366             :   };
    1367             : 
    1368             :   // VK16 Bit set.
    1369             :   const uint8_t VK16Bits[] = {
    1370             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1371             :   };
    1372             : 
    1373             :   // VK2 Register Class...
    1374             :   const MCPhysReg VK2[] = {
    1375             :     X86::K0, X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7, 
    1376             :   };
    1377             : 
    1378             :   // VK2 Bit set.
    1379             :   const uint8_t VK2Bits[] = {
    1380             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1381             :   };
    1382             : 
    1383             :   // VK4 Register Class...
    1384             :   const MCPhysReg VK4[] = {
    1385             :     X86::K0, X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7, 
    1386             :   };
    1387             : 
    1388             :   // VK4 Bit set.
    1389             :   const uint8_t VK4Bits[] = {
    1390             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1391             :   };
    1392             : 
    1393             :   // VK8 Register Class...
    1394             :   const MCPhysReg VK8[] = {
    1395             :     X86::K0, X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7, 
    1396             :   };
    1397             : 
    1398             :   // VK8 Bit set.
    1399             :   const uint8_t VK8Bits[] = {
    1400             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1401             :   };
    1402             : 
    1403             :   // VK16WM Register Class...
    1404             :   const MCPhysReg VK16WM[] = {
    1405             :     X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7, 
    1406             :   };
    1407             : 
    1408             :   // VK16WM Bit set.
    1409             :   const uint8_t VK16WMBits[] = {
    1410             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 
    1411             :   };
    1412             : 
    1413             :   // VK1WM Register Class...
    1414             :   const MCPhysReg VK1WM[] = {
    1415             :     X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7, 
    1416             :   };
    1417             : 
    1418             :   // VK1WM Bit set.
    1419             :   const uint8_t VK1WMBits[] = {
    1420             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 
    1421             :   };
    1422             : 
    1423             :   // VK2WM Register Class...
    1424             :   const MCPhysReg VK2WM[] = {
    1425             :     X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7, 
    1426             :   };
    1427             : 
    1428             :   // VK2WM Bit set.
    1429             :   const uint8_t VK2WMBits[] = {
    1430             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 
    1431             :   };
    1432             : 
    1433             :   // VK4WM Register Class...
    1434             :   const MCPhysReg VK4WM[] = {
    1435             :     X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7, 
    1436             :   };
    1437             : 
    1438             :   // VK4WM Bit set.
    1439             :   const uint8_t VK4WMBits[] = {
    1440             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 
    1441             :   };
    1442             : 
    1443             :   // VK8WM Register Class...
    1444             :   const MCPhysReg VK8WM[] = {
    1445             :     X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7, 
    1446             :   };
    1447             : 
    1448             :   // VK8WM Bit set.
    1449             :   const uint8_t VK8WMBits[] = {
    1450             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 
    1451             :   };
    1452             : 
    1453             :   // SEGMENT_REG Register Class...
    1454             :   const MCPhysReg SEGMENT_REG[] = {
    1455             :     X86::CS, X86::DS, X86::SS, X86::ES, X86::FS, X86::GS, 
    1456             :   };
    1457             : 
    1458             :   // SEGMENT_REG Bit set.
    1459             :   const uint8_t SEGMENT_REGBits[] = {
    1460             :     0x00, 0x10, 0x10, 0x80, 0x18, 0x00, 0x00, 0x80, 
    1461             :   };
    1462             : 
    1463             :   // GR16_ABCD Register Class...
    1464             :   const MCPhysReg GR16_ABCD[] = {
    1465             :     X86::AX, X86::CX, X86::DX, X86::BX, 
    1466             :   };
    1467             : 
    1468             :   // GR16_ABCD Bit set.
    1469             :   const uint8_t GR16_ABCDBits[] = {
    1470             :     0x08, 0x22, 0x20, 
    1471             :   };
    1472             : 
    1473             :   // FPCCR Register Class...
    1474             :   const MCPhysReg FPCCR[] = {
    1475             :     X86::FPSW, 
    1476             :   };
    1477             : 
    1478             :   // FPCCR Bit set.
    1479             :   const uint8_t FPCCRBits[] = {
    1480             :     0x00, 0x00, 0x00, 0x00, 0x04, 
    1481             :   };
    1482             : 
    1483             :   // FR32X Register Class...
    1484             :   const MCPhysReg FR32X[] = {
    1485             :     X86::XMM0, X86::XMM1, X86::XMM2, X86::XMM3, X86::XMM4, X86::XMM5, X86::XMM6, X86::XMM7, X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, X86::XMM16, X86::XMM17, X86::XMM18, X86::XMM19, X86::XMM20, X86::XMM21, X86::XMM22, X86::XMM23, X86::XMM24, X86::XMM25, X86::XMM26, X86::XMM27, X86::XMM28, X86::XMM29, X86::XMM30, X86::XMM31, 
    1486             :   };
    1487             : 
    1488             :   // FR32X Bit set.
    1489             :   const uint8_t FR32XBits[] = {
    1490             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 
    1491             :   };
    1492             : 
    1493             :   // LOW32_ADDR_ACCESS_RBP Register Class...
    1494             :   const MCPhysReg LOW32_ADDR_ACCESS_RBP[] = {
    1495             :     X86::EAX, X86::ECX, X86::EDX, X86::ESI, X86::EDI, X86::EBX, X86::EBP, X86::ESP, X86::R8D, X86::R9D, X86::R10D, X86::R11D, X86::R14D, X86::R15D, X86::R12D, X86::R13D, X86::RIP, X86::RBP, 
    1496             :   };
    1497             : 
    1498             :   // LOW32_ADDR_ACCESS_RBP Bit set.
    1499             :   const uint8_t LOW32_ADDR_ACCESS_RBPBits[] = {
    1500             :     0x00, 0x00, 0xc0, 0x0f, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1501             :   };
    1502             : 
    1503             :   // LOW32_ADDR_ACCESS Register Class...
    1504             :   const MCPhysReg LOW32_ADDR_ACCESS[] = {
    1505             :     X86::EAX, X86::ECX, X86::EDX, X86::ESI, X86::EDI, X86::EBX, X86::EBP, X86::ESP, X86::R8D, X86::R9D, X86::R10D, X86::R11D, X86::R14D, X86::R15D, X86::R12D, X86::R13D, X86::RIP, 
    1506             :   };
    1507             : 
    1508             :   // LOW32_ADDR_ACCESS Bit set.
    1509             :   const uint8_t LOW32_ADDR_ACCESSBits[] = {
    1510             :     0x00, 0x00, 0xc0, 0x0f, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1511             :   };
    1512             : 
    1513             :   // LOW32_ADDR_ACCESS_RBP_with_sub_8bit Register Class...
    1514             :   const MCPhysReg LOW32_ADDR_ACCESS_RBP_with_sub_8bit[] = {
    1515             :     X86::EAX, X86::ECX, X86::EDX, X86::ESI, X86::EDI, X86::EBX, X86::EBP, X86::ESP, X86::R8D, X86::R9D, X86::R10D, X86::R11D, X86::R14D, X86::R15D, X86::R12D, X86::R13D, X86::RBP, 
    1516             :   };
    1517             : 
    1518             :   // LOW32_ADDR_ACCESS_RBP_with_sub_8bit Bit set.
    1519             :   const uint8_t LOW32_ADDR_ACCESS_RBP_with_sub_8bitBits[] = {
    1520             :     0x00, 0x00, 0xc0, 0x0f, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1521             :   };
    1522             : 
    1523             :   // DEBUG_REG Register Class...
    1524             :   const MCPhysReg DEBUG_REG[] = {
    1525             :     X86::DR0, X86::DR1, X86::DR2, X86::DR3, X86::DR4, X86::DR5, X86::DR6, X86::DR7, X86::DR8, X86::DR9, X86::DR10, X86::DR11, X86::DR12, X86::DR13, X86::DR14, X86::DR15, 
    1526             :   };
    1527             : 
    1528             :   // DEBUG_REG Bit set.
    1529             :   const uint8_t DEBUG_REGBits[] = {
    1530             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f, 
    1531             :   };
    1532             : 
    1533             :   // FR32 Register Class...
    1534             :   const MCPhysReg FR32[] = {
    1535             :     X86::XMM0, X86::XMM1, X86::XMM2, X86::XMM3, X86::XMM4, X86::XMM5, X86::XMM6, X86::XMM7, X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, 
    1536             :   };
    1537             : 
    1538             :   // FR32 Bit set.
    1539             :   const uint8_t FR32Bits[] = {
    1540             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f, 
    1541             :   };
    1542             : 
    1543             :   // GR32 Register Class...
    1544             :   const MCPhysReg GR32[] = {
    1545             :     X86::EAX, X86::ECX, X86::EDX, X86::ESI, X86::EDI, X86::EBX, X86::EBP, X86::ESP, X86::R8D, X86::R9D, X86::R10D, X86::R11D, X86::R14D, X86::R15D, X86::R12D, X86::R13D, 
    1546             :   };
    1547             : 
    1548             :   // GR32 Bit set.
    1549             :   const uint8_t GR32Bits[] = {
    1550             :     0x00, 0x00, 0xc0, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1551             :   };
    1552             : 
    1553             :   // GR32_NOSP Register Class...
    1554             :   const MCPhysReg GR32_NOSP[] = {
    1555             :     X86::EAX, X86::ECX, X86::EDX, X86::ESI, X86::EDI, X86::EBX, X86::EBP, X86::R8D, X86::R9D, X86::R10D, X86::R11D, X86::R14D, X86::R15D, X86::R12D, X86::R13D, 
    1556             :   };
    1557             : 
    1558             :   // GR32_NOSP Bit set.
    1559             :   const uint8_t GR32_NOSPBits[] = {
    1560             :     0x00, 0x00, 0xc0, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1561             :   };
    1562             : 
    1563             :   // LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX Register Class...
    1564             :   const MCPhysReg LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX[] = {
    1565             :     X86::EAX, X86::ECX, X86::EDX, X86::ESI, X86::EDI, X86::EBX, X86::EBP, X86::ESP, X86::RBP, 
    1566             :   };
    1567             : 
    1568             :   // LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX Bit set.
    1569             :   const uint8_t LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXBits[] = {
    1570             :     0x00, 0x00, 0xc0, 0x0f, 0x03, 0x00, 0x01, 
    1571             :   };
    1572             : 
    1573             :   // GR32_NOREX Register Class...
    1574             :   const MCPhysReg GR32_NOREX[] = {
    1575             :     X86::EAX, X86::ECX, X86::EDX, X86::ESI, X86::EDI, X86::EBX, X86::EBP, X86::ESP, 
    1576             :   };
    1577             : 
    1578             :   // GR32_NOREX Bit set.
    1579             :   const uint8_t GR32_NOREXBits[] = {
    1580             :     0x00, 0x00, 0xc0, 0x0f, 0x03, 
    1581             :   };
    1582             : 
    1583             :   // VK32 Register Class...
    1584             :   const MCPhysReg VK32[] = {
    1585             :     X86::K0, X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7, 
    1586             :   };
    1587             : 
    1588             :   // VK32 Bit set.
    1589             :   const uint8_t VK32Bits[] = {
    1590             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1591             :   };
    1592             : 
    1593             :   // GR32_NOREX_NOSP Register Class...
    1594             :   const MCPhysReg GR32_NOREX_NOSP[] = {
    1595             :     X86::EAX, X86::ECX, X86::EDX, X86::ESI, X86::EDI, X86::EBX, X86::EBP, 
    1596             :   };
    1597             : 
    1598             :   // GR32_NOREX_NOSP Bit set.
    1599             :   const uint8_t GR32_NOREX_NOSPBits[] = {
    1600             :     0x00, 0x00, 0xc0, 0x0f, 0x01, 
    1601             :   };
    1602             : 
    1603             :   // RFP32 Register Class...
    1604             :   const MCPhysReg RFP32[] = {
    1605             :     X86::FP0, X86::FP1, X86::FP2, X86::FP3, X86::FP4, X86::FP5, X86::FP6, 
    1606             :   };
    1607             : 
    1608             :   // RFP32 Bit set.
    1609             :   const uint8_t RFP32Bits[] = {
    1610             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 
    1611             :   };
    1612             : 
    1613             :   // VK32WM Register Class...
    1614             :   const MCPhysReg VK32WM[] = {
    1615             :     X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7, 
    1616             :   };
    1617             : 
    1618             :   // VK32WM Bit set.
    1619             :   const uint8_t VK32WMBits[] = {
    1620             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 
    1621             :   };
    1622             : 
    1623             :   // GR32_ABCD Register Class...
    1624             :   const MCPhysReg GR32_ABCD[] = {
    1625             :     X86::EAX, X86::ECX, X86::EDX, X86::EBX, 
    1626             :   };
    1627             : 
    1628             :   // GR32_ABCD Bit set.
    1629             :   const uint8_t GR32_ABCDBits[] = {
    1630             :     0x00, 0x00, 0x40, 0x0b, 
    1631             :   };
    1632             : 
    1633             :   // GR32_TC Register Class...
    1634             :   const MCPhysReg GR32_TC[] = {
    1635             :     X86::EAX, X86::ECX, X86::EDX, 
    1636             :   };
    1637             : 
    1638             :   // GR32_TC Bit set.
    1639             :   const uint8_t GR32_TCBits[] = {
    1640             :     0x00, 0x00, 0x40, 0x0a, 
    1641             :   };
    1642             : 
    1643             :   // GR32_AD Register Class...
    1644             :   const MCPhysReg GR32_AD[] = {
    1645             :     X86::EAX, X86::EDX, 
    1646             :   };
    1647             : 
    1648             :   // GR32_AD Bit set.
    1649             :   const uint8_t GR32_ADBits[] = {
    1650             :     0x00, 0x00, 0x40, 0x08, 
    1651             :   };
    1652             : 
    1653             :   // GR32_BPSP Register Class...
    1654             :   const MCPhysReg GR32_BPSP[] = {
    1655             :     X86::EBP, X86::ESP, 
    1656             :   };
    1657             : 
    1658             :   // GR32_BPSP Bit set.
    1659             :   const uint8_t GR32_BPSPBits[] = {
    1660             :     0x00, 0x00, 0x80, 0x00, 0x02, 
    1661             :   };
    1662             : 
    1663             :   // GR32_BSI Register Class...
    1664             :   const MCPhysReg GR32_BSI[] = {
    1665             :     X86::EBX, X86::ESI, 
    1666             :   };
    1667             : 
    1668             :   // GR32_BSI Bit set.
    1669             :   const uint8_t GR32_BSIBits[] = {
    1670             :     0x00, 0x00, 0x00, 0x01, 0x01, 
    1671             :   };
    1672             : 
    1673             :   // GR32_CB Register Class...
    1674             :   const MCPhysReg GR32_CB[] = {
    1675             :     X86::ECX, X86::EBX, 
    1676             :   };
    1677             : 
    1678             :   // GR32_CB Bit set.
    1679             :   const uint8_t GR32_CBBits[] = {
    1680             :     0x00, 0x00, 0x00, 0x03, 
    1681             :   };
    1682             : 
    1683             :   // GR32_DC Register Class...
    1684             :   const MCPhysReg GR32_DC[] = {
    1685             :     X86::EDX, X86::ECX, 
    1686             :   };
    1687             : 
    1688             :   // GR32_DC Bit set.
    1689             :   const uint8_t GR32_DCBits[] = {
    1690             :     0x00, 0x00, 0x00, 0x0a, 
    1691             :   };
    1692             : 
    1693             :   // GR32_DIBP Register Class...
    1694             :   const MCPhysReg GR32_DIBP[] = {
    1695             :     X86::EDI, X86::EBP, 
    1696             :   };
    1697             : 
    1698             :   // GR32_DIBP Bit set.
    1699             :   const uint8_t GR32_DIBPBits[] = {
    1700             :     0x00, 0x00, 0x80, 0x04, 
    1701             :   };
    1702             : 
    1703             :   // GR32_SIDI Register Class...
    1704             :   const MCPhysReg GR32_SIDI[] = {
    1705             :     X86::ESI, X86::EDI, 
    1706             :   };
    1707             : 
    1708             :   // GR32_SIDI Bit set.
    1709             :   const uint8_t GR32_SIDIBits[] = {
    1710             :     0x00, 0x00, 0x00, 0x04, 0x01, 
    1711             :   };
    1712             : 
    1713             :   // LOW32_ADDR_ACCESS_RBP_with_sub_32bit Register Class...
    1714             :   const MCPhysReg LOW32_ADDR_ACCESS_RBP_with_sub_32bit[] = {
    1715             :     X86::RIP, X86::RBP, 
    1716             :   };
    1717             : 
    1718             :   // LOW32_ADDR_ACCESS_RBP_with_sub_32bit Bit set.
    1719             :   const uint8_t LOW32_ADDR_ACCESS_RBP_with_sub_32bitBits[] = {
    1720             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 
    1721             :   };
    1722             : 
    1723             :   // CCR Register Class...
    1724             :   const MCPhysReg CCR[] = {
    1725             :     X86::EFLAGS, 
    1726             :   };
    1727             : 
    1728             :   // CCR Bit set.
    1729             :   const uint8_t CCRBits[] = {
    1730             :     0x00, 0x00, 0x00, 0x10, 
    1731             :   };
    1732             : 
    1733             :   // DFCCR Register Class...
    1734             :   const MCPhysReg DFCCR[] = {
    1735             :     X86::DF, 
    1736             :   };
    1737             : 
    1738             :   // DFCCR Bit set.
    1739             :   const uint8_t DFCCRBits[] = {
    1740             :     0x00, 0x40, 
    1741             :   };
    1742             : 
    1743             :   // GR32_ABCD_and_GR32_BSI Register Class...
    1744             :   const MCPhysReg GR32_ABCD_and_GR32_BSI[] = {
    1745             :     X86::EBX, 
    1746             :   };
    1747             : 
    1748             :   // GR32_ABCD_and_GR32_BSI Bit set.
    1749             :   const uint8_t GR32_ABCD_and_GR32_BSIBits[] = {
    1750             :     0x00, 0x00, 0x00, 0x01, 
    1751             :   };
    1752             : 
    1753             :   // GR32_AD_and_GR32_DC Register Class...
    1754             :   const MCPhysReg GR32_AD_and_GR32_DC[] = {
    1755             :     X86::EDX, 
    1756             :   };
    1757             : 
    1758             :   // GR32_AD_and_GR32_DC Bit set.
    1759             :   const uint8_t GR32_AD_and_GR32_DCBits[] = {
    1760             :     0x00, 0x00, 0x00, 0x08, 
    1761             :   };
    1762             : 
    1763             :   // GR32_BPSP_and_GR32_DIBP Register Class...
    1764             :   const MCPhysReg GR32_BPSP_and_GR32_DIBP[] = {
    1765             :     X86::EBP, 
    1766             :   };
    1767             : 
    1768             :   // GR32_BPSP_and_GR32_DIBP Bit set.
    1769             :   const uint8_t GR32_BPSP_and_GR32_DIBPBits[] = {
    1770             :     0x00, 0x00, 0x80, 
    1771             :   };
    1772             : 
    1773             :   // GR32_BSI_and_GR32_SIDI Register Class...
    1774             :   const MCPhysReg GR32_BSI_and_GR32_SIDI[] = {
    1775             :     X86::ESI, 
    1776             :   };
    1777             : 
    1778             :   // GR32_BSI_and_GR32_SIDI Bit set.
    1779             :   const uint8_t GR32_BSI_and_GR32_SIDIBits[] = {
    1780             :     0x00, 0x00, 0x00, 0x00, 0x01, 
    1781             :   };
    1782             : 
    1783             :   // GR32_CB_and_GR32_DC Register Class...
    1784             :   const MCPhysReg GR32_CB_and_GR32_DC[] = {
    1785             :     X86::ECX, 
    1786             :   };
    1787             : 
    1788             :   // GR32_CB_and_GR32_DC Bit set.
    1789             :   const uint8_t GR32_CB_and_GR32_DCBits[] = {
    1790             :     0x00, 0x00, 0x00, 0x02, 
    1791             :   };
    1792             : 
    1793             :   // GR32_DIBP_and_GR32_SIDI Register Class...
    1794             :   const MCPhysReg GR32_DIBP_and_GR32_SIDI[] = {
    1795             :     X86::EDI, 
    1796             :   };
    1797             : 
    1798             :   // GR32_DIBP_and_GR32_SIDI Bit set.
    1799             :   const uint8_t GR32_DIBP_and_GR32_SIDIBits[] = {
    1800             :     0x00, 0x00, 0x00, 0x04, 
    1801             :   };
    1802             : 
    1803             :   // LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit Register Class...
    1804             :   const MCPhysReg LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit[] = {
    1805             :     X86::RBP, 
    1806             :   };
    1807             : 
    1808             :   // LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit Bit set.
    1809             :   const uint8_t LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitBits[] = {
    1810             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
    1811             :   };
    1812             : 
    1813             :   // LOW32_ADDR_ACCESS_with_sub_32bit Register Class...
    1814             :   const MCPhysReg LOW32_ADDR_ACCESS_with_sub_32bit[] = {
    1815             :     X86::RIP, 
    1816             :   };
    1817             : 
    1818             :   // LOW32_ADDR_ACCESS_with_sub_32bit Bit set.
    1819             :   const uint8_t LOW32_ADDR_ACCESS_with_sub_32bitBits[] = {
    1820             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 
    1821             :   };
    1822             : 
    1823             :   // RFP64 Register Class...
    1824             :   const MCPhysReg RFP64[] = {
    1825             :     X86::FP0, X86::FP1, X86::FP2, X86::FP3, X86::FP4, X86::FP5, X86::FP6, 
    1826             :   };
    1827             : 
    1828             :   // RFP64 Bit set.
    1829             :   const uint8_t RFP64Bits[] = {
    1830             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 
    1831             :   };
    1832             : 
    1833             :   // FR64X Register Class...
    1834             :   const MCPhysReg FR64X[] = {
    1835             :     X86::XMM0, X86::XMM1, X86::XMM2, X86::XMM3, X86::XMM4, X86::XMM5, X86::XMM6, X86::XMM7, X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, X86::XMM16, X86::XMM17, X86::XMM18, X86::XMM19, X86::XMM20, X86::XMM21, X86::XMM22, X86::XMM23, X86::XMM24, X86::XMM25, X86::XMM26, X86::XMM27, X86::XMM28, X86::XMM29, X86::XMM30, X86::XMM31, 
    1836             :   };
    1837             : 
    1838             :   // FR64X Bit set.
    1839             :   const uint8_t FR64XBits[] = {
    1840             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 
    1841             :   };
    1842             : 
    1843             :   // GR64 Register Class...
    1844             :   const MCPhysReg GR64[] = {
    1845             :     X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R10, X86::R11, X86::RBX, X86::R14, X86::R15, X86::R12, X86::R13, X86::RBP, X86::RSP, X86::RIP, 
    1846             :   };
    1847             : 
    1848             :   // GR64 Bit set.
    1849             :   const uint8_t GR64Bits[] = {
    1850             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1851             :   };
    1852             : 
    1853             :   // CONTROL_REG Register Class...
    1854             :   const MCPhysReg CONTROL_REG[] = {
    1855             :     X86::CR0, X86::CR1, X86::CR2, X86::CR3, X86::CR4, X86::CR5, X86::CR6, X86::CR7, X86::CR8, X86::CR9, X86::CR10, X86::CR11, X86::CR12, X86::CR13, X86::CR14, X86::CR15, 
    1856             :   };
    1857             : 
    1858             :   // CONTROL_REG Bit set.
    1859             :   const uint8_t CONTROL_REGBits[] = {
    1860             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f, 
    1861             :   };
    1862             : 
    1863             :   // FR64 Register Class...
    1864             :   const MCPhysReg FR64[] = {
    1865             :     X86::XMM0, X86::XMM1, X86::XMM2, X86::XMM3, X86::XMM4, X86::XMM5, X86::XMM6, X86::XMM7, X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, 
    1866             :   };
    1867             : 
    1868             :   // FR64 Bit set.
    1869             :   const uint8_t FR64Bits[] = {
    1870             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f, 
    1871             :   };
    1872             : 
    1873             :   // GR64_with_sub_8bit Register Class...
    1874             :   const MCPhysReg GR64_with_sub_8bit[] = {
    1875             :     X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R10, X86::R11, X86::RBX, X86::R14, X86::R15, X86::R12, X86::R13, X86::RBP, X86::RSP, 
    1876             :   };
    1877             : 
    1878             :   // GR64_with_sub_8bit Bit set.
    1879             :   const uint8_t GR64_with_sub_8bitBits[] = {
    1880             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1881             :   };
    1882             : 
    1883             :   // GR64_NOSP Register Class...
    1884             :   const MCPhysReg GR64_NOSP[] = {
    1885             :     X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R10, X86::R11, X86::RBX, X86::R14, X86::R15, X86::R12, X86::R13, X86::RBP, 
    1886             :   };
    1887             : 
    1888             :   // GR64_NOSP Bit set.
    1889             :   const uint8_t GR64_NOSPBits[] = {
    1890             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1891             :   };
    1892             : 
    1893             :   // GR64_NOREX Register Class...
    1894             :   const MCPhysReg GR64_NOREX[] = {
    1895             :     X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::RBX, X86::RBP, X86::RSP, X86::RIP, 
    1896             :   };
    1897             : 
    1898             :   // GR64_NOREX Bit set.
    1899             :   const uint8_t GR64_NOREXBits[] = {
    1900             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x01, 
    1901             :   };
    1902             : 
    1903             :   // GR64_TC Register Class...
    1904             :   const MCPhysReg GR64_TC[] = {
    1905             :     X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R11, X86::RIP, 
    1906             :   };
    1907             : 
    1908             :   // GR64_TC Bit set.
    1909             :   const uint8_t GR64_TCBits[] = {
    1910             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 
    1911             :   };
    1912             : 
    1913             :   // GR64_NOSP_and_GR64_TC Register Class...
    1914             :   const MCPhysReg GR64_NOSP_and_GR64_TC[] = {
    1915             :     X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R11, 
    1916             :   };
    1917             : 
    1918             :   // GR64_NOSP_and_GR64_TC Bit set.
    1919             :   const uint8_t GR64_NOSP_and_GR64_TCBits[] = {
    1920             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 
    1921             :   };
    1922             : 
    1923             :   // GR64_TCW64 Register Class...
    1924             :   const MCPhysReg GR64_TCW64[] = {
    1925             :     X86::RAX, X86::RCX, X86::RDX, X86::R8, X86::R9, X86::R10, X86::R11, X86::RIP, 
    1926             :   };
    1927             : 
    1928             :   // GR64_TCW64 Bit set.
    1929             :   const uint8_t GR64_TCW64Bits[] = {
    1930             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 
    1931             :   };
    1932             : 
    1933             :   // GR64_with_sub_16bit_in_GR16_NOREX Register Class...
    1934             :   const MCPhysReg GR64_with_sub_16bit_in_GR16_NOREX[] = {
    1935             :     X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::RBX, X86::RBP, X86::RSP, 
    1936             :   };
    1937             : 
    1938             :   // GR64_with_sub_16bit_in_GR16_NOREX Bit set.
    1939             :   const uint8_t GR64_with_sub_16bit_in_GR16_NOREXBits[] = {
    1940             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9f, 0x01, 
    1941             :   };
    1942             : 
    1943             :   // VK64 Register Class...
    1944             :   const MCPhysReg VK64[] = {
    1945             :     X86::K0, X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7, 
    1946             :   };
    1947             : 
    1948             :   // VK64 Bit set.
    1949             :   const uint8_t VK64Bits[] = {
    1950             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1951             :   };
    1952             : 
    1953             :   // VR64 Register Class...
    1954             :   const MCPhysReg VR64[] = {
    1955             :     X86::MM0, X86::MM1, X86::MM2, X86::MM3, X86::MM4, X86::MM5, X86::MM6, X86::MM7, 
    1956             :   };
    1957             : 
    1958             :   // VR64 Bit set.
    1959             :   const uint8_t VR64Bits[] = {
    1960             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    1961             :   };
    1962             : 
    1963             :   // GR64_NOREX_NOSP Register Class...
    1964             :   const MCPhysReg GR64_NOREX_NOSP[] = {
    1965             :     X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::RBX, X86::RBP, 
    1966             :   };
    1967             : 
    1968             :   // GR64_NOREX_NOSP Bit set.
    1969             :   const uint8_t GR64_NOREX_NOSPBits[] = {
    1970             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9f, 
    1971             :   };
    1972             : 
    1973             :   // GR64_NOSP_and_GR64_TCW64 Register Class...
    1974             :   const MCPhysReg GR64_NOSP_and_GR64_TCW64[] = {
    1975             :     X86::RAX, X86::RCX, X86::RDX, X86::R8, X86::R9, X86::R10, X86::R11, 
    1976             :   };
    1977             : 
    1978             :   // GR64_NOSP_and_GR64_TCW64 Bit set.
    1979             :   const uint8_t GR64_NOSP_and_GR64_TCW64Bits[] = {
    1980             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 
    1981             :   };
    1982             : 
    1983             :   // GR64_TC_and_GR64_TCW64 Register Class...
    1984             :   const MCPhysReg GR64_TC_and_GR64_TCW64[] = {
    1985             :     X86::RAX, X86::RCX, X86::RDX, X86::R8, X86::R9, X86::R11, X86::RIP, 
    1986             :   };
    1987             : 
    1988             :   // GR64_TC_and_GR64_TCW64 Bit set.
    1989             :   const uint8_t GR64_TC_and_GR64_TCW64Bits[] = {
    1990             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 
    1991             :   };
    1992             : 
    1993             :   // VK64WM Register Class...
    1994             :   const MCPhysReg VK64WM[] = {
    1995             :     X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7, 
    1996             :   };
    1997             : 
    1998             :   // VK64WM Bit set.
    1999             :   const uint8_t VK64WMBits[] = {
    2000             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 
    2001             :   };
    2002             : 
    2003             :   // GR64_NOREX_and_GR64_TC Register Class...
    2004             :   const MCPhysReg GR64_NOREX_and_GR64_TC[] = {
    2005             :     X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::RIP, 
    2006             :   };
    2007             : 
    2008             :   // GR64_NOREX_and_GR64_TC Bit set.
    2009             :   const uint8_t GR64_NOREX_and_GR64_TCBits[] = {
    2010             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbc, 
    2011             :   };
    2012             : 
    2013             :   // GR64_TC_and_GR64_NOSP_and_GR64_TCW64 Register Class...
    2014             :   const MCPhysReg GR64_TC_and_GR64_NOSP_and_GR64_TCW64[] = {
    2015             :     X86::RAX, X86::RCX, X86::RDX, X86::R8, X86::R9, X86::R11, 
    2016             :   };
    2017             : 
    2018             :   // GR64_TC_and_GR64_NOSP_and_GR64_TCW64 Bit set.
    2019             :   const uint8_t GR64_TC_and_GR64_NOSP_and_GR64_TCW64Bits[] = {
    2020             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 
    2021             :   };
    2022             : 
    2023             :   // GR64_NOREX_NOSP_and_GR64_TC Register Class...
    2024             :   const MCPhysReg GR64_NOREX_NOSP_and_GR64_TC[] = {
    2025             :     X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, 
    2026             :   };
    2027             : 
    2028             :   // GR64_NOREX_NOSP_and_GR64_TC Bit set.
    2029             :   const uint8_t GR64_NOREX_NOSP_and_GR64_TCBits[] = {
    2030             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9c, 
    2031             :   };
    2032             : 
    2033             :   // GR64_ABCD Register Class...
    2034             :   const MCPhysReg GR64_ABCD[] = {
    2035             :     X86::RAX, X86::RCX, X86::RDX, X86::RBX, 
    2036             :   };
    2037             : 
    2038             :   // GR64_ABCD Bit set.
    2039             :   const uint8_t GR64_ABCDBits[] = {
    2040             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x16, 
    2041             :   };
    2042             : 
    2043             :   // GR64_NOREX_and_GR64_TCW64 Register Class...
    2044             :   const MCPhysReg GR64_NOREX_and_GR64_TCW64[] = {
    2045             :     X86::RAX, X86::RCX, X86::RDX, X86::RIP, 
    2046             :   };
    2047             : 
    2048             :   // GR64_NOREX_and_GR64_TCW64 Bit set.
    2049             :   const uint8_t GR64_NOREX_and_GR64_TCW64Bits[] = {
    2050             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x34, 
    2051             :   };
    2052             : 
    2053             :   // GR64_with_sub_32bit_in_GR32_TC Register Class...
    2054             :   const MCPhysReg GR64_with_sub_32bit_in_GR32_TC[] = {
    2055             :     X86::RAX, X86::RCX, X86::RDX, 
    2056             :   };
    2057             : 
    2058             :   // GR64_with_sub_32bit_in_GR32_TC Bit set.
    2059             :   const uint8_t GR64_with_sub_32bit_in_GR32_TCBits[] = {
    2060             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x14, 
    2061             :   };
    2062             : 
    2063             :   // GR64_AD Register Class...
    2064             :   const MCPhysReg GR64_AD[] = {
    2065             :     X86::RAX, X86::RDX, 
    2066             :   };
    2067             : 
    2068             :   // GR64_AD Bit set.
    2069             :   const uint8_t GR64_ADBits[] = {
    2070             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x10, 
    2071             :   };
    2072             : 
    2073             :   // GR64_and_LOW32_ADDR_ACCESS_RBP Register Class...
    2074             :   const MCPhysReg GR64_and_LOW32_ADDR_ACCESS_RBP[] = {
    2075             :     X86::RBP, X86::RIP, 
    2076             :   };
    2077             : 
    2078             :   // GR64_and_LOW32_ADDR_ACCESS_RBP Bit set.
    2079             :   const uint8_t GR64_and_LOW32_ADDR_ACCESS_RBPBits[] = {
    2080             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 
    2081             :   };
    2082             : 
    2083             :   // GR64_with_sub_32bit_in_GR32_BPSP Register Class...
    2084             :   const MCPhysReg GR64_with_sub_32bit_in_GR32_BPSP[] = {
    2085             :     X86::RBP, X86::RSP, 
    2086             :   };
    2087             : 
    2088             :   // GR64_with_sub_32bit_in_GR32_BPSP Bit set.
    2089             :   const uint8_t GR64_with_sub_32bit_in_GR32_BPSPBits[] = {
    2090             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 
    2091             :   };
    2092             : 
    2093             :   // GR64_with_sub_32bit_in_GR32_BSI Register Class...
    2094             :   const MCPhysReg GR64_with_sub_32bit_in_GR32_BSI[] = {
    2095             :     X86::RSI, X86::RBX, 
    2096             :   };
    2097             : 
    2098             :   // GR64_with_sub_32bit_in_GR32_BSI Bit set.
    2099             :   const uint8_t GR64_with_sub_32bit_in_GR32_BSIBits[] = {
    2100             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 
    2101             :   };
    2102             : 
    2103             :   // GR64_with_sub_32bit_in_GR32_CB Register Class...
    2104             :   const MCPhysReg GR64_with_sub_32bit_in_GR32_CB[] = {
    2105             :     X86::RCX, X86::RBX, 
    2106             :   };
    2107             : 
    2108             :   // GR64_with_sub_32bit_in_GR32_CB Bit set.
    2109             :   const uint8_t GR64_with_sub_32bit_in_GR32_CBBits[] = {
    2110             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 
    2111             :   };
    2112             : 
    2113             :   // GR64_with_sub_32bit_in_GR32_DC Register Class...
    2114             :   const MCPhysReg GR64_with_sub_32bit_in_GR32_DC[] = {
    2115             :     X86::RCX, X86::RDX, 
    2116             :   };
    2117             : 
    2118             :   // GR64_with_sub_32bit_in_GR32_DC Bit set.
    2119             :   const uint8_t GR64_with_sub_32bit_in_GR32_DCBits[] = {
    2120             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 
    2121             :   };
    2122             : 
    2123             :   // GR64_with_sub_32bit_in_GR32_DIBP Register Class...
    2124             :   const MCPhysReg GR64_with_sub_32bit_in_GR32_DIBP[] = {
    2125             :     X86::RDI, X86::RBP, 
    2126             :   };
    2127             : 
    2128             :   // GR64_with_sub_32bit_in_GR32_DIBP Bit set.
    2129             :   const uint8_t GR64_with_sub_32bit_in_GR32_DIBPBits[] = {
    2130             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 
    2131             :   };
    2132             : 
    2133             :   // GR64_with_sub_32bit_in_GR32_SIDI Register Class...
    2134             :   const MCPhysReg GR64_with_sub_32bit_in_GR32_SIDI[] = {
    2135             :     X86::RSI, X86::RDI, 
    2136             :   };
    2137             : 
    2138             :   // GR64_with_sub_32bit_in_GR32_SIDI Bit set.
    2139             :   const uint8_t GR64_with_sub_32bit_in_GR32_SIDIBits[] = {
    2140             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 
    2141             :   };
    2142             : 
    2143             :   // GR64_and_LOW32_ADDR_ACCESS Register Class...
    2144             :   const MCPhysReg GR64_and_LOW32_ADDR_ACCESS[] = {
    2145             :     X86::RIP, 
    2146             :   };
    2147             : 
    2148             :   // GR64_and_LOW32_ADDR_ACCESS Bit set.
    2149             :   const uint8_t GR64_and_LOW32_ADDR_ACCESSBits[] = {
    2150             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 
    2151             :   };
    2152             : 
    2153             :   // GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSI Register Class...
    2154             :   const MCPhysReg GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSI[] = {
    2155             :     X86::RBX, 
    2156             :   };
    2157             : 
    2158             :   // GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSI Bit set.
    2159             :   const uint8_t GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSIBits[] = {
    2160             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 
    2161             :   };
    2162             : 
    2163             :   // GR64_with_sub_32bit_in_GR32_AD_and_GR32_DC Register Class...
    2164             :   const MCPhysReg GR64_with_sub_32bit_in_GR32_AD_and_GR32_DC[] = {
    2165             :     X86::RDX, 
    2166             :   };
    2167             : 
    2168             :   // GR64_with_sub_32bit_in_GR32_AD_and_GR32_DC Bit set.
    2169             :   const uint8_t GR64_with_sub_32bit_in_GR32_AD_and_GR32_DCBits[] = {
    2170             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 
    2171             :   };
    2172             : 
    2173             :   // GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBP Register Class...
    2174             :   const MCPhysReg GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBP[] = {
    2175             :     X86::RBP, 
    2176             :   };
    2177             : 
    2178             :   // GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBP Bit set.
    2179             :   const uint8_t GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBPBits[] = {
    2180             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
    2181             :   };
    2182             : 
    2183             :   // GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDI Register Class...
    2184             :   const MCPhysReg GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDI[] = {
    2185             :     X86::RSI, 
    2186             :   };
    2187             : 
    2188             :   // GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDI Bit set.
    2189             :   const uint8_t GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDIBits[] = {
    2190             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 
    2191             :   };
    2192             : 
    2193             :   // GR64_with_sub_32bit_in_GR32_CB_and_GR32_DC Register Class...
    2194             :   const MCPhysReg GR64_with_sub_32bit_in_GR32_CB_and_GR32_DC[] = {
    2195             :     X86::RCX, 
    2196             :   };
    2197             : 
    2198             :   // GR64_with_sub_32bit_in_GR32_CB_and_GR32_DC Bit set.
    2199             :   const uint8_t GR64_with_sub_32bit_in_GR32_CB_and_GR32_DCBits[] = {
    2200             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 
    2201             :   };
    2202             : 
    2203             :   // GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDI Register Class...
    2204             :   const MCPhysReg GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDI[] = {
    2205             :     X86::RDI, 
    2206             :   };
    2207             : 
    2208             :   // GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDI Bit set.
    2209             :   const uint8_t GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDIBits[] = {
    2210             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 
    2211             :   };
    2212             : 
    2213             :   // RST Register Class...
    2214             :   const MCPhysReg RST[] = {
    2215             :     X86::ST0, X86::ST1, X86::ST2, X86::ST3, X86::ST4, X86::ST5, X86::ST6, X86::ST7, 
    2216             :   };
    2217             : 
    2218             :   // RST Bit set.
    2219             :   const uint8_t RSTBits[] = {
    2220             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    2221             :   };
    2222             : 
    2223             :   // RFP80 Register Class...
    2224             :   const MCPhysReg RFP80[] = {
    2225             :     X86::FP0, X86::FP1, X86::FP2, X86::FP3, X86::FP4, X86::FP5, X86::FP6, 
    2226             :   };
    2227             : 
    2228             :   // RFP80 Bit set.
    2229             :   const uint8_t RFP80Bits[] = {
    2230             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 
    2231             :   };
    2232             : 
    2233             :   // VR128X Register Class...
    2234             :   const MCPhysReg VR128X[] = {
    2235             :     X86::XMM0, X86::XMM1, X86::XMM2, X86::XMM3, X86::XMM4, X86::XMM5, X86::XMM6, X86::XMM7, X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, X86::XMM16, X86::XMM17, X86::XMM18, X86::XMM19, X86::XMM20, X86::XMM21, X86::XMM22, X86::XMM23, X86::XMM24, X86::XMM25, X86::XMM26, X86::XMM27, X86::XMM28, X86::XMM29, X86::XMM30, X86::XMM31, 
    2236             :   };
    2237             : 
    2238             :   // VR128X Bit set.
    2239             :   const uint8_t VR128XBits[] = {
    2240             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 
    2241             :   };
    2242             : 
    2243             :   // VR128 Register Class...
    2244             :   const MCPhysReg VR128[] = {
    2245             :     X86::XMM0, X86::XMM1, X86::XMM2, X86::XMM3, X86::XMM4, X86::XMM5, X86::XMM6, X86::XMM7, X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, 
    2246             :   };
    2247             : 
    2248             :   // VR128 Bit set.
    2249             :   const uint8_t VR128Bits[] = {
    2250             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f, 
    2251             :   };
    2252             : 
    2253             :   // VR128H Register Class...
    2254             :   const MCPhysReg VR128H[] = {
    2255             :     X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, 
    2256             :   };
    2257             : 
    2258             :   // VR128H Bit set.
    2259             :   const uint8_t VR128HBits[] = {
    2260             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    2261             :   };
    2262             : 
    2263             :   // VR128L Register Class...
    2264             :   const MCPhysReg VR128L[] = {
    2265             :     X86::XMM0, X86::XMM1, X86::XMM2, X86::XMM3, X86::XMM4, X86::XMM5, X86::XMM6, X86::XMM7, 
    2266             :   };
    2267             : 
    2268             :   // VR128L Bit set.
    2269             :   const uint8_t VR128LBits[] = {
    2270             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    2271             :   };
    2272             : 
    2273             :   // BNDR Register Class...
    2274             :   const MCPhysReg BNDR[] = {
    2275             :     X86::BND0, X86::BND1, X86::BND2, X86::BND3, 
    2276             :   };
    2277             : 
    2278             :   // BNDR Bit set.
    2279             :   const uint8_t BNDRBits[] = {
    2280             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 
    2281             :   };
    2282             : 
    2283             :   // VR256X Register Class...
    2284             :   const MCPhysReg VR256X[] = {
    2285             :     X86::YMM0, X86::YMM1, X86::YMM2, X86::YMM3, X86::YMM4, X86::YMM5, X86::YMM6, X86::YMM7, X86::YMM8, X86::YMM9, X86::YMM10, X86::YMM11, X86::YMM12, X86::YMM13, X86::YMM14, X86::YMM15, X86::YMM16, X86::YMM17, X86::YMM18, X86::YMM19, X86::YMM20, X86::YMM21, X86::YMM22, X86::YMM23, X86::YMM24, X86::YMM25, X86::YMM26, X86::YMM27, X86::YMM28, X86::YMM29, X86::YMM30, X86::YMM31, 
    2286             :   };
    2287             : 
    2288             :   // VR256X Bit set.
    2289             :   const uint8_t VR256XBits[] = {
    2290             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 
    2291             :   };
    2292             : 
    2293             :   // VR256 Register Class...
    2294             :   const MCPhysReg VR256[] = {
    2295             :     X86::YMM0, X86::YMM1, X86::YMM2, X86::YMM3, X86::YMM4, X86::YMM5, X86::YMM6, X86::YMM7, X86::YMM8, X86::YMM9, X86::YMM10, X86::YMM11, X86::YMM12, X86::YMM13, X86::YMM14, X86::YMM15, 
    2296             :   };
    2297             : 
    2298             :   // VR256 Bit set.
    2299             :   const uint8_t VR256Bits[] = {
    2300             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f, 
    2301             :   };
    2302             : 
    2303             :   // VR256H Register Class...
    2304             :   const MCPhysReg VR256H[] = {
    2305             :     X86::YMM8, X86::YMM9, X86::YMM10, X86::YMM11, X86::YMM12, X86::YMM13, X86::YMM14, X86::YMM15, 
    2306             :   };
    2307             : 
    2308             :   // VR256H Bit set.
    2309             :   const uint8_t VR256HBits[] = {
    2310             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    2311             :   };
    2312             : 
    2313             :   // VR256L Register Class...
    2314             :   const MCPhysReg VR256L[] = {
    2315             :     X86::YMM0, X86::YMM1, X86::YMM2, X86::YMM3, X86::YMM4, X86::YMM5, X86::YMM6, X86::YMM7, 
    2316             :   };
    2317             : 
    2318             :   // VR256L Bit set.
    2319             :   const uint8_t VR256LBits[] = {
    2320             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    2321             :   };
    2322             : 
    2323             :   // VR512 Register Class...
    2324             :   const MCPhysReg VR512[] = {
    2325             :     X86::ZMM0, X86::ZMM1, X86::ZMM2, X86::ZMM3, X86::ZMM4, X86::ZMM5, X86::ZMM6, X86::ZMM7, X86::ZMM8, X86::ZMM9, X86::ZMM10, X86::ZMM11, X86::ZMM12, X86::ZMM13, X86::ZMM14, X86::ZMM15, X86::ZMM16, X86::ZMM17, X86::ZMM18, X86::ZMM19, X86::ZMM20, X86::ZMM21, X86::ZMM22, X86::ZMM23, X86::ZMM24, X86::ZMM25, X86::ZMM26, X86::ZMM27, X86::ZMM28, X86::ZMM29, X86::ZMM30, X86::ZMM31, 
    2326             :   };
    2327             : 
    2328             :   // VR512 Bit set.
    2329             :   const uint8_t VR512Bits[] = {
    2330             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 
    2331             :   };
    2332             : 
    2333             :   // VR512_with_sub_xmm_in_FR32 Register Class...
    2334             :   const MCPhysReg VR512_with_sub_xmm_in_FR32[] = {
    2335             :     X86::ZMM0, X86::ZMM1, X86::ZMM2, X86::ZMM3, X86::ZMM4, X86::ZMM5, X86::ZMM6, X86::ZMM7, X86::ZMM8, X86::ZMM9, X86::ZMM10, X86::ZMM11, X86::ZMM12, X86::ZMM13, X86::ZMM14, X86::ZMM15, 
    2336             :   };
    2337             : 
    2338             :   // VR512_with_sub_xmm_in_FR32 Bit set.
    2339             :   const uint8_t VR512_with_sub_xmm_in_FR32Bits[] = {
    2340             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f, 
    2341             :   };
    2342             : 
    2343             :   // VR512_with_sub_xmm_in_VR128H Register Class...
    2344             :   const MCPhysReg VR512_with_sub_xmm_in_VR128H[] = {
    2345             :     X86::ZMM8, X86::ZMM9, X86::ZMM10, X86::ZMM11, X86::ZMM12, X86::ZMM13, X86::ZMM14, X86::ZMM15, 
    2346             :   };
    2347             : 
    2348             :   // VR512_with_sub_xmm_in_VR128H Bit set.
    2349             :   const uint8_t VR512_with_sub_xmm_in_VR128HBits[] = {
    2350             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    2351             :   };
    2352             : 
    2353             :   // VR512_with_sub_xmm_in_VR128L Register Class...
    2354             :   const MCPhysReg VR512_with_sub_xmm_in_VR128L[] = {
    2355             :     X86::ZMM0, X86::ZMM1, X86::ZMM2, X86::ZMM3, X86::ZMM4, X86::ZMM5, X86::ZMM6, X86::ZMM7, 
    2356             :   };
    2357             : 
    2358             :   // VR512_with_sub_xmm_in_VR128L Bit set.
    2359             :   const uint8_t VR512_with_sub_xmm_in_VR128LBits[] = {
    2360             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 
    2361             :   };
    2362             : 
    2363             : } // end anonymous namespace
    2364             : 
    2365             : extern const char X86RegClassStrings[] = {
    2366             :   /* 0 */ 'R', 'F', 'P', '8', '0', 0,
    2367             :   /* 6 */ 'V', 'K', '1', 0,
    2368             :   /* 10 */ 'V', 'R', '5', '1', '2', 0,
    2369             :   /* 16 */ 'V', 'K', '3', '2', 0,
    2370             :   /* 21 */ 'R', 'F', 'P', '3', '2', 0,
    2371             :   /* 27 */ 'V', 'R', '5', '1', '2', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', 'x', 'm', 'm', '_', 'i', 'n', '_', 'F', 'R', '3', '2', 0,
    2372             :   /* 54 */ 'G', 'R', '3', '2', 0,
    2373             :   /* 59 */ 'V', 'K', '2', 0,
    2374             :   /* 63 */ 'V', 'K', '6', '4', 0,
    2375             :   /* 68 */ 'R', 'F', 'P', '6', '4', 0,
    2376             :   /* 74 */ 'F', 'R', '6', '4', 0,
    2377             :   /* 79 */ 'G', 'R', '6', '4', 0,
    2378             :   /* 84 */ 'V', 'R', '6', '4', 0,
    2379             :   /* 89 */ 'G', 'R', '6', '4', '_', 'T', 'C', '_', 'a', 'n', 'd', '_', 'G', 'R', '6', '4', '_', 'T', 'C', 'W', '6', '4', 0,
    2380             :   /* 112 */ 'G', 'R', '6', '4', '_', 'T', 'C', '_', 'a', 'n', 'd', '_', 'G', 'R', '6', '4', '_', 'N', 'O', 'S', 'P', '_', 'a', 'n', 'd', '_', 'G', 'R', '6', '4', '_', 'T', 'C', 'W', '6', '4', 0,
    2381             :   /* 149 */ 'G', 'R', '6', '4', '_', 'N', 'O', 'R', 'E', 'X', '_', 'a', 'n', 'd', '_', 'G', 'R', '6', '4', '_', 'T', 'C', 'W', '6', '4', 0,
    2382             :   /* 175 */ 'V', 'K', '4', 0,
    2383             :   /* 179 */ 'G', 'R', 'H', '1', '6', 0,
    2384             :   /* 185 */ 'V', 'K', '1', '6', 0,
    2385             :   /* 190 */ 'G', 'R', '1', '6', 0,
    2386             :   /* 195 */ 'V', 'R', '2', '5', '6', 0,
    2387             :   /* 201 */ 'V', 'R', '1', '2', '8', 0,
    2388             :   /* 207 */ 'G', 'R', 'H', '8', 0,
    2389             :   /* 212 */ 'V', 'K', '8', 0,
    2390             :   /* 216 */ 'G', 'R', '8', 0,
    2391             :   /* 220 */ 'G', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', 'b', 'i', 't', '_', 'i', 'n', '_', 'G', 'R', '3', '2', '_', 'C', 'B', 0,
    2392             :   /* 251 */ 'G', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', 'b', 'i', 't', '_', 'i', 'n', '_', 'G', 'R', '3', '2', '_', 'C', 'B', '_', 'a', 'n', 'd', '_', 'G', 'R', '3', '2', '_', 'D', 'C', 0,
    2393             :   /* 294 */ 'G', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', 'b', 'i', 't', '_', 'i', 'n', '_', 'G', 'R', '3', '2', '_', 'A', 'D', '_', 'a', 'n', 'd', '_', 'G', 'R', '3', '2', '_', 'D', 'C', 0,
    2394             :   /* 337 */ 'G', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', 'b', 'i', 't', '_', 'i', 'n', '_', 'G', 'R', '3', '2', '_', 'D', 'C', 0,
    2395             :   /* 368 */ 'G', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', 'b', 'i', 't', '_', 'i', 'n', '_', 'G', 'R', '3', '2', '_', 'T', 'C', 0,
    2396             :   /* 399 */ 'G', 'R', '6', '4', '_', 'N', 'O', 'S', 'P', '_', 'a', 'n', 'd', '_', 'G', 'R', '6', '4', '_', 'T', 'C', 0,
    2397             :   /* 421 */ 'G', 'R', '6', '4', '_', 'N', 'O', 'R', 'E', 'X', '_', 'N', 'O', 'S', 'P', '_', 'a', 'n', 'd', '_', 'G', 'R', '6', '4', '_', 'T', 'C', 0,
    2398             :   /* 449 */ 'G', 'R', '6', '4', '_', 'N', 'O', 'R', 'E', 'X', '_', 'a', 'n', 'd', '_', 'G', 'R', '6', '4', '_', 'T', 'C', 0,
    2399             :   /* 472 */ 'G', 'R', '3', '2', '_', 'A', 'D', 0,
    2400             :   /* 480 */ 'G', 'R', '6', '4', '_', 'A', 'D', 0,
    2401             :   /* 488 */ 'G', 'R', '3', '2', '_', 'A', 'B', 'C', 'D', 0,
    2402             :   /* 498 */ 'G', 'R', '6', '4', '_', 'A', 'B', 'C', 'D', 0,
    2403             :   /* 508 */ 'G', 'R', '1', '6', '_', 'A', 'B', 'C', 'D', 0,
    2404             :   /* 518 */ 'D', 'E', 'B', 'U', 'G', '_', 'R', 'E', 'G', 0,
    2405             :   /* 528 */ 'C', 'O', 'N', 'T', 'R', 'O', 'L', '_', 'R', 'E', 'G', 0,
    2406             :   /* 540 */ 'S', 'E', 'G', 'M', 'E', 'N', 'T', '_', 'R', 'E', 'G', 0,
    2407             :   /* 552 */ 'V', 'R', '2', '5', '6', 'H', 0,
    2408             :   /* 559 */ 'V', 'R', '5', '1', '2', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', 'x', 'm', 'm', '_', 'i', 'n', '_', 'V', 'R', '1', '2', '8', 'H', 0,
    2409             :   /* 588 */ 'G', 'R', '8', '_', 'A', 'B', 'C', 'D', '_', 'H', 0,
    2410             :   /* 599 */ 'G', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', 'b', 'i', 't', '_', 'i', 'n', '_', 'G', 'R', '3', '2', '_', 'B', 'S', 'I', '_', 'a', 'n', 'd', '_', 'G', 'R', '3', '2', '_', 'S', 'I', 'D', 'I', 0,
    2411             :   /* 645 */ 'G', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', 'b', 'i', 't', '_', 'i', 'n', '_', 'G', 'R', '3', '2', '_', 'D', 'I', 'B', 'P', '_', 'a', 'n', 'd', '_', 'G', 'R', '3', '2', '_', 'S', 'I', 'D', 'I', 0,
    2412             :   /* 692 */ 'G', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', 'b', 'i', 't', '_', 'i', 'n', '_', 'G', 'R', '3', '2', '_', 'S', 'I', 'D', 'I', 0,
    2413             :   /* 725 */ 'G', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', 'b', 'i', 't', '_', 'i', 'n', '_', 'G', 'R', '3', '2', '_', 'A', 'B', 'C', 'D', '_', 'a', 'n', 'd', '_', 'G', 'R', '3', '2', '_', 'B', 'S', 'I', 0,
    2414             :   /* 771 */ 'G', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', 'b', 'i', 't', '_', 'i', 'n', '_', 'G', 'R', '3', '2', '_', 'B', 'S', 'I', 0,
    2415             :   /* 803 */ 'V', 'R', '2', '5', '6', 'L', 0,
    2416             :   /* 810 */ 'V', 'R', '5', '1', '2', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', 'x', 'm', 'm', '_', 'i', 'n', '_', 'V', 'R', '1', '2', '8', 'L', 0,
    2417             :   /* 839 */ 'G', 'R', '8', '_', 'A', 'B', 'C', 'D', '_', 'L', 0,
    2418             :   /* 850 */ 'V', 'K', '1', 'W', 'M', 0,
    2419             :   /* 856 */ 'V', 'K', '3', '2', 'W', 'M', 0,
    2420             :   /* 863 */ 'V', 'K', '2', 'W', 'M', 0,
    2421             :   /* 869 */ 'V', 'K', '6', '4', 'W', 'M', 0,
    2422             :   /* 876 */ 'V', 'K', '4', 'W', 'M', 0,
    2423             :   /* 882 */ 'V', 'K', '1', '6', 'W', 'M', 0,
    2424             :   /* 889 */ 'V', 'K', '8', 'W', 'M', 0,
    2425             :   /* 895 */ 'G', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', 'b', 'i', 't', '_', 'i', 'n', '_', 'G', 'R', '3', '2', '_', 'B', 'P', 'S', 'P', '_', 'a', 'n', 'd', '_', 'G', 'R', '3', '2', '_', 'D', 'I', 'B', 'P', 0,
    2426             :   /* 942 */ 'G', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', 'b', 'i', 't', '_', 'i', 'n', '_', 'G', 'R', '3', '2', '_', 'D', 'I', 'B', 'P', 0,
    2427             :   /* 975 */ 'G', 'R', '6', '4', '_', 'a', 'n', 'd', '_', 'L', 'O', 'W', '3', '2', '_', 'A', 'D', 'D', 'R', '_', 'A', 'C', 'C', 'E', 'S', 'S', '_', 'R', 'B', 'P', 0,
    2428             :   /* 1006 */ 'G', 'R', '3', '2', '_', 'N', 'O', 'S', 'P', 0,
    2429             :   /* 1016 */ 'G', 'R', '6', '4', '_', 'N', 'O', 'S', 'P', 0,
    2430             :   /* 1026 */ 'G', 'R', '3', '2', '_', 'N', 'O', 'R', 'E', 'X', '_', 'N', 'O', 'S', 'P', 0,
    2431             :   /* 1042 */ 'G', 'R', '6', '4', '_', 'N', 'O', 'R', 'E', 'X', '_', 'N', 'O', 'S', 'P', 0,
    2432             :   /* 1058 */ 'G', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', 'b', 'i', 't', '_', 'i', 'n', '_', 'G', 'R', '3', '2', '_', 'B', 'P', 'S', 'P', 0,
    2433             :   /* 1091 */ 'D', 'F', 'C', 'C', 'R', 0,
    2434             :   /* 1097 */ 'F', 'P', 'C', 'C', 'R', 0,
    2435             :   /* 1103 */ 'B', 'N', 'D', 'R', 0,
    2436             :   /* 1108 */ 'G', 'R', '6', '4', '_', 'a', 'n', 'd', '_', 'L', 'O', 'W', '3', '2', '_', 'A', 'D', 'D', 'R', '_', 'A', 'C', 'C', 'E', 'S', 'S', 0,
    2437             :   /* 1135 */ 'R', 'S', 'T', 0,
    2438             :   /* 1139 */ 'F', 'R', '3', '2', 'X', 0,
    2439             :   /* 1145 */ 'F', 'R', '6', '4', 'X', 0,
    2440             :   /* 1151 */ 'V', 'R', '2', '5', '6', 'X', 0,
    2441             :   /* 1158 */ 'V', 'R', '1', '2', '8', 'X', 0,
    2442             :   /* 1165 */ 'G', 'R', '3', '2', '_', 'N', 'O', 'R', 'E', 'X', 0,
    2443             :   /* 1176 */ 'G', 'R', '6', '4', '_', 'N', 'O', 'R', 'E', 'X', 0,
    2444             :   /* 1187 */ 'G', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '1', '6', 'b', 'i', 't', '_', 'i', 'n', '_', 'G', 'R', '1', '6', '_', 'N', 'O', 'R', 'E', 'X', 0,
    2445             :   /* 1221 */ 'L', 'O', 'W', '3', '2', '_', 'A', 'D', 'D', 'R', '_', 'A', 'C', 'C', 'E', 'S', 'S', '_', 'R', 'B', 'P', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '1', '6', 'b', 'i', 't', '_', 'i', 'n', '_', 'G', 'R', '1', '6', '_', 'N', 'O', 'R', 'E', 'X', 0,
    2446             :   /* 1272 */ 'G', 'R', '8', '_', 'N', 'O', 'R', 'E', 'X', 0,
    2447             :   /* 1282 */ 'L', 'O', 'W', '3', '2', '_', 'A', 'D', 'D', 'R', '_', 'A', 'C', 'C', 'E', 'S', 'S', '_', 'R', 'B', 'P', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', 'b', 'i', 't', 0,
    2448             :   /* 1319 */ 'L', 'O', 'W', '3', '2', '_', 'A', 'D', 'D', 'R', '_', 'A', 'C', 'C', 'E', 'S', 'S', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', 'b', 'i', 't', 0,
    2449             :   /* 1352 */ 'L', 'O', 'W', '3', '2', '_', 'A', 'D', 'D', 'R', '_', 'A', 'C', 'C', 'E', 'S', 'S', '_', 'R', 'B', 'P', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '8', 'b', 'i', 't', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', 'b', 'i', 't', 0,
    2450             :   /* 1403 */ 'G', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '8', 'b', 'i', 't', 0,
    2451             :   /* 1422 */ 'L', 'O', 'W', '3', '2', '_', 'A', 'D', 'D', 'R', '_', 'A', 'C', 'C', 'E', 'S', 'S', '_', 'R', 'B', 'P', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '8', 'b', 'i', 't', 0,
    2452             : };
    2453             : 
    2454             : extern const MCRegisterClass X86MCRegisterClasses[] = {
    2455             :   { GR8, GR8Bits, 216, 20, sizeof(GR8Bits), X86::GR8RegClassID, 1, true },
    2456             :   { GRH8, GRH8Bits, 207, 12, sizeof(GRH8Bits), X86::GRH8RegClassID, 1, false },
    2457             :   { GR8_NOREX, GR8_NOREXBits, 1272, 8, sizeof(GR8_NOREXBits), X86::GR8_NOREXRegClassID, 1, true },
    2458             :   { GR8_ABCD_H, GR8_ABCD_HBits, 588, 4, sizeof(GR8_ABCD_HBits), X86::GR8_ABCD_HRegClassID, 1, true },
    2459             :   { GR8_ABCD_L, GR8_ABCD_LBits, 839, 4, sizeof(GR8_ABCD_LBits), X86::GR8_ABCD_LRegClassID, 1, true },
    2460             :   { GRH16, GRH16Bits, 179, 17, sizeof(GRH16Bits), X86::GRH16RegClassID, 1, false },
    2461             :   { GR16, GR16Bits, 190, 16, sizeof(GR16Bits), X86::GR16RegClassID, 1, true },
    2462             :   { GR16_NOREX, GR16_NOREXBits, 1210, 8, sizeof(GR16_NOREXBits), X86::GR16_NOREXRegClassID, 1, true },
    2463             :   { VK1, VK1Bits, 6, 8, sizeof(VK1Bits), X86::VK1RegClassID, 1, true },
    2464             :   { VK16, VK16Bits, 185, 8, sizeof(VK16Bits), X86::VK16RegClassID, 1, true },
    2465             :   { VK2, VK2Bits, 59, 8, sizeof(VK2Bits), X86::VK2RegClassID, 1, true },
    2466             :   { VK4, VK4Bits, 175, 8, sizeof(VK4Bits), X86::VK4RegClassID, 1, true },
    2467             :   { VK8, VK8Bits, 212, 8, sizeof(VK8Bits), X86::VK8RegClassID, 1, true },
    2468             :   { VK16WM, VK16WMBits, 882, 7, sizeof(VK16WMBits), X86::VK16WMRegClassID, 1, true },
    2469             :   { VK1WM, VK1WMBits, 850, 7, sizeof(VK1WMBits), X86::VK1WMRegClassID, 1, true },
    2470             :   { VK2WM, VK2WMBits, 863, 7, sizeof(VK2WMBits), X86::VK2WMRegClassID, 1, true },
    2471             :   { VK4WM, VK4WMBits, 876, 7, sizeof(VK4WMBits), X86::VK4WMRegClassID, 1, true },
    2472             :   { VK8WM, VK8WMBits, 889, 7, sizeof(VK8WMBits), X86::VK8WMRegClassID, 1, true },
    2473             :   { SEGMENT_REG, SEGMENT_REGBits, 540, 6, sizeof(SEGMENT_REGBits), X86::SEGMENT_REGRegClassID, 1, true },
    2474             :   { GR16_ABCD, GR16_ABCDBits, 508, 4, sizeof(GR16_ABCDBits), X86::GR16_ABCDRegClassID, 1, true },
    2475             :   { FPCCR, FPCCRBits, 1097, 1, sizeof(FPCCRBits), X86::FPCCRRegClassID, -1, false },
    2476             :   { FR32X, FR32XBits, 1139, 32, sizeof(FR32XBits), X86::FR32XRegClassID, 1, true },
    2477             :   { LOW32_ADDR_ACCESS_RBP, LOW32_ADDR_ACCESS_RBPBits, 984, 18, sizeof(LOW32_ADDR_ACCESS_RBPBits), X86::LOW32_ADDR_ACCESS_RBPRegClassID, 1, true },
    2478             :   { LOW32_ADDR_ACCESS, LOW32_ADDR_ACCESSBits, 1117, 17, sizeof(LOW32_ADDR_ACCESSBits), X86::LOW32_ADDR_ACCESSRegClassID, 1, true },
    2479             :   { LOW32_ADDR_ACCESS_RBP_with_sub_8bit, LOW32_ADDR_ACCESS_RBP_with_sub_8bitBits, 1422, 17, sizeof(LOW32_ADDR_ACCESS_RBP_with_sub_8bitBits), X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID, 1, true },
    2480             :   { DEBUG_REG, DEBUG_REGBits, 518, 16, sizeof(DEBUG_REGBits), X86::DEBUG_REGRegClassID, 1, true },
    2481             :   { FR32, FR32Bits, 49, 16, sizeof(FR32Bits), X86::FR32RegClassID, 1, true },
    2482             :   { GR32, GR32Bits, 54, 16, sizeof(GR32Bits), X86::GR32RegClassID, 1, true },
    2483             :   { GR32_NOSP, GR32_NOSPBits, 1006, 15, sizeof(GR32_NOSPBits), X86::GR32_NOSPRegClassID, 1, true },
    2484             :   { LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX, LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXBits, 1221, 9, sizeof(LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXBits), X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClassID, 1, true },
    2485             :   { GR32_NOREX, GR32_NOREXBits, 1165, 8, sizeof(GR32_NOREXBits), X86::GR32_NOREXRegClassID, 1, true },
    2486             :   { VK32, VK32Bits, 16, 8, sizeof(VK32Bits), X86::VK32RegClassID, 1, true },
    2487             :   { GR32_NOREX_NOSP, GR32_NOREX_NOSPBits, 1026, 7, sizeof(GR32_NOREX_NOSPBits), X86::GR32_NOREX_NOSPRegClassID, 1, true },
    2488             :   { RFP32, RFP32Bits, 21, 7, sizeof(RFP32Bits), X86::RFP32RegClassID, 1, true },
    2489             :   { VK32WM, VK32WMBits, 856, 7, sizeof(VK32WMBits), X86::VK32WMRegClassID, 1, true },
    2490             :   { GR32_ABCD, GR32_ABCDBits, 488, 4, sizeof(GR32_ABCDBits), X86::GR32_ABCDRegClassID, 1, true },
    2491             :   { GR32_TC, GR32_TCBits, 391, 3, sizeof(GR32_TCBits), X86::GR32_TCRegClassID, 1, true },
    2492             :   { GR32_AD, GR32_ADBits, 472, 2, sizeof(GR32_ADBits), X86::GR32_ADRegClassID, 1, true },
    2493             :   { GR32_BPSP, GR32_BPSPBits, 1081, 2, sizeof(GR32_BPSPBits), X86::GR32_BPSPRegClassID, 1, true },
    2494             :   { GR32_BSI, GR32_BSIBits, 762, 2, sizeof(GR32_BSIBits), X86::GR32_BSIRegClassID, 1, true },
    2495             :   { GR32_CB, GR32_CBBits, 243, 2, sizeof(GR32_CBBits), X86::GR32_CBRegClassID, 1, true },
    2496             :   { GR32_DC, GR32_DCBits, 286, 2, sizeof(GR32_DCBits), X86::GR32_DCRegClassID, 1, true },
    2497             :   { GR32_DIBP, GR32_DIBPBits, 932, 2, sizeof(GR32_DIBPBits), X86::GR32_DIBPRegClassID, 1, true },
    2498             :   { GR32_SIDI, GR32_SIDIBits, 635, 2, sizeof(GR32_SIDIBits), X86::GR32_SIDIRegClassID, 1, true },
    2499             :   { LOW32_ADDR_ACCESS_RBP_with_sub_32bit, LOW32_ADDR_ACCESS_RBP_with_sub_32bitBits, 1282, 2, sizeof(LOW32_ADDR_ACCESS_RBP_with_sub_32bitBits), X86::LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClassID, 1, true },
    2500             :   { CCR, CCRBits, 1093, 1, sizeof(CCRBits), X86::CCRRegClassID, -1, false },
    2501             :   { DFCCR, DFCCRBits, 1091, 1, sizeof(DFCCRBits), X86::DFCCRRegClassID, -1, false },
    2502             :   { GR32_ABCD_and_GR32_BSI, GR32_ABCD_and_GR32_BSIBits, 748, 1, sizeof(GR32_ABCD_and_GR32_BSIBits), X86::GR32_ABCD_and_GR32_BSIRegClassID, 1, true },
    2503             :   { GR32_AD_and_GR32_DC, GR32_AD_and_GR32_DCBits, 317, 1, sizeof(GR32_AD_and_GR32_DCBits), X86::GR32_AD_and_GR32_DCRegClassID, 1, true },
    2504             :   { GR32_BPSP_and_GR32_DIBP, GR32_BPSP_and_GR32_DIBPBits, 918, 1, sizeof(GR32_BPSP_and_GR32_DIBPBits), X86::GR32_BPSP_and_GR32_DIBPRegClassID, 1, true },
    2505             :   { GR32_BSI_and_GR32_SIDI, GR32_BSI_and_GR32_SIDIBits, 622, 1, sizeof(GR32_BSI_and_GR32_SIDIBits), X86::GR32_BSI_and_GR32_SIDIRegClassID, 1, true },
    2506             :   { GR32_CB_and_GR32_DC, GR32_CB_and_GR32_DCBits, 274, 1, sizeof(GR32_CB_and_GR32_DCBits), X86::GR32_CB_and_GR32_DCRegClassID, 1, true },
    2507             :   { GR32_DIBP_and_GR32_SIDI, GR32_DIBP_and_GR32_SIDIBits, 668, 1, sizeof(GR32_DIBP_and_GR32_SIDIBits), X86::GR32_DIBP_and_GR32_SIDIRegClassID, 1, true },
    2508             :   { LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit, LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitBits, 1352, 1, sizeof(LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitBits), X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitRegClassID, 1, true },
    2509             :   { LOW32_ADDR_ACCESS_with_sub_32bit, LOW32_ADDR_ACCESS_with_sub_32bitBits, 1319, 1, sizeof(LOW32_ADDR_ACCESS_with_sub_32bitBits), X86::LOW32_ADDR_ACCESS_with_sub_32bitRegClassID, 1, true },
    2510             :   { RFP64, RFP64Bits, 68, 7, sizeof(RFP64Bits), X86::RFP64RegClassID, 1, true },
    2511             :   { FR64X, FR64XBits, 1145, 32, sizeof(FR64XBits), X86::FR64XRegClassID, 1, true },
    2512             :   { GR64, GR64Bits, 79, 17, sizeof(GR64Bits), X86::GR64RegClassID, 1, true },
    2513             :   { CONTROL_REG, CONTROL_REGBits, 528, 16, sizeof(CONTROL_REGBits), X86::CONTROL_REGRegClassID, 1, true },
    2514             :   { FR64, FR64Bits, 74, 16, sizeof(FR64Bits), X86::FR64RegClassID, 1, true },
    2515             :   { GR64_with_sub_8bit, GR64_with_sub_8bitBits, 1403, 16, sizeof(GR64_with_sub_8bitBits), X86::GR64_with_sub_8bitRegClassID, 1, true },
    2516             :   { GR64_NOSP, GR64_NOSPBits, 1016, 15, sizeof(GR64_NOSPBits), X86::GR64_NOSPRegClassID, 1, true },
    2517             :   { GR64_NOREX, GR64_NOREXBits, 1176, 9, sizeof(GR64_NOREXBits), X86::GR64_NOREXRegClassID, 1, true },
    2518             :   { GR64_TC, GR64_TCBits, 413, 9, sizeof(GR64_TCBits), X86::GR64_TCRegClassID, 1, true },
    2519             :   { GR64_NOSP_and_GR64_TC, GR64_NOSP_and_GR64_TCBits, 399, 8, sizeof(GR64_NOSP_and_GR64_TCBits), X86::GR64_NOSP_and_GR64_TCRegClassID, 1, true },
    2520             :   { GR64_TCW64, GR64_TCW64Bits, 101, 8, sizeof(GR64_TCW64Bits), X86::GR64_TCW64RegClassID, 1, true },
    2521             :   { GR64_with_sub_16bit_in_GR16_NOREX, GR64_with_sub_16bit_in_GR16_NOREXBits, 1187, 8, sizeof(GR64_with_sub_16bit_in_GR16_NOREXBits), X86::GR64_with_sub_16bit_in_GR16_NOREXRegClassID, 1, true },
    2522             :   { VK64, VK64Bits, 63, 8, sizeof(VK64Bits), X86::VK64RegClassID, 1, true },
    2523             :   { VR64, VR64Bits, 84, 8, sizeof(VR64Bits), X86::VR64RegClassID, 1, true },
    2524             :   { GR64_NOREX_NOSP, GR64_NOREX_NOSPBits, 1042, 7, sizeof(GR64_NOREX_NOSPBits), X86::GR64_NOREX_NOSPRegClassID, 1, true },
    2525             :   { GR64_NOSP_and_GR64_TCW64, GR64_NOSP_and_GR64_TCW64Bits, 124, 7, sizeof(GR64_NOSP_and_GR64_TCW64Bits), X86::GR64_NOSP_and_GR64_TCW64RegClassID, 1, true },
    2526             :   { GR64_TC_and_GR64_TCW64, GR64_TC_and_GR64_TCW64Bits, 89, 7, sizeof(GR64_TC_and_GR64_TCW64Bits), X86::GR64_TC_and_GR64_TCW64RegClassID, 1, true },
    2527             :   { VK64WM, VK64WMBits, 869, 7, sizeof(VK64WMBits), X86::VK64WMRegClassID, 1, true },
    2528             :   { GR64_NOREX_and_GR64_TC, GR64_NOREX_and_GR64_TCBits, 449, 6, sizeof(GR64_NOREX_and_GR64_TCBits), X86::GR64_NOREX_and_GR64_TCRegClassID, 1, true },
    2529             :   { GR64_TC_and_GR64_NOSP_and_GR64_TCW64, GR64_TC_and_GR64_NOSP_and_GR64_TCW64Bits, 112, 6, sizeof(GR64_TC_and_GR64_NOSP_and_GR64_TCW64Bits), X86::GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClassID, 1, true },
    2530             :   { GR64_NOREX_NOSP_and_GR64_TC, GR64_NOREX_NOSP_and_GR64_TCBits, 421, 5, sizeof(GR64_NOREX_NOSP_and_GR64_TCBits), X86::GR64_NOREX_NOSP_and_GR64_TCRegClassID, 1, true },
    2531             :   { GR64_ABCD, GR64_ABCDBits, 498, 4, sizeof(GR64_ABCDBits), X86::GR64_ABCDRegClassID, 1, true },
    2532             :   { GR64_NOREX_and_GR64_TCW64, GR64_NOREX_and_GR64_TCW64Bits, 149, 4, sizeof(GR64_NOREX_and_GR64_TCW64Bits), X86::GR64_NOREX_and_GR64_TCW64RegClassID, 1, true },
    2533             :   { GR64_with_sub_32bit_in_GR32_TC, GR64_with_sub_32bit_in_GR32_TCBits, 368, 3, sizeof(GR64_with_sub_32bit_in_GR32_TCBits), X86::GR64_with_sub_32bit_in_GR32_TCRegClassID, 1, true },
    2534             :   { GR64_AD, GR64_ADBits, 480, 2, sizeof(GR64_ADBits), X86::GR64_ADRegClassID, 1, true },
    2535             :   { GR64_and_LOW32_ADDR_ACCESS_RBP, GR64_and_LOW32_ADDR_ACCESS_RBPBits, 975, 2, sizeof(GR64_and_LOW32_ADDR_ACCESS_RBPBits), X86::GR64_and_LOW32_ADDR_ACCESS_RBPRegClassID, 1, true },
    2536             :   { GR64_with_sub_32bit_in_GR32_BPSP, GR64_with_sub_32bit_in_GR32_BPSPBits, 1058, 2, sizeof(GR64_with_sub_32bit_in_GR32_BPSPBits), X86::GR64_with_sub_32bit_in_GR32_BPSPRegClassID, 1, true },
    2537             :   { GR64_with_sub_32bit_in_GR32_BSI, GR64_with_sub_32bit_in_GR32_BSIBits, 771, 2, sizeof(GR64_with_sub_32bit_in_GR32_BSIBits), X86::GR64_with_sub_32bit_in_GR32_BSIRegClassID, 1, true },
    2538             :   { GR64_with_sub_32bit_in_GR32_CB, GR64_with_sub_32bit_in_GR32_CBBits, 220, 2, sizeof(GR64_with_sub_32bit_in_GR32_CBBits), X86::GR64_with_sub_32bit_in_GR32_CBRegClassID, 1, true },
    2539             :   { GR64_with_sub_32bit_in_GR32_DC, GR64_with_sub_32bit_in_GR32_DCBits, 337, 2, sizeof(GR64_with_sub_32bit_in_GR32_DCBits), X86::GR64_with_sub_32bit_in_GR32_DCRegClassID, 1, true },
    2540             :   { GR64_with_sub_32bit_in_GR32_DIBP, GR64_with_sub_32bit_in_GR32_DIBPBits, 942, 2, sizeof(GR64_with_sub_32bit_in_GR32_DIBPBits), X86::GR64_with_sub_32bit_in_GR32_DIBPRegClassID, 1, true },
    2541             :   { GR64_with_sub_32bit_in_GR32_SIDI, GR64_with_sub_32bit_in_GR32_SIDIBits, 692, 2, sizeof(GR64_with_sub_32bit_in_GR32_SIDIBits), X86::GR64_with_sub_32bit_in_GR32_SIDIRegClassID, 1, true },
    2542             :   { GR64_and_LOW32_ADDR_ACCESS, GR64_and_LOW32_ADDR_ACCESSBits, 1108, 1, sizeof(GR64_and_LOW32_ADDR_ACCESSBits), X86::GR64_and_LOW32_ADDR_ACCESSRegClassID, 1, true },
    2543             :   { GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSI, GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSIBits, 725, 1, sizeof(GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSIBits), X86::GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSIRegClassID, 1, true },
    2544             :   { GR64_with_sub_32bit_in_GR32_AD_and_GR32_DC, GR64_with_sub_32bit_in_GR32_AD_and_GR32_DCBits, 294, 1, sizeof(GR64_with_sub_32bit_in_GR32_AD_and_GR32_DCBits), X86::GR64_with_sub_32bit_in_GR32_AD_and_GR32_DCRegClassID, 1, true },
    2545             :   { GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBP, GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBPBits, 895, 1, sizeof(GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBPBits), X86::GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBPRegClassID, 1, true },
    2546             :   { GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDI, GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDIBits, 599, 1, sizeof(GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDIBits), X86::GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDIRegClassID, 1, true },
    2547             :   { GR64_with_sub_32bit_in_GR32_CB_and_GR32_DC, GR64_with_sub_32bit_in_GR32_CB_and_GR32_DCBits, 251, 1, sizeof(GR64_with_sub_32bit_in_GR32_CB_and_GR32_DCBits), X86::GR64_with_sub_32bit_in_GR32_CB_and_GR32_DCRegClassID, 1, true },
    2548             :   { GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDI, GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDIBits, 645, 1, sizeof(GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDIBits), X86::GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDIRegClassID, 1, true },
    2549             :   { RST, RSTBits, 1135, 8, sizeof(RSTBits), X86::RSTRegClassID, 1, false },
    2550             :   { RFP80, RFP80Bits, 0, 7, sizeof(RFP80Bits), X86::RFP80RegClassID, 1, true },
    2551             :   { VR128X, VR128XBits, 1158, 32, sizeof(VR128XBits), X86::VR128XRegClassID, 1, true },
    2552             :   { VR128, VR128Bits, 201, 16, sizeof(VR128Bits), X86::VR128RegClassID, 1, true },
    2553             :   { VR128H, VR128HBits, 581, 8, sizeof(VR128HBits), X86::VR128HRegClassID, 1, true },
    2554             :   { VR128L, VR128LBits, 832, 8, sizeof(VR128LBits), X86::VR128LRegClassID, 1, true },
    2555             :   { BNDR, BNDRBits, 1103, 4, sizeof(BNDRBits), X86::BNDRRegClassID, 1, true },
    2556             :   { VR256X, VR256XBits, 1151, 32, sizeof(VR256XBits), X86::VR256XRegClassID, 1, true },
    2557             :   { VR256, VR256Bits, 195, 16, sizeof(VR256Bits), X86::VR256RegClassID, 1, true },
    2558             :   { VR256H, VR256HBits, 552, 8, sizeof(VR256HBits), X86::VR256HRegClassID, 1, true },
    2559             :   { VR256L, VR256LBits, 803, 8, sizeof(VR256LBits), X86::VR256LRegClassID, 1, true },
    2560             :   { VR512, VR512Bits, 10, 32, sizeof(VR512Bits), X86::VR512RegClassID, 1, true },
    2561             :   { VR512_with_sub_xmm_in_FR32, VR512_with_sub_xmm_in_FR32Bits, 27, 16, sizeof(VR512_with_sub_xmm_in_FR32Bits), X86::VR512_with_sub_xmm_in_FR32RegClassID, 1, true },
    2562             :   { VR512_with_sub_xmm_in_VR128H, VR512_with_sub_xmm_in_VR128HBits, 559, 8, sizeof(VR512_with_sub_xmm_in_VR128HBits), X86::VR512_with_sub_xmm_in_VR128HRegClassID, 1, true },
    2563             :   { VR512_with_sub_xmm_in_VR128L, VR512_with_sub_xmm_in_VR128LBits, 810, 8, sizeof(VR512_with_sub_xmm_in_VR128LBits), X86::VR512_with_sub_xmm_in_VR128LRegClassID, 1, true },
    2564             : };
    2565             : 
    2566             : // X86 Dwarf<->LLVM register mappings.
    2567             : extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour0Dwarf2L[] = {
    2568             :   { 0U, X86::RAX },
    2569             :   { 1U, X86::RDX },
    2570             :   { 2U, X86::RCX },
    2571             :   { 3U, X86::RBX },
    2572             :   { 4U, X86::RSI },
    2573             :   { 5U, X86::RDI },
    2574             :   { 6U, X86::RBP },
    2575             :   { 7U, X86::RSP },
    2576             :   { 8U, X86::R8 },
    2577             :   { 9U, X86::R9 },
    2578             :   { 10U, X86::R10 },
    2579             :   { 11U, X86::R11 },
    2580             :   { 12U, X86::R12 },
    2581             :   { 13U, X86::R13 },
    2582             :   { 14U, X86::R14 },
    2583             :   { 15U, X86::R15 },
    2584             :   { 16U, X86::RIP },
    2585             :   { 17U, X86::XMM0 },
    2586             :   { 18U, X86::XMM1 },
    2587             :   { 19U, X86::XMM2 },
    2588             :   { 20U, X86::XMM3 },
    2589             :   { 21U, X86::XMM4 },
    2590             :   { 22U, X86::XMM5 },
    2591             :   { 23U, X86::XMM6 },
    2592             :   { 24U, X86::XMM7 },
    2593             :   { 25U, X86::XMM8 },
    2594             :   { 26U, X86::XMM9 },
    2595             :   { 27U, X86::XMM10 },
    2596             :   { 28U, X86::XMM11 },
    2597             :   { 29U, X86::XMM12 },
    2598             :   { 30U, X86::XMM13 },
    2599             :   { 31U, X86::XMM14 },
    2600             :   { 32U, X86::XMM15 },
    2601             :   { 33U, X86::ST0 },
    2602             :   { 34U, X86::ST1 },
    2603             :   { 35U, X86::ST2 },
    2604             :   { 36U, X86::ST3 },
    2605             :   { 37U, X86::ST4 },
    2606             :   { 38U, X86::ST5 },
    2607             :   { 39U, X86::ST6 },
    2608             :   { 40U, X86::ST7 },
    2609             :   { 41U, X86::MM0 },
    2610             :   { 42U, X86::MM1 },
    2611             :   { 43U, X86::MM2 },
    2612             :   { 44U, X86::MM3 },
    2613             :   { 45U, X86::MM4 },
    2614             :   { 46U, X86::MM5 },
    2615             :   { 47U, X86::MM6 },
    2616             :   { 48U, X86::MM7 },
    2617             :   { 67U, X86::XMM16 },
    2618             :   { 68U, X86::XMM17 },
    2619             :   { 69U, X86::XMM18 },
    2620             :   { 70U, X86::XMM19 },
    2621             :   { 71U, X86::XMM20 },
    2622             :   { 72U, X86::XMM21 },
    2623             :   { 73U, X86::XMM22 },
    2624             :   { 74U, X86::XMM23 },
    2625             :   { 75U, X86::XMM24 },
    2626             :   { 76U, X86::XMM25 },
    2627             :   { 77U, X86::XMM26 },
    2628             :   { 78U, X86::XMM27 },
    2629             :   { 79U, X86::XMM28 },
    2630             :   { 80U, X86::XMM29 },
    2631             :   { 81U, X86::XMM30 },
    2632             :   { 82U, X86::XMM31 },
    2633             :   { 118U, X86::K0 },
    2634             :   { 119U, X86::K1 },
    2635             :   { 120U, X86::K2 },
    2636             :   { 121U, X86::K3 },
    2637             :   { 122U, X86::K4 },
    2638             :   { 123U, X86::K5 },
    2639             :   { 124U, X86::K6 },
    2640             :   { 125U, X86::K7 },
    2641             : };
    2642             : extern const unsigned X86DwarfFlavour0Dwarf2LSize = array_lengthof(X86DwarfFlavour0Dwarf2L);
    2643             : 
    2644             : extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour1Dwarf2L[] = {
    2645             :   { 0U, X86::EAX },
    2646             :   { 1U, X86::ECX },
    2647             :   { 2U, X86::EDX },
    2648             :   { 3U, X86::EBX },
    2649             :   { 4U, X86::EBP },
    2650             :   { 5U, X86::ESP },
    2651             :   { 6U, X86::ESI },
    2652             :   { 7U, X86::EDI },
    2653             :   { 8U, X86::EIP },
    2654             :   { 12U, X86::ST0 },
    2655             :   { 13U, X86::ST1 },
    2656             :   { 14U, X86::ST2 },
    2657             :   { 15U, X86::ST3 },
    2658             :   { 16U, X86::ST4 },
    2659             :   { 17U, X86::ST5 },
    2660             :   { 18U, X86::ST6 },
    2661             :   { 19U, X86::ST7 },
    2662             :   { 21U, X86::XMM0 },
    2663             :   { 22U, X86::XMM1 },
    2664             :   { 23U, X86::XMM2 },
    2665             :   { 24U, X86::XMM3 },
    2666             :   { 25U, X86::XMM4 },
    2667             :   { 26U, X86::XMM5 },
    2668             :   { 27U, X86::XMM6 },
    2669             :   { 28U, X86::XMM7 },
    2670             :   { 29U, X86::MM0 },
    2671             :   { 30U, X86::MM1 },
    2672             :   { 31U, X86::MM2 },
    2673             :   { 32U, X86::MM3 },
    2674             :   { 33U, X86::MM4 },
    2675             :   { 34U, X86::MM5 },
    2676             :   { 35U, X86::MM6 },
    2677             :   { 36U, X86::MM7 },
    2678             :   { 93U, X86::K0 },
    2679             :   { 94U, X86::K1 },
    2680             :   { 95U, X86::K2 },
    2681             :   { 96U, X86::K3 },
    2682             :   { 97U, X86::K4 },
    2683             :   { 98U, X86::K5 },
    2684             :   { 99U, X86::K6 },
    2685             :   { 100U, X86::K7 },
    2686             : };
    2687             : extern const unsigned X86DwarfFlavour1Dwarf2LSize = array_lengthof(X86DwarfFlavour1Dwarf2L);
    2688             : 
    2689             : extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour2Dwarf2L[] = {
    2690             :   { 0U, X86::EAX },
    2691             :   { 1U, X86::ECX },
    2692             :   { 2U, X86::EDX },
    2693             :   { 3U, X86::EBX },
    2694             :   { 4U, X86::ESP },
    2695             :   { 5U, X86::EBP },
    2696             :   { 6U, X86::ESI },
    2697             :   { 7U, X86::EDI },
    2698             :   { 8U, X86::EIP },
    2699             :   { 11U, X86::ST0 },
    2700             :   { 12U, X86::ST1 },
    2701             :   { 13U, X86::ST2 },
    2702             :   { 14U, X86::ST3 },
    2703             :   { 15U, X86::ST4 },
    2704             :   { 16U, X86::ST5 },
    2705             :   { 17U, X86::ST6 },
    2706             :   { 18U, X86::ST7 },
    2707             :   { 21U, X86::XMM0 },
    2708             :   { 22U, X86::XMM1 },
    2709             :   { 23U, X86::XMM2 },
    2710             :   { 24U, X86::XMM3 },
    2711             :   { 25U, X86::XMM4 },
    2712             :   { 26U, X86::XMM5 },
    2713             :   { 27U, X86::XMM6 },
    2714             :   { 28U, X86::XMM7 },
    2715             :   { 29U, X86::MM0 },
    2716             :   { 30U, X86::MM1 },
    2717             :   { 31U, X86::MM2 },
    2718             :   { 32U, X86::MM3 },
    2719             :   { 33U, X86::MM4 },
    2720             :   { 34U, X86::MM5 },
    2721             :   { 35U, X86::MM6 },
    2722             :   { 36U, X86::MM7 },
    2723             :   { 93U, X86::K0 },
    2724             :   { 94U, X86::K1 },
    2725             :   { 95U, X86::K2 },
    2726             :   { 96U, X86::K3 },
    2727             :   { 97U, X86::K4 },
    2728             :   { 98U, X86::K5 },
    2729             :   { 99U, X86::K6 },
    2730             :   { 100U, X86::K7 },
    2731             : };
    2732             : extern const unsigned X86DwarfFlavour2Dwarf2LSize = array_lengthof(X86DwarfFlavour2Dwarf2L);
    2733             : 
    2734             : extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour0Dwarf2L[] = {
    2735             :   { 0U, X86::RAX },
    2736             :   { 1U, X86::RDX },
    2737             :   { 2U, X86::RCX },
    2738             :   { 3U, X86::RBX },
    2739             :   { 4U, X86::RSI },
    2740             :   { 5U, X86::RDI },
    2741             :   { 6U, X86::RBP },
    2742             :   { 7U, X86::RSP },
    2743             :   { 8U, X86::R8 },
    2744             :   { 9U, X86::R9 },
    2745             :   { 10U, X86::R10 },
    2746             :   { 11U, X86::R11 },
    2747             :   { 12U, X86::R12 },
    2748             :   { 13U, X86::R13 },
    2749             :   { 14U, X86::R14 },
    2750             :   { 15U, X86::R15 },
    2751             :   { 16U, X86::RIP },
    2752             :   { 17U, X86::XMM0 },
    2753             :   { 18U, X86::XMM1 },
    2754             :   { 19U, X86::XMM2 },
    2755             :   { 20U, X86::XMM3 },
    2756             :   { 21U, X86::XMM4 },
    2757             :   { 22U, X86::XMM5 },
    2758             :   { 23U, X86::XMM6 },
    2759             :   { 24U, X86::XMM7 },
    2760             :   { 25U, X86::XMM8 },
    2761             :   { 26U, X86::XMM9 },
    2762             :   { 27U, X86::XMM10 },
    2763             :   { 28U, X86::XMM11 },
    2764             :   { 29U, X86::XMM12 },
    2765             :   { 30U, X86::XMM13 },
    2766             :   { 31U, X86::XMM14 },
    2767             :   { 32U, X86::XMM15 },
    2768             :   { 33U, X86::ST0 },
    2769             :   { 34U, X86::ST1 },
    2770             :   { 35U, X86::ST2 },
    2771             :   { 36U, X86::ST3 },
    2772             :   { 37U, X86::ST4 },
    2773             :   { 38U, X86::ST5 },
    2774             :   { 39U, X86::ST6 },
    2775             :   { 40U, X86::ST7 },
    2776             :   { 41U, X86::MM0 },
    2777             :   { 42U, X86::MM1 },
    2778             :   { 43U, X86::MM2 },
    2779             :   { 44U, X86::MM3 },
    2780             :   { 45U, X86::MM4 },
    2781             :   { 46U, X86::MM5 },
    2782             :   { 47U, X86::MM6 },
    2783             :   { 48U, X86::MM7 },
    2784             :   { 67U, X86::XMM16 },
    2785             :   { 68U, X86::XMM17 },
    2786             :   { 69U, X86::XMM18 },
    2787             :   { 70U, X86::XMM19 },
    2788             :   { 71U, X86::XMM20 },
    2789             :   { 72U, X86::XMM21 },
    2790             :   { 73U, X86::XMM22 },
    2791             :   { 74U, X86::XMM23 },
    2792             :   { 75U, X86::XMM24 },
    2793             :   { 76U, X86::XMM25 },
    2794             :   { 77U, X86::XMM26 },
    2795             :   { 78U, X86::XMM27 },
    2796             :   { 79U, X86::XMM28 },
    2797             :   { 80U, X86::XMM29 },
    2798             :   { 81U, X86::XMM30 },
    2799             :   { 82U, X86::XMM31 },
    2800             :   { 118U, X86::K0 },
    2801             :   { 119U, X86::K1 },
    2802             :   { 120U, X86::K2 },
    2803             :   { 121U, X86::K3 },
    2804             :   { 122U, X86::K4 },
    2805             :   { 123U, X86::K5 },
    2806             :   { 124U, X86::K6 },
    2807             :   { 125U, X86::K7 },
    2808             : };
    2809             : extern const unsigned X86EHFlavour0Dwarf2LSize = array_lengthof(X86EHFlavour0Dwarf2L);
    2810             : 
    2811             : extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour1Dwarf2L[] = {
    2812             :   { 0U, X86::EAX },
    2813             :   { 1U, X86::ECX },
    2814             :   { 2U, X86::EDX },
    2815             :   { 3U, X86::EBX },
    2816             :   { 4U, X86::EBP },
    2817             :   { 5U, X86::ESP },
    2818             :   { 6U, X86::ESI },
    2819             :   { 7U, X86::EDI },
    2820             :   { 8U, X86::EIP },
    2821             :   { 12U, X86::ST0 },
    2822             :   { 13U, X86::ST1 },
    2823             :   { 14U, X86::ST2 },
    2824             :   { 15U, X86::ST3 },
    2825             :   { 16U, X86::ST4 },
    2826             :   { 17U, X86::ST5 },
    2827             :   { 18U, X86::ST6 },
    2828             :   { 19U, X86::ST7 },
    2829             :   { 21U, X86::XMM0 },
    2830             :   { 22U, X86::XMM1 },
    2831             :   { 23U, X86::XMM2 },
    2832             :   { 24U, X86::XMM3 },
    2833             :   { 25U, X86::XMM4 },
    2834             :   { 26U, X86::XMM5 },
    2835             :   { 27U, X86::XMM6 },
    2836             :   { 28U, X86::XMM7 },
    2837             :   { 29U, X86::MM0 },
    2838             :   { 30U, X86::MM1 },
    2839             :   { 31U, X86::MM2 },
    2840             :   { 32U, X86::MM3 },
    2841             :   { 33U, X86::MM4 },
    2842             :   { 34U, X86::MM5 },
    2843             :   { 35U, X86::MM6 },
    2844             :   { 36U, X86::MM7 },
    2845             :   { 93U, X86::K0 },
    2846             :   { 94U, X86::K1 },
    2847             :   { 95U, X86::K2 },
    2848             :   { 96U, X86::K3 },
    2849             :   { 97U, X86::K4 },
    2850             :   { 98U, X86::K5 },
    2851             :   { 99U, X86::K6 },
    2852             :   { 100U, X86::K7 },
    2853             : };
    2854             : extern const unsigned X86EHFlavour1Dwarf2LSize = array_lengthof(X86EHFlavour1Dwarf2L);
    2855             : 
    2856             : extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour2Dwarf2L[] = {
    2857             :   { 0U, X86::EAX },
    2858             :   { 1U, X86::ECX },
    2859             :   { 2U, X86::EDX },
    2860             :   { 3U, X86::EBX },
    2861             :   { 4U, X86::ESP },
    2862             :   { 5U, X86::EBP },
    2863             :   { 6U, X86::ESI },
    2864             :   { 7U, X86::EDI },
    2865             :   { 8U, X86::EIP },
    2866             :   { 11U, X86::ST0 },
    2867             :   { 12U, X86::ST1 },
    2868             :   { 13U, X86::ST2 },
    2869             :   { 14U, X86::ST3 },
    2870             :   { 15U, X86::ST4 },
    2871             :   { 16U, X86::ST5 },
    2872             :   { 17U, X86::ST6 },
    2873             :   { 18U, X86::ST7 },
    2874             :   { 21U, X86::XMM0 },
    2875             :   { 22U, X86::XMM1 },
    2876             :   { 23U, X86::XMM2 },
    2877             :   { 24U, X86::XMM3 },
    2878             :   { 25U, X86::XMM4 },
    2879             :   { 26U, X86::XMM5 },
    2880             :   { 27U, X86::XMM6 },
    2881             :   { 28U, X86::XMM7 },
    2882             :   { 29U, X86::MM0 },
    2883             :   { 30U, X86::MM1 },
    2884             :   { 31U, X86::MM2 },
    2885             :   { 32U, X86::MM3 },
    2886             :   { 33U, X86::MM4 },
    2887             :   { 34U, X86::MM5 },
    2888             :   { 35U, X86::MM6 },
    2889             :   { 36U, X86::MM7 },
    2890             :   { 93U, X86::K0 },
    2891             :   { 94U, X86::K1 },
    2892             :   { 95U, X86::K2 },
    2893             :   { 96U, X86::K3 },
    2894             :   { 97U, X86::K4 },
    2895             :   { 98U, X86::K5 },
    2896             :   { 99U, X86::K6 },
    2897             :   { 100U, X86::K7 },
    2898             : };
    2899             : extern const unsigned X86EHFlavour2Dwarf2LSize = array_lengthof(X86EHFlavour2Dwarf2L);
    2900             : 
    2901             : extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour0L2Dwarf[] = {
    2902             :   { X86::EAX, -2U },
    2903             :   { X86::EBP, -2U },
    2904             :   { X86::EBX, -2U },
    2905             :   { X86::ECX, -2U },
    2906             :   { X86::EDI, -2U },
    2907             :   { X86::EDX, -2U },
    2908             :   { X86::EIP, -2U },
    2909             :   { X86::ESI, -2U },
    2910             :   { X86::ESP, -2U },
    2911             :   { X86::RAX, 0U },
    2912             :   { X86::RBP, 6U },
    2913             :   { X86::RBX, 3U },
    2914             :   { X86::RCX, 2U },
    2915             :   { X86::RDI, 5U },
    2916             :   { X86::RDX, 1U },
    2917             :   { X86::RIP, 16U },
    2918             :   { X86::RSI, 4U },
    2919             :   { X86::RSP, 7U },
    2920             :   { X86::K0, 118U },
    2921             :   { X86::K1, 119U },
    2922             :   { X86::K2, 120U },
    2923             :   { X86::K3, 121U },
    2924             :   { X86::K4, 122U },
    2925             :   { X86::K5, 123U },
    2926             :   { X86::K6, 124U },
    2927             :   { X86::K7, 125U },
    2928             :   { X86::MM0, 41U },
    2929             :   { X86::MM1, 42U },
    2930             :   { X86::MM2, 43U },
    2931             :   { X86::MM3, 44U },
    2932             :   { X86::MM4, 45U },
    2933             :   { X86::MM5, 46U },
    2934             :   { X86::MM6, 47U },
    2935             :   { X86::MM7, 48U },
    2936             :   { X86::R8, 8U },
    2937             :   { X86::R9, 9U },
    2938             :   { X86::R10, 10U },
    2939             :   { X86::R11, 11U },
    2940             :   { X86::R12, 12U },
    2941             :   { X86::R13, 13U },
    2942             :   { X86::R14, 14U },
    2943             :   { X86::R15, 15U },
    2944             :   { X86::ST0, 33U },
    2945             :   { X86::ST1, 34U },
    2946             :   { X86::ST2, 35U },
    2947             :   { X86::ST3, 36U },
    2948             :   { X86::ST4, 37U },
    2949             :   { X86::ST5, 38U },
    2950             :   { X86::ST6, 39U },
    2951             :   { X86::ST7, 40U },
    2952             :   { X86::XMM0, 17U },
    2953             :   { X86::XMM1, 18U },
    2954             :   { X86::XMM2, 19U },
    2955             :   { X86::XMM3, 20U },
    2956             :   { X86::XMM4, 21U },
    2957             :   { X86::XMM5, 22U },
    2958             :   { X86::XMM6, 23U },
    2959             :   { X86::XMM7, 24U },
    2960             :   { X86::XMM8, 25U },
    2961             :   { X86::XMM9, 26U },
    2962             :   { X86::XMM10, 27U },
    2963             :   { X86::XMM11, 28U },
    2964             :   { X86::XMM12, 29U },
    2965             :   { X86::XMM13, 30U },
    2966             :   { X86::XMM14, 31U },
    2967             :   { X86::XMM15, 32U },
    2968             :   { X86::XMM16, 67U },
    2969             :   { X86::XMM17, 68U },
    2970             :   { X86::XMM18, 69U },
    2971             :   { X86::XMM19, 70U },
    2972             :   { X86::XMM20, 71U },
    2973             :   { X86::XMM21, 72U },
    2974             :   { X86::XMM22, 73U },
    2975             :   { X86::XMM23, 74U },
    2976             :   { X86::XMM24, 75U },
    2977             :   { X86::XMM25, 76U },
    2978             :   { X86::XMM26, 77U },
    2979             :   { X86::XMM27, 78U },
    2980             :   { X86::XMM28, 79U },
    2981             :   { X86::XMM29, 80U },
    2982             :   { X86::XMM30, 81U },
    2983             :   { X86::XMM31, 82U },
    2984             :   { X86::YMM0, 17U },
    2985             :   { X86::YMM1, 18U },
    2986             :   { X86::YMM2, 19U },
    2987             :   { X86::YMM3, 20U },
    2988             :   { X86::YMM4, 21U },
    2989             :   { X86::YMM5, 22U },
    2990             :   { X86::YMM6, 23U },
    2991             :   { X86::YMM7, 24U },
    2992             :   { X86::YMM8, 25U },
    2993             :   { X86::YMM9, 26U },
    2994             :   { X86::YMM10, 27U },
    2995             :   { X86::YMM11, 28U },
    2996             :   { X86::YMM12, 29U },
    2997             :   { X86::YMM13, 30U },
    2998             :   { X86::YMM14, 31U },
    2999             :   { X86::YMM15, 32U },
    3000             :   { X86::YMM16, 67U },
    3001             :   { X86::YMM17, 68U },
    3002             :   { X86::YMM18, 69U },
    3003             :   { X86::YMM19, 70U },
    3004             :   { X86::YMM20, 71U },
    3005             :   { X86::YMM21, 72U },
    3006             :   { X86::YMM22, 73U },
    3007             :   { X86::YMM23, 74U },
    3008             :   { X86::YMM24, 75U },
    3009             :   { X86::YMM25, 76U },
    3010             :   { X86::YMM26, 77U },
    3011             :   { X86::YMM27, 78U },
    3012             :   { X86::YMM28, 79U },
    3013             :   { X86::YMM29, 80U },
    3014             :   { X86::YMM30, 81U },
    3015             :   { X86::YMM31, 82U },
    3016             :   { X86::ZMM0, 17U },
    3017             :   { X86::ZMM1, 18U },
    3018             :   { X86::ZMM2, 19U },
    3019             :   { X86::ZMM3, 20U },
    3020             :   { X86::ZMM4, 21U },
    3021             :   { X86::ZMM5, 22U },
    3022             :   { X86::ZMM6, 23U },
    3023             :   { X86::ZMM7, 24U },
    3024             :   { X86::ZMM8, 25U },
    3025             :   { X86::ZMM9, 26U },
    3026             :   { X86::ZMM10, 27U },
    3027             :   { X86::ZMM11, 28U },
    3028             :   { X86::ZMM12, 29U },
    3029             :   { X86::ZMM13, 30U },
    3030             :   { X86::ZMM14, 31U },
    3031             :   { X86::ZMM15, 32U },
    3032             :   { X86::ZMM16, 67U },
    3033             :   { X86::ZMM17, 68U },
    3034             :   { X86::ZMM18, 69U },
    3035             :   { X86::ZMM19, 70U },
    3036             :   { X86::ZMM20, 71U },
    3037             :   { X86::ZMM21, 72U },
    3038             :   { X86::ZMM22, 73U },
    3039             :   { X86::ZMM23, 74U },
    3040             :   { X86::ZMM24, 75U },
    3041             :   { X86::ZMM25, 76U },
    3042             :   { X86::ZMM26, 77U },
    3043             :   { X86::ZMM27, 78U },
    3044             :   { X86::ZMM28, 79U },
    3045             :   { X86::ZMM29, 80U },
    3046             :   { X86::ZMM30, 81U },
    3047             :   { X86::ZMM31, 82U },
    3048             : };
    3049             : extern const unsigned X86DwarfFlavour0L2DwarfSize = array_lengthof(X86DwarfFlavour0L2Dwarf);
    3050             : 
    3051             : extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour1L2Dwarf[] = {
    3052             :   { X86::EAX, 0U },
    3053             :   { X86::EBP, 4U },
    3054             :   { X86::EBX, 3U },
    3055             :   { X86::ECX, 1U },
    3056             :   { X86::EDI, 7U },
    3057             :   { X86::EDX, 2U },
    3058             :   { X86::EIP, 8U },
    3059             :   { X86::ESI, 6U },
    3060             :   { X86::ESP, 5U },
    3061             :   { X86::RAX, -2U },
    3062             :   { X86::RBP, -2U },
    3063             :   { X86::RBX, -2U },
    3064             :   { X86::RCX, -2U },
    3065             :   { X86::RDI, -2U },
    3066             :   { X86::RDX, -2U },
    3067             :   { X86::RIP, -2U },
    3068             :   { X86::RSI, -2U },
    3069             :   { X86::RSP, -2U },
    3070             :   { X86::K0, 93U },
    3071             :   { X86::K1, 94U },
    3072             :   { X86::K2, 95U },
    3073             :   { X86::K3, 96U },
    3074             :   { X86::K4, 97U },
    3075             :   { X86::K5, 98U },
    3076             :   { X86::K6, 99U },
    3077             :   { X86::K7, 100U },
    3078             :   { X86::MM0, 29U },
    3079             :   { X86::MM1, 30U },
    3080             :   { X86::MM2, 31U },
    3081             :   { X86::MM3, 32U },
    3082             :   { X86::MM4, 33U },
    3083             :   { X86::MM5, 34U },
    3084             :   { X86::MM6, 35U },
    3085             :   { X86::MM7, 36U },
    3086             :   { X86::R8, -2U },
    3087             :   { X86::R9, -2U },
    3088             :   { X86::R10, -2U },
    3089             :   { X86::R11, -2U },
    3090             :   { X86::R12, -2U },
    3091             :   { X86::R13, -2U },
    3092             :   { X86::R14, -2U },
    3093             :   { X86::R15, -2U },
    3094             :   { X86::ST0, 12U },
    3095             :   { X86::ST1, 13U },
    3096             :   { X86::ST2, 14U },
    3097             :   { X86::ST3, 15U },
    3098             :   { X86::ST4, 16U },
    3099             :   { X86::ST5, 17U },
    3100             :   { X86::ST6, 18U },
    3101             :   { X86::ST7, 19U },
    3102             :   { X86::XMM0, 21U },
    3103             :   { X86::XMM1, 22U },
    3104             :   { X86::XMM2, 23U },
    3105             :   { X86::XMM3, 24U },
    3106             :   { X86::XMM4, 25U },
    3107             :   { X86::XMM5, 26U },
    3108             :   { X86::XMM6, 27U },
    3109             :   { X86::XMM7, 28U },
    3110             :   { X86::XMM8, -2U },
    3111             :   { X86::XMM9, -2U },
    3112             :   { X86::XMM10, -2U },
    3113             :   { X86::XMM11, -2U },
    3114             :   { X86::XMM12, -2U },
    3115             :   { X86::XMM13, -2U },
    3116             :   { X86::XMM14, -2U },
    3117             :   { X86::XMM15, -2U },
    3118             :   { X86::XMM16, -2U },
    3119             :   { X86::XMM17, -2U },
    3120             :   { X86::XMM18, -2U },
    3121             :   { X86::XMM19, -2U },
    3122             :   { X86::XMM20, -2U },
    3123             :   { X86::XMM21, -2U },
    3124             :   { X86::XMM22, -2U },
    3125             :   { X86::XMM23, -2U },
    3126             :   { X86::XMM24, -2U },
    3127             :   { X86::XMM25, -2U },
    3128             :   { X86::XMM26, -2U },
    3129             :   { X86::XMM27, -2U },
    3130             :   { X86::XMM28, -2U },
    3131             :   { X86::XMM29, -2U },
    3132             :   { X86::XMM30, -2U },
    3133             :   { X86::XMM31, -2U },
    3134             :   { X86::YMM0, 21U },
    3135             :   { X86::YMM1, 22U },
    3136             :   { X86::YMM2, 23U },
    3137             :   { X86::YMM3, 24U },
    3138             :   { X86::YMM4, 25U },
    3139             :   { X86::YMM5, 26U },
    3140             :   { X86::YMM6, 27U },
    3141             :   { X86::YMM7, 28U },
    3142             :   { X86::YMM8, -2U },
    3143             :   { X86::YMM9, -2U },
    3144             :   { X86::YMM10, -2U },
    3145             :   { X86::YMM11, -2U },
    3146             :   { X86::YMM12, -2U },
    3147             :   { X86::YMM13, -2U },
    3148             :   { X86::YMM14, -2U },
    3149             :   { X86::YMM15, -2U },
    3150             :   { X86::YMM16, -2U },
    3151             :   { X86::YMM17, -2U },
    3152             :   { X86::YMM18, -2U },
    3153             :   { X86::YMM19, -2U },
    3154             :   { X86::YMM20, -2U },
    3155             :   { X86::YMM21, -2U },
    3156             :   { X86::YMM22, -2U },
    3157             :   { X86::YMM23, -2U },
    3158             :   { X86::YMM24, -2U },
    3159             :   { X86::YMM25, -2U },
    3160             :   { X86::YMM26, -2U },
    3161             :   { X86::YMM27, -2U },
    3162             :   { X86::YMM28, -2U },
    3163             :   { X86::YMM29, -2U },
    3164             :   { X86::YMM30, -2U },
    3165             :   { X86::YMM31, -2U },
    3166             :   { X86::ZMM0, 21U },
    3167             :   { X86::ZMM1, 22U },
    3168             :   { X86::ZMM2, 23U },
    3169             :   { X86::ZMM3, 24U },
    3170             :   { X86::ZMM4, 25U },
    3171             :   { X86::ZMM5, 26U },
    3172             :   { X86::ZMM6, 27U },
    3173             :   { X86::ZMM7, 28U },
    3174             :   { X86::ZMM8, -2U },
    3175             :   { X86::ZMM9, -2U },
    3176             :   { X86::ZMM10, -2U },
    3177             :   { X86::ZMM11, -2U },
    3178             :   { X86::ZMM12, -2U },
    3179             :   { X86::ZMM13, -2U },
    3180             :   { X86::ZMM14, -2U },
    3181             :   { X86::ZMM15, -2U },
    3182             :   { X86::ZMM16, -2U },
    3183             :   { X86::ZMM17, -2U },
    3184             :   { X86::ZMM18, -2U },
    3185             :   { X86::ZMM19, -2U },
    3186             :   { X86::ZMM20, -2U },
    3187             :   { X86::ZMM21, -2U },
    3188             :   { X86::ZMM22, -2U },
    3189             :   { X86::ZMM23, -2U },
    3190             :   { X86::ZMM24, -2U },
    3191             :   { X86::ZMM25, -2U },
    3192             :   { X86::ZMM26, -2U },
    3193             :   { X86::ZMM27, -2U },
    3194             :   { X86::ZMM28, -2U },
    3195             :   { X86::ZMM29, -2U },
    3196             :   { X86::ZMM30, -2U },
    3197             :   { X86::ZMM31, -2U },
    3198             : };
    3199             : extern const unsigned X86DwarfFlavour1L2DwarfSize = array_lengthof(X86DwarfFlavour1L2Dwarf);
    3200             : 
    3201             : extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour2L2Dwarf[] = {
    3202             :   { X86::EAX, 0U },
    3203             :   { X86::EBP, 5U },
    3204             :   { X86::EBX, 3U },
    3205             :   { X86::ECX, 1U },
    3206             :   { X86::EDI, 7U },
    3207             :   { X86::EDX, 2U },
    3208             :   { X86::EIP, 8U },
    3209             :   { X86::ESI, 6U },
    3210             :   { X86::ESP, 4U },
    3211             :   { X86::RAX, -2U },
    3212             :   { X86::RBP, -2U },
    3213             :   { X86::RBX, -2U },
    3214             :   { X86::RCX, -2U },
    3215             :   { X86::RDI, -2U },
    3216             :   { X86::RDX, -2U },
    3217             :   { X86::RIP, -2U },
    3218             :   { X86::RSI, -2U },
    3219             :   { X86::RSP, -2U },
    3220             :   { X86::K0, 93U },
    3221             :   { X86::K1, 94U },
    3222             :   { X86::K2, 95U },
    3223             :   { X86::K3, 96U },
    3224             :   { X86::K4, 97U },
    3225             :   { X86::K5, 98U },
    3226             :   { X86::K6, 99U },
    3227             :   { X86::K7, 100U },
    3228             :   { X86::MM0, 29U },
    3229             :   { X86::MM1, 30U },
    3230             :   { X86::MM2, 31U },
    3231             :   { X86::MM3, 32U },
    3232             :   { X86::MM4, 33U },
    3233             :   { X86::MM5, 34U },
    3234             :   { X86::MM6, 35U },
    3235             :   { X86::MM7, 36U },
    3236             :   { X86::R8, -2U },
    3237             :   { X86::R9, -2U },
    3238             :   { X86::R10, -2U },
    3239             :   { X86::R11, -2U },
    3240             :   { X86::R12, -2U },
    3241             :   { X86::R13, -2U },
    3242             :   { X86::R14, -2U },
    3243             :   { X86::R15, -2U },
    3244             :   { X86::ST0, 11U },
    3245             :   { X86::ST1, 12U },
    3246             :   { X86::ST2, 13U },
    3247             :   { X86::ST3, 14U },
    3248             :   { X86::ST4, 15U },
    3249             :   { X86::ST5, 16U },
    3250             :   { X86::ST6, 17U },
    3251             :   { X86::ST7, 18U },
    3252             :   { X86::XMM0, 21U },
    3253             :   { X86::XMM1, 22U },
    3254             :   { X86::XMM2, 23U },
    3255             :   { X86::XMM3, 24U },
    3256             :   { X86::XMM4, 25U },
    3257             :   { X86::XMM5, 26U },
    3258             :   { X86::XMM6, 27U },
    3259             :   { X86::XMM7, 28U },
    3260             :   { X86::XMM8, -2U },
    3261             :   { X86::XMM9, -2U },
    3262             :   { X86::XMM10, -2U },
    3263             :   { X86::XMM11, -2U },
    3264             :   { X86::XMM12, -2U },
    3265             :   { X86::XMM13, -2U },
    3266             :   { X86::XMM14, -2U },
    3267             :   { X86::XMM15, -2U },
    3268             :   { X86::XMM16, -2U },
    3269             :   { X86::XMM17, -2U },
    3270             :   { X86::XMM18, -2U },
    3271             :   { X86::XMM19, -2U },
    3272             :   { X86::XMM20, -2U },
    3273             :   { X86::XMM21, -2U },
    3274             :   { X86::XMM22, -2U },
    3275             :   { X86::XMM23, -2U },
    3276             :   { X86::XMM24, -2U },
    3277             :   { X86::XMM25, -2U },
    3278             :   { X86::XMM26, -2U },
    3279             :   { X86::XMM27, -2U },
    3280             :   { X86::XMM28, -2U },
    3281             :   { X86::XMM29, -2U },
    3282             :   { X86::XMM30, -2U },
    3283             :   { X86::XMM31, -2U },
    3284             :   { X86::YMM0, 21U },
    3285             :   { X86::YMM1, 22U },
    3286             :   { X86::YMM2, 23U },
    3287             :   { X86::YMM3, 24U },
    3288             :   { X86::YMM4, 25U },
    3289             :   { X86::YMM5, 26U },
    3290             :   { X86::YMM6, 27U },
    3291             :   { X86::YMM7, 28U },
    3292             :   { X86::YMM8, -2U },
    3293             :   { X86::YMM9, -2U },
    3294             :   { X86::YMM10, -2U },
    3295             :   { X86::YMM11, -2U },
    3296             :   { X86::YMM12, -2U },
    3297             :   { X86::YMM13, -2U },
    3298             :   { X86::YMM14, -2U },
    3299             :   { X86::YMM15, -2U },
    3300             :   { X86::YMM16, -2U },
    3301             :   { X86::YMM17, -2U },
    3302             :   { X86::YMM18, -2U },
    3303             :   { X86::YMM19, -2U },
    3304             :   { X86::YMM20, -2U },
    3305             :   { X86::YMM21, -2U },
    3306             :   { X86::YMM22, -2U },
    3307             :   { X86::YMM23, -2U },
    3308             :   { X86::YMM24, -2U },
    3309             :   { X86::YMM25, -2U },
    3310             :   { X86::YMM26, -2U },
    3311             :   { X86::YMM27, -2U },
    3312             :   { X86::YMM28, -2U },
    3313             :   { X86::YMM29, -2U },
    3314             :   { X86::YMM30, -2U },
    3315             :   { X86::YMM31, -2U },
    3316             :   { X86::ZMM0, 21U },
    3317             :   { X86::ZMM1, 22U },
    3318             :   { X86::ZMM2, 23U },
    3319             :   { X86::ZMM3, 24U },
    3320             :   { X86::ZMM4, 25U },
    3321             :   { X86::ZMM5, 26U },
    3322             :   { X86::ZMM6, 27U },
    3323             :   { X86::ZMM7, 28U },
    3324             :   { X86::ZMM8, -2U },
    3325             :   { X86::ZMM9, -2U },
    3326             :   { X86::ZMM10, -2U },
    3327             :   { X86::ZMM11, -2U },
    3328             :   { X86::ZMM12, -2U },
    3329             :   { X86::ZMM13, -2U },
    3330             :   { X86::ZMM14, -2U },
    3331             :   { X86::ZMM15, -2U },
    3332             :   { X86::ZMM16, -2U },
    3333             :   { X86::ZMM17, -2U },
    3334             :   { X86::ZMM18, -2U },
    3335             :   { X86::ZMM19, -2U },
    3336             :   { X86::ZMM20, -2U },
    3337             :   { X86::ZMM21, -2U },
    3338             :   { X86::ZMM22, -2U },
    3339             :   { X86::ZMM23, -2U },
    3340             :   { X86::ZMM24, -2U },
    3341             :   { X86::ZMM25, -2U },
    3342             :   { X86::ZMM26, -2U },
    3343             :   { X86::ZMM27, -2U },
    3344             :   { X86::ZMM28, -2U },
    3345             :   { X86::ZMM29, -2U },
    3346             :   { X86::ZMM30, -2U },
    3347             :   { X86::ZMM31, -2U },
    3348             : };
    3349             : extern const unsigned X86DwarfFlavour2L2DwarfSize = array_lengthof(X86DwarfFlavour2L2Dwarf);
    3350             : 
    3351             : extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour0L2Dwarf[] = {
    3352             :   { X86::EAX, -2U },
    3353             :   { X86::EBP, -2U },
    3354             :   { X86::EBX, -2U },
    3355             :   { X86::ECX, -2U },
    3356             :   { X86::EDI, -2U },
    3357             :   { X86::EDX, -2U },
    3358             :   { X86::EIP, -2U },
    3359             :   { X86::ESI, -2U },
    3360             :   { X86::ESP, -2U },
    3361             :   { X86::RAX, 0U },
    3362             :   { X86::RBP, 6U },
    3363             :   { X86::RBX, 3U },
    3364             :   { X86::RCX, 2U },
    3365             :   { X86::RDI, 5U },
    3366             :   { X86::RDX, 1U },
    3367             :   { X86::RIP, 16U },
    3368             :   { X86::RSI, 4U },
    3369             :   { X86::RSP, 7U },
    3370             :   { X86::K0, 118U },
    3371             :   { X86::K1, 119U },
    3372             :   { X86::K2, 120U },
    3373             :   { X86::K3, 121U },
    3374             :   { X86::K4, 122U },
    3375             :   { X86::K5, 123U },
    3376             :   { X86::K6, 124U },
    3377             :   { X86::K7, 125U },
    3378             :   { X86::MM0, 41U },
    3379             :   { X86::MM1, 42U },
    3380             :   { X86::MM2, 43U },
    3381             :   { X86::MM3, 44U },
    3382             :   { X86::MM4, 45U },
    3383             :   { X86::MM5, 46U },
    3384             :   { X86::MM6, 47U },
    3385             :   { X86::MM7, 48U },
    3386             :   { X86::R8, 8U },
    3387             :   { X86::R9, 9U },
    3388             :   { X86::R10, 10U },
    3389             :   { X86::R11, 11U },
    3390             :   { X86::R12, 12U },
    3391             :   { X86::R13, 13U },
    3392             :   { X86::R14, 14U },
    3393             :   { X86::R15, 15U },
    3394             :   { X86::ST0, 33U },
    3395             :   { X86::ST1, 34U },
    3396             :   { X86::ST2, 35U },
    3397             :   { X86::ST3, 36U },
    3398             :   { X86::ST4, 37U },
    3399             :   { X86::ST5, 38U },
    3400             :   { X86::ST6, 39U },
    3401             :   { X86::ST7, 40U },
    3402             :   { X86::XMM0, 17U },
    3403             :   { X86::XMM1, 18U },
    3404             :   { X86::XMM2, 19U },
    3405             :   { X86::XMM3, 20U },
    3406             :   { X86::XMM4, 21U },
    3407             :   { X86::XMM5, 22U },
    3408             :   { X86::XMM6, 23U },
    3409             :   { X86::XMM7, 24U },
    3410             :   { X86::XMM8, 25U },
    3411             :   { X86::XMM9, 26U },
    3412             :   { X86::XMM10, 27U },
    3413             :   { X86::XMM11, 28U },
    3414             :   { X86::XMM12, 29U },
    3415             :   { X86::XMM13, 30U },
    3416             :   { X86::XMM14, 31U },
    3417             :   { X86::XMM15, 32U },
    3418             :   { X86::XMM16, 67U },
    3419             :   { X86::XMM17, 68U },
    3420             :   { X86::XMM18, 69U },
    3421             :   { X86::XMM19, 70U },
    3422             :   { X86::XMM20, 71U },
    3423             :   { X86::XMM21, 72U },
    3424             :   { X86::XMM22, 73U },
    3425             :   { X86::XMM23, 74U },
    3426             :   { X86::XMM24, 75U },
    3427             :   { X86::XMM25, 76U },
    3428             :   { X86::XMM26, 77U },
    3429             :   { X86::XMM27, 78U },
    3430             :   { X86::XMM28, 79U },
    3431             :   { X86::XMM29, 80U },
    3432             :   { X86::XMM30, 81U },
    3433             :   { X86::XMM31, 82U },
    3434             :   { X86::YMM0, 17U },
    3435             :   { X86::YMM1, 18U },
    3436             :   { X86::YMM2, 19U },
    3437             :   { X86::YMM3, 20U },
    3438             :   { X86::YMM4, 21U },
    3439             :   { X86::YMM5, 22U },
    3440             :   { X86::YMM6, 23U },
    3441             :   { X86::YMM7, 24U },
    3442             :   { X86::YMM8, 25U },
    3443             :   { X86::YMM9, 26U },
    3444             :   { X86::YMM10, 27U },
    3445             :   { X86::YMM11, 28U },
    3446             :   { X86::YMM12, 29U },
    3447             :   { X86::YMM13, 30U },
    3448             :   { X86::YMM14, 31U },
    3449             :   { X86::YMM15, 32U },
    3450             :   { X86::YMM16, 67U },
    3451             :   { X86::YMM17, 68U },
    3452             :   { X86::YMM18, 69U },
    3453             :   { X86::YMM19, 70U },
    3454             :   { X86::YMM20, 71U },
    3455             :   { X86::YMM21, 72U },
    3456             :   { X86::YMM22, 73U },
    3457             :   { X86::YMM23, 74U },
    3458             :   { X86::YMM24, 75U },
    3459             :   { X86::YMM25, 76U },
    3460             :   { X86::YMM26, 77U },
    3461             :   { X86::YMM27, 78U },
    3462             :   { X86::YMM28, 79U },
    3463             :   { X86::YMM29, 80U },
    3464             :   { X86::YMM30, 81U },
    3465             :   { X86::YMM31, 82U },
    3466             :   { X86::ZMM0, 17U },
    3467             :   { X86::ZMM1, 18U },
    3468             :   { X86::ZMM2, 19U },
    3469             :   { X86::ZMM3, 20U },
    3470             :   { X86::ZMM4, 21U },
    3471             :   { X86::ZMM5, 22U },
    3472             :   { X86::ZMM6, 23U },
    3473             :   { X86::ZMM7, 24U },
    3474             :   { X86::ZMM8, 25U },
    3475             :   { X86::ZMM9, 26U },
    3476             :   { X86::ZMM10, 27U },
    3477             :   { X86::ZMM11, 28U },
    3478             :   { X86::ZMM12, 29U },
    3479             :   { X86::ZMM13, 30U },
    3480             :   { X86::ZMM14, 31U },
    3481             :   { X86::ZMM15, 32U },
    3482             :   { X86::ZMM16, 67U },
    3483             :   { X86::ZMM17, 68U },
    3484             :   { X86::ZMM18, 69U },
    3485             :   { X86::ZMM19, 70U },
    3486             :   { X86::ZMM20, 71U },
    3487             :   { X86::ZMM21, 72U },
    3488             :   { X86::ZMM22, 73U },
    3489             :   { X86::ZMM23, 74U },
    3490             :   { X86::ZMM24, 75U },
    3491             :   { X86::ZMM25, 76U },
    3492             :   { X86::ZMM26, 77U },
    3493             :   { X86::ZMM27, 78U },
    3494             :   { X86::ZMM28, 79U },
    3495             :   { X86::ZMM29, 80U },
    3496             :   { X86::ZMM30, 81U },
    3497             :   { X86::ZMM31, 82U },
    3498             : };
    3499             : extern const unsigned X86EHFlavour0L2DwarfSize = array_lengthof(X86EHFlavour0L2Dwarf);
    3500             : 
    3501             : extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour1L2Dwarf[] = {
    3502             :   { X86::EAX, 0U },
    3503             :   { X86::EBP, 4U },
    3504             :   { X86::EBX, 3U },
    3505             :   { X86::ECX, 1U },
    3506             :   { X86::EDI, 7U },
    3507             :   { X86::EDX, 2U },
    3508             :   { X86::EIP, 8U },
    3509             :   { X86::ESI, 6U },
    3510             :   { X86::ESP, 5U },
    3511             :   { X86::RAX, -2U },
    3512             :   { X86::RBP, -2U },
    3513             :   { X86::RBX, -2U },
    3514             :   { X86::RCX, -2U },
    3515             :   { X86::RDI, -2U },
    3516             :   { X86::RDX, -2U },
    3517             :   { X86::RIP, -2U },
    3518             :   { X86::RSI, -2U },
    3519             :   { X86::RSP, -2U },
    3520             :   { X86::K0, 93U },
    3521             :   { X86::K1, 94U },
    3522             :   { X86::K2, 95U },
    3523             :   { X86::K3, 96U },
    3524             :   { X86::K4, 97U },
    3525             :   { X86::K5, 98U },
    3526             :   { X86::K6, 99U },
    3527             :   { X86::K7, 100U },
    3528             :   { X86::MM0, 29U },
    3529             :   { X86::MM1, 30U },
    3530             :   { X86::MM2, 31U },
    3531             :   { X86::MM3, 32U },
    3532             :   { X86::MM4, 33U },
    3533             :   { X86::MM5, 34U },
    3534             :   { X86::MM6, 35U },
    3535             :   { X86::MM7, 36U },
    3536             :   { X86::R8, -2U },
    3537             :   { X86::R9, -2U },
    3538             :   { X86::R10, -2U },
    3539             :   { X86::R11, -2U },
    3540             :   { X86::R12, -2U },
    3541             :   { X86::R13, -2U },
    3542             :   { X86::R14, -2U },
    3543             :   { X86::R15, -2U },
    3544             :   { X86::ST0, 12U },
    3545             :   { X86::ST1, 13U },
    3546             :   { X86::ST2, 14U },
    3547             :   { X86::ST3, 15U },
    3548             :   { X86::ST4, 16U },
    3549             :   { X86::ST5, 17U },
    3550             :   { X86::ST6, 18U },
    3551             :   { X86::ST7, 19U },
    3552             :   { X86::XMM0, 21U },
    3553             :   { X86::XMM1, 22U },
    3554             :   { X86::XMM2, 23U },
    3555             :   { X86::XMM3, 24U },
    3556             :   { X86::XMM4, 25U },
    3557             :   { X86::XMM5, 26U },
    3558             :   { X86::XMM6, 27U },
    3559             :   { X86::XMM7, 28U },
    3560             :   { X86::XMM8, -2U },
    3561             :   { X86::XMM9, -2U },
    3562             :   { X86::XMM10, -2U },
    3563             :   { X86::XMM11, -2U },
    3564             :   { X86::XMM12, -2U },
    3565             :   { X86::XMM13, -2U },
    3566             :   { X86::XMM14, -2U },
    3567             :   { X86::XMM15, -2U },
    3568             :   { X86::XMM16, -2U },
    3569             :   { X86::XMM17, -2U },
    3570             :   { X86::XMM18, -2U },
    3571             :   { X86::XMM19, -2U },
    3572             :   { X86::XMM20, -2U },
    3573             :   { X86::XMM21, -2U },
    3574             :   { X86::XMM22, -2U },
    3575             :   { X86::XMM23, -2U },
    3576             :   { X86::XMM24, -2U },
    3577             :   { X86::XMM25, -2U },
    3578             :   { X86::XMM26, -2U },
    3579             :   { X86::XMM27, -2U },
    3580             :   { X86::XMM28, -2U },
    3581             :   { X86::XMM29, -2U },
    3582             :   { X86::XMM30, -2U },
    3583             :   { X86::XMM31, -2U },
    3584             :   { X86::YMM0, 21U },
    3585             :   { X86::YMM1, 22U },
    3586             :   { X86::YMM2, 23U },
    3587             :   { X86::YMM3, 24U },
    3588             :   { X86::YMM4, 25U },
    3589             :   { X86::YMM5, 26U },
    3590             :   { X86::YMM6, 27U },
    3591             :   { X86::YMM7, 28U },
    3592             :   { X86::YMM8, -2U },
    3593             :   { X86::YMM9, -2U },
    3594             :   { X86::YMM10, -2U },
    3595             :   { X86::YMM11, -2U },
    3596             :   { X86::YMM12, -2U },
    3597             :   { X86::YMM13, -2U },
    3598             :   { X86::YMM14, -2U },
    3599             :   { X86::YMM15, -2U },
    3600             :   { X86::YMM16, -2U },
    3601             :   { X86::YMM17, -2U },
    3602             :   { X86::YMM18, -2U },
    3603             :   { X86::YMM19, -2U },
    3604             :   { X86::YMM20, -2U },
    3605             :   { X86::YMM21, -2U },
    3606             :   { X86::YMM22, -2U },
    3607             :   { X86::YMM23, -2U },
    3608             :   { X86::YMM24, -2U },
    3609             :   { X86::YMM25, -2U },
    3610             :   { X86::YMM26, -2U },
    3611             :   { X86::YMM27, -2U },
    3612             :   { X86::YMM28, -2U },
    3613             :   { X86::YMM29, -2U },
    3614             :   { X86::YMM30, -2U },
    3615             :   { X86::YMM31, -2U },
    3616             :   { X86::ZMM0, 21U },
    3617             :   { X86::ZMM1, 22U },
    3618             :   { X86::ZMM2, 23U },
    3619             :   { X86::ZMM3, 24U },
    3620             :   { X86::ZMM4, 25U },
    3621             :   { X86::ZMM5, 26U },
    3622             :   { X86::ZMM6, 27U },
    3623             :   { X86::ZMM7, 28U },
    3624             :   { X86::ZMM8, -2U },
    3625             :   { X86::ZMM9, -2U },
    3626             :   { X86::ZMM10, -2U },
    3627             :   { X86::ZMM11, -2U },
    3628             :   { X86::ZMM12, -2U },
    3629             :   { X86::ZMM13, -2U },
    3630             :   { X86::ZMM14, -2U },
    3631             :   { X86::ZMM15, -2U },
    3632             :   { X86::ZMM16, -2U },
    3633             :   { X86::ZMM17, -2U },
    3634             :   { X86::ZMM18, -2U },
    3635             :   { X86::ZMM19, -2U },
    3636             :   { X86::ZMM20, -2U },
    3637             :   { X86::ZMM21, -2U },
    3638             :   { X86::ZMM22, -2U },
    3639             :   { X86::ZMM23, -2U },
    3640             :   { X86::ZMM24, -2U },
    3641             :   { X86::ZMM25, -2U },
    3642             :   { X86::ZMM26, -2U },
    3643             :   { X86::ZMM27, -2U },
    3644             :   { X86::ZMM28, -2U },
    3645             :   { X86::ZMM29, -2U },
    3646             :   { X86::ZMM30, -2U },
    3647             :   { X86::ZMM31, -2U },
    3648             : };
    3649             : extern const unsigned X86EHFlavour1L2DwarfSize = array_lengthof(X86EHFlavour1L2Dwarf);
    3650             : 
    3651             : extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour2L2Dwarf[] = {
    3652             :   { X86::EAX, 0U },
    3653             :   { X86::EBP, 5U },
    3654             :   { X86::EBX, 3U },
    3655             :   { X86::ECX, 1U },
    3656             :   { X86::EDI, 7U },
    3657             :   { X86::EDX, 2U },
    3658             :   { X86::EIP, 8U },
    3659             :   { X86::ESI, 6U },
    3660             :   { X86::ESP, 4U },
    3661             :   { X86::RAX, -2U },
    3662             :   { X86::RBP, -2U },
    3663             :   { X86::RBX, -2U },
    3664             :   { X86::RCX, -2U },
    3665             :   { X86::RDI, -2U },
    3666             :   { X86::RDX, -2U },
    3667             :   { X86::RIP, -2U },
    3668             :   { X86::RSI, -2U },
    3669             :   { X86::RSP, -2U },
    3670             :   { X86::K0, 93U },
    3671             :   { X86::K1, 94U },
    3672             :   { X86::K2, 95U },
    3673             :   { X86::K3, 96U },
    3674             :   { X86::K4, 97U },
    3675             :   { X86::K5, 98U },
    3676             :   { X86::K6, 99U },
    3677             :   { X86::K7, 100U },
    3678             :   { X86::MM0, 29U },
    3679             :   { X86::MM1, 30U },
    3680             :   { X86::MM2, 31U },
    3681             :   { X86::MM3, 32U },
    3682             :   { X86::MM4, 33U },
    3683             :   { X86::MM5, 34U },
    3684             :   { X86::MM6, 35U },
    3685             :   { X86::MM7, 36U },
    3686             :   { X86::R8, -2U },
    3687             :   { X86::R9, -2U },
    3688             :   { X86::R10, -2U },
    3689             :   { X86::R11, -2U },
    3690             :   { X86::R12, -2U },
    3691             :   { X86::R13, -2U },
    3692             :   { X86::R14, -2U },
    3693             :   { X86::R15, -2U },
    3694             :   { X86::ST0, 11U },
    3695             :   { X86::ST1, 12U },
    3696             :   { X86::ST2, 13U },
    3697             :   { X86::ST3, 14U },
    3698             :   { X86::ST4, 15U },
    3699             :   { X86::ST5, 16U },
    3700             :   { X86::ST6, 17U },
    3701             :   { X86::ST7, 18U },
    3702             :   { X86::XMM0, 21U },
    3703             :   { X86::XMM1, 22U },
    3704             :   { X86::XMM2, 23U },
    3705             :   { X86::XMM3, 24U },
    3706             :   { X86::XMM4, 25U },
    3707             :   { X86::XMM5, 26U },
    3708             :   { X86::XMM6, 27U },
    3709             :   { X86::XMM7, 28U },
    3710             :   { X86::XMM8, -2U },
    3711             :   { X86::XMM9, -2U },
    3712             :   { X86::XMM10, -2U },
    3713             :   { X86::XMM11, -2U },
    3714             :   { X86::XMM12, -2U },
    3715             :   { X86::XMM13, -2U },
    3716             :   { X86::XMM14, -2U },
    3717             :   { X86::XMM15, -2U },
    3718             :   { X86::XMM16, -2U },
    3719             :   { X86::XMM17, -2U },
    3720             :   { X86::XMM18, -2U },
    3721             :   { X86::XMM19, -2U },
    3722             :   { X86::XMM20, -2U },
    3723             :   { X86::XMM21, -2U },
    3724             :   { X86::XMM22, -2U },
    3725             :   { X86::XMM23, -2U },
    3726             :   { X86::XMM24, -2U },
    3727             :   { X86::XMM25, -2U },
    3728             :   { X86::XMM26, -2U },
    3729             :   { X86::XMM27, -2U },
    3730             :   { X86::XMM28, -2U },
    3731             :   { X86::XMM29, -2U },
    3732             :   { X86::XMM30, -2U },
    3733             :   { X86::XMM31, -2U },
    3734             :   { X86::YMM0, 21U },
    3735             :   { X86::YMM1, 22U },
    3736             :   { X86::YMM2, 23U },
    3737             :   { X86::YMM3, 24U },
    3738             :   { X86::YMM4, 25U },
    3739             :   { X86::YMM5, 26U },
    3740             :   { X86::YMM6, 27U },
    3741             :   { X86::YMM7, 28U },
    3742             :   { X86::YMM8, -2U },
    3743             :   { X86::YMM9, -2U },
    3744             :   { X86::YMM10, -2U },
    3745             :   { X86::YMM11, -2U },
    3746             :   { X86::YMM12, -2U },
    3747             :   { X86::YMM13, -2U },
    3748             :   { X86::YMM14, -2U },
    3749             :   { X86::YMM15, -2U },
    3750             :   { X86::YMM16, -2U },
    3751             :   { X86::YMM17, -2U },
    3752             :   { X86::YMM18, -2U },
    3753             :   { X86::YMM19, -2U },
    3754             :   { X86::YMM20, -2U },
    3755             :   { X86::YMM21, -2U },
    3756             :   { X86::YMM22, -2U },
    3757             :   { X86::YMM23, -2U },
    3758             :   { X86::YMM24, -2U },
    3759             :   { X86::YMM25, -2U },
    3760             :   { X86::YMM26, -2U },
    3761             :   { X86::YMM27, -2U },
    3762             :   { X86::YMM28, -2U },
    3763             :   { X86::YMM29, -2U },
    3764             :   { X86::YMM30, -2U },
    3765             :   { X86::YMM31, -2U },
    3766             :   { X86::ZMM0, 21U },
    3767             :   { X86::ZMM1, 22U },
    3768             :   { X86::ZMM2, 23U },
    3769             :   { X86::ZMM3, 24U },
    3770             :   { X86::ZMM4, 25U },
    3771             :   { X86::ZMM5, 26U },
    3772             :   { X86::ZMM6, 27U },
    3773             :   { X86::ZMM7, 28U },
    3774             :   { X86::ZMM8, -2U },
    3775             :   { X86::ZMM9, -2U },
    3776             :   { X86::ZMM10, -2U },
    3777             :   { X86::ZMM11, -2U },
    3778             :   { X86::ZMM12, -2U },
    3779             :   { X86::ZMM13, -2U },
    3780             :   { X86::ZMM14, -2U },
    3781             :   { X86::ZMM15, -2U },
    3782             :   { X86::ZMM16, -2U },
    3783             :   { X86::ZMM17, -2U },
    3784             :   { X86::ZMM18, -2U },
    3785             :   { X86::ZMM19, -2U },
    3786             :   { X86::ZMM20, -2U },
    3787             :   { X86::ZMM21, -2U },
    3788             :   { X86::ZMM22, -2U },
    3789             :   { X86::ZMM23, -2U },
    3790             :   { X86::ZMM24, -2U },
    3791             :   { X86::ZMM25, -2U },
    3792             :   { X86::ZMM26, -2U },
    3793             :   { X86::ZMM27, -2U },
    3794             :   { X86::ZMM28, -2U },
    3795             :   { X86::ZMM29, -2U },
    3796             :   { X86::ZMM30, -2U },
    3797             :   { X86::ZMM31, -2U },
    3798             : };
    3799             : extern const unsigned X86EHFlavour2L2DwarfSize = array_lengthof(X86EHFlavour2L2Dwarf);
    3800             : 
    3801             : extern const uint16_t X86RegEncodingTable[] = {
    3802             :   0,
    3803             :   4,
    3804             :   0,
    3805             :   0,
    3806             :   7,
    3807             :   3,
    3808             :   5,
    3809             :   65535,
    3810             :   5,
    3811             :   3,
    3812             :   5,
    3813             :   1,
    3814             :   1,
    3815             :   1,
    3816             :   0,
    3817             :   6,
    3818             :   7,
    3819             :   65535,
    3820             :   7,
    3821             :   2,
    3822             :   3,
    3823             :   2,
    3824             :   0,
    3825             :   5,
    3826             :   3,
    3827             :   1,
    3828             :   7,
    3829             :   2,
    3830             :   0,
    3831             :   0,
    3832             :   4,
    3833             :   0,
    3834             :   6,
    3835             :   4,
    3836             :   0,
    3837             :   4,
    3838             :   5,
    3839             :   65535,
    3840             :   65535,
    3841             :   65535,
    3842             :   65535,
    3843             :   65535,
    3844             :   65535,
    3845             :   65535,
    3846             :   65535,
    3847             :   65535,
    3848             :   0,
    3849             :   0,
    3850             :   5,
    3851             :   3,
    3852             :   1,
    3853             :   7,
    3854             :   2,
    3855             :   0,
    3856             :   4,
    3857             :   6,
    3858             :   4,
    3859             :   6,
    3860             :   65535,
    3861             :   6,
    3862             :   4,
    3863             :   65535,
    3864             :   4,
    3865             :   2,
    3866             :   0,
    3867             :   0,
    3868             :   1,
    3869             :   2,
    3870             :   3,
    3871             :   0,
    3872             :   1,
    3873             :   2,
    3874             :   3,
    3875             :   4,
    3876             :   5,
    3877             :   6,
    3878             :   7,
    3879             :   8,
    3880             :   9,
    3881             :   10,
    3882             :   11,
    3883             :   12,
    3884             :   13,
    3885             :   14,
    3886             :   15,
    3887             :   0,
    3888             :   1,
    3889             :   2,
    3890             :   3,
    3891             :   4,
    3892             :   5,
    3893             :   6,
    3894             :   7,
    3895             :   8,
    3896             :   9,
    3897             :   10,
    3898             :   11,
    3899             :   12,
    3900             :   13,
    3901             :   14,
    3902             :   15,
    3903             :   0,
    3904             :   0,
    3905             :   0,
    3906             :   0,
    3907             :   0,
    3908             :   0,
    3909             :   0,
    3910             :   0,
    3911             :   0,
    3912             :   1,
    3913             :   2,
    3914             :   3,
    3915             :   4,
    3916             :   5,
    3917             :   6,
    3918             :   7,
    3919             :   0,
    3920             :   1,
    3921             :   2,
    3922             :   3,
    3923             :   4,
    3924             :   5,
    3925             :   6,
    3926             :   7,
    3927             :   8,
    3928             :   9,
    3929             :   10,
    3930             :   11,
    3931             :   12,
    3932             :   13,
    3933             :   14,
    3934             :   15,
    3935             :   0,
    3936             :   1,
    3937             :   2,
    3938             :   3,
    3939             :   4,
    3940             :   5,
    3941             :   6,
    3942             :   7,
    3943             :   0,
    3944             :   1,
    3945             :   2,
    3946             :   3,
    3947             :   4,
    3948             :   5,
    3949             :   6,
    3950             :   7,
    3951             :   8,
    3952             :   9,
    3953             :   10,
    3954             :   11,
    3955             :   12,
    3956             :   13,
    3957             :   14,
    3958             :   15,
    3959             :   16,
    3960             :   17,
    3961             :   18,
    3962             :   19,
    3963             :   20,
    3964             :   21,
    3965             :   22,
    3966             :   23,
    3967             :   24,
    3968             :   25,
    3969             :   26,
    3970             :   27,
    3971             :   28,
    3972             :   29,
    3973             :   30,
    3974             :   31,
    3975             :   0,
    3976             :   1,
    3977             :   2,
    3978             :   3,
    3979             :   4,
    3980             :   5,
    3981             :   6,
    3982             :   7,
    3983             :   8,
    3984             :   9,
    3985             :   10,
    3986             :   11,
    3987             :   12,
    3988             :   13,
    3989             :   14,
    3990             :   15,
    3991             :   16,
    3992             :   17,
    3993             :   18,
    3994             :   19,
    3995             :   20,
    3996             :   21,
    3997             :   22,
    3998             :   23,
    3999             :   24,
    4000             :   25,
    4001             :   26,
    4002             :   27,
    4003             :   28,
    4004             :   29,
    4005             :   30,
    4006             :   31,
    4007             :   0,
    4008             :   1,
    4009             :   2,
    4010             :   3,
    4011             :   4,
    4012             :   5,
    4013             :   6,
    4014             :   7,
    4015             :   8,
    4016             :   9,
    4017             :   10,
    4018             :   11,
    4019             :   12,
    4020             :   13,
    4021             :   14,
    4022             :   15,
    4023             :   16,
    4024             :   17,
    4025             :   18,
    4026             :   19,
    4027             :   20,
    4028             :   21,
    4029             :   22,
    4030             :   23,
    4031             :   24,
    4032             :   25,
    4033             :   26,
    4034             :   27,
    4035             :   28,
    4036             :   29,
    4037             :   30,
    4038             :   31,
    4039             :   8,
    4040             :   9,
    4041             :   10,
    4042             :   11,
    4043             :   12,
    4044             :   13,
    4045             :   14,
    4046             :   15,
    4047             :   65535,
    4048             :   65535,
    4049             :   65535,
    4050             :   65535,
    4051             :   65535,
    4052             :   65535,
    4053             :   65535,
    4054             :   65535,
    4055             :   8,
    4056             :   9,
    4057             :   10,
    4058             :   11,
    4059             :   12,
    4060             :   13,
    4061             :   14,
    4062             :   15,
    4063             :   8,
    4064             :   9,
    4065             :   10,
    4066             :   11,
    4067             :   12,
    4068             :   13,
    4069             :   14,
    4070             :   15,
    4071             :   65535,
    4072             :   65535,
    4073             :   65535,
    4074             :   65535,
    4075             :   65535,
    4076             :   65535,
    4077             :   65535,
    4078             :   65535,
    4079             : };
    4080       29761 : static inline void InitX86MCRegisterInfo(MCRegisterInfo *RI, unsigned RA, unsigned DwarfFlavour = 0, unsigned EHFlavour = 0, unsigned PC = 0) {
    4081             :   RI->InitMCRegisterInfo(X86RegDesc, 277, RA, PC, X86MCRegisterClasses, 109, X86RegUnitRoots, 162, X86RegDiffLists, X86LaneMaskLists, X86RegStrings, X86RegClassStrings, X86SubRegIdxLists, 9,
    4082             : X86SubRegIdxRanges, X86RegEncodingTable);
    4083             : 
    4084       29761 :   switch (DwarfFlavour) {
    4085           0 :   default:
    4086           0 :     llvm_unreachable("Unknown DWARF flavour");
    4087             :   case 0:
    4088             :     RI->mapDwarfRegsToLLVMRegs(X86DwarfFlavour0Dwarf2L, X86DwarfFlavour0Dwarf2LSize, false);
    4089             :     break;
    4090             :   case 1:
    4091             :     RI->mapDwarfRegsToLLVMRegs(X86DwarfFlavour1Dwarf2L, X86DwarfFlavour1Dwarf2LSize, false);
    4092             :     break;
    4093             :   case 2:
    4094             :     RI->mapDwarfRegsToLLVMRegs(X86DwarfFlavour2Dwarf2L, X86DwarfFlavour2Dwarf2LSize, false);
    4095             :     break;
    4096             :   }
    4097       29761 :   switch (EHFlavour) {
    4098           0 :   default:
    4099           0 :     llvm_unreachable("Unknown DWARF flavour");
    4100             :   case 0:
    4101             :     RI->mapDwarfRegsToLLVMRegs(X86EHFlavour0Dwarf2L, X86EHFlavour0Dwarf2LSize, true);
    4102             :     break;
    4103             :   case 1:
    4104             :     RI->mapDwarfRegsToLLVMRegs(X86EHFlavour1Dwarf2L, X86EHFlavour1Dwarf2LSize, true);
    4105             :     break;
    4106             :   case 2:
    4107             :     RI->mapDwarfRegsToLLVMRegs(X86EHFlavour2Dwarf2L, X86EHFlavour2Dwarf2LSize, true);
    4108             :     break;
    4109             :   }
    4110       29761 :   switch (DwarfFlavour) {
    4111           0 :   default:
    4112           0 :     llvm_unreachable("Unknown DWARF flavour");
    4113             :   case 0:
    4114             :     RI->mapLLVMRegsToDwarfRegs(X86DwarfFlavour0L2Dwarf, X86DwarfFlavour0L2DwarfSize, false);
    4115             :     break;
    4116             :   case 1:
    4117             :     RI->mapLLVMRegsToDwarfRegs(X86DwarfFlavour1L2Dwarf, X86DwarfFlavour1L2DwarfSize, false);
    4118             :     break;
    4119             :   case 2:
    4120             :     RI->mapLLVMRegsToDwarfRegs(X86DwarfFlavour2L2Dwarf, X86DwarfFlavour2L2DwarfSize, false);
    4121             :     break;
    4122             :   }
    4123       29761 :   switch (EHFlavour) {
    4124           0 :   default:
    4125           0 :     llvm_unreachable("Unknown DWARF flavour");
    4126             :   case 0:
    4127             :     RI->mapLLVMRegsToDwarfRegs(X86EHFlavour0L2Dwarf, X86EHFlavour0L2DwarfSize, true);
    4128             :     break;
    4129             :   case 1:
    4130             :     RI->mapLLVMRegsToDwarfRegs(X86EHFlavour1L2Dwarf, X86EHFlavour1L2DwarfSize, true);
    4131             :     break;
    4132             :   case 2:
    4133             :     RI->mapLLVMRegsToDwarfRegs(X86EHFlavour2L2Dwarf, X86EHFlavour2L2DwarfSize, true);
    4134             :     break;
    4135             :   }
    4136       29761 : }
    4137             : 
    4138             : } // end namespace llvm
    4139             : 
    4140             : #endif // GET_REGINFO_MC_DESC
    4141             : 
    4142             : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
    4143             : |*                                                                            *|
    4144             : |* Register Information Header Fragment                                       *|
    4145             : |*                                                                            *|
    4146             : |* Automatically generated file, do not edit!                                 *|
    4147             : |*                                                                            *|
    4148             : \*===----------------------------------------------------------------------===*/
    4149             : 
    4150             : 
    4151             : #ifdef GET_REGINFO_HEADER
    4152             : #undef GET_REGINFO_HEADER
    4153             : 
    4154             : #include "llvm/CodeGen/TargetRegisterInfo.h"
    4155             : 
    4156             : namespace llvm {
    4157             : 
    4158             : class X86FrameLowering;
    4159             : 
    4160             : struct X86GenRegisterInfo : public TargetRegisterInfo {
    4161             :   explicit X86GenRegisterInfo(unsigned RA, unsigned D = 0, unsigned E = 0,
    4162             :       unsigned PC = 0, unsigned HwMode = 0);
    4163             :   unsigned composeSubRegIndicesImpl(unsigned, unsigned) const override;
    4164             :   LaneBitmask composeSubRegIndexLaneMaskImpl(unsigned, LaneBitmask) const override;
    4165             :   LaneBitmask reverseComposeSubRegIndexLaneMaskImpl(unsigned, LaneBitmask) const override;
    4166             :   const TargetRegisterClass *getSubClassWithSubReg(const TargetRegisterClass*, unsigned) const override;
    4167             :   const RegClassWeight &getRegClassWeight(const TargetRegisterClass *RC) const override;
    4168             :   unsigned getRegUnitWeight(unsigned RegUnit) const override;
    4169             :   unsigned getNumRegPressureSets() const override;
    4170             :   const char *getRegPressureSetName(unsigned Idx) const override;
    4171             :   unsigned getRegPressureSetLimit(const MachineFunction &MF, unsigned Idx) const override;
    4172             :   const int *getRegClassPressureSets(const TargetRegisterClass *RC) const override;
    4173             :   const int *getRegUnitPressureSets(unsigned RegUnit) const override;
    4174             :   ArrayRef<const char *> getRegMaskNames() const override;
    4175             :   ArrayRef<const uint32_t *> getRegMasks() const override;
    4176             :   /// Devirtualized TargetFrameLowering.
    4177             :   static const X86FrameLowering *getFrameLowering(
    4178             :       const MachineFunction &MF);
    4179             : };
    4180             : 
    4181             : namespace X86 { // Register classes
    4182             :   extern const TargetRegisterClass GR8RegClass;
    4183             :   extern const TargetRegisterClass GRH8RegClass;
    4184             :   extern const TargetRegisterClass GR8_NOREXRegClass;
    4185             :   extern const TargetRegisterClass GR8_ABCD_HRegClass;
    4186             :   extern const TargetRegisterClass GR8_ABCD_LRegClass;
    4187             :   extern const TargetRegisterClass GRH16RegClass;
    4188             :   extern const TargetRegisterClass GR16RegClass;
    4189             :   extern const TargetRegisterClass GR16_NOREXRegClass;
    4190             :   extern const TargetRegisterClass VK1RegClass;
    4191             :   extern const TargetRegisterClass VK16RegClass;
    4192             :   extern const TargetRegisterClass VK2RegClass;
    4193             :   extern const TargetRegisterClass VK4RegClass;
    4194             :   extern const TargetRegisterClass VK8RegClass;
    4195             :   extern const TargetRegisterClass VK16WMRegClass;
    4196             :   extern const TargetRegisterClass VK1WMRegClass;
    4197             :   extern const TargetRegisterClass VK2WMRegClass;
    4198             :   extern const TargetRegisterClass VK4WMRegClass;
    4199             :   extern const TargetRegisterClass VK8WMRegClass;
    4200             :   extern const TargetRegisterClass SEGMENT_REGRegClass;
    4201             :   extern const TargetRegisterClass GR16_ABCDRegClass;
    4202             :   extern const TargetRegisterClass FPCCRRegClass;
    4203             :   extern const TargetRegisterClass FR32XRegClass;
    4204             :   extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBPRegClass;
    4205             :   extern const TargetRegisterClass LOW32_ADDR_ACCESSRegClass;
    4206             :   extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass;
    4207             :   extern const TargetRegisterClass DEBUG_REGRegClass;
    4208             :   extern const TargetRegisterClass FR32RegClass;
    4209             :   extern const TargetRegisterClass GR32RegClass;
    4210             :   extern const TargetRegisterClass GR32_NOSPRegClass;
    4211             :   extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass;
    4212             :   extern const TargetRegisterClass GR32_NOREXRegClass;
    4213             :   extern const TargetRegisterClass VK32RegClass;
    4214             :   extern const TargetRegisterClass GR32_NOREX_NOSPRegClass;
    4215             :   extern const TargetRegisterClass RFP32RegClass;
    4216             :   extern const TargetRegisterClass VK32WMRegClass;
    4217             :   extern const TargetRegisterClass GR32_ABCDRegClass;
    4218             :   extern const TargetRegisterClass GR32_TCRegClass;
    4219             :   extern const TargetRegisterClass GR32_ADRegClass;
    4220             :   extern const TargetRegisterClass GR32_BPSPRegClass;
    4221             :   extern const TargetRegisterClass GR32_BSIRegClass;
    4222             :   extern const TargetRegisterClass GR32_CBRegClass;
    4223             :   extern const TargetRegisterClass GR32_DCRegClass;
    4224             :   extern const TargetRegisterClass GR32_DIBPRegClass;
    4225             :   extern const TargetRegisterClass GR32_SIDIRegClass;
    4226             :   extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass;
    4227             :   extern const TargetRegisterClass CCRRegClass;
    4228             :   extern const TargetRegisterClass DFCCRRegClass;
    4229             :   extern const TargetRegisterClass GR32_ABCD_and_GR32_BSIRegClass;
    4230             :   extern const TargetRegisterClass GR32_AD_and_GR32_DCRegClass;
    4231             :   extern const TargetRegisterClass GR32_BPSP_and_GR32_DIBPRegClass;
    4232             :   extern const TargetRegisterClass GR32_BSI_and_GR32_SIDIRegClass;
    4233             :   extern const TargetRegisterClass GR32_CB_and_GR32_DCRegClass;
    4234             :   extern const TargetRegisterClass GR32_DIBP_and_GR32_SIDIRegClass;
    4235             :   extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitRegClass;
    4236             :   extern const TargetRegisterClass LOW32_ADDR_ACCESS_with_sub_32bitRegClass;
    4237             :   extern const TargetRegisterClass RFP64RegClass;
    4238             :   extern const TargetRegisterClass FR64XRegClass;
    4239             :   extern const TargetRegisterClass GR64RegClass;
    4240             :   extern const TargetRegisterClass CONTROL_REGRegClass;
    4241             :   extern const TargetRegisterClass FR64RegClass;
    4242             :   extern const TargetRegisterClass GR64_with_sub_8bitRegClass;
    4243             :   extern const TargetRegisterClass GR64_NOSPRegClass;
    4244             :   extern const TargetRegisterClass GR64_NOREXRegClass;
    4245             :   extern const TargetRegisterClass GR64_TCRegClass;
    4246             :   extern const TargetRegisterClass GR64_NOSP_and_GR64_TCRegClass;
    4247             :   extern const TargetRegisterClass GR64_TCW64RegClass;
    4248             :   extern const TargetRegisterClass GR64_with_sub_16bit_in_GR16_NOREXRegClass;
    4249             :   extern const TargetRegisterClass VK64RegClass;
    4250             :   extern const TargetRegisterClass VR64RegClass;
    4251             :   extern const TargetRegisterClass GR64_NOREX_NOSPRegClass;
    4252             :   extern const TargetRegisterClass GR64_NOSP_and_GR64_TCW64RegClass;
    4253             :   extern const TargetRegisterClass GR64_TC_and_GR64_TCW64RegClass;
    4254             :   extern const TargetRegisterClass VK64WMRegClass;
    4255             :   extern const TargetRegisterClass GR64_NOREX_and_GR64_TCRegClass;
    4256             :   extern const TargetRegisterClass GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClass;
    4257             :   extern const TargetRegisterClass GR64_NOREX_NOSP_and_GR64_TCRegClass;
    4258             :   extern const TargetRegisterClass GR64_ABCDRegClass;
    4259             :   extern const TargetRegisterClass GR64_NOREX_and_GR64_TCW64RegClass;
    4260             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_TCRegClass;
    4261             :   extern const TargetRegisterClass GR64_ADRegClass;
    4262             :   extern const TargetRegisterClass GR64_and_LOW32_ADDR_ACCESS_RBPRegClass;
    4263             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_BPSPRegClass;
    4264             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_BSIRegClass;
    4265             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_CBRegClass;
    4266             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_DCRegClass;
    4267             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_DIBPRegClass;
    4268             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_SIDIRegClass;
    4269             :   extern const TargetRegisterClass GR64_and_LOW32_ADDR_ACCESSRegClass;
    4270             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSIRegClass;
    4271             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_AD_and_GR32_DCRegClass;
    4272             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBPRegClass;
    4273             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDIRegClass;
    4274             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_CB_and_GR32_DCRegClass;
    4275             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDIRegClass;
    4276             :   extern const TargetRegisterClass RSTRegClass;
    4277             :   extern const TargetRegisterClass RFP80RegClass;
    4278             :   extern const TargetRegisterClass VR128XRegClass;
    4279             :   extern const TargetRegisterClass VR128RegClass;
    4280             :   extern const TargetRegisterClass VR128HRegClass;
    4281             :   extern const TargetRegisterClass VR128LRegClass;
    4282             :   extern const TargetRegisterClass BNDRRegClass;
    4283             :   extern const TargetRegisterClass VR256XRegClass;
    4284             :   extern const TargetRegisterClass VR256RegClass;
    4285             :   extern const TargetRegisterClass VR256HRegClass;
    4286             :   extern const TargetRegisterClass VR256LRegClass;
    4287             :   extern const TargetRegisterClass VR512RegClass;
    4288             :   extern const TargetRegisterClass VR512_with_sub_xmm_in_FR32RegClass;
    4289             :   extern const TargetRegisterClass VR512_with_sub_xmm_in_VR128HRegClass;
    4290             :   extern const TargetRegisterClass VR512_with_sub_xmm_in_VR128LRegClass;
    4291             : } // end namespace X86
    4292             : 
    4293             : } // end namespace llvm
    4294             : 
    4295             : #endif // GET_REGINFO_HEADER
    4296             : 
    4297             : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
    4298             : |*                                                                            *|
    4299             : |* Target Register and Register Classes Information                           *|
    4300             : |*                                                                            *|
    4301             : |* Automatically generated file, do not edit!                                 *|
    4302             : |*                                                                            *|
    4303             : \*===----------------------------------------------------------------------===*/
    4304             : 
    4305             : 
    4306             : #ifdef GET_REGINFO_TARGET_DESC
    4307             : #undef GET_REGINFO_TARGET_DESC
    4308             : 
    4309             : namespace llvm {
    4310             : 
    4311             : extern const MCRegisterClass X86MCRegisterClasses[];
    4312             : 
    4313             : static const MVT::SimpleValueType VTLists[] = {
    4314             :   /* 0 */ MVT::i8, MVT::Other,
    4315             :   /* 2 */ MVT::i16, MVT::Other,
    4316             :   /* 4 */ MVT::i32, MVT::Other,
    4317             :   /* 6 */ MVT::i64, MVT::Other,
    4318             :   /* 8 */ MVT::f80, MVT::f64, MVT::f32, MVT::Other,
    4319             :   /* 12 */ MVT::f64, MVT::Other,
    4320             :   /* 14 */ MVT::f80, MVT::Other,
    4321             :   /* 16 */ MVT::v4f32, MVT::v2f64, MVT::v16i8, MVT::v8i16, MVT::v4i32, MVT::v2i64, MVT::f128, MVT::Other,
    4322             :   /* 24 */ MVT::v1i1, MVT::Other,
    4323             :   /* 26 */ MVT::v2i1, MVT::Other,
    4324             :   /* 28 */ MVT::v4i1, MVT::Other,
    4325             :   /* 30 */ MVT::v8i1, MVT::Other,
    4326             :   /* 32 */ MVT::v16i1, MVT::Other,
    4327             :   /* 34 */ MVT::v32i1, MVT::Other,
    4328             :   /* 36 */ MVT::v64i1, MVT::Other,
    4329             :   /* 38 */ MVT::v2i64, MVT::Other,
    4330             :   /* 40 */ MVT::v8f32, MVT::v4f64, MVT::v32i8, MVT::v16i16, MVT::v8i32, MVT::v4i64, MVT::Other,
    4331             :   /* 47 */ MVT::v16f32, MVT::v8f64, MVT::v64i8, MVT::v32i16, MVT::v16i32, MVT::v8i64, MVT::Other,
    4332             :   /* 54 */ MVT::x86mmx, MVT::Other,
    4333             : };
    4334             : 
    4335             : static const char *const SubRegIndexNameTable[] = { "sub_8bit", "sub_8bit_hi", "sub_8bit_hi_phony", "sub_16bit", "sub_16bit_hi", "sub_32bit", "sub_xmm", "sub_ymm", "" };
    4336             : 
    4337             : 
    4338             : static const LaneBitmask SubRegIndexLaneMaskTable[] = {
    4339             :   LaneBitmask::getAll(),
    4340             :   LaneBitmask(0x00000001), // sub_8bit
    4341             :   LaneBitmask(0x00000002), // sub_8bit_hi
    4342             :   LaneBitmask(0x00000004), // sub_8bit_hi_phony
    4343             :   LaneBitmask(0x00000007), // sub_16bit
    4344             :   LaneBitmask(0x00000008), // sub_16bit_hi
    4345             :   LaneBitmask(0x0000000F), // sub_32bit
    4346             :   LaneBitmask(0x00000010), // sub_xmm
    4347             :   LaneBitmask(0x00000010), // sub_ymm
    4348             :  };
    4349             : 
    4350             : 
    4351             : 
    4352             : static const TargetRegisterInfo::RegClassInfo RegClassInfos[] = {
    4353             :   // Mode = 0 (Default)
    4354             :   { 8, 8, 8, VTLists+0 },    // GR8
    4355             :   { 8, 8, 8, VTLists+0 },    // GRH8
    4356             :   { 8, 8, 8, VTLists+0 },    // GR8_NOREX
    4357             :   { 8, 8, 8, VTLists+0 },    // GR8_ABCD_H
    4358             :   { 8, 8, 8, VTLists+0 },    // GR8_ABCD_L
    4359             :   { 16, 16, 16, VTLists+2 },    // GRH16
    4360             :   { 16, 16, 16, VTLists+2 },    // GR16
    4361             :   { 16, 16, 16, VTLists+2 },    // GR16_NOREX
    4362             :   { 16, 16, 16, VTLists+24 },    // VK1
    4363             :   { 16, 16, 16, VTLists+32 },    // VK16
    4364             :   { 16, 16, 16, VTLists+26 },    // VK2
    4365             :   { 16, 16, 16, VTLists+28 },    // VK4
    4366             :   { 16, 16, 16, VTLists+30 },    // VK8
    4367             :   { 16, 16, 16, VTLists+32 },    // VK16WM
    4368             :   { 16, 16, 16, VTLists+24 },    // VK1WM
    4369             :   { 16, 16, 16, VTLists+26 },    // VK2WM
    4370             :   { 16, 16, 16, VTLists+28 },    // VK4WM
    4371             :   { 16, 16, 16, VTLists+30 },    // VK8WM
    4372             :   { 16, 16, 16, VTLists+2 },    // SEGMENT_REG
    4373             :   { 16, 16, 16, VTLists+2 },    // GR16_ABCD
    4374             :   { 16, 16, 16, VTLists+2 },    // FPCCR
    4375             :   { 32, 32, 32, VTLists+10 },    // FR32X
    4376             :   { 32, 32, 32, VTLists+4 },    // LOW32_ADDR_ACCESS_RBP
    4377             :   { 32, 32, 32, VTLists+4 },    // LOW32_ADDR_ACCESS
    4378             :   { 32, 32, 32, VTLists+4 },    // LOW32_ADDR_ACCESS_RBP_with_sub_8bit
    4379             :   { 32, 32, 32, VTLists+4 },    // DEBUG_REG
    4380             :   { 32, 32, 32, VTLists+10 },    // FR32
    4381             :   { 32, 32, 32, VTLists+4 },    // GR32
    4382             :   { 32, 32, 32, VTLists+4 },    // GR32_NOSP
    4383             :   { 32, 32, 32, VTLists+4 },    // LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX
    4384             :   { 32, 32, 32, VTLists+4 },    // GR32_NOREX
    4385             :   { 32, 32, 32, VTLists+34 },    // VK32
    4386             :   { 32, 32, 32, VTLists+4 },    // GR32_NOREX_NOSP
    4387             :   { 32, 32, 32, VTLists+10 },    // RFP32
    4388             :   { 32, 32, 32, VTLists+34 },    // VK32WM
    4389             :   { 32, 32, 32, VTLists+4 },    // GR32_ABCD
    4390             :   { 32, 32, 32, VTLists+4 },    // GR32_TC
    4391             :   { 32, 32, 32, VTLists+4 },    // GR32_AD
    4392             :   { 32, 32, 32, VTLists+4 },    // GR32_BPSP
    4393             :   { 32, 32, 32, VTLists+4 },    // GR32_BSI
    4394             :   { 32, 32, 32, VTLists+4 },    // GR32_CB
    4395             :   { 32, 32, 32, VTLists+4 },    // GR32_DC
    4396             :   { 32, 32, 32, VTLists+4 },    // GR32_DIBP
    4397             :   { 32, 32, 32, VTLists+4 },    // GR32_SIDI
    4398             :   { 32, 32, 32, VTLists+4 },    // LOW32_ADDR_ACCESS_RBP_with_sub_32bit
    4399             :   { 32, 32, 32, VTLists+4 },    // CCR
    4400             :   { 32, 32, 32, VTLists+4 },    // DFCCR
    4401             :   { 32, 32, 32, VTLists+4 },    // GR32_ABCD_and_GR32_BSI
    4402             :   { 32, 32, 32, VTLists+4 },    // GR32_AD_and_GR32_DC
    4403             :   { 32, 32, 32, VTLists+4 },    // GR32_BPSP_and_GR32_DIBP
    4404             :   { 32, 32, 32, VTLists+4 },    // GR32_BSI_and_GR32_SIDI
    4405             :   { 32, 32, 32, VTLists+4 },    // GR32_CB_and_GR32_DC
    4406             :   { 32, 32, 32, VTLists+4 },    // GR32_DIBP_and_GR32_SIDI
    4407             :   { 32, 32, 32, VTLists+4 },    // LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
    4408             :   { 32, 32, 32, VTLists+4 },    // LOW32_ADDR_ACCESS_with_sub_32bit
    4409             :   { 64, 64, 32, VTLists+12 },    // RFP64
    4410             :   { 64, 64, 64, VTLists+12 },    // FR64X
    4411             :   { 64, 64, 64, VTLists+6 },    // GR64
    4412             :   { 64, 64, 64, VTLists+6 },    // CONTROL_REG
    4413             :   { 64, 64, 64, VTLists+12 },    // FR64
    4414             :   { 64, 64, 64, VTLists+6 },    // GR64_with_sub_8bit
    4415             :   { 64, 64, 64, VTLists+6 },    // GR64_NOSP
    4416             :   { 64, 64, 64, VTLists+6 },    // GR64_NOREX
    4417             :   { 64, 64, 64, VTLists+6 },    // GR64_TC
    4418             :   { 64, 64, 64, VTLists+6 },    // GR64_NOSP_and_GR64_TC
    4419             :   { 64, 64, 64, VTLists+6 },    // GR64_TCW64
    4420             :   { 64, 64, 64, VTLists+6 },    // GR64_with_sub_16bit_in_GR16_NOREX
    4421             :   { 64, 64, 64, VTLists+36 },    // VK64
    4422             :   { 64, 64, 64, VTLists+54 },    // VR64
    4423             :   { 64, 64, 64, VTLists+6 },    // GR64_NOREX_NOSP
    4424             :   { 64, 64, 64, VTLists+6 },    // GR64_NOSP_and_GR64_TCW64
    4425             :   { 64, 64, 64, VTLists+6 },    // GR64_TC_and_GR64_TCW64
    4426             :   { 64, 64, 64, VTLists+36 },    // VK64WM
    4427             :   { 64, 64, 64, VTLists+6 },    // GR64_NOREX_and_GR64_TC
    4428             :   { 64, 64, 64, VTLists+6 },    // GR64_TC_and_GR64_NOSP_and_GR64_TCW64
    4429             :   { 64, 64, 64, VTLists+6 },    // GR64_NOREX_NOSP_and_GR64_TC
    4430             :   { 64, 64, 64, VTLists+6 },    // GR64_ABCD
    4431             :   { 64, 64, 64, VTLists+6 },    // GR64_NOREX_and_GR64_TCW64
    4432             :   { 64, 64, 64, VTLists+6 },    // GR64_with_sub_32bit_in_GR32_TC
    4433             :   { 64, 64, 64, VTLists+6 },    // GR64_AD
    4434             :   { 64, 64, 64, VTLists+6 },    // GR64_and_LOW32_ADDR_ACCESS_RBP
    4435             :   { 64, 64, 64, VTLists+6 },    // GR64_with_sub_32bit_in_GR32_BPSP
    4436             :   { 64, 64, 64, VTLists+6 },    // GR64_with_sub_32bit_in_GR32_BSI
    4437             :   { 64, 64, 64, VTLists+6 },    // GR64_with_sub_32bit_in_GR32_CB
    4438             :   { 64, 64, 64, VTLists+6 },    // GR64_with_sub_32bit_in_GR32_DC
    4439             :   { 64, 64, 64, VTLists+6 },    // GR64_with_sub_32bit_in_GR32_DIBP
    4440             :   { 64, 64, 64, VTLists+6 },    // GR64_with_sub_32bit_in_GR32_SIDI
    4441             :   { 64, 64, 64, VTLists+6 },    // GR64_and_LOW32_ADDR_ACCESS
    4442             :   { 64, 64, 64, VTLists+6 },    // GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSI
    4443             :   { 64, 64, 64, VTLists+6 },    // GR64_with_sub_32bit_in_GR32_AD_and_GR32_DC
    4444             :   { 64, 64, 64, VTLists+6 },    // GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBP
    4445             :   { 64, 64, 64, VTLists+6 },    // GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDI
    4446             :   { 64, 64, 64, VTLists+6 },    // GR64_with_sub_32bit_in_GR32_CB_and_GR32_DC
    4447             :   { 64, 64, 64, VTLists+6 },    // GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDI
    4448             :   { 80, 80, 32, VTLists+8 },    // RST
    4449             :   { 80, 80, 32, VTLists+14 },    // RFP80
    4450             :   { 128, 128, 128, VTLists+16 },    // VR128X
    4451             :   { 128, 128, 128, VTLists+16 },    // VR128
    4452             :   { 128, 128, 128, VTLists+16 },    // VR128H
    4453             :   { 128, 128, 128, VTLists+16 },    // VR128L
    4454             :   { 128, 128, 128, VTLists+38 },    // BNDR
    4455             :   { 256, 256, 256, VTLists+40 },    // VR256X
    4456             :   { 256, 256, 256, VTLists+40 },    // VR256
    4457             :   { 256, 256, 256, VTLists+40 },    // VR256H
    4458             :   { 256, 256, 256, VTLists+40 },    // VR256L
    4459             :   { 512, 512, 512, VTLists+47 },    // VR512
    4460             :   { 512, 512, 512, VTLists+47 },    // VR512_with_sub_xmm_in_FR32
    4461             :   { 512, 512, 512, VTLists+47 },    // VR512_with_sub_xmm_in_VR128H
    4462             :   { 512, 512, 512, VTLists+47 },    // VR512_with_sub_xmm_in_VR128L
    4463             : };
    4464             : 
    4465             : static const TargetRegisterClass *const NullRegClasses[] = { nullptr };
    4466             : 
    4467             : static const uint32_t GR8SubClassMask[] = {
    4468             :   0x0000001d, 0x00000000, 0x00000000, 0x00000000, 
    4469             :   0x790800c0, 0x303f8ff9, 0x3f7edc65, 0x00000000, // sub_8bit
    4470             :   0x00080000, 0x00098338, 0x1318d000, 0x00000000, // sub_8bit_hi
    4471             : };
    4472             : 
    4473             : static const uint32_t GRH8SubClassMask[] = {
    4474             :   0x00000002, 0x00000000, 0x00000000, 0x00000000, 
    4475             : };
    4476             : 
    4477             : static const uint32_t GR8_NOREXSubClassMask[] = {
    4478             :   0x0000001c, 0x00000000, 0x00000000, 0x00000000, 
    4479             :   0x00080000, 0x00098338, 0x1318d000, 0x00000000, // sub_8bit
    4480             :   0x00080000, 0x00098338, 0x1318d000, 0x00000000, // sub_8bit_hi
    4481             : };
    4482             : 
    4483             : static const uint32_t GR8_ABCD_HSubClassMask[] = {
    4484             :   0x00000008, 0x00000000, 0x00000000, 0x00000000, 
    4485             :   0x00080000, 0x00098338, 0x1318d000, 0x00000000, // sub_8bit_hi
    4486             : };
    4487             : 
    4488             : static const uint32_t GR8_ABCD_LSubClassMask[] = {
    4489             :   0x00000010, 0x00000000, 0x00000000, 0x00000000, 
    4490             :   0x00080000, 0x00098338, 0x1318d000, 0x00000000, // sub_8bit
    4491             : };
    4492             : 
    4493             : static const uint32_t GRH16SubClassMask[] = {
    4494             :   0x00000020, 0x00000000, 0x00000000, 0x00000000, 
    4495             : };
    4496             : 
    4497             : static const uint32_t GR16SubClassMask[] = {
    4498             :   0x000800c0, 0x00000000, 0x00000000, 0x00000000, 
    4499             :   0x79000000, 0x303f8ff9, 0x3f7edc65, 0x00000000, // sub_16bit
    4500             : };
    4501             : 
    4502             : static const uint32_t GR16_NOREXSubClassMask[] = {
    4503             :   0x00080080, 0x00000000, 0x00000000, 0x00000000, 
    4504             :   0x60000000, 0x003f8ff9, 0x3f7ed824, 0x00000000, // sub_16bit
    4505             : };
    4506             : 
    4507             : static const uint32_t VK1SubClassMask[] = {
    4508             :   0x8003ff00, 0x00000004, 0x00000108, 0x00000000, 
    4509             : };
    4510             : 
    4511             : static const uint32_t VK16SubClassMask[] = {
    4512             :   0x8003ff00, 0x00000004, 0x00000108, 0x00000000, 
    4513             : };
    4514             : 
    4515             : static const uint32_t VK2SubClassMask[] = {
    4516             :   0x8003ff00, 0x00000004, 0x00000108, 0x00000000, 
    4517             : };
    4518             : 
    4519             : static const uint32_t VK4SubClassMask[] = {
    4520             :   0x8003ff00, 0x00000004, 0x00000108, 0x00000000, 
    4521             : };
    4522             : 
    4523             : static const uint32_t VK8SubClassMask[] = {
    4524             :   0x8003ff00, 0x00000004, 0x00000108, 0x00000000, 
    4525             : };
    4526             : 
    4527             : static const uint32_t VK16WMSubClassMask[] = {
    4528             :   0x0003e000, 0x00000004, 0x00000100, 0x00000000, 
    4529             : };
    4530             : 
    4531             : static const uint32_t VK1WMSubClassMask[] = {
    4532             :   0x0003e000, 0x00000004, 0x00000100, 0x00000000, 
    4533             : };
    4534             : 
    4535             : static const uint32_t VK2WMSubClassMask[] = {
    4536             :   0x0003e000, 0x00000004, 0x00000100, 0x00000000, 
    4537             : };
    4538             : 
    4539             : static const uint32_t VK4WMSubClassMask[] = {
    4540             :   0x0003e000, 0x00000004, 0x00000100, 0x00000000, 
    4541             : };
    4542             : 
    4543             : static const uint32_t VK8WMSubClassMask[] = {
    4544             :   0x0003e000, 0x00000004, 0x00000100, 0x00000000, 
    4545             : };
    4546             : 
    4547             : static const uint32_t SEGMENT_REGSubClassMask[] = {
    4548             :   0x00040000, 0x00000000, 0x00000000, 0x00000000, 
    4549             : };
    4550             : 
    4551             : static const uint32_t GR16_ABCDSubClassMask[] = {
    4552             :   0x00080000, 0x00000000, 0x00000000, 0x00000000, 
    4553             :   0x00000000, 0x00098338, 0x1318d000, 0x00000000, // sub_16bit
    4554             : };
    4555             : 
    4556             : static const uint32_t FPCCRSubClassMask[] = {
    4557             :   0x00100000, 0x00000000, 0x00000000, 0x00000000, 
    4558             : };
    4559             : 
    4560             : static const uint32_t FR32XSubClassMask[] = {
    4561             :   0x04200000, 0x09000000, 0x00000000, 0x0000000f, 
    4562             :   0x00000000, 0x00000000, 0x00000000, 0x00001fe0, // sub_xmm
    4563             : };
    4564             : 
    4565             : static const uint32_t LOW32_ADDR_ACCESS_RBPSubClassMask[] = {
    4566             :   0x79c00000, 0x007f9ff9, 0x04810000, 0x00000000, 
    4567             :   0x00000000, 0x30200000, 0x3f7edc65, 0x00000000, // sub_32bit
    4568             : };
    4569             : 
    4570             : static const uint32_t LOW32_ADDR_ACCESSSubClassMask[] = {
    4571             :   0x58800000, 0x005f8ff9, 0x00800000, 0x00000000, 
    4572             :   0x00000000, 0x30200000, 0x3f7edc65, 0x00000000, // sub_32bit
    4573             : };
    4574             : 
    4575             : static const uint32_t LOW32_ADDR_ACCESS_RBP_with_sub_8bitSubClassMask[] = {
    4576             :   0x79000000, 0x003f8ff9, 0x04000000, 0x00000000, 
    4577             :   0x00000000, 0x30200000, 0x3f7edc65, 0x00000000, // sub_32bit
    4578             : };
    4579             : 
    4580             : static const uint32_t DEBUG_REGSubClassMask[] = {
    4581             :   0x02000000, 0x00000000, 0x00000000, 0x00000000, 
    4582             : };
    4583             : 
    4584             : static const uint32_t FR32SubClassMask[] = {
    4585             :   0x04000000, 0x08000000, 0x00000000, 0x0000000e, 
    4586             :   0x00000000, 0x00000000, 0x00000000, 0x00001dc0, // sub_xmm
    4587             : };
    4588             : 
    4589             : static const uint32_t GR32SubClassMask[] = {
    4590             :   0x58000000, 0x001f8ff9, 0x00000000, 0x00000000, 
    4591             :   0x00000000, 0x30200000, 0x3f7edc65, 0x00000000, // sub_32bit
    4592             : };
    4593             : 
    4594             : static const uint32_t GR32_NOSPSubClassMask[] = {
    4595             :   0x10000000, 0x001f8fb9, 0x00000000, 0x00000000, 
    4596             :   0x00000000, 0x20200000, 0x3f7cdc61, 0x00000000, // sub_32bit
    4597             : };
    4598             : 
    4599             : static const uint32_t LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXSubClassMask[] = {
    4600             :   0x60000000, 0x003f8ff9, 0x04000000, 0x00000000, 
    4601             :   0x00000000, 0x00200000, 0x3f7ed824, 0x00000000, // sub_32bit
    4602             : };
    4603             : 
    4604             : static const uint32_t GR32_NOREXSubClassMask[] = {
    4605             :   0x40000000, 0x001f8ff9, 0x00000000, 0x00000000, 
    4606             :   0x00000000, 0x00200000, 0x3f7ed824, 0x00000000, // sub_32bit
    4607             : };
    4608             : 
    4609             : static const uint32_t VK32SubClassMask[] = {
    4610             :   0x80000000, 0x00000004, 0x00000108, 0x00000000, 
    4611             : };
    4612             : 
    4613             : static const uint32_t GR32_NOREX_NOSPSubClassMask[] = {
    4614             :   0x00000000, 0x001f8fb9, 0x00000000, 0x00000000, 
    4615             :   0x00000000, 0x00200000, 0x3f7cd820, 0x00000000, // sub_32bit
    4616             : };
    4617             : 
    4618             : static const uint32_t RFP32SubClassMask[] = {
    4619             :   0x00000000, 0x00800002, 0x80000000, 0x00000000, 
    4620             : };
    4621             : 
    4622             : static const uint32_t VK32WMSubClassMask[] = {
    4623             :   0x00000000, 0x00000004, 0x00000100, 0x00000000, 
    4624             : };
    4625             : 
    4626             : static const uint32_t GR32_ABCDSubClassMask[] = {
    4627             :   0x00000000, 0x00098338, 0x00000000, 0x00000000, 
    4628             :   0x00000000, 0x00000000, 0x1318d000, 0x00000000, // sub_32bit
    4629             : };
    4630             : 
    4631             : static const uint32_t GR32_TCSubClassMask[] = {
    4632             :   0x00000000, 0x00090230, 0x00000000, 0x00000000, 
    4633             :   0x00000000, 0x00000000, 0x1210c000, 0x00000000, // sub_32bit
    4634             : };
    4635             : 
    4636             : static const uint32_t GR32_ADSubClassMask[] = {
    4637             :   0x00000000, 0x00010020, 0x00000000, 0x00000000, 
    4638             :   0x00000000, 0x00000000, 0x02008000, 0x00000000, // sub_32bit
    4639             : };
    4640             : 
    4641             : static const uint32_t GR32_BPSPSubClassMask[] = {
    4642             :   0x00000000, 0x00020040, 0x00000000, 0x00000000, 
    4643             :   0x00000000, 0x00200000, 0x04020000, 0x00000000, // sub_32bit
    4644             : };
    4645             : 
    4646             : static const uint32_t GR32_BSISubClassMask[] = {
    4647             :   0x00000000, 0x00048080, 0x00000000, 0x00000000, 
    4648             :   0x00000000, 0x00000000, 0x09040000, 0x00000000, // sub_32bit
    4649             : };
    4650             : 
    4651             : static const uint32_t GR32_CBSubClassMask[] = {
    4652             :   0x00000000, 0x00088100, 0x00000000, 0x00000000, 
    4653             :   0x00000000, 0x00000000, 0x11080000, 0x00000000, // sub_32bit
    4654             : };
    4655             : 
    4656             : static const uint32_t GR32_DCSubClassMask[] = {
    4657             :   0x00000000, 0x00090200, 0x00000000, 0x00000000, 
    4658             :   0x00000000, 0x00000000, 0x12100000, 0x00000000, // sub_32bit
    4659             : };
    4660             : 
    4661             : static const uint32_t GR32_DIBPSubClassMask[] = {
    4662             :   0x00000000, 0x00120400, 0x00000000, 0x00000000, 
    4663             :   0x00000000, 0x00200000, 0x24200000, 0x00000000, // sub_32bit
    4664             : };
    4665             : 
    4666             : static const uint32_t GR32_SIDISubClassMask[] = {
    4667             :   0x00000000, 0x00140800, 0x00000000, 0x00000000, 
    4668             :   0x00000000, 0x00000000, 0x28400000, 0x00000000, // sub_32bit
    4669             : };
    4670             : 
    4671             : static const uint32_t LOW32_ADDR_ACCESS_RBP_with_sub_32bitSubClassMask[] = {
    4672             :   0x00000000, 0x00601000, 0x04810000, 0x00000000, 
    4673             : };
    4674             : 
    4675             : static const uint32_t CCRSubClassMask[] = {
    4676             :   0x00000000, 0x00002000, 0x00000000, 0x00000000, 
    4677             : };
    4678             : 
    4679             : static const uint32_t DFCCRSubClassMask[] = {
    4680             :   0x00000000, 0x00004000, 0x00000000, 0x00000000, 
    4681             : };
    4682             : 
    4683             : static const uint32_t GR32_ABCD_and_GR32_BSISubClassMask[] = {
    4684             :   0x00000000, 0x00008000, 0x00000000, 0x00000000, 
    4685             :   0x00000000, 0x00000000, 0x01000000, 0x00000000, // sub_32bit
    4686             : };
    4687             : 
    4688             : static const uint32_t GR32_AD_and_GR32_DCSubClassMask[] = {
    4689             :   0x00000000, 0x00010000, 0x00000000, 0x00000000, 
    4690             :   0x00000000, 0x00000000, 0x02000000, 0x00000000, // sub_32bit
    4691             : };
    4692             : 
    4693             : static const uint32_t GR32_BPSP_and_GR32_DIBPSubClassMask[] = {
    4694             :   0x00000000, 0x00020000, 0x00000000, 0x00000000, 
    4695             :   0x00000000, 0x00200000, 0x04000000, 0x00000000, // sub_32bit
    4696             : };
    4697             : 
    4698             : static const uint32_t GR32_BSI_and_GR32_SIDISubClassMask[] = {
    4699             :   0x00000000, 0x00040000, 0x00000000, 0x00000000, 
    4700             :   0x00000000, 0x00000000, 0x08000000, 0x00000000, // sub_32bit
    4701             : };
    4702             : 
    4703             : static const uint32_t GR32_CB_and_GR32_DCSubClassMask[] = {
    4704             :   0x00000000, 0x00080000, 0x00000000, 0x00000000, 
    4705             :   0x00000000, 0x00000000, 0x10000000, 0x00000000, // sub_32bit
    4706             : };
    4707             : 
    4708             : static const uint32_t GR32_DIBP_and_GR32_SIDISubClassMask[] = {
    4709             :   0x00000000, 0x00100000, 0x00000000, 0x00000000, 
    4710             :   0x00000000, 0x00000000, 0x20000000, 0x00000000, // sub_32bit
    4711             : };
    4712             : 
    4713             : static const uint32_t LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitSubClassMask[] = {
    4714             :   0x00000000, 0x00200000, 0x04000000, 0x00000000, 
    4715             : };
    4716             : 
    4717             : static const uint32_t LOW32_ADDR_ACCESS_with_sub_32bitSubClassMask[] = {
    4718             :   0x00000000, 0x00400000, 0x00800000, 0x00000000, 
    4719             : };
    4720             : 
    4721             : static const uint32_t RFP64SubClassMask[] = {
    4722             :   0x00000000, 0x00800000, 0x80000000, 0x00000000, 
    4723             : };
    4724             : 
    4725             : static const uint32_t FR64XSubClassMask[] = {
    4726             :   0x00000000, 0x09000000, 0x00000000, 0x0000000f, 
    4727             :   0x00000000, 0x00000000, 0x00000000, 0x00001fe0, // sub_xmm
    4728             : };
    4729             : 
    4730             : static const uint32_t GR64SubClassMask[] = {
    4731             :   0x00000000, 0xf2000000, 0x3ffffee7, 0x00000000, 
    4732             : };
    4733             : 
    4734             : static const uint32_t CONTROL_REGSubClassMask[] = {
    4735             :   0x00000000, 0x04000000, 0x00000000, 0x00000000, 
    4736             : };
    4737             : 
    4738             : static const uint32_t FR64SubClassMask[] = {
    4739             :   0x00000000, 0x08000000, 0x00000000, 0x0000000e, 
    4740             :   0x00000000, 0x00000000, 0x00000000, 0x00001dc0, // sub_xmm
    4741             : };
    4742             : 
    4743             : static const uint32_t GR64_with_sub_8bitSubClassMask[] = {
    4744             :   0x00000000, 0x30000000, 0x3f7edc65, 0x00000000, 
    4745             : };
    4746             : 
    4747             : static const uint32_t GR64_NOSPSubClassMask[] = {
    4748             :   0x00000000, 0x20000000, 0x3f7cdc61, 0x00000000, 
    4749             : };
    4750             : 
    4751             : static const uint32_t GR64_NOREXSubClassMask[] = {
    4752             :   0x00000000, 0x40000000, 0x3ffffa24, 0x00000000, 
    4753             : };
    4754             : 
    4755             : static const uint32_t GR64_TCSubClassMask[] = {
    4756             :   0x00000000, 0x80000000, 0x3ad0ee81, 0x00000000, 
    4757             : };
    4758             : 
    4759             : static const uint32_t GR64_NOSP_and_GR64_TCSubClassMask[] = {
    4760             :   0x00000000, 0x00000000, 0x3a50cc01, 0x00000000, 
    4761             : };
    4762             : 
    4763             : static const uint32_t GR64_TCW64SubClassMask[] = {
    4764             :   0x00000000, 0x00000000, 0x1290e4c2, 0x00000000, 
    4765             : };
    4766             : 
    4767             : static const uint32_t GR64_with_sub_16bit_in_GR16_NOREXSubClassMask[] = {
    4768             :   0x00000000, 0x00000000, 0x3f7ed824, 0x00000000, 
    4769             : };
    4770             : 
    4771             : static const uint32_t VK64SubClassMask[] = {
    4772             :   0x00000000, 0x00000000, 0x00000108, 0x00000000, 
    4773             : };
    4774             : 
    4775             : static const uint32_t VR64SubClassMask[] = {
    4776             :   0x00000000, 0x00000000, 0x00000010, 0x00000000, 
    4777             : };
    4778             : 
    4779             : static const uint32_t GR64_NOREX_NOSPSubClassMask[] = {
    4780             :   0x00000000, 0x00000000, 0x3f7cd820, 0x00000000, 
    4781             : };
    4782             : 
    4783             : static const uint32_t GR64_NOSP_and_GR64_TCW64SubClassMask[] = {
    4784             :   0x00000000, 0x00000000, 0x1210c440, 0x00000000, 
    4785             : };
    4786             : 
    4787             : static const uint32_t GR64_TC_and_GR64_TCW64SubClassMask[] = {
    4788             :   0x00000000, 0x00000000, 0x1290e480, 0x00000000, 
    4789             : };
    4790             : 
    4791             : static const uint32_t VK64WMSubClassMask[] = {
    4792             :   0x00000000, 0x00000000, 0x00000100, 0x00000000, 
    4793             : };
    4794             : 
    4795             : static const uint32_t GR64_NOREX_and_GR64_TCSubClassMask[] = {
    4796             :   0x00000000, 0x00000000, 0x3ad0ea00, 0x00000000, 
    4797             : };
    4798             : 
    4799             : static const uint32_t GR64_TC_and_GR64_NOSP_and_GR64_TCW64SubClassMask[] = {
    4800             :   0x00000000, 0x00000000, 0x1210c400, 0x00000000, 
    4801             : };
    4802             : 
    4803             : static const uint32_t GR64_NOREX_NOSP_and_GR64_TCSubClassMask[] = {
    4804             :   0x00000000, 0x00000000, 0x3a50c800, 0x00000000, 
    4805             : };
    4806             : 
    4807             : static const uint32_t GR64_ABCDSubClassMask[] = {
    4808             :   0x00000000, 0x00000000, 0x1318d000, 0x00000000, 
    4809             : };
    4810             : 
    4811             : static const uint32_t GR64_NOREX_and_GR64_TCW64SubClassMask[] = {
    4812             :   0x00000000, 0x00000000, 0x1290e000, 0x00000000, 
    4813             : };
    4814             : 
    4815             : static const uint32_t GR64_with_sub_32bit_in_GR32_TCSubClassMask[] = {
    4816             :   0x00000000, 0x00000000, 0x1210c000, 0x00000000, 
    4817             : };
    4818             : 
    4819             : static const uint32_t GR64_ADSubClassMask[] = {
    4820             :   0x00000000, 0x00000000, 0x02008000, 0x00000000, 
    4821             : };
    4822             : 
    4823             : static const uint32_t GR64_and_LOW32_ADDR_ACCESS_RBPSubClassMask[] = {
    4824             :   0x00000000, 0x00000000, 0x04810000, 0x00000000, 
    4825             : };
    4826             : 
    4827             : static const uint32_t GR64_with_sub_32bit_in_GR32_BPSPSubClassMask[] = {
    4828             :   0x00000000, 0x00000000, 0x04020000, 0x00000000, 
    4829             : };
    4830             : 
    4831             : static const uint32_t GR64_with_sub_32bit_in_GR32_BSISubClassMask[] = {
    4832             :   0x00000000, 0x00000000, 0x09040000, 0x00000000, 
    4833             : };
    4834             : 
    4835             : static const uint32_t GR64_with_sub_32bit_in_GR32_CBSubClassMask[] = {
    4836             :   0x00000000, 0x00000000, 0x11080000, 0x00000000, 
    4837             : };
    4838             : 
    4839             : static const uint32_t GR64_with_sub_32bit_in_GR32_DCSubClassMask[] = {
    4840             :   0x00000000, 0x00000000, 0x12100000, 0x00000000, 
    4841             : };
    4842             : 
    4843             : static const uint32_t GR64_with_sub_32bit_in_GR32_DIBPSubClassMask[] = {
    4844             :   0x00000000, 0x00000000, 0x24200000, 0x00000000, 
    4845             : };
    4846             : 
    4847             : static const uint32_t GR64_with_sub_32bit_in_GR32_SIDISubClassMask[] = {
    4848             :   0x00000000, 0x00000000, 0x28400000, 0x00000000, 
    4849             : };
    4850             : 
    4851             : static const uint32_t GR64_and_LOW32_ADDR_ACCESSSubClassMask[] = {
    4852             :   0x00000000, 0x00000000, 0x00800000, 0x00000000, 
    4853             : };
    4854             : 
    4855             : static const uint32_t GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSISubClassMask[] = {
    4856             :   0x00000000, 0x00000000, 0x01000000, 0x00000000, 
    4857             : };
    4858             : 
    4859             : static const uint32_t GR64_with_sub_32bit_in_GR32_AD_and_GR32_DCSubClassMask[] = {
    4860             :   0x00000000, 0x00000000, 0x02000000, 0x00000000, 
    4861             : };
    4862             : 
    4863             : static const uint32_t GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBPSubClassMask[] = {
    4864             :   0x00000000, 0x00000000, 0x04000000, 0x00000000, 
    4865             : };
    4866             : 
    4867             : static const uint32_t GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDISubClassMask[] = {
    4868             :   0x00000000, 0x00000000, 0x08000000, 0x00000000, 
    4869             : };
    4870             : 
    4871             : static const uint32_t GR64_with_sub_32bit_in_GR32_CB_and_GR32_DCSubClassMask[] = {
    4872             :   0x00000000, 0x00000000, 0x10000000, 0x00000000, 
    4873             : };
    4874             : 
    4875             : static const uint32_t GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDISubClassMask[] = {
    4876             :   0x00000000, 0x00000000, 0x20000000, 0x00000000, 
    4877             : };
    4878             : 
    4879             : static const uint32_t RSTSubClassMask[] = {
    4880             :   0x00000000, 0x00000000, 0x40000000, 0x00000000, 
    4881             : };
    4882             : 
    4883             : static const uint32_t RFP80SubClassMask[] = {
    4884             :   0x00000000, 0x00000000, 0x80000000, 0x00000000, 
    4885             : };
    4886             : 
    4887             : static const uint32_t VR128XSubClassMask[] = {
    4888             :   0x00000000, 0x00000000, 0x00000000, 0x0000000f, 
    4889             :   0x00000000, 0x00000000, 0x00000000, 0x00001fe0, // sub_xmm
    4890             : };
    4891             : 
    4892             : static const uint32_t VR128SubClassMask[] = {
    4893             :   0x00000000, 0x00000000, 0x00000000, 0x0000000e, 
    4894             :   0x00000000, 0x00000000, 0x00000000, 0x00001dc0, // sub_xmm
    4895             : };
    4896             : 
    4897             : static const uint32_t VR128HSubClassMask[] = {
    4898             :   0x00000000, 0x00000000, 0x00000000, 0x00000004, 
    4899             :   0x00000000, 0x00000000, 0x00000000, 0x00000880, // sub_xmm
    4900             : };
    4901             : 
    4902             : static const uint32_t VR128LSubClassMask[] = {
    4903             :   0x00000000, 0x00000000, 0x00000000, 0x00000008, 
    4904             :   0x00000000, 0x00000000, 0x00000000, 0x00001100, // sub_xmm
    4905             : };
    4906             : 
    4907             : static const uint32_t BNDRSubClassMask[] = {
    4908             :   0x00000000, 0x00000000, 0x00000000, 0x00000010, 
    4909             : };
    4910             : 
    4911             : static const uint32_t VR256XSubClassMask[] = {
    4912             :   0x00000000, 0x00000000, 0x00000000, 0x000001e0, 
    4913             :   0x00000000, 0x00000000, 0x00000000, 0x00001e00, // sub_ymm
    4914             : };
    4915             : 
    4916             : static const uint32_t VR256SubClassMask[] = {
    4917             :   0x00000000, 0x00000000, 0x00000000, 0x000001c0, 
    4918             :   0x00000000, 0x00000000, 0x00000000, 0x00001c00, // sub_ymm
    4919             : };
    4920             : 
    4921             : static const uint32_t VR256HSubClassMask[] = {
    4922             :   0x00000000, 0x00000000, 0x00000000, 0x00000080, 
    4923             :   0x00000000, 0x00000000, 0x00000000, 0x00000800, // sub_ymm
    4924             : };
    4925             : 
    4926             : static const uint32_t VR256LSubClassMask[] = {
    4927             :   0x00000000, 0x00000000, 0x00000000, 0x00000100, 
    4928             :   0x00000000, 0x00000000, 0x00000000, 0x00001000, // sub_ymm
    4929             : };
    4930             : 
    4931             : static const uint32_t VR512SubClassMask[] = {
    4932             :   0x00000000, 0x00000000, 0x00000000, 0x00001e00, 
    4933             : };
    4934             : 
    4935             : static const uint32_t VR512_with_sub_xmm_in_FR32SubClassMask[] = {
    4936             :   0x00000000, 0x00000000, 0x00000000, 0x00001c00, 
    4937             : };
    4938             : 
    4939             : static const uint32_t VR512_with_sub_xmm_in_VR128HSubClassMask[] = {
    4940             :   0x00000000, 0x00000000, 0x00000000, 0x00000800, 
    4941             : };
    4942             : 
    4943             : static const uint32_t VR512_with_sub_xmm_in_VR128LSubClassMask[] = {
    4944             :   0x00000000, 0x00000000, 0x00000000, 0x00001000, 
    4945             : };
    4946             : 
    4947             : static const uint16_t SuperRegIdxSeqs[] = {
    4948             :   /* 0 */ 1, 0,
    4949             :   /* 2 */ 1, 2, 0,
    4950             :   /* 5 */ 4, 0,
    4951             :   /* 7 */ 6, 0,
    4952             :   /* 9 */ 7, 0,
    4953             :   /* 11 */ 8, 0,
    4954             : };
    4955             : 
    4956             : static const TargetRegisterClass *const GR8_NOREXSuperclasses[] = {
    4957             :   &X86::GR8RegClass,
    4958             :   nullptr
    4959             : };
    4960             : 
    4961             : static const TargetRegisterClass *const GR8_ABCD_HSuperclasses[] = {
    4962             :   &X86::GR8RegClass,
    4963             :   &X86::GR8_NOREXRegClass,
    4964             :   nullptr
    4965             : };
    4966             : 
    4967             : static const TargetRegisterClass *const GR8_ABCD_LSuperclasses[] = {
    4968             :   &X86::GR8RegClass,
    4969             :   &X86::GR8_NOREXRegClass,
    4970             :   nullptr
    4971             : };
    4972             : 
    4973             : static const TargetRegisterClass *const GR16_NOREXSuperclasses[] = {
    4974             :   &X86::GR16RegClass,
    4975             :   nullptr
    4976             : };
    4977             : 
    4978             : static const TargetRegisterClass *const VK1Superclasses[] = {
    4979             :   &X86::VK16RegClass,
    4980             :   &X86::VK2RegClass,
    4981             :   &X86::VK4RegClass,
    4982             :   &X86::VK8RegClass,
    4983             :   nullptr
    4984             : };
    4985             : 
    4986             : static const TargetRegisterClass *const VK16Superclasses[] = {
    4987             :   &X86::VK1RegClass,
    4988             :   &X86::VK2RegClass,
    4989             :   &X86::VK4RegClass,
    4990             :   &X86::VK8RegClass,
    4991             :   nullptr
    4992             : };
    4993             : 
    4994             : static const TargetRegisterClass *const VK2Superclasses[] = {
    4995             :   &X86::VK1RegClass,
    4996             :   &X86::VK16RegClass,
    4997             :   &X86::VK4RegClass,
    4998             :   &X86::VK8RegClass,
    4999             :   nullptr
    5000             : };
    5001             : 
    5002             : static const TargetRegisterClass *const VK4Superclasses[] = {
    5003             :   &X86::VK1RegClass,
    5004             :   &X86::VK16RegClass,
    5005             :   &X86::VK2RegClass,
    5006             :   &X86::VK8RegClass,
    5007             :   nullptr
    5008             : };
    5009             : 
    5010             : static const TargetRegisterClass *const VK8Superclasses[] = {
    5011             :   &X86::VK1RegClass,
    5012             :   &X86::VK16RegClass,
    5013             :   &X86::VK2RegClass,
    5014             :   &X86::VK4RegClass,
    5015             :   nullptr
    5016             : };
    5017             : 
    5018             : static const TargetRegisterClass *const VK16WMSuperclasses[] = {
    5019             :   &X86::VK1RegClass,
    5020             :   &X86::VK16RegClass,
    5021             :   &X86::VK2RegClass,
    5022             :   &X86::VK4RegClass,
    5023             :   &X86::VK8RegClass,
    5024             :   &X86::VK1WMRegClass,
    5025             :   &X86::VK2WMRegClass,
    5026             :   &X86::VK4WMRegClass,
    5027             :   &X86::VK8WMRegClass,
    5028             :   nullptr
    5029             : };
    5030             : 
    5031             : static const TargetRegisterClass *const VK1WMSuperclasses[] = {
    5032             :   &X86::VK1RegClass,
    5033             :   &X86::VK16RegClass,
    5034             :   &X86::VK2RegClass,
    5035             :   &X86::VK4RegClass,
    5036             :   &X86::VK8RegClass,
    5037             :   &X86::VK16WMRegClass,
    5038             :   &X86::VK2WMRegClass,
    5039             :   &X86::VK4WMRegClass,
    5040             :   &X86::VK8WMRegClass,
    5041             :   nullptr
    5042             : };
    5043             : 
    5044             : static const TargetRegisterClass *const VK2WMSuperclasses[] = {
    5045             :   &X86::VK1RegClass,
    5046             :   &X86::VK16RegClass,
    5047             :   &X86::VK2RegClass,
    5048             :   &X86::VK4RegClass,
    5049             :   &X86::VK8RegClass,
    5050             :   &X86::VK16WMRegClass,
    5051             :   &X86::VK1WMRegClass,
    5052             :   &X86::VK4WMRegClass,
    5053             :   &X86::VK8WMRegClass,
    5054             :   nullptr
    5055             : };
    5056             : 
    5057             : static const TargetRegisterClass *const VK4WMSuperclasses[] = {
    5058             :   &X86::VK1RegClass,
    5059             :   &X86::VK16RegClass,
    5060             :   &X86::VK2RegClass,
    5061             :   &X86::VK4RegClass,
    5062             :   &X86::VK8RegClass,
    5063             :   &X86::VK16WMRegClass,
    5064             :   &X86::VK1WMRegClass,
    5065             :   &X86::VK2WMRegClass,
    5066             :   &X86::VK8WMRegClass,
    5067             :   nullptr
    5068             : };
    5069             : 
    5070             : static const TargetRegisterClass *const VK8WMSuperclasses[] = {
    5071             :   &X86::VK1RegClass,
    5072             :   &X86::VK16RegClass,
    5073             :   &X86::VK2RegClass,
    5074             :   &X86::VK4RegClass,
    5075             :   &X86::VK8RegClass,
    5076             :   &X86::VK16WMRegClass,
    5077             :   &X86::VK1WMRegClass,
    5078             :   &X86::VK2WMRegClass,
    5079             :   &X86::VK4WMRegClass,
    5080             :   nullptr
    5081             : };
    5082             : 
    5083             : static const TargetRegisterClass *const GR16_ABCDSuperclasses[] = {
    5084             :   &X86::GR16RegClass,
    5085             :   &X86::GR16_NOREXRegClass,
    5086             :   nullptr
    5087             : };
    5088             : 
    5089             : static const TargetRegisterClass *const LOW32_ADDR_ACCESSSuperclasses[] = {
    5090             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5091             :   nullptr
    5092             : };
    5093             : 
    5094             : static const TargetRegisterClass *const LOW32_ADDR_ACCESS_RBP_with_sub_8bitSuperclasses[] = {
    5095             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5096             :   nullptr
    5097             : };
    5098             : 
    5099             : static const TargetRegisterClass *const FR32Superclasses[] = {
    5100             :   &X86::FR32XRegClass,
    5101             :   nullptr
    5102             : };
    5103             : 
    5104             : static const TargetRegisterClass *const GR32Superclasses[] = {
    5105             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5106             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5107             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5108             :   nullptr
    5109             : };
    5110             : 
    5111             : static const TargetRegisterClass *const GR32_NOSPSuperclasses[] = {
    5112             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5113             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5114             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5115             :   &X86::GR32RegClass,
    5116             :   nullptr
    5117             : };
    5118             : 
    5119             : static const TargetRegisterClass *const LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXSuperclasses[] = {
    5120             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5121             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5122             :   nullptr
    5123             : };
    5124             : 
    5125             : static const TargetRegisterClass *const GR32_NOREXSuperclasses[] = {
    5126             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5127             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5128             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5129             :   &X86::GR32RegClass,
    5130             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5131             :   nullptr
    5132             : };
    5133             : 
    5134             : static const TargetRegisterClass *const VK32Superclasses[] = {
    5135             :   &X86::VK1RegClass,
    5136             :   &X86::VK16RegClass,
    5137             :   &X86::VK2RegClass,
    5138             :   &X86::VK4RegClass,
    5139             :   &X86::VK8RegClass,
    5140             :   nullptr
    5141             : };
    5142             : 
    5143             : static const TargetRegisterClass *const GR32_NOREX_NOSPSuperclasses[] = {
    5144             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5145             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5146             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5147             :   &X86::GR32RegClass,
    5148             :   &X86::GR32_NOSPRegClass,
    5149             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5150             :   &X86::GR32_NOREXRegClass,
    5151             :   nullptr
    5152             : };
    5153             : 
    5154             : static const TargetRegisterClass *const VK32WMSuperclasses[] = {
    5155             :   &X86::VK1RegClass,
    5156             :   &X86::VK16RegClass,
    5157             :   &X86::VK2RegClass,
    5158             :   &X86::VK4RegClass,
    5159             :   &X86::VK8RegClass,
    5160             :   &X86::VK16WMRegClass,
    5161             :   &X86::VK1WMRegClass,
    5162             :   &X86::VK2WMRegClass,
    5163             :   &X86::VK4WMRegClass,
    5164             :   &X86::VK8WMRegClass,
    5165             :   &X86::VK32RegClass,
    5166             :   nullptr
    5167             : };
    5168             : 
    5169             : static const TargetRegisterClass *const GR32_ABCDSuperclasses[] = {
    5170             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5171             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5172             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5173             :   &X86::GR32RegClass,
    5174             :   &X86::GR32_NOSPRegClass,
    5175             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5176             :   &X86::GR32_NOREXRegClass,
    5177             :   &X86::GR32_NOREX_NOSPRegClass,
    5178             :   nullptr
    5179             : };
    5180             : 
    5181             : static const TargetRegisterClass *const GR32_TCSuperclasses[] = {
    5182             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5183             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5184             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5185             :   &X86::GR32RegClass,
    5186             :   &X86::GR32_NOSPRegClass,
    5187             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5188             :   &X86::GR32_NOREXRegClass,
    5189             :   &X86::GR32_NOREX_NOSPRegClass,
    5190             :   &X86::GR32_ABCDRegClass,
    5191             :   nullptr
    5192             : };
    5193             : 
    5194             : static const TargetRegisterClass *const GR32_ADSuperclasses[] = {
    5195             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5196             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5197             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5198             :   &X86::GR32RegClass,
    5199             :   &X86::GR32_NOSPRegClass,
    5200             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5201             :   &X86::GR32_NOREXRegClass,
    5202             :   &X86::GR32_NOREX_NOSPRegClass,
    5203             :   &X86::GR32_ABCDRegClass,
    5204             :   &X86::GR32_TCRegClass,
    5205             :   nullptr
    5206             : };
    5207             : 
    5208             : static const TargetRegisterClass *const GR32_BPSPSuperclasses[] = {
    5209             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5210             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5211             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5212             :   &X86::GR32RegClass,
    5213             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5214             :   &X86::GR32_NOREXRegClass,
    5215             :   nullptr
    5216             : };
    5217             : 
    5218             : static const TargetRegisterClass *const GR32_BSISuperclasses[] = {
    5219             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5220             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5221             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5222             :   &X86::GR32RegClass,
    5223             :   &X86::GR32_NOSPRegClass,
    5224             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5225             :   &X86::GR32_NOREXRegClass,
    5226             :   &X86::GR32_NOREX_NOSPRegClass,
    5227             :   nullptr
    5228             : };
    5229             : 
    5230             : static const TargetRegisterClass *const GR32_CBSuperclasses[] = {
    5231             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5232             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5233             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5234             :   &X86::GR32RegClass,
    5235             :   &X86::GR32_NOSPRegClass,
    5236             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5237             :   &X86::GR32_NOREXRegClass,
    5238             :   &X86::GR32_NOREX_NOSPRegClass,
    5239             :   &X86::GR32_ABCDRegClass,
    5240             :   nullptr
    5241             : };
    5242             : 
    5243             : static const TargetRegisterClass *const GR32_DCSuperclasses[] = {
    5244             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5245             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5246             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5247             :   &X86::GR32RegClass,
    5248             :   &X86::GR32_NOSPRegClass,
    5249             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5250             :   &X86::GR32_NOREXRegClass,
    5251             :   &X86::GR32_NOREX_NOSPRegClass,
    5252             :   &X86::GR32_ABCDRegClass,
    5253             :   &X86::GR32_TCRegClass,
    5254             :   nullptr
    5255             : };
    5256             : 
    5257             : static const TargetRegisterClass *const GR32_DIBPSuperclasses[] = {
    5258             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5259             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5260             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5261             :   &X86::GR32RegClass,
    5262             :   &X86::GR32_NOSPRegClass,
    5263             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5264             :   &X86::GR32_NOREXRegClass,
    5265             :   &X86::GR32_NOREX_NOSPRegClass,
    5266             :   nullptr
    5267             : };
    5268             : 
    5269             : static const TargetRegisterClass *const GR32_SIDISuperclasses[] = {
    5270             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5271             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5272             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5273             :   &X86::GR32RegClass,
    5274             :   &X86::GR32_NOSPRegClass,
    5275             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5276             :   &X86::GR32_NOREXRegClass,
    5277             :   &X86::GR32_NOREX_NOSPRegClass,
    5278             :   nullptr
    5279             : };
    5280             : 
    5281             : static const TargetRegisterClass *const LOW32_ADDR_ACCESS_RBP_with_sub_32bitSuperclasses[] = {
    5282             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5283             :   nullptr
    5284             : };
    5285             : 
    5286             : static const TargetRegisterClass *const GR32_ABCD_and_GR32_BSISuperclasses[] = {
    5287             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5288             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5289             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5290             :   &X86::GR32RegClass,
    5291             :   &X86::GR32_NOSPRegClass,
    5292             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5293             :   &X86::GR32_NOREXRegClass,
    5294             :   &X86::GR32_NOREX_NOSPRegClass,
    5295             :   &X86::GR32_ABCDRegClass,
    5296             :   &X86::GR32_BSIRegClass,
    5297             :   &X86::GR32_CBRegClass,
    5298             :   nullptr
    5299             : };
    5300             : 
    5301             : static const TargetRegisterClass *const GR32_AD_and_GR32_DCSuperclasses[] = {
    5302             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5303             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5304             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5305             :   &X86::GR32RegClass,
    5306             :   &X86::GR32_NOSPRegClass,
    5307             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5308             :   &X86::GR32_NOREXRegClass,
    5309             :   &X86::GR32_NOREX_NOSPRegClass,
    5310             :   &X86::GR32_ABCDRegClass,
    5311             :   &X86::GR32_TCRegClass,
    5312             :   &X86::GR32_ADRegClass,
    5313             :   &X86::GR32_DCRegClass,
    5314             :   nullptr
    5315             : };
    5316             : 
    5317             : static const TargetRegisterClass *const GR32_BPSP_and_GR32_DIBPSuperclasses[] = {
    5318             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5319             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5320             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5321             :   &X86::GR32RegClass,
    5322             :   &X86::GR32_NOSPRegClass,
    5323             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5324             :   &X86::GR32_NOREXRegClass,
    5325             :   &X86::GR32_NOREX_NOSPRegClass,
    5326             :   &X86::GR32_BPSPRegClass,
    5327             :   &X86::GR32_DIBPRegClass,
    5328             :   nullptr
    5329             : };
    5330             : 
    5331             : static const TargetRegisterClass *const GR32_BSI_and_GR32_SIDISuperclasses[] = {
    5332             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5333             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5334             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5335             :   &X86::GR32RegClass,
    5336             :   &X86::GR32_NOSPRegClass,
    5337             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5338             :   &X86::GR32_NOREXRegClass,
    5339             :   &X86::GR32_NOREX_NOSPRegClass,
    5340             :   &X86::GR32_BSIRegClass,
    5341             :   &X86::GR32_SIDIRegClass,
    5342             :   nullptr
    5343             : };
    5344             : 
    5345             : static const TargetRegisterClass *const GR32_CB_and_GR32_DCSuperclasses[] = {
    5346             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5347             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5348             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5349             :   &X86::GR32RegClass,
    5350             :   &X86::GR32_NOSPRegClass,
    5351             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5352             :   &X86::GR32_NOREXRegClass,
    5353             :   &X86::GR32_NOREX_NOSPRegClass,
    5354             :   &X86::GR32_ABCDRegClass,
    5355             :   &X86::GR32_TCRegClass,
    5356             :   &X86::GR32_CBRegClass,
    5357             :   &X86::GR32_DCRegClass,
    5358             :   nullptr
    5359             : };
    5360             : 
    5361             : static const TargetRegisterClass *const GR32_DIBP_and_GR32_SIDISuperclasses[] = {
    5362             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5363             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5364             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5365             :   &X86::GR32RegClass,
    5366             :   &X86::GR32_NOSPRegClass,
    5367             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5368             :   &X86::GR32_NOREXRegClass,
    5369             :   &X86::GR32_NOREX_NOSPRegClass,
    5370             :   &X86::GR32_DIBPRegClass,
    5371             :   &X86::GR32_SIDIRegClass,
    5372             :   nullptr
    5373             : };
    5374             : 
    5375             : static const TargetRegisterClass *const LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitSuperclasses[] = {
    5376             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5377             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5378             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5379             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass,
    5380             :   nullptr
    5381             : };
    5382             : 
    5383             : static const TargetRegisterClass *const LOW32_ADDR_ACCESS_with_sub_32bitSuperclasses[] = {
    5384             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5385             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5386             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass,
    5387             :   nullptr
    5388             : };
    5389             : 
    5390             : static const TargetRegisterClass *const RFP64Superclasses[] = {
    5391             :   &X86::RFP32RegClass,
    5392             :   nullptr
    5393             : };
    5394             : 
    5395             : static const TargetRegisterClass *const FR64XSuperclasses[] = {
    5396             :   &X86::FR32XRegClass,
    5397             :   nullptr
    5398             : };
    5399             : 
    5400             : static const TargetRegisterClass *const FR64Superclasses[] = {
    5401             :   &X86::FR32XRegClass,
    5402             :   &X86::FR32RegClass,
    5403             :   &X86::FR64XRegClass,
    5404             :   nullptr
    5405             : };
    5406             : 
    5407             : static const TargetRegisterClass *const GR64_with_sub_8bitSuperclasses[] = {
    5408             :   &X86::GR64RegClass,
    5409             :   nullptr
    5410             : };
    5411             : 
    5412             : static const TargetRegisterClass *const GR64_NOSPSuperclasses[] = {
    5413             :   &X86::GR64RegClass,
    5414             :   &X86::GR64_with_sub_8bitRegClass,
    5415             :   nullptr
    5416             : };
    5417             : 
    5418             : static const TargetRegisterClass *const GR64_NOREXSuperclasses[] = {
    5419             :   &X86::GR64RegClass,
    5420             :   nullptr
    5421             : };
    5422             : 
    5423             : static const TargetRegisterClass *const GR64_TCSuperclasses[] = {
    5424             :   &X86::GR64RegClass,
    5425             :   nullptr
    5426             : };
    5427             : 
    5428             : static const TargetRegisterClass *const GR64_NOSP_and_GR64_TCSuperclasses[] = {
    5429             :   &X86::GR64RegClass,
    5430             :   &X86::GR64_with_sub_8bitRegClass,
    5431             :   &X86::GR64_NOSPRegClass,
    5432             :   &X86::GR64_TCRegClass,
    5433             :   nullptr
    5434             : };
    5435             : 
    5436             : static const TargetRegisterClass *const GR64_TCW64Superclasses[] = {
    5437             :   &X86::GR64RegClass,
    5438             :   nullptr
    5439             : };
    5440             : 
    5441             : static const TargetRegisterClass *const GR64_with_sub_16bit_in_GR16_NOREXSuperclasses[] = {
    5442             :   &X86::GR64RegClass,
    5443             :   &X86::GR64_with_sub_8bitRegClass,
    5444             :   &X86::GR64_NOREXRegClass,
    5445             :   nullptr
    5446             : };
    5447             : 
    5448             : static const TargetRegisterClass *const VK64Superclasses[] = {
    5449             :   &X86::VK1RegClass,
    5450             :   &X86::VK16RegClass,
    5451             :   &X86::VK2RegClass,
    5452             :   &X86::VK4RegClass,
    5453             :   &X86::VK8RegClass,
    5454             :   &X86::VK32RegClass,
    5455             :   nullptr
    5456             : };
    5457             : 
    5458             : static const TargetRegisterClass *const GR64_NOREX_NOSPSuperclasses[] = {
    5459             :   &X86::GR64RegClass,
    5460             :   &X86::GR64_with_sub_8bitRegClass,
    5461             :   &X86::GR64_NOSPRegClass,
    5462             :   &X86::GR64_NOREXRegClass,
    5463             :   &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    5464             :   nullptr
    5465             : };
    5466             : 
    5467             : static const TargetRegisterClass *const GR64_NOSP_and_GR64_TCW64Superclasses[] = {
    5468             :   &X86::GR64RegClass,
    5469             :   &X86::GR64_with_sub_8bitRegClass,
    5470             :   &X86::GR64_NOSPRegClass,
    5471             :   &X86::GR64_TCW64RegClass,
    5472             :   nullptr
    5473             : };
    5474             : 
    5475             : static const TargetRegisterClass *const GR64_TC_and_GR64_TCW64Superclasses[] = {
    5476             :   &X86::GR64RegClass,
    5477             :   &X86::GR64_TCRegClass,
    5478             :   &X86::GR64_TCW64RegClass,
    5479             :   nullptr
    5480             : };
    5481             : 
    5482             : static const TargetRegisterClass *const VK64WMSuperclasses[] = {
    5483             :   &X86::VK1RegClass,
    5484             :   &X86::VK16RegClass,
    5485             :   &X86::VK2RegClass,
    5486             :   &X86::VK4RegClass,
    5487             :   &X86::VK8RegClass,
    5488             :   &X86::VK16WMRegClass,
    5489             :   &X86::VK1WMRegClass,
    5490             :   &X86::VK2WMRegClass,
    5491             :   &X86::VK4WMRegClass,
    5492             :   &X86::VK8WMRegClass,
    5493             :   &X86::VK32RegClass,
    5494             :   &X86::VK32WMRegClass,
    5495             :   &X86::VK64RegClass,
    5496             :   nullptr
    5497             : };
    5498             : 
    5499             : static const TargetRegisterClass *const GR64_NOREX_and_GR64_TCSuperclasses[] = {
    5500             :   &X86::GR64RegClass,
    5501             :   &X86::GR64_NOREXRegClass,
    5502             :   &X86::GR64_TCRegClass,
    5503             :   nullptr
    5504             : };
    5505             : 
    5506             : static const TargetRegisterClass *const GR64_TC_and_GR64_NOSP_and_GR64_TCW64Superclasses[] = {
    5507             :   &X86::GR64RegClass,
    5508             :   &X86::GR64_with_sub_8bitRegClass,
    5509             :   &X86::GR64_NOSPRegClass,
    5510             :   &X86::GR64_TCRegClass,
    5511             :   &X86::GR64_NOSP_and_GR64_TCRegClass,
    5512             :   &X86::GR64_TCW64RegClass,
    5513             :   &X86::GR64_NOSP_and_GR64_TCW64RegClass,
    5514             :   &X86::GR64_TC_and_GR64_TCW64RegClass,
    5515             :   nullptr
    5516             : };
    5517             : 
    5518             : static const TargetRegisterClass *const GR64_NOREX_NOSP_and_GR64_TCSuperclasses[] = {
    5519             :   &X86::GR64RegClass,
    5520             :   &X86::GR64_with_sub_8bitRegClass,
    5521             :   &X86::GR64_NOSPRegClass,
    5522             :   &X86::GR64_NOREXRegClass,
    5523             :   &X86::GR64_TCRegClass,
    5524             :   &X86::GR64_NOSP_and_GR64_TCRegClass,
    5525             :   &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    5526             :   &X86::GR64_NOREX_NOSPRegClass,
    5527             :   &X86::GR64_NOREX_and_GR64_TCRegClass,
    5528             :   nullptr
    5529             : };
    5530             : 
    5531             : static const TargetRegisterClass *const GR64_ABCDSuperclasses[] = {
    5532             :   &X86::GR64RegClass,
    5533             :   &X86::GR64_with_sub_8bitRegClass,
    5534             :   &X86::GR64_NOSPRegClass,
    5535             :   &X86::GR64_NOREXRegClass,
    5536             :   &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    5537             :   &X86::GR64_NOREX_NOSPRegClass,
    5538             :   nullptr
    5539             : };
    5540             : 
    5541             : static const TargetRegisterClass *const GR64_NOREX_and_GR64_TCW64Superclasses[] = {
    5542             :   &X86::GR64RegClass,
    5543             :   &X86::GR64_NOREXRegClass,
    5544             :   &X86::GR64_TCRegClass,
    5545             :   &X86::GR64_TCW64RegClass,
    5546             :   &X86::GR64_TC_and_GR64_TCW64RegClass,
    5547             :   &X86::GR64_NOREX_and_GR64_TCRegClass,
    5548             :   nullptr
    5549             : };
    5550             : 
    5551             : static const TargetRegisterClass *const GR64_with_sub_32bit_in_GR32_TCSuperclasses[] = {
    5552             :   &X86::GR64RegClass,
    5553             :   &X86::GR64_with_sub_8bitRegClass,
    5554             :   &X86::GR64_NOSPRegClass,
    5555             :   &X86::GR64_NOREXRegClass,
    5556             :   &X86::GR64_TCRegClass,
    5557             :   &X86::GR64_NOSP_and_GR64_TCRegClass,
    5558             :   &X86::GR64_TCW64RegClass,
    5559             :   &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    5560             :   &X86::GR64_NOREX_NOSPRegClass,
    5561             :   &X86::GR64_NOSP_and_GR64_TCW64RegClass,
    5562             :   &X86::GR64_TC_and_GR64_TCW64RegClass,
    5563             :   &X86::GR64_NOREX_and_GR64_TCRegClass,
    5564             :   &X86::GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClass,
    5565             :   &X86::GR64_NOREX_NOSP_and_GR64_TCRegClass,
    5566             :   &X86::GR64_ABCDRegClass,
    5567             :   &X86::GR64_NOREX_and_GR64_TCW64RegClass,
    5568             :   nullptr
    5569             : };
    5570             : 
    5571             : static const TargetRegisterClass *const GR64_ADSuperclasses[] = {
    5572             :   &X86::GR64RegClass,
    5573             :   &X86::GR64_with_sub_8bitRegClass,
    5574             :   &X86::GR64_NOSPRegClass,
    5575             :   &X86::GR64_NOREXRegClass,
    5576             :   &X86::GR64_TCRegClass,
    5577             :   &X86::GR64_NOSP_and_GR64_TCRegClass,
    5578             :   &X86::GR64_TCW64RegClass,
    5579             :   &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    5580             :   &X86::GR64_NOREX_NOSPRegClass,
    5581             :   &X86::GR64_NOSP_and_GR64_TCW64RegClass,
    5582             :   &X86::GR64_TC_and_GR64_TCW64RegClass,
    5583             :   &X86::GR64_NOREX_and_GR64_TCRegClass,
    5584             :   &X86::GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClass,
    5585             :   &X86::GR64_NOREX_NOSP_and_GR64_TCRegClass,
    5586             :   &X86::GR64_ABCDRegClass,
    5587             :   &X86::GR64_NOREX_and_GR64_TCW64RegClass,
    5588             :   &X86::GR64_with_sub_32bit_in_GR32_TCRegClass,
    5589             :   nullptr
    5590             : };
    5591             : 
    5592             : static const TargetRegisterClass *const GR64_and_LOW32_ADDR_ACCESS_RBPSuperclasses[] = {
    5593             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5594             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass,
    5595             :   &X86::GR64RegClass,
    5596             :   &X86::GR64_NOREXRegClass,
    5597             :   nullptr
    5598             : };
    5599             : 
    5600             : static const TargetRegisterClass *const GR64_with_sub_32bit_in_GR32_BPSPSuperclasses[] = {
    5601             :   &X86::GR64RegClass,
    5602             :   &X86::GR64_with_sub_8bitRegClass,
    5603             :   &X86::GR64_NOREXRegClass,
    5604             :   &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    5605             :   nullptr
    5606             : };
    5607             : 
    5608             : static const TargetRegisterClass *const GR64_with_sub_32bit_in_GR32_BSISuperclasses[] = {
    5609             :   &X86::GR64RegClass,
    5610             :   &X86::GR64_with_sub_8bitRegClass,
    5611             :   &X86::GR64_NOSPRegClass,
    5612             :   &X86::GR64_NOREXRegClass,
    5613             :   &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    5614             :   &X86::GR64_NOREX_NOSPRegClass,
    5615             :   nullptr
    5616             : };
    5617             : 
    5618             : static const TargetRegisterClass *const GR64_with_sub_32bit_in_GR32_CBSuperclasses[] = {
    5619             :   &X86::GR64RegClass,
    5620             :   &X86::GR64_with_sub_8bitRegClass,
    5621             :   &X86::GR64_NOSPRegClass,
    5622             :   &X86::GR64_NOREXRegClass,
    5623             :   &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    5624             :   &X86::GR64_NOREX_NOSPRegClass,
    5625             :   &X86::GR64_ABCDRegClass,
    5626             :   nullptr
    5627             : };
    5628             : 
    5629             : static const TargetRegisterClass *const GR64_with_sub_32bit_in_GR32_DCSuperclasses[] = {
    5630             :   &X86::GR64RegClass,
    5631             :   &X86::GR64_with_sub_8bitRegClass,
    5632             :   &X86::GR64_NOSPRegClass,
    5633             :   &X86::GR64_NOREXRegClass,
    5634             :   &X86::GR64_TCRegClass,
    5635             :   &X86::GR64_NOSP_and_GR64_TCRegClass,
    5636             :   &X86::GR64_TCW64RegClass,
    5637             :   &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    5638             :   &X86::GR64_NOREX_NOSPRegClass,
    5639             :   &X86::GR64_NOSP_and_GR64_TCW64RegClass,
    5640             :   &X86::GR64_TC_and_GR64_TCW64RegClass,
    5641             :   &X86::GR64_NOREX_and_GR64_TCRegClass,
    5642             :   &X86::GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClass,
    5643             :   &X86::GR64_NOREX_NOSP_and_GR64_TCRegClass,
    5644             :   &X86::GR64_ABCDRegClass,
    5645             :   &X86::GR64_NOREX_and_GR64_TCW64RegClass,
    5646             :   &X86::GR64_with_sub_32bit_in_GR32_TCRegClass,
    5647             :   nullptr
    5648             : };
    5649             : 
    5650             : static const TargetRegisterClass *const GR64_with_sub_32bit_in_GR32_DIBPSuperclasses[] = {
    5651             :   &X86::GR64RegClass,
    5652             :   &X86::GR64_with_sub_8bitRegClass,
    5653             :   &X86::GR64_NOSPRegClass,
    5654             :   &X86::GR64_NOREXRegClass,
    5655             :   &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    5656             :   &X86::GR64_NOREX_NOSPRegClass,
    5657             :   nullptr
    5658             : };
    5659             : 
    5660             : static const TargetRegisterClass *const GR64_with_sub_32bit_in_GR32_SIDISuperclasses[] = {
    5661             :   &X86::GR64RegClass,
    5662             :   &X86::GR64_with_sub_8bitRegClass,
    5663             :   &X86::GR64_NOSPRegClass,
    5664             :   &X86::GR64_NOREXRegClass,
    5665             :   &X86::GR64_TCRegClass,
    5666             :   &X86::GR64_NOSP_and_GR64_TCRegClass,
    5667             :   &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    5668             :   &X86::GR64_NOREX_NOSPRegClass,
    5669             :   &X86::GR64_NOREX_and_GR64_TCRegClass,
    5670             :   &X86::GR64_NOREX_NOSP_and_GR64_TCRegClass,
    5671             :   nullptr
    5672             : };
    5673             : 
    5674             : static const TargetRegisterClass *const GR64_and_LOW32_ADDR_ACCESSSuperclasses[] = {
    5675             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5676             :   &X86::LOW32_ADDR_ACCESSRegClass,
    5677             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass,
    5678             :   &X86::LOW32_ADDR_ACCESS_with_sub_32bitRegClass,
    5679             :   &X86::GR64RegClass,
    5680             :   &X86::GR64_NOREXRegClass,
    5681             :   &X86::GR64_TCRegClass,
    5682             :   &X86::GR64_TCW64RegClass,
    5683             :   &X86::GR64_TC_and_GR64_TCW64RegClass,
    5684             :   &X86::GR64_NOREX_and_GR64_TCRegClass,
    5685             :   &X86::GR64_NOREX_and_GR64_TCW64RegClass,
    5686             :   &X86::GR64_and_LOW32_ADDR_ACCESS_RBPRegClass,
    5687             :   nullptr
    5688             : };
    5689             : 
    5690             : static const TargetRegisterClass *const GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSISuperclasses[] = {
    5691             :   &X86::GR64RegClass,
    5692             :   &X86::GR64_with_sub_8bitRegClass,
    5693             :   &X86::GR64_NOSPRegClass,
    5694             :   &X86::GR64_NOREXRegClass,
    5695             :   &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    5696             :   &X86::GR64_NOREX_NOSPRegClass,
    5697             :   &X86::GR64_ABCDRegClass,
    5698             :   &X86::GR64_with_sub_32bit_in_GR32_BSIRegClass,
    5699             :   &X86::GR64_with_sub_32bit_in_GR32_CBRegClass,
    5700             :   nullptr
    5701             : };
    5702             : 
    5703             : static const TargetRegisterClass *const GR64_with_sub_32bit_in_GR32_AD_and_GR32_DCSuperclasses[] = {
    5704             :   &X86::GR64RegClass,
    5705             :   &X86::GR64_with_sub_8bitRegClass,
    5706             :   &X86::GR64_NOSPRegClass,
    5707             :   &X86::GR64_NOREXRegClass,
    5708             :   &X86::GR64_TCRegClass,
    5709             :   &X86::GR64_NOSP_and_GR64_TCRegClass,
    5710             :   &X86::GR64_TCW64RegClass,
    5711             :   &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    5712             :   &X86::GR64_NOREX_NOSPRegClass,
    5713             :   &X86::GR64_NOSP_and_GR64_TCW64RegClass,
    5714             :   &X86::GR64_TC_and_GR64_TCW64RegClass,
    5715             :   &X86::GR64_NOREX_and_GR64_TCRegClass,
    5716             :   &X86::GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClass,
    5717             :   &X86::GR64_NOREX_NOSP_and_GR64_TCRegClass,
    5718             :   &X86::GR64_ABCDRegClass,
    5719             :   &X86::GR64_NOREX_and_GR64_TCW64RegClass,
    5720             :   &X86::GR64_with_sub_32bit_in_GR32_TCRegClass,
    5721             :   &X86::GR64_ADRegClass,
    5722             :   &X86::GR64_with_sub_32bit_in_GR32_DCRegClass,
    5723             :   nullptr
    5724             : };
    5725             : 
    5726             : static const TargetRegisterClass *const GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBPSuperclasses[] = {
    5727             :   &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    5728             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    5729             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    5730             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass,
    5731             :   &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitRegClass,
    5732             :   &X86::GR64RegClass,
    5733             :   &X86::GR64_with_sub_8bitRegClass,
    5734             :   &X86::GR64_NOSPRegClass,
    5735             :   &X86::GR64_NOREXRegClass,
    5736             :   &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    5737             :   &X86::GR64_NOREX_NOSPRegClass,
    5738             :   &X86::GR64_and_LOW32_ADDR_ACCESS_RBPRegClass,
    5739             :   &X86::GR64_with_sub_32bit_in_GR32_BPSPRegClass,
    5740             :   &X86::GR64_with_sub_32bit_in_GR32_DIBPRegClass,
    5741             :   nullptr
    5742             : };
    5743             : 
    5744             : static const TargetRegisterClass *const GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDISuperclasses[] = {
    5745             :   &X86::GR64RegClass,
    5746             :   &X86::GR64_with_sub_8bitRegClass,
    5747             :   &X86::GR64_NOSPRegClass,
    5748             :   &X86::GR64_NOREXRegClass,
    5749             :   &X86::GR64_TCRegClass,
    5750             :   &X86::GR64_NOSP_and_GR64_TCRegClass,
    5751             :   &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    5752             :   &X86::GR64_NOREX_NOSPRegClass,
    5753             :   &X86::GR64_NOREX_and_GR64_TCRegClass,
    5754             :   &X86::GR64_NOREX_NOSP_and_GR64_TCRegClass,
    5755             :   &X86::GR64_with_sub_32bit_in_GR32_BSIRegClass,
    5756             :   &X86::GR64_with_sub_32bit_in_GR32_SIDIRegClass,
    5757             :   nullptr
    5758             : };
    5759             : 
    5760             : static const TargetRegisterClass *const GR64_with_sub_32bit_in_GR32_CB_and_GR32_DCSuperclasses[] = {
    5761             :   &X86::GR64RegClass,
    5762             :   &X86::GR64_with_sub_8bitRegClass,
    5763             :   &X86::GR64_NOSPRegClass,
    5764             :   &X86::GR64_NOREXRegClass,
    5765             :   &X86::GR64_TCRegClass,
    5766             :   &X86::GR64_NOSP_and_GR64_TCRegClass,
    5767             :   &X86::GR64_TCW64RegClass,
    5768             :   &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    5769             :   &X86::GR64_NOREX_NOSPRegClass,
    5770             :   &X86::GR64_NOSP_and_GR64_TCW64RegClass,
    5771             :   &X86::GR64_TC_and_GR64_TCW64RegClass,
    5772             :   &X86::GR64_NOREX_and_GR64_TCRegClass,
    5773             :   &X86::GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClass,
    5774             :   &X86::GR64_NOREX_NOSP_and_GR64_TCRegClass,
    5775             :   &X86::GR64_ABCDRegClass,
    5776             :   &X86::GR64_NOREX_and_GR64_TCW64RegClass,
    5777             :   &X86::GR64_with_sub_32bit_in_GR32_TCRegClass,
    5778             :   &X86::GR64_with_sub_32bit_in_GR32_CBRegClass,
    5779             :   &X86::GR64_with_sub_32bit_in_GR32_DCRegClass,
    5780             :   nullptr
    5781             : };
    5782             : 
    5783             : static const TargetRegisterClass *const GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDISuperclasses[] = {
    5784             :   &X86::GR64RegClass,
    5785             :   &X86::GR64_with_sub_8bitRegClass,
    5786             :   &X86::GR64_NOSPRegClass,
    5787             :   &X86::GR64_NOREXRegClass,
    5788             :   &X86::GR64_TCRegClass,
    5789             :   &X86::GR64_NOSP_and_GR64_TCRegClass,
    5790             :   &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    5791             :   &X86::GR64_NOREX_NOSPRegClass,
    5792             :   &X86::GR64_NOREX_and_GR64_TCRegClass,
    5793             :   &X86::GR64_NOREX_NOSP_and_GR64_TCRegClass,
    5794             :   &X86::GR64_with_sub_32bit_in_GR32_DIBPRegClass,
    5795             :   &X86::GR64_with_sub_32bit_in_GR32_SIDIRegClass,
    5796             :   nullptr
    5797             : };
    5798             : 
    5799             : static const TargetRegisterClass *const RFP80Superclasses[] = {
    5800             :   &X86::RFP32RegClass,
    5801             :   &X86::RFP64RegClass,
    5802             :   nullptr
    5803             : };
    5804             : 
    5805             : static const TargetRegisterClass *const VR128XSuperclasses[] = {
    5806             :   &X86::FR32XRegClass,
    5807             :   &X86::FR64XRegClass,
    5808             :   nullptr
    5809             : };
    5810             : 
    5811             : static const TargetRegisterClass *const VR128Superclasses[] = {
    5812             :   &X86::FR32XRegClass,
    5813             :   &X86::FR32RegClass,
    5814             :   &X86::FR64XRegClass,
    5815             :   &X86::FR64RegClass,
    5816             :   &X86::VR128XRegClass,
    5817             :   nullptr
    5818             : };
    5819             : 
    5820             : static const TargetRegisterClass *const VR128HSuperclasses[] = {
    5821             :   &X86::FR32XRegClass,
    5822             :   &X86::FR32RegClass,
    5823             :   &X86::FR64XRegClass,
    5824             :   &X86::FR64RegClass,
    5825             :   &X86::VR128XRegClass,
    5826             :   &X86::VR128RegClass,
    5827             :   nullptr
    5828             : };
    5829             : 
    5830             : static const TargetRegisterClass *const VR128LSuperclasses[] = {
    5831             :   &X86::FR32XRegClass,
    5832             :   &X86::FR32RegClass,
    5833             :   &X86::FR64XRegClass,
    5834             :   &X86::FR64RegClass,
    5835             :   &X86::VR128XRegClass,
    5836             :   &X86::VR128RegClass,
    5837             :   nullptr
    5838             : };
    5839             : 
    5840             : static const TargetRegisterClass *const VR256Superclasses[] = {
    5841             :   &X86::VR256XRegClass,
    5842             :   nullptr
    5843             : };
    5844             : 
    5845             : static const TargetRegisterClass *const VR256HSuperclasses[] = {
    5846             :   &X86::VR256XRegClass,
    5847             :   &X86::VR256RegClass,
    5848             :   nullptr
    5849             : };
    5850             : 
    5851             : static const TargetRegisterClass *const VR256LSuperclasses[] = {
    5852             :   &X86::VR256XRegClass,
    5853             :   &X86::VR256RegClass,
    5854             :   nullptr
    5855             : };
    5856             : 
    5857             : static const TargetRegisterClass *const VR512_with_sub_xmm_in_FR32Superclasses[] = {
    5858             :   &X86::VR512RegClass,
    5859             :   nullptr
    5860             : };
    5861             : 
    5862             : static const TargetRegisterClass *const VR512_with_sub_xmm_in_VR128HSuperclasses[] = {
    5863             :   &X86::VR512RegClass,
    5864             :   &X86::VR512_with_sub_xmm_in_FR32RegClass,
    5865             :   nullptr
    5866             : };
    5867             : 
    5868             : static const TargetRegisterClass *const VR512_with_sub_xmm_in_VR128LSuperclasses[] = {
    5869             :   &X86::VR512RegClass,
    5870             :   &X86::VR512_with_sub_xmm_in_FR32RegClass,
    5871             :   nullptr
    5872             : };
    5873             : 
    5874             : 
    5875             : static inline unsigned GR8AltOrderSelect(const MachineFunction &MF) {
    5876       37278 :     return MF.getSubtarget<X86Subtarget>().is64Bit();
    5877             :   }
    5878             : 
    5879       37278 : static ArrayRef<MCPhysReg> GR8GetRawAllocationOrder(const MachineFunction &MF) {
    5880             :   static const MCPhysReg AltOrder1[] = { X86::AL, X86::CL, X86::DL, X86::BL, X86::SIL, X86::DIL, X86::BPL, X86::SPL, X86::R8B, X86::R9B, X86::R10B, X86::R11B, X86::R14B, X86::R15B, X86::R12B, X86::R13B };
    5881             :   const MCRegisterClass &MCR = X86MCRegisterClasses[X86::GR8RegClassID];
    5882             :   const ArrayRef<MCPhysReg> Order[] = {
    5883       37278 :     makeArrayRef(MCR.begin(), MCR.getNumRegs()),
    5884       37278 :     makeArrayRef(AltOrder1)
    5885             :   };
    5886             :   const unsigned Select = GR8AltOrderSelect(MF);
    5887             :   assert(Select < 2);
    5888       37278 :   return Order[Select];
    5889             : }
    5890             : 
    5891             : static inline unsigned GR8_NOREXAltOrderSelect(const MachineFunction &MF) {
    5892        7318 :     return MF.getSubtarget<X86Subtarget>().is64Bit();
    5893             :   }
    5894             : 
    5895        7318 : static ArrayRef<MCPhysReg> GR8_NOREXGetRawAllocationOrder(const MachineFunction &MF) {
    5896             :   static const MCPhysReg AltOrder1[] = { X86::AL, X86::CL, X86::DL, X86::BL };
    5897             :   const MCRegisterClass &MCR = X86MCRegisterClasses[X86::GR8_NOREXRegClassID];
    5898             :   const ArrayRef<MCPhysReg> Order[] = {
    5899        7318 :     makeArrayRef(MCR.begin(), MCR.getNumRegs()),
    5900        7318 :     makeArrayRef(AltOrder1)
    5901             :   };
    5902             :   const unsigned Select = GR8_NOREXAltOrderSelect(MF);
    5903             :   assert(Select < 2);
    5904        7318 :   return Order[Select];
    5905             : }
    5906             : 
    5907             : namespace X86 {   // Register class instances
    5908             :   extern const TargetRegisterClass GR8RegClass = {
    5909             :     &X86MCRegisterClasses[GR8RegClassID],
    5910             :     GR8SubClassMask,
    5911             :     SuperRegIdxSeqs + 2,
    5912             :     LaneBitmask(0x00000001),
    5913             :     0,
    5914             :     false, /* HasDisjunctSubRegs */
    5915             :     false, /* CoveredBySubRegs */
    5916             :     NullRegClasses,
    5917             :     GR8GetRawAllocationOrder
    5918             :   };
    5919             : 
    5920             :   extern const TargetRegisterClass GRH8RegClass = {
    5921             :     &X86MCRegisterClasses[GRH8RegClassID],
    5922             :     GRH8SubClassMask,
    5923             :     SuperRegIdxSeqs + 1,
    5924             :     LaneBitmask(0x00000001),
    5925             :     0,
    5926             :     false, /* HasDisjunctSubRegs */
    5927             :     false, /* CoveredBySubRegs */
    5928             :     NullRegClasses,
    5929             :     nullptr
    5930             :   };
    5931             : 
    5932             :   extern const TargetRegisterClass GR8_NOREXRegClass = {
    5933             :     &X86MCRegisterClasses[GR8_NOREXRegClassID],
    5934             :     GR8_NOREXSubClassMask,
    5935             :     SuperRegIdxSeqs + 2,
    5936             :     LaneBitmask(0x00000001),
    5937             :     0,
    5938             :     false, /* HasDisjunctSubRegs */
    5939             :     false, /* CoveredBySubRegs */
    5940             :     GR8_NOREXSuperclasses,
    5941             :     GR8_NOREXGetRawAllocationOrder
    5942             :   };
    5943             : 
    5944             :   extern const TargetRegisterClass GR8_ABCD_HRegClass = {
    5945             :     &X86MCRegisterClasses[GR8_ABCD_HRegClassID],
    5946             :     GR8_ABCD_HSubClassMask,
    5947             :     SuperRegIdxSeqs + 3,
    5948             :     LaneBitmask(0x00000001),
    5949             :     0,
    5950             :     false, /* HasDisjunctSubRegs */
    5951             :     false, /* CoveredBySubRegs */
    5952             :     GR8_ABCD_HSuperclasses,
    5953             :     nullptr
    5954             :   };
    5955             : 
    5956             :   extern const TargetRegisterClass GR8_ABCD_LRegClass = {
    5957             :     &X86MCRegisterClasses[GR8_ABCD_LRegClassID],
    5958             :     GR8_ABCD_LSubClassMask,
    5959             :     SuperRegIdxSeqs + 0,
    5960             :     LaneBitmask(0x00000001),
    5961             :     0,
    5962             :     false, /* HasDisjunctSubRegs */
    5963             :     false, /* CoveredBySubRegs */
    5964             :     GR8_ABCD_LSuperclasses,
    5965             :     nullptr
    5966             :   };
    5967             : 
    5968             :   extern const TargetRegisterClass GRH16RegClass = {
    5969             :     &X86MCRegisterClasses[GRH16RegClassID],
    5970             :     GRH16SubClassMask,
    5971             :     SuperRegIdxSeqs + 1,
    5972             :     LaneBitmask(0x00000001),
    5973             :     0,
    5974             :     false, /* HasDisjunctSubRegs */
    5975             :     false, /* CoveredBySubRegs */
    5976             :     NullRegClasses,
    5977             :     nullptr
    5978             :   };
    5979             : 
    5980             :   extern const TargetRegisterClass GR16RegClass = {
    5981             :     &X86MCRegisterClasses[GR16RegClassID],
    5982             :     GR16SubClassMask,
    5983             :     SuperRegIdxSeqs + 5,
    5984             :     LaneBitmask(0x00000003),
    5985             :     0,
    5986             :     true, /* HasDisjunctSubRegs */
    5987             :     true, /* CoveredBySubRegs */
    5988             :     NullRegClasses,
    5989             :     nullptr
    5990             :   };
    5991             : 
    5992             :   extern const TargetRegisterClass GR16_NOREXRegClass = {
    5993             :     &X86MCRegisterClasses[GR16_NOREXRegClassID],
    5994             :     GR16_NOREXSubClassMask,
    5995             :     SuperRegIdxSeqs + 5,
    5996             :     LaneBitmask(0x00000003),
    5997             :     0,
    5998             :     true, /* HasDisjunctSubRegs */
    5999             :     true, /* CoveredBySubRegs */
    6000             :     GR16_NOREXSuperclasses,
    6001             :     nullptr
    6002             :   };
    6003             : 
    6004             :   extern const TargetRegisterClass VK1RegClass = {
    6005             :     &X86MCRegisterClasses[VK1RegClassID],
    6006             :     VK1SubClassMask,
    6007             :     SuperRegIdxSeqs + 1,
    6008             :     LaneBitmask(0x00000001),
    6009             :     0,
    6010             :     false, /* HasDisjunctSubRegs */
    6011             :     false, /* CoveredBySubRegs */
    6012             :     VK1Superclasses,
    6013             :     nullptr
    6014             :   };
    6015             : 
    6016             :   extern const TargetRegisterClass VK16RegClass = {
    6017             :     &X86MCRegisterClasses[VK16RegClassID],
    6018             :     VK16SubClassMask,
    6019             :     SuperRegIdxSeqs + 1,
    6020             :     LaneBitmask(0x00000001),
    6021             :     0,
    6022             :     false, /* HasDisjunctSubRegs */
    6023             :     false, /* CoveredBySubRegs */
    6024             :     VK16Superclasses,
    6025             :     nullptr
    6026             :   };
    6027             : 
    6028             :   extern const TargetRegisterClass VK2RegClass = {
    6029             :     &X86MCRegisterClasses[VK2RegClassID],
    6030             :     VK2SubClassMask,
    6031             :     SuperRegIdxSeqs + 1,
    6032             :     LaneBitmask(0x00000001),
    6033             :     0,
    6034             :     false, /* HasDisjunctSubRegs */
    6035             :     false, /* CoveredBySubRegs */
    6036             :     VK2Superclasses,
    6037             :     nullptr
    6038             :   };
    6039             : 
    6040             :   extern const TargetRegisterClass VK4RegClass = {
    6041             :     &X86MCRegisterClasses[VK4RegClassID],
    6042             :     VK4SubClassMask,
    6043             :     SuperRegIdxSeqs + 1,
    6044             :     LaneBitmask(0x00000001),
    6045             :     0,
    6046             :     false, /* HasDisjunctSubRegs */
    6047             :     false, /* CoveredBySubRegs */
    6048             :     VK4Superclasses,
    6049             :     nullptr
    6050             :   };
    6051             : 
    6052             :   extern const TargetRegisterClass VK8RegClass = {
    6053             :     &X86MCRegisterClasses[VK8RegClassID],
    6054             :     VK8SubClassMask,
    6055             :     SuperRegIdxSeqs + 1,
    6056             :     LaneBitmask(0x00000001),
    6057             :     0,
    6058             :     false, /* HasDisjunctSubRegs */
    6059             :     false, /* CoveredBySubRegs */
    6060             :     VK8Superclasses,
    6061             :     nullptr
    6062             :   };
    6063             : 
    6064             :   extern const TargetRegisterClass VK16WMRegClass = {
    6065             :     &X86MCRegisterClasses[VK16WMRegClassID],
    6066             :     VK16WMSubClassMask,
    6067             :     SuperRegIdxSeqs + 1,
    6068             :     LaneBitmask(0x00000001),
    6069             :     0,
    6070             :     false, /* HasDisjunctSubRegs */
    6071             :     false, /* CoveredBySubRegs */
    6072             :     VK16WMSuperclasses,
    6073             :     nullptr
    6074             :   };
    6075             : 
    6076             :   extern const TargetRegisterClass VK1WMRegClass = {
    6077             :     &X86MCRegisterClasses[VK1WMRegClassID],
    6078             :     VK1WMSubClassMask,
    6079             :     SuperRegIdxSeqs + 1,
    6080             :     LaneBitmask(0x00000001),
    6081             :     0,
    6082             :     false, /* HasDisjunctSubRegs */
    6083             :     false, /* CoveredBySubRegs */
    6084             :     VK1WMSuperclasses,
    6085             :     nullptr
    6086             :   };
    6087             : 
    6088             :   extern const TargetRegisterClass VK2WMRegClass = {
    6089             :     &X86MCRegisterClasses[VK2WMRegClassID],
    6090             :     VK2WMSubClassMask,
    6091             :     SuperRegIdxSeqs + 1,
    6092             :     LaneBitmask(0x00000001),
    6093             :     0,
    6094             :     false, /* HasDisjunctSubRegs */
    6095             :     false, /* CoveredBySubRegs */
    6096             :     VK2WMSuperclasses,
    6097             :     nullptr
    6098             :   };
    6099             : 
    6100             :   extern const TargetRegisterClass VK4WMRegClass = {
    6101             :     &X86MCRegisterClasses[VK4WMRegClassID],
    6102             :     VK4WMSubClassMask,
    6103             :     SuperRegIdxSeqs + 1,
    6104             :     LaneBitmask(0x00000001),
    6105             :     0,
    6106             :     false, /* HasDisjunctSubRegs */
    6107             :     false, /* CoveredBySubRegs */
    6108             :     VK4WMSuperclasses,
    6109             :     nullptr
    6110             :   };
    6111             : 
    6112             :   extern const TargetRegisterClass VK8WMRegClass = {
    6113             :     &X86MCRegisterClasses[VK8WMRegClassID],
    6114             :     VK8WMSubClassMask,
    6115             :     SuperRegIdxSeqs + 1,
    6116             :     LaneBitmask(0x00000001),
    6117             :     0,
    6118             :     false, /* HasDisjunctSubRegs */
    6119             :     false, /* CoveredBySubRegs */
    6120             :     VK8WMSuperclasses,
    6121             :     nullptr
    6122             :   };
    6123             : 
    6124             :   extern const TargetRegisterClass SEGMENT_REGRegClass = {
    6125             :     &X86MCRegisterClasses[SEGMENT_REGRegClassID],
    6126             :     SEGMENT_REGSubClassMask,
    6127             :     SuperRegIdxSeqs + 1,
    6128             :     LaneBitmask(0x00000001),
    6129             :     0,
    6130             :     false, /* HasDisjunctSubRegs */
    6131             :     false, /* CoveredBySubRegs */
    6132             :     NullRegClasses,
    6133             :     nullptr
    6134             :   };
    6135             : 
    6136             :   extern const TargetRegisterClass GR16_ABCDRegClass = {
    6137             :     &X86MCRegisterClasses[GR16_ABCDRegClassID],
    6138             :     GR16_ABCDSubClassMask,
    6139             :     SuperRegIdxSeqs + 5,
    6140             :     LaneBitmask(0x00000003),
    6141             :     0,
    6142             :     true, /* HasDisjunctSubRegs */
    6143             :     true, /* CoveredBySubRegs */
    6144             :     GR16_ABCDSuperclasses,
    6145             :     nullptr
    6146             :   };
    6147             : 
    6148             :   extern const TargetRegisterClass FPCCRRegClass = {
    6149             :     &X86MCRegisterClasses[FPCCRRegClassID],
    6150             :     FPCCRSubClassMask,
    6151             :     SuperRegIdxSeqs + 1,
    6152             :     LaneBitmask(0x00000001),
    6153             :     0,
    6154             :     false, /* HasDisjunctSubRegs */
    6155             :     false, /* CoveredBySubRegs */
    6156             :     NullRegClasses,
    6157             :     nullptr
    6158             :   };
    6159             : 
    6160             :   extern const TargetRegisterClass FR32XRegClass = {
    6161             :     &X86MCRegisterClasses[FR32XRegClassID],
    6162             :     FR32XSubClassMask,
    6163             :     SuperRegIdxSeqs + 9,
    6164             :     LaneBitmask(0x00000001),
    6165             :     0,
    6166             :     false, /* HasDisjunctSubRegs */
    6167             :     false, /* CoveredBySubRegs */
    6168             :     NullRegClasses,
    6169             :     nullptr
    6170             :   };
    6171             : 
    6172             :   extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBPRegClass = {
    6173             :     &X86MCRegisterClasses[LOW32_ADDR_ACCESS_RBPRegClassID],
    6174             :     LOW32_ADDR_ACCESS_RBPSubClassMask,
    6175             :     SuperRegIdxSeqs + 7,
    6176             :     LaneBitmask(0x0000000F),
    6177             :     0,
    6178             :     true, /* HasDisjunctSubRegs */
    6179             :     false, /* CoveredBySubRegs */
    6180             :     NullRegClasses,
    6181             :     nullptr
    6182             :   };
    6183             : 
    6184             :   extern const TargetRegisterClass LOW32_ADDR_ACCESSRegClass = {
    6185             :     &X86MCRegisterClasses[LOW32_ADDR_ACCESSRegClassID],
    6186             :     LOW32_ADDR_ACCESSSubClassMask,
    6187             :     SuperRegIdxSeqs + 7,
    6188             :     LaneBitmask(0x0000000F),
    6189             :     0,
    6190             :     true, /* HasDisjunctSubRegs */
    6191             :     false, /* CoveredBySubRegs */
    6192             :     LOW32_ADDR_ACCESSSuperclasses,
    6193             :     nullptr
    6194             :   };
    6195             : 
    6196             :   extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass = {
    6197             :     &X86MCRegisterClasses[LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID],
    6198             :     LOW32_ADDR_ACCESS_RBP_with_sub_8bitSubClassMask,
    6199             :     SuperRegIdxSeqs + 7,
    6200             :     LaneBitmask(0x0000000F),
    6201             :     0,
    6202             :     true, /* HasDisjunctSubRegs */
    6203             :     false, /* CoveredBySubRegs */
    6204             :     LOW32_ADDR_ACCESS_RBP_with_sub_8bitSuperclasses,
    6205             :     nullptr
    6206             :   };
    6207             : 
    6208             :   extern const TargetRegisterClass DEBUG_REGRegClass = {
    6209             :     &X86MCRegisterClasses[DEBUG_REGRegClassID],
    6210             :     DEBUG_REGSubClassMask,
    6211             :     SuperRegIdxSeqs + 1,
    6212             :     LaneBitmask(0x00000001),
    6213             :     0,
    6214             :     false, /* HasDisjunctSubRegs */
    6215             :     false, /* CoveredBySubRegs */
    6216             :     NullRegClasses,
    6217             :     nullptr
    6218             :   };
    6219             : 
    6220             :   extern const TargetRegisterClass FR32RegClass = {
    6221             :     &X86MCRegisterClasses[FR32RegClassID],
    6222             :     FR32SubClassMask,
    6223             :     SuperRegIdxSeqs + 9,
    6224             :     LaneBitmask(0x00000001),
    6225             :     0,
    6226             :     false, /* HasDisjunctSubRegs */
    6227             :     false, /* CoveredBySubRegs */
    6228             :     FR32Superclasses,
    6229             :     nullptr
    6230             :   };
    6231             : 
    6232             :   extern const TargetRegisterClass GR32RegClass = {
    6233             :     &X86MCRegisterClasses[GR32RegClassID],
    6234             :     GR32SubClassMask,
    6235             :     SuperRegIdxSeqs + 7,
    6236             :     LaneBitmask(0x00000007),
    6237             :     0,
    6238             :     true, /* HasDisjunctSubRegs */
    6239             :     true, /* CoveredBySubRegs */
    6240             :     GR32Superclasses,
    6241             :     nullptr
    6242             :   };
    6243             : 
    6244             :   extern const TargetRegisterClass GR32_NOSPRegClass = {
    6245             :     &X86MCRegisterClasses[GR32_NOSPRegClassID],
    6246             :     GR32_NOSPSubClassMask,
    6247             :     SuperRegIdxSeqs + 7,
    6248             :     LaneBitmask(0x00000007),
    6249             :     0,
    6250             :     true, /* HasDisjunctSubRegs */
    6251             :     true, /* CoveredBySubRegs */
    6252             :     GR32_NOSPSuperclasses,
    6253             :     nullptr
    6254             :   };
    6255             : 
    6256             :   extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass = {
    6257             :     &X86MCRegisterClasses[LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClassID],
    6258             :     LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXSubClassMask,
    6259             :     SuperRegIdxSeqs + 7,
    6260             :     LaneBitmask(0x0000000F),
    6261             :     0,
    6262             :     true, /* HasDisjunctSubRegs */
    6263             :     false, /* CoveredBySubRegs */
    6264             :     LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXSuperclasses,
    6265             :     nullptr
    6266             :   };
    6267             : 
    6268             :   extern const TargetRegisterClass GR32_NOREXRegClass = {
    6269             :     &X86MCRegisterClasses[GR32_NOREXRegClassID],
    6270             :     GR32_NOREXSubClassMask,
    6271             :     SuperRegIdxSeqs + 7,
    6272             :     LaneBitmask(0x00000007),
    6273             :     0,
    6274             :     true, /* HasDisjunctSubRegs */
    6275             :     true, /* CoveredBySubRegs */
    6276             :     GR32_NOREXSuperclasses,
    6277             :     nullptr
    6278             :   };
    6279             : 
    6280             :   extern const TargetRegisterClass VK32RegClass = {
    6281             :     &X86MCRegisterClasses[VK32RegClassID],
    6282             :     VK32SubClassMask,
    6283             :     SuperRegIdxSeqs + 1,
    6284             :     LaneBitmask(0x00000001),
    6285             :     0,
    6286             :     false, /* HasDisjunctSubRegs */
    6287             :     false, /* CoveredBySubRegs */
    6288             :     VK32Superclasses,
    6289             :     nullptr
    6290             :   };
    6291             : 
    6292             :   extern const TargetRegisterClass GR32_NOREX_NOSPRegClass = {
    6293             :     &X86MCRegisterClasses[GR32_NOREX_NOSPRegClassID],
    6294             :     GR32_NOREX_NOSPSubClassMask,
    6295             :     SuperRegIdxSeqs + 7,
    6296             :     LaneBitmask(0x00000007),
    6297             :     0,
    6298             :     true, /* HasDisjunctSubRegs */
    6299             :     true, /* CoveredBySubRegs */
    6300             :     GR32_NOREX_NOSPSuperclasses,
    6301             :     nullptr
    6302             :   };
    6303             : 
    6304             :   extern const TargetRegisterClass RFP32RegClass = {
    6305             :     &X86MCRegisterClasses[RFP32RegClassID],
    6306             :     RFP32SubClassMask,
    6307             :     SuperRegIdxSeqs + 1,
    6308             :     LaneBitmask(0x00000001),
    6309             :     0,
    6310             :     false, /* HasDisjunctSubRegs */
    6311             :     false, /* CoveredBySubRegs */
    6312             :     NullRegClasses,
    6313             :     nullptr
    6314             :   };
    6315             : 
    6316             :   extern const TargetRegisterClass VK32WMRegClass = {
    6317             :     &X86MCRegisterClasses[VK32WMRegClassID],
    6318             :     VK32WMSubClassMask,
    6319             :     SuperRegIdxSeqs + 1,
    6320             :     LaneBitmask(0x00000001),
    6321             :     0,
    6322             :     false, /* HasDisjunctSubRegs */
    6323             :     false, /* CoveredBySubRegs */
    6324             :     VK32WMSuperclasses,
    6325             :     nullptr
    6326             :   };
    6327             : 
    6328             :   extern const TargetRegisterClass GR32_ABCDRegClass = {
    6329             :     &X86MCRegisterClasses[GR32_ABCDRegClassID],
    6330             :     GR32_ABCDSubClassMask,
    6331             :     SuperRegIdxSeqs + 7,
    6332             :     LaneBitmask(0x00000007),
    6333             :     0,
    6334             :     true, /* HasDisjunctSubRegs */
    6335             :     true, /* CoveredBySubRegs */
    6336             :     GR32_ABCDSuperclasses,
    6337             :     nullptr
    6338             :   };
    6339             : 
    6340             :   extern const TargetRegisterClass GR32_TCRegClass = {
    6341             :     &X86MCRegisterClasses[GR32_TCRegClassID],
    6342             :     GR32_TCSubClassMask,
    6343             :     SuperRegIdxSeqs + 7,
    6344             :     LaneBitmask(0x00000007),
    6345             :     0,
    6346             :     true, /* HasDisjunctSubRegs */
    6347             :     true, /* CoveredBySubRegs */
    6348             :     GR32_TCSuperclasses,
    6349             :     nullptr
    6350             :   };
    6351             : 
    6352             :   extern const TargetRegisterClass GR32_ADRegClass = {
    6353             :     &X86MCRegisterClasses[GR32_ADRegClassID],
    6354             :     GR32_ADSubClassMask,
    6355             :     SuperRegIdxSeqs + 7,
    6356             :     LaneBitmask(0x00000007),
    6357             :     0,
    6358             :     true, /* HasDisjunctSubRegs */
    6359             :     true, /* CoveredBySubRegs */
    6360             :     GR32_ADSuperclasses,
    6361             :     nullptr
    6362             :   };
    6363             : 
    6364             :   extern const TargetRegisterClass GR32_BPSPRegClass = {
    6365             :     &X86MCRegisterClasses[GR32_BPSPRegClassID],
    6366             :     GR32_BPSPSubClassMask,
    6367             :     SuperRegIdxSeqs + 7,
    6368             :     LaneBitmask(0x00000007),
    6369             :     0,
    6370             :     true, /* HasDisjunctSubRegs */
    6371             :     true, /* CoveredBySubRegs */
    6372             :     GR32_BPSPSuperclasses,
    6373             :     nullptr
    6374             :   };
    6375             : 
    6376             :   extern const TargetRegisterClass GR32_BSIRegClass = {
    6377             :     &X86MCRegisterClasses[GR32_BSIRegClassID],
    6378             :     GR32_BSISubClassMask,
    6379             :     SuperRegIdxSeqs + 7,
    6380             :     LaneBitmask(0x00000007),
    6381             :     0,
    6382             :     true, /* HasDisjunctSubRegs */
    6383             :     true, /* CoveredBySubRegs */
    6384             :     GR32_BSISuperclasses,
    6385             :     nullptr
    6386             :   };
    6387             : 
    6388             :   extern const TargetRegisterClass GR32_CBRegClass = {
    6389             :     &X86MCRegisterClasses[GR32_CBRegClassID],
    6390             :     GR32_CBSubClassMask,
    6391             :     SuperRegIdxSeqs + 7,
    6392             :     LaneBitmask(0x00000007),
    6393             :     0,
    6394             :     true, /* HasDisjunctSubRegs */
    6395             :     true, /* CoveredBySubRegs */
    6396             :     GR32_CBSuperclasses,
    6397             :     nullptr
    6398             :   };
    6399             : 
    6400             :   extern const TargetRegisterClass GR32_DCRegClass = {
    6401             :     &X86MCRegisterClasses[GR32_DCRegClassID],
    6402             :     GR32_DCSubClassMask,
    6403             :     SuperRegIdxSeqs + 7,
    6404             :     LaneBitmask(0x00000007),
    6405             :     0,
    6406             :     true, /* HasDisjunctSubRegs */
    6407             :     true, /* CoveredBySubRegs */
    6408             :     GR32_DCSuperclasses,
    6409             :     nullptr
    6410             :   };
    6411             : 
    6412             :   extern const TargetRegisterClass GR32_DIBPRegClass = {
    6413             :     &X86MCRegisterClasses[GR32_DIBPRegClassID],
    6414             :     GR32_DIBPSubClassMask,
    6415             :     SuperRegIdxSeqs + 7,
    6416             :     LaneBitmask(0x00000007),
    6417             :     0,
    6418             :     true, /* HasDisjunctSubRegs */
    6419             :     true, /* CoveredBySubRegs */
    6420             :     GR32_DIBPSuperclasses,
    6421             :     nullptr
    6422             :   };
    6423             : 
    6424             :   extern const TargetRegisterClass GR32_SIDIRegClass = {
    6425             :     &X86MCRegisterClasses[GR32_SIDIRegClassID],
    6426             :     GR32_SIDISubClassMask,
    6427             :     SuperRegIdxSeqs + 7,
    6428             :     LaneBitmask(0x00000007),
    6429             :     0,
    6430             :     true, /* HasDisjunctSubRegs */
    6431             :     true, /* CoveredBySubRegs */
    6432             :     GR32_SIDISuperclasses,
    6433             :     nullptr
    6434             :   };
    6435             : 
    6436             :   extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass = {
    6437             :     &X86MCRegisterClasses[LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClassID],
    6438             :     LOW32_ADDR_ACCESS_RBP_with_sub_32bitSubClassMask,
    6439             :     SuperRegIdxSeqs + 1,
    6440             :     LaneBitmask(0x0000000F),
    6441             :     0,
    6442             :     true, /* HasDisjunctSubRegs */
    6443             :     false, /* CoveredBySubRegs */
    6444             :     LOW32_ADDR_ACCESS_RBP_with_sub_32bitSuperclasses,
    6445             :     nullptr
    6446             :   };
    6447             : 
    6448             :   extern const TargetRegisterClass CCRRegClass = {
    6449             :     &X86MCRegisterClasses[CCRRegClassID],
    6450             :     CCRSubClassMask,
    6451             :     SuperRegIdxSeqs + 1,
    6452             :     LaneBitmask(0x00000001),
    6453             :     0,
    6454             :     false, /* HasDisjunctSubRegs */
    6455             :     false, /* CoveredBySubRegs */
    6456             :     NullRegClasses,
    6457             :     nullptr
    6458             :   };
    6459             : 
    6460             :   extern const TargetRegisterClass DFCCRRegClass = {
    6461             :     &X86MCRegisterClasses[DFCCRRegClassID],
    6462             :     DFCCRSubClassMask,
    6463             :     SuperRegIdxSeqs + 1,
    6464             :     LaneBitmask(0x00000001),
    6465             :     0,
    6466             :     false, /* HasDisjunctSubRegs */
    6467             :     false, /* CoveredBySubRegs */
    6468             :     NullRegClasses,
    6469             :     nullptr
    6470             :   };
    6471             : 
    6472             :   extern const TargetRegisterClass GR32_ABCD_and_GR32_BSIRegClass = {
    6473             :     &X86MCRegisterClasses[GR32_ABCD_and_GR32_BSIRegClassID],
    6474             :     GR32_ABCD_and_GR32_BSISubClassMask,
    6475             :     SuperRegIdxSeqs + 7,
    6476             :     LaneBitmask(0x00000007),
    6477             :     0,
    6478             :     true, /* HasDisjunctSubRegs */
    6479             :     true, /* CoveredBySubRegs */
    6480             :     GR32_ABCD_and_GR32_BSISuperclasses,
    6481             :     nullptr
    6482             :   };
    6483             : 
    6484             :   extern const TargetRegisterClass GR32_AD_and_GR32_DCRegClass = {
    6485             :     &X86MCRegisterClasses[GR32_AD_and_GR32_DCRegClassID],
    6486             :     GR32_AD_and_GR32_DCSubClassMask,
    6487             :     SuperRegIdxSeqs + 7,
    6488             :     LaneBitmask(0x00000007),
    6489             :     0,
    6490             :     true, /* HasDisjunctSubRegs */
    6491             :     true, /* CoveredBySubRegs */
    6492             :     GR32_AD_and_GR32_DCSuperclasses,
    6493             :     nullptr
    6494             :   };
    6495             : 
    6496             :   extern const TargetRegisterClass GR32_BPSP_and_GR32_DIBPRegClass = {
    6497             :     &X86MCRegisterClasses[GR32_BPSP_and_GR32_DIBPRegClassID],
    6498             :     GR32_BPSP_and_GR32_DIBPSubClassMask,
    6499             :     SuperRegIdxSeqs + 7,
    6500             :     LaneBitmask(0x00000007),
    6501             :     0,
    6502             :     true, /* HasDisjunctSubRegs */
    6503             :     true, /* CoveredBySubRegs */
    6504             :     GR32_BPSP_and_GR32_DIBPSuperclasses,
    6505             :     nullptr
    6506             :   };
    6507             : 
    6508             :   extern const TargetRegisterClass GR32_BSI_and_GR32_SIDIRegClass = {
    6509             :     &X86MCRegisterClasses[GR32_BSI_and_GR32_SIDIRegClassID],
    6510             :     GR32_BSI_and_GR32_SIDISubClassMask,
    6511             :     SuperRegIdxSeqs + 7,
    6512             :     LaneBitmask(0x00000007),
    6513             :     0,
    6514             :     true, /* HasDisjunctSubRegs */
    6515             :     true, /* CoveredBySubRegs */
    6516             :     GR32_BSI_and_GR32_SIDISuperclasses,
    6517             :     nullptr
    6518             :   };
    6519             : 
    6520             :   extern const TargetRegisterClass GR32_CB_and_GR32_DCRegClass = {
    6521             :     &X86MCRegisterClasses[GR32_CB_and_GR32_DCRegClassID],
    6522             :     GR32_CB_and_GR32_DCSubClassMask,
    6523             :     SuperRegIdxSeqs + 7,
    6524             :     LaneBitmask(0x00000007),
    6525             :     0,
    6526             :     true, /* HasDisjunctSubRegs */
    6527             :     true, /* CoveredBySubRegs */
    6528             :     GR32_CB_and_GR32_DCSuperclasses,
    6529             :     nullptr
    6530             :   };
    6531             : 
    6532             :   extern const TargetRegisterClass GR32_DIBP_and_GR32_SIDIRegClass = {
    6533             :     &X86MCRegisterClasses[GR32_DIBP_and_GR32_SIDIRegClassID],
    6534             :     GR32_DIBP_and_GR32_SIDISubClassMask,
    6535             :     SuperRegIdxSeqs + 7,
    6536             :     LaneBitmask(0x00000007),
    6537             :     0,
    6538             :     true, /* HasDisjunctSubRegs */
    6539             :     true, /* CoveredBySubRegs */
    6540             :     GR32_DIBP_and_GR32_SIDISuperclasses,
    6541             :     nullptr
    6542             :   };
    6543             : 
    6544             :   extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitRegClass = {
    6545             :     &X86MCRegisterClasses[LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitRegClassID],
    6546             :     LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitSubClassMask,
    6547             :     SuperRegIdxSeqs + 1,
    6548             :     LaneBitmask(0x0000000F),
    6549             :     0,
    6550             :     true, /* HasDisjunctSubRegs */
    6551             :     false, /* CoveredBySubRegs */
    6552             :     LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitSuperclasses,
    6553             :     nullptr
    6554             :   };
    6555             : 
    6556             :   extern const TargetRegisterClass LOW32_ADDR_ACCESS_with_sub_32bitRegClass = {
    6557             :     &X86MCRegisterClasses[LOW32_ADDR_ACCESS_with_sub_32bitRegClassID],
    6558             :     LOW32_ADDR_ACCESS_with_sub_32bitSubClassMask,
    6559             :     SuperRegIdxSeqs + 1,
    6560             :     LaneBitmask(0x0000000F),
    6561             :     0,
    6562             :     true, /* HasDisjunctSubRegs */
    6563             :     false, /* CoveredBySubRegs */
    6564             :     LOW32_ADDR_ACCESS_with_sub_32bitSuperclasses,
    6565             :     nullptr
    6566             :   };
    6567             : 
    6568             :   extern const TargetRegisterClass RFP64RegClass = {
    6569             :     &X86MCRegisterClasses[RFP64RegClassID],
    6570             :     RFP64SubClassMask,
    6571             :     SuperRegIdxSeqs + 1,
    6572             :     LaneBitmask(0x00000001),
    6573             :     0,
    6574             :     false, /* HasDisjunctSubRegs */
    6575             :     false, /* CoveredBySubRegs */
    6576             :     RFP64Superclasses,
    6577             :     nullptr
    6578             :   };
    6579             : 
    6580             :   extern const TargetRegisterClass FR64XRegClass = {
    6581             :     &X86MCRegisterClasses[FR64XRegClassID],
    6582             :     FR64XSubClassMask,
    6583             :     SuperRegIdxSeqs + 9,
    6584             :     LaneBitmask(0x00000001),
    6585             :     0,
    6586             :     false, /* HasDisjunctSubRegs */
    6587             :     false, /* CoveredBySubRegs */
    6588             :     FR64XSuperclasses,
    6589             :     nullptr
    6590             :   };
    6591             : 
    6592             :   extern const TargetRegisterClass GR64RegClass = {
    6593             :     &X86MCRegisterClasses[GR64RegClassID],
    6594             :     GR64SubClassMask,
    6595             :     SuperRegIdxSeqs + 1,
    6596             :     LaneBitmask(0x0000000F),
    6597             :     0,
    6598             :     true, /* HasDisjunctSubRegs */
    6599             :     false, /* CoveredBySubRegs */
    6600             :     NullRegClasses,
    6601             :     nullptr
    6602             :   };
    6603             : 
    6604             :   extern const TargetRegisterClass CONTROL_REGRegClass = {
    6605             :     &X86MCRegisterClasses[CONTROL_REGRegClassID],
    6606             :     CONTROL_REGSubClassMask,
    6607             :     SuperRegIdxSeqs + 1,
    6608             :     LaneBitmask(0x00000001),
    6609             :     0,
    6610             :     false, /* HasDisjunctSubRegs */
    6611             :     false, /* CoveredBySubRegs */
    6612             :     NullRegClasses,
    6613             :     nullptr
    6614             :   };
    6615             : 
    6616             :   extern const TargetRegisterClass FR64RegClass = {
    6617             :     &X86MCRegisterClasses[FR64RegClassID],
    6618             :     FR64SubClassMask,
    6619             :     SuperRegIdxSeqs + 9,
    6620             :     LaneBitmask(0x00000001),
    6621             :     0,
    6622             :     false, /* HasDisjunctSubRegs */
    6623             :     false, /* CoveredBySubRegs */
    6624             :     FR64Superclasses,
    6625             :     nullptr
    6626             :   };
    6627             : 
    6628             :   extern const TargetRegisterClass GR64_with_sub_8bitRegClass = {
    6629             :     &X86MCRegisterClasses[GR64_with_sub_8bitRegClassID],
    6630             :     GR64_with_sub_8bitSubClassMask,
    6631             :     SuperRegIdxSeqs + 1,
    6632             :     LaneBitmask(0x0000000F),
    6633             :     0,
    6634             :     true, /* HasDisjunctSubRegs */
    6635             :     false, /* CoveredBySubRegs */
    6636             :     GR64_with_sub_8bitSuperclasses,
    6637             :     nullptr
    6638             :   };
    6639             : 
    6640             :   extern const TargetRegisterClass GR64_NOSPRegClass = {
    6641             :     &X86MCRegisterClasses[GR64_NOSPRegClassID],
    6642             :     GR64_NOSPSubClassMask,
    6643             :     SuperRegIdxSeqs + 1,
    6644             :     LaneBitmask(0x0000000F),
    6645             :     0,
    6646             :     true, /* HasDisjunctSubRegs */
    6647             :     false, /* CoveredBySubRegs */
    6648             :     GR64_NOSPSuperclasses,
    6649             :     nullptr
    6650             :   };
    6651             : 
    6652             :   extern const TargetRegisterClass GR64_NOREXRegClass = {
    6653             :     &X86MCRegisterClasses[GR64_NOREXRegClassID],
    6654             :     GR64_NOREXSubClassMask,
    6655             :     SuperRegIdxSeqs + 1,
    6656             :     LaneBitmask(0x0000000F),
    6657             :     0,
    6658             :     true, /* HasDisjunctSubRegs */
    6659             :     false, /* CoveredBySubRegs */
    6660             :     GR64_NOREXSuperclasses,
    6661             :     nullptr
    6662             :   };
    6663             : 
    6664             :   extern const TargetRegisterClass GR64_TCRegClass = {
    6665             :     &X86MCRegisterClasses[GR64_TCRegClassID],
    6666             :     GR64_TCSubClassMask,
    6667             :     SuperRegIdxSeqs + 1,
    6668             :     LaneBitmask(0x0000000F),
    6669             :     0,
    6670             :     true, /* HasDisjunctSubRegs */
    6671             :     false, /* CoveredBySubRegs */
    6672             :     GR64_TCSuperclasses,
    6673             :     nullptr
    6674             :   };
    6675             : 
    6676             :   extern const TargetRegisterClass GR64_NOSP_and_GR64_TCRegClass = {
    6677             :     &X86MCRegisterClasses[GR64_NOSP_and_GR64_TCRegClassID],
    6678             :     GR64_NOSP_and_GR64_TCSubClassMask,
    6679             :     SuperRegIdxSeqs + 1,
    6680             :     LaneBitmask(0x0000000F),
    6681             :     0,
    6682             :     true, /* HasDisjunctSubRegs */
    6683             :     false, /* CoveredBySubRegs */
    6684             :     GR64_NOSP_and_GR64_TCSuperclasses,
    6685             :     nullptr
    6686             :   };
    6687             : 
    6688             :   extern const TargetRegisterClass GR64_TCW64RegClass = {
    6689             :     &X86MCRegisterClasses[GR64_TCW64RegClassID],
    6690             :     GR64_TCW64SubClassMask,
    6691             :     SuperRegIdxSeqs + 1,
    6692             :     LaneBitmask(0x0000000F),
    6693             :     0,
    6694             :     true, /* HasDisjunctSubRegs */
    6695             :     false, /* CoveredBySubRegs */
    6696             :     GR64_TCW64Superclasses,
    6697             :     nullptr
    6698             :   };
    6699             : 
    6700             :   extern const TargetRegisterClass GR64_with_sub_16bit_in_GR16_NOREXRegClass = {
    6701             :     &X86MCRegisterClasses[GR64_with_sub_16bit_in_GR16_NOREXRegClassID],
    6702             :     GR64_with_sub_16bit_in_GR16_NOREXSubClassMask,
    6703             :     SuperRegIdxSeqs + 1,
    6704             :     LaneBitmask(0x0000000F),
    6705             :     0,
    6706             :     true, /* HasDisjunctSubRegs */
    6707             :     false, /* CoveredBySubRegs */
    6708             :     GR64_with_sub_16bit_in_GR16_NOREXSuperclasses,
    6709             :     nullptr
    6710             :   };
    6711             : 
    6712             :   extern const TargetRegisterClass VK64RegClass = {
    6713             :     &X86MCRegisterClasses[VK64RegClassID],
    6714             :     VK64SubClassMask,
    6715             :     SuperRegIdxSeqs + 1,
    6716             :     LaneBitmask(0x00000001),
    6717             :     0,
    6718             :     false, /* HasDisjunctSubRegs */
    6719             :     false, /* CoveredBySubRegs */
    6720             :     VK64Superclasses,
    6721             :     nullptr
    6722             :   };
    6723             : 
    6724             :   extern const TargetRegisterClass VR64RegClass = {
    6725             :     &X86MCRegisterClasses[VR64RegClassID],
    6726             :     VR64SubClassMask,
    6727             :     SuperRegIdxSeqs + 1,
    6728             :     LaneBitmask(0x00000001),
    6729             :     0,
    6730             :     false, /* HasDisjunctSubRegs */
    6731             :     false, /* CoveredBySubRegs */
    6732             :     NullRegClasses,
    6733             :     nullptr
    6734             :   };
    6735             : 
    6736             :   extern const TargetRegisterClass GR64_NOREX_NOSPRegClass = {
    6737             :     &X86MCRegisterClasses[GR64_NOREX_NOSPRegClassID],
    6738             :     GR64_NOREX_NOSPSubClassMask,
    6739             :     SuperRegIdxSeqs + 1,
    6740             :     LaneBitmask(0x0000000F),
    6741             :     0,
    6742             :     true, /* HasDisjunctSubRegs */
    6743             :     false, /* CoveredBySubRegs */
    6744             :     GR64_NOREX_NOSPSuperclasses,
    6745             :     nullptr
    6746             :   };
    6747             : 
    6748             :   extern const TargetRegisterClass GR64_NOSP_and_GR64_TCW64RegClass = {
    6749             :     &X86MCRegisterClasses[GR64_NOSP_and_GR64_TCW64RegClassID],
    6750             :     GR64_NOSP_and_GR64_TCW64SubClassMask,
    6751             :     SuperRegIdxSeqs + 1,
    6752             :     LaneBitmask(0x0000000F),
    6753             :     0,
    6754             :     true, /* HasDisjunctSubRegs */
    6755             :     false, /* CoveredBySubRegs */
    6756             :     GR64_NOSP_and_GR64_TCW64Superclasses,
    6757             :     nullptr
    6758             :   };
    6759             : 
    6760             :   extern const TargetRegisterClass GR64_TC_and_GR64_TCW64RegClass = {
    6761             :     &X86MCRegisterClasses[GR64_TC_and_GR64_TCW64RegClassID],
    6762             :     GR64_TC_and_GR64_TCW64SubClassMask,
    6763             :     SuperRegIdxSeqs + 1,
    6764             :     LaneBitmask(0x0000000F),
    6765             :     0,
    6766             :     true, /* HasDisjunctSubRegs */
    6767             :     false, /* CoveredBySubRegs */
    6768             :     GR64_TC_and_GR64_TCW64Superclasses,
    6769             :     nullptr
    6770             :   };
    6771             : 
    6772             :   extern const TargetRegisterClass VK64WMRegClass = {
    6773             :     &X86MCRegisterClasses[VK64WMRegClassID],
    6774             :     VK64WMSubClassMask,
    6775             :     SuperRegIdxSeqs + 1,
    6776             :     LaneBitmask(0x00000001),
    6777             :     0,
    6778             :     false, /* HasDisjunctSubRegs */
    6779             :     false, /* CoveredBySubRegs */
    6780             :     VK64WMSuperclasses,
    6781             :     nullptr
    6782             :   };
    6783             : 
    6784             :   extern const TargetRegisterClass GR64_NOREX_and_GR64_TCRegClass = {
    6785             :     &X86MCRegisterClasses[GR64_NOREX_and_GR64_TCRegClassID],
    6786             :     GR64_NOREX_and_GR64_TCSubClassMask,
    6787             :     SuperRegIdxSeqs + 1,
    6788             :     LaneBitmask(0x0000000F),
    6789             :     0,
    6790             :     true, /* HasDisjunctSubRegs */
    6791             :     false, /* CoveredBySubRegs */
    6792             :     GR64_NOREX_and_GR64_TCSuperclasses,
    6793             :     nullptr
    6794             :   };
    6795             : 
    6796             :   extern const TargetRegisterClass GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClass = {
    6797             :     &X86MCRegisterClasses[GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClassID],
    6798             :     GR64_TC_and_GR64_NOSP_and_GR64_TCW64SubClassMask,
    6799             :     SuperRegIdxSeqs + 1,
    6800             :     LaneBitmask(0x0000000F),
    6801             :     0,
    6802             :     true, /* HasDisjunctSubRegs */
    6803             :     false, /* CoveredBySubRegs */
    6804             :     GR64_TC_and_GR64_NOSP_and_GR64_TCW64Superclasses,
    6805             :     nullptr
    6806             :   };
    6807             : 
    6808             :   extern const TargetRegisterClass GR64_NOREX_NOSP_and_GR64_TCRegClass = {
    6809             :     &X86MCRegisterClasses[GR64_NOREX_NOSP_and_GR64_TCRegClassID],
    6810             :     GR64_NOREX_NOSP_and_GR64_TCSubClassMask,
    6811             :     SuperRegIdxSeqs + 1,
    6812             :     LaneBitmask(0x0000000F),
    6813             :     0,
    6814             :     true, /* HasDisjunctSubRegs */
    6815             :     false, /* CoveredBySubRegs */
    6816             :     GR64_NOREX_NOSP_and_GR64_TCSuperclasses,
    6817             :     nullptr
    6818             :   };
    6819             : 
    6820             :   extern const TargetRegisterClass GR64_ABCDRegClass = {
    6821             :     &X86MCRegisterClasses[GR64_ABCDRegClassID],
    6822             :     GR64_ABCDSubClassMask,
    6823             :     SuperRegIdxSeqs + 1,
    6824             :     LaneBitmask(0x0000000F),
    6825             :     0,
    6826             :     true, /* HasDisjunctSubRegs */
    6827             :     false, /* CoveredBySubRegs */
    6828             :     GR64_ABCDSuperclasses,
    6829             :     nullptr
    6830             :   };
    6831             : 
    6832             :   extern const TargetRegisterClass GR64_NOREX_and_GR64_TCW64RegClass = {
    6833             :     &X86MCRegisterClasses[GR64_NOREX_and_GR64_TCW64RegClassID],
    6834             :     GR64_NOREX_and_GR64_TCW64SubClassMask,
    6835             :     SuperRegIdxSeqs + 1,
    6836             :     LaneBitmask(0x0000000F),
    6837             :     0,
    6838             :     true, /* HasDisjunctSubRegs */
    6839             :     false, /* CoveredBySubRegs */
    6840             :     GR64_NOREX_and_GR64_TCW64Superclasses,
    6841             :     nullptr
    6842             :   };
    6843             : 
    6844             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_TCRegClass = {
    6845             :     &X86MCRegisterClasses[GR64_with_sub_32bit_in_GR32_TCRegClassID],
    6846             :     GR64_with_sub_32bit_in_GR32_TCSubClassMask,
    6847             :     SuperRegIdxSeqs + 1,
    6848             :     LaneBitmask(0x0000000F),
    6849             :     0,
    6850             :     true, /* HasDisjunctSubRegs */
    6851             :     false, /* CoveredBySubRegs */
    6852             :     GR64_with_sub_32bit_in_GR32_TCSuperclasses,
    6853             :     nullptr
    6854             :   };
    6855             : 
    6856             :   extern const TargetRegisterClass GR64_ADRegClass = {
    6857             :     &X86MCRegisterClasses[GR64_ADRegClassID],
    6858             :     GR64_ADSubClassMask,
    6859             :     SuperRegIdxSeqs + 1,
    6860             :     LaneBitmask(0x0000000F),
    6861             :     0,
    6862             :     true, /* HasDisjunctSubRegs */
    6863             :     false, /* CoveredBySubRegs */
    6864             :     GR64_ADSuperclasses,
    6865             :     nullptr
    6866             :   };
    6867             : 
    6868             :   extern const TargetRegisterClass GR64_and_LOW32_ADDR_ACCESS_RBPRegClass = {
    6869             :     &X86MCRegisterClasses[GR64_and_LOW32_ADDR_ACCESS_RBPRegClassID],
    6870             :     GR64_and_LOW32_ADDR_ACCESS_RBPSubClassMask,
    6871             :     SuperRegIdxSeqs + 1,
    6872             :     LaneBitmask(0x0000000F),
    6873             :     0,
    6874             :     true, /* HasDisjunctSubRegs */
    6875             :     false, /* CoveredBySubRegs */
    6876             :     GR64_and_LOW32_ADDR_ACCESS_RBPSuperclasses,
    6877             :     nullptr
    6878             :   };
    6879             : 
    6880             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_BPSPRegClass = {
    6881             :     &X86MCRegisterClasses[GR64_with_sub_32bit_in_GR32_BPSPRegClassID],
    6882             :     GR64_with_sub_32bit_in_GR32_BPSPSubClassMask,
    6883             :     SuperRegIdxSeqs + 1,
    6884             :     LaneBitmask(0x0000000F),
    6885             :     0,
    6886             :     true, /* HasDisjunctSubRegs */
    6887             :     false, /* CoveredBySubRegs */
    6888             :     GR64_with_sub_32bit_in_GR32_BPSPSuperclasses,
    6889             :     nullptr
    6890             :   };
    6891             : 
    6892             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_BSIRegClass = {
    6893             :     &X86MCRegisterClasses[GR64_with_sub_32bit_in_GR32_BSIRegClassID],
    6894             :     GR64_with_sub_32bit_in_GR32_BSISubClassMask,
    6895             :     SuperRegIdxSeqs + 1,
    6896             :     LaneBitmask(0x0000000F),
    6897             :     0,
    6898             :     true, /* HasDisjunctSubRegs */
    6899             :     false, /* CoveredBySubRegs */
    6900             :     GR64_with_sub_32bit_in_GR32_BSISuperclasses,
    6901             :     nullptr
    6902             :   };
    6903             : 
    6904             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_CBRegClass = {
    6905             :     &X86MCRegisterClasses[GR64_with_sub_32bit_in_GR32_CBRegClassID],
    6906             :     GR64_with_sub_32bit_in_GR32_CBSubClassMask,
    6907             :     SuperRegIdxSeqs + 1,
    6908             :     LaneBitmask(0x0000000F),
    6909             :     0,
    6910             :     true, /* HasDisjunctSubRegs */
    6911             :     false, /* CoveredBySubRegs */
    6912             :     GR64_with_sub_32bit_in_GR32_CBSuperclasses,
    6913             :     nullptr
    6914             :   };
    6915             : 
    6916             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_DCRegClass = {
    6917             :     &X86MCRegisterClasses[GR64_with_sub_32bit_in_GR32_DCRegClassID],
    6918             :     GR64_with_sub_32bit_in_GR32_DCSubClassMask,
    6919             :     SuperRegIdxSeqs + 1,
    6920             :     LaneBitmask(0x0000000F),
    6921             :     0,
    6922             :     true, /* HasDisjunctSubRegs */
    6923             :     false, /* CoveredBySubRegs */
    6924             :     GR64_with_sub_32bit_in_GR32_DCSuperclasses,
    6925             :     nullptr
    6926             :   };
    6927             : 
    6928             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_DIBPRegClass = {
    6929             :     &X86MCRegisterClasses[GR64_with_sub_32bit_in_GR32_DIBPRegClassID],
    6930             :     GR64_with_sub_32bit_in_GR32_DIBPSubClassMask,
    6931             :     SuperRegIdxSeqs + 1,
    6932             :     LaneBitmask(0x0000000F),
    6933             :     0,
    6934             :     true, /* HasDisjunctSubRegs */
    6935             :     false, /* CoveredBySubRegs */
    6936             :     GR64_with_sub_32bit_in_GR32_DIBPSuperclasses,
    6937             :     nullptr
    6938             :   };
    6939             : 
    6940             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_SIDIRegClass = {
    6941             :     &X86MCRegisterClasses[GR64_with_sub_32bit_in_GR32_SIDIRegClassID],
    6942             :     GR64_with_sub_32bit_in_GR32_SIDISubClassMask,
    6943             :     SuperRegIdxSeqs + 1,
    6944             :     LaneBitmask(0x0000000F),
    6945             :     0,
    6946             :     true, /* HasDisjunctSubRegs */
    6947             :     false, /* CoveredBySubRegs */
    6948             :     GR64_with_sub_32bit_in_GR32_SIDISuperclasses,
    6949             :     nullptr
    6950             :   };
    6951             : 
    6952             :   extern const TargetRegisterClass GR64_and_LOW32_ADDR_ACCESSRegClass = {
    6953             :     &X86MCRegisterClasses[GR64_and_LOW32_ADDR_ACCESSRegClassID],
    6954             :     GR64_and_LOW32_ADDR_ACCESSSubClassMask,
    6955             :     SuperRegIdxSeqs + 1,
    6956             :     LaneBitmask(0x0000000F),
    6957             :     0,
    6958             :     true, /* HasDisjunctSubRegs */
    6959             :     false, /* CoveredBySubRegs */
    6960             :     GR64_and_LOW32_ADDR_ACCESSSuperclasses,
    6961             :     nullptr
    6962             :   };
    6963             : 
    6964             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSIRegClass = {
    6965             :     &X86MCRegisterClasses[GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSIRegClassID],
    6966             :     GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSISubClassMask,
    6967             :     SuperRegIdxSeqs + 1,
    6968             :     LaneBitmask(0x0000000F),
    6969             :     0,
    6970             :     true, /* HasDisjunctSubRegs */
    6971             :     false, /* CoveredBySubRegs */
    6972             :     GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSISuperclasses,
    6973             :     nullptr
    6974             :   };
    6975             : 
    6976             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_AD_and_GR32_DCRegClass = {
    6977             :     &X86MCRegisterClasses[GR64_with_sub_32bit_in_GR32_AD_and_GR32_DCRegClassID],
    6978             :     GR64_with_sub_32bit_in_GR32_AD_and_GR32_DCSubClassMask,
    6979             :     SuperRegIdxSeqs + 1,
    6980             :     LaneBitmask(0x0000000F),
    6981             :     0,
    6982             :     true, /* HasDisjunctSubRegs */
    6983             :     false, /* CoveredBySubRegs */
    6984             :     GR64_with_sub_32bit_in_GR32_AD_and_GR32_DCSuperclasses,
    6985             :     nullptr
    6986             :   };
    6987             : 
    6988             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBPRegClass = {
    6989             :     &X86MCRegisterClasses[GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBPRegClassID],
    6990             :     GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBPSubClassMask,
    6991             :     SuperRegIdxSeqs + 1,
    6992             :     LaneBitmask(0x0000000F),
    6993             :     0,
    6994             :     true, /* HasDisjunctSubRegs */
    6995             :     false, /* CoveredBySubRegs */
    6996             :     GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBPSuperclasses,
    6997             :     nullptr
    6998             :   };
    6999             : 
    7000             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDIRegClass = {
    7001             :     &X86MCRegisterClasses[GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDIRegClassID],
    7002             :     GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDISubClassMask,
    7003             :     SuperRegIdxSeqs + 1,
    7004             :     LaneBitmask(0x0000000F),
    7005             :     0,
    7006             :     true, /* HasDisjunctSubRegs */
    7007             :     false, /* CoveredBySubRegs */
    7008             :     GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDISuperclasses,
    7009             :     nullptr
    7010             :   };
    7011             : 
    7012             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_CB_and_GR32_DCRegClass = {
    7013             :     &X86MCRegisterClasses[GR64_with_sub_32bit_in_GR32_CB_and_GR32_DCRegClassID],
    7014             :     GR64_with_sub_32bit_in_GR32_CB_and_GR32_DCSubClassMask,
    7015             :     SuperRegIdxSeqs + 1,
    7016             :     LaneBitmask(0x0000000F),
    7017             :     0,
    7018             :     true, /* HasDisjunctSubRegs */
    7019             :     false, /* CoveredBySubRegs */
    7020             :     GR64_with_sub_32bit_in_GR32_CB_and_GR32_DCSuperclasses,
    7021             :     nullptr
    7022             :   };
    7023             : 
    7024             :   extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDIRegClass = {
    7025             :     &X86MCRegisterClasses[GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDIRegClassID],
    7026             :     GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDISubClassMask,
    7027             :     SuperRegIdxSeqs + 1,
    7028             :     LaneBitmask(0x0000000F),
    7029             :     0,
    7030             :     true, /* HasDisjunctSubRegs */
    7031             :     false, /* CoveredBySubRegs */
    7032             :     GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDISuperclasses,
    7033             :     nullptr
    7034             :   };
    7035             : 
    7036             :   extern const TargetRegisterClass RSTRegClass = {
    7037             :     &X86MCRegisterClasses[RSTRegClassID],
    7038             :     RSTSubClassMask,
    7039             :     SuperRegIdxSeqs + 1,
    7040             :     LaneBitmask(0x00000001),
    7041             :     0,
    7042             :     false, /* HasDisjunctSubRegs */
    7043             :     false, /* CoveredBySubRegs */
    7044             :     NullRegClasses,
    7045             :     nullptr
    7046             :   };
    7047             : 
    7048             :   extern const TargetRegisterClass RFP80RegClass = {
    7049             :     &X86MCRegisterClasses[RFP80RegClassID],
    7050             :     RFP80SubClassMask,
    7051             :     SuperRegIdxSeqs + 1,
    7052             :     LaneBitmask(0x00000001),
    7053             :     0,
    7054             :     false, /* HasDisjunctSubRegs */
    7055             :     false, /* CoveredBySubRegs */
    7056             :     RFP80Superclasses,
    7057             :     nullptr
    7058             :   };
    7059             : 
    7060             :   extern const TargetRegisterClass VR128XRegClass = {
    7061             :     &X86MCRegisterClasses[VR128XRegClassID],
    7062             :     VR128XSubClassMask,
    7063             :     SuperRegIdxSeqs + 9,
    7064             :     LaneBitmask(0x00000001),
    7065             :     0,
    7066             :     false, /* HasDisjunctSubRegs */
    7067             :     false, /* CoveredBySubRegs */
    7068             :     VR128XSuperclasses,
    7069             :     nullptr
    7070             :   };
    7071             : 
    7072             :   extern const TargetRegisterClass VR128RegClass = {
    7073             :     &X86MCRegisterClasses[VR128RegClassID],
    7074             :     VR128SubClassMask,
    7075             :     SuperRegIdxSeqs + 9,
    7076             :     LaneBitmask(0x00000001),
    7077             :     0,
    7078             :     false, /* HasDisjunctSubRegs */
    7079             :     false, /* CoveredBySubRegs */
    7080             :     VR128Superclasses,
    7081             :     nullptr
    7082             :   };
    7083             : 
    7084             :   extern const TargetRegisterClass VR128HRegClass = {
    7085             :     &X86MCRegisterClasses[VR128HRegClassID],
    7086             :     VR128HSubClassMask,
    7087             :     SuperRegIdxSeqs + 9,
    7088             :     LaneBitmask(0x00000001),
    7089             :     0,
    7090             :     false, /* HasDisjunctSubRegs */
    7091             :     false, /* CoveredBySubRegs */
    7092             :     VR128HSuperclasses,
    7093             :     nullptr
    7094             :   };
    7095             : 
    7096             :   extern const TargetRegisterClass VR128LRegClass = {
    7097             :     &X86MCRegisterClasses[VR128LRegClassID],
    7098             :     VR128LSubClassMask,
    7099             :     SuperRegIdxSeqs + 9,
    7100             :     LaneBitmask(0x00000001),
    7101             :     0,
    7102             :     false, /* HasDisjunctSubRegs */
    7103             :     false, /* CoveredBySubRegs */
    7104             :     VR128LSuperclasses,
    7105             :     nullptr
    7106             :   };
    7107             : 
    7108             :   extern const TargetRegisterClass BNDRRegClass = {
    7109             :     &X86MCRegisterClasses[BNDRRegClassID],
    7110             :     BNDRSubClassMask,
    7111             :     SuperRegIdxSeqs + 1,
    7112             :     LaneBitmask(0x00000001),
    7113             :     0,
    7114             :     false, /* HasDisjunctSubRegs */
    7115             :     false, /* CoveredBySubRegs */
    7116             :     NullRegClasses,
    7117             :     nullptr
    7118             :   };
    7119             : 
    7120             :   extern const TargetRegisterClass VR256XRegClass = {
    7121             :     &X86MCRegisterClasses[VR256XRegClassID],
    7122             :     VR256XSubClassMask,
    7123             :     SuperRegIdxSeqs + 11,
    7124             :     LaneBitmask(0x00000010),
    7125             :     0,
    7126             :     false, /* HasDisjunctSubRegs */
    7127             :     false, /* CoveredBySubRegs */
    7128             :     NullRegClasses,
    7129             :     nullptr
    7130             :   };
    7131             : 
    7132             :   extern const TargetRegisterClass VR256RegClass = {
    7133             :     &X86MCRegisterClasses[VR256RegClassID],
    7134             :     VR256SubClassMask,
    7135             :     SuperRegIdxSeqs + 11,
    7136             :     LaneBitmask(0x00000010),
    7137             :     0,
    7138             :     false, /* HasDisjunctSubRegs */
    7139             :     false, /* CoveredBySubRegs */
    7140             :     VR256Superclasses,
    7141             :     nullptr
    7142             :   };
    7143             : 
    7144             :   extern const TargetRegisterClass VR256HRegClass = {
    7145             :     &X86MCRegisterClasses[VR256HRegClassID],
    7146             :     VR256HSubClassMask,
    7147             :     SuperRegIdxSeqs + 11,
    7148             :     LaneBitmask(0x00000010),
    7149             :     0,
    7150             :     false, /* HasDisjunctSubRegs */
    7151             :     false, /* CoveredBySubRegs */
    7152             :     VR256HSuperclasses,
    7153             :     nullptr
    7154             :   };
    7155             : 
    7156             :   extern const TargetRegisterClass VR256LRegClass = {
    7157             :     &X86MCRegisterClasses[VR256LRegClassID],
    7158             :     VR256LSubClassMask,
    7159             :     SuperRegIdxSeqs + 11,
    7160             :     LaneBitmask(0x00000010),
    7161             :     0,
    7162             :     false, /* HasDisjunctSubRegs */
    7163             :     false, /* CoveredBySubRegs */
    7164             :     VR256LSuperclasses,
    7165             :     nullptr
    7166             :   };
    7167             : 
    7168             :   extern const TargetRegisterClass VR512RegClass = {
    7169             :     &X86MCRegisterClasses[VR512RegClassID],
    7170             :     VR512SubClassMask,
    7171             :     SuperRegIdxSeqs + 1,
    7172             :     LaneBitmask(0x00000010),
    7173             :     0,
    7174             :     false, /* HasDisjunctSubRegs */
    7175             :     false, /* CoveredBySubRegs */
    7176             :     NullRegClasses,
    7177             :     nullptr
    7178             :   };
    7179             : 
    7180             :   extern const TargetRegisterClass VR512_with_sub_xmm_in_FR32RegClass = {
    7181             :     &X86MCRegisterClasses[VR512_with_sub_xmm_in_FR32RegClassID],
    7182             :     VR512_with_sub_xmm_in_FR32SubClassMask,
    7183             :     SuperRegIdxSeqs + 1,
    7184             :     LaneBitmask(0x00000010),
    7185             :     0,
    7186             :     false, /* HasDisjunctSubRegs */
    7187             :     false, /* CoveredBySubRegs */
    7188             :     VR512_with_sub_xmm_in_FR32Superclasses,
    7189             :     nullptr
    7190             :   };
    7191             : 
    7192             :   extern const TargetRegisterClass VR512_with_sub_xmm_in_VR128HRegClass = {
    7193             :     &X86MCRegisterClasses[VR512_with_sub_xmm_in_VR128HRegClassID],
    7194             :     VR512_with_sub_xmm_in_VR128HSubClassMask,
    7195             :     SuperRegIdxSeqs + 1,
    7196             :     LaneBitmask(0x00000010),
    7197             :     0,
    7198             :     false, /* HasDisjunctSubRegs */
    7199             :     false, /* CoveredBySubRegs */
    7200             :     VR512_with_sub_xmm_in_VR128HSuperclasses,
    7201             :     nullptr
    7202             :   };
    7203             : 
    7204             :   extern const TargetRegisterClass VR512_with_sub_xmm_in_VR128LRegClass = {
    7205             :     &X86MCRegisterClasses[VR512_with_sub_xmm_in_VR128LRegClassID],
    7206             :     VR512_with_sub_xmm_in_VR128LSubClassMask,
    7207             :     SuperRegIdxSeqs + 1,
    7208             :     LaneBitmask(0x00000010),
    7209             :     0,
    7210             :     false, /* HasDisjunctSubRegs */
    7211             :     false, /* CoveredBySubRegs */
    7212             :     VR512_with_sub_xmm_in_VR128LSuperclasses,
    7213             :     nullptr
    7214             :   };
    7215             : 
    7216             : } // end namespace X86
    7217             : 
    7218             : namespace {
    7219             :   const TargetRegisterClass* const RegisterClasses[] = {
    7220             :     &X86::GR8RegClass,
    7221             :     &X86::GRH8RegClass,
    7222             :     &X86::GR8_NOREXRegClass,
    7223             :     &X86::GR8_ABCD_HRegClass,
    7224             :     &X86::GR8_ABCD_LRegClass,
    7225             :     &X86::GRH16RegClass,
    7226             :     &X86::GR16RegClass,
    7227             :     &X86::GR16_NOREXRegClass,
    7228             :     &X86::VK1RegClass,
    7229             :     &X86::VK16RegClass,
    7230             :     &X86::VK2RegClass,
    7231             :     &X86::VK4RegClass,
    7232             :     &X86::VK8RegClass,
    7233             :     &X86::VK16WMRegClass,
    7234             :     &X86::VK1WMRegClass,
    7235             :     &X86::VK2WMRegClass,
    7236             :     &X86::VK4WMRegClass,
    7237             :     &X86::VK8WMRegClass,
    7238             :     &X86::SEGMENT_REGRegClass,
    7239             :     &X86::GR16_ABCDRegClass,
    7240             :     &X86::FPCCRRegClass,
    7241             :     &X86::FR32XRegClass,
    7242             :     &X86::LOW32_ADDR_ACCESS_RBPRegClass,
    7243             :     &X86::LOW32_ADDR_ACCESSRegClass,
    7244             :     &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
    7245             :     &X86::DEBUG_REGRegClass,
    7246             :     &X86::FR32RegClass,
    7247             :     &X86::GR32RegClass,
    7248             :     &X86::GR32_NOSPRegClass,
    7249             :     &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
    7250             :     &X86::GR32_NOREXRegClass,
    7251             :     &X86::VK32RegClass,
    7252             :     &X86::GR32_NOREX_NOSPRegClass,
    7253             :     &X86::RFP32RegClass,
    7254             :     &X86::VK32WMRegClass,
    7255             :     &X86::GR32_ABCDRegClass,
    7256             :     &X86::GR32_TCRegClass,
    7257             :     &X86::GR32_ADRegClass,
    7258             :     &X86::GR32_BPSPRegClass,
    7259             :     &X86::GR32_BSIRegClass,
    7260             :     &X86::GR32_CBRegClass,
    7261             :     &X86::GR32_DCRegClass,
    7262             :     &X86::GR32_DIBPRegClass,
    7263             :     &X86::GR32_SIDIRegClass,
    7264             :     &X86::LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass,
    7265             :     &X86::CCRRegClass,
    7266             :     &X86::DFCCRRegClass,
    7267             :     &X86::GR32_ABCD_and_GR32_BSIRegClass,
    7268             :     &X86::GR32_AD_and_GR32_DCRegClass,
    7269             :     &X86::GR32_BPSP_and_GR32_DIBPRegClass,
    7270             :     &X86::GR32_BSI_and_GR32_SIDIRegClass,
    7271             :     &X86::GR32_CB_and_GR32_DCRegClass,
    7272             :     &X86::GR32_DIBP_and_GR32_SIDIRegClass,
    7273             :     &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitRegClass,
    7274             :     &X86::LOW32_ADDR_ACCESS_with_sub_32bitRegClass,
    7275             :     &X86::RFP64RegClass,
    7276             :     &X86::FR64XRegClass,
    7277             :     &X86::GR64RegClass,
    7278             :     &X86::CONTROL_REGRegClass,
    7279             :     &X86::FR64RegClass,
    7280             :     &X86::GR64_with_sub_8bitRegClass,
    7281             :     &X86::GR64_NOSPRegClass,
    7282             :     &X86::GR64_NOREXRegClass,
    7283             :     &X86::GR64_TCRegClass,
    7284             :     &X86::GR64_NOSP_and_GR64_TCRegClass,
    7285             :     &X86::GR64_TCW64RegClass,
    7286             :     &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
    7287             :     &X86::VK64RegClass,
    7288             :     &X86::VR64RegClass,
    7289             :     &X86::GR64_NOREX_NOSPRegClass,
    7290             :     &X86::GR64_NOSP_and_GR64_TCW64RegClass,
    7291             :     &X86::GR64_TC_and_GR64_TCW64RegClass,
    7292             :     &X86::VK64WMRegClass,
    7293             :     &X86::GR64_NOREX_and_GR64_TCRegClass,
    7294             :     &X86::GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClass,
    7295             :     &X86::GR64_NOREX_NOSP_and_GR64_TCRegClass,
    7296             :     &X86::GR64_ABCDRegClass,
    7297             :     &X86::GR64_NOREX_and_GR64_TCW64RegClass,
    7298             :     &X86::GR64_with_sub_32bit_in_GR32_TCRegClass,
    7299             :     &X86::GR64_ADRegClass,
    7300             :     &X86::GR64_and_LOW32_ADDR_ACCESS_RBPRegClass,
    7301             :     &X86::GR64_with_sub_32bit_in_GR32_BPSPRegClass,
    7302             :     &X86::GR64_with_sub_32bit_in_GR32_BSIRegClass,
    7303             :     &X86::GR64_with_sub_32bit_in_GR32_CBRegClass,
    7304             :     &X86::GR64_with_sub_32bit_in_GR32_DCRegClass,
    7305             :     &X86::GR64_with_sub_32bit_in_GR32_DIBPRegClass,
    7306             :     &X86::GR64_with_sub_32bit_in_GR32_SIDIRegClass,
    7307             :     &X86::GR64_and_LOW32_ADDR_ACCESSRegClass,
    7308             :     &X86::GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSIRegClass,
    7309             :     &X86::GR64_with_sub_32bit_in_GR32_AD_and_GR32_DCRegClass,
    7310             :     &X86::GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBPRegClass,
    7311             :     &X86::GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDIRegClass,
    7312             :     &X86::GR64_with_sub_32bit_in_GR32_CB_and_GR32_DCRegClass,
    7313             :     &X86::GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDIRegClass,
    7314             :     &X86::RSTRegClass,
    7315             :     &X86::RFP80RegClass,
    7316             :     &X86::VR128XRegClass,
    7317             :     &X86::VR128RegClass,
    7318             :     &X86::VR128HRegClass,
    7319             :     &X86::VR128LRegClass,
    7320             :     &X86::BNDRRegClass,
    7321             :     &X86::VR256XRegClass,
    7322             :     &X86::VR256RegClass,
    7323             :     &X86::VR256HRegClass,
    7324             :     &X86::VR256LRegClass,
    7325             :     &X86::VR512RegClass,
    7326             :     &X86::VR512_with_sub_xmm_in_FR32RegClass,
    7327             :     &X86::VR512_with_sub_xmm_in_VR128HRegClass,
    7328             :     &X86::VR512_with_sub_xmm_in_VR128LRegClass,
    7329             :   };
    7330             : } // end anonymous namespace
    7331             : 
    7332             : static const TargetRegisterInfoDesc X86RegInfoDesc[] = { // Extra Descriptors
    7333             :   { 0, false },
    7334             :   { 0, true },
    7335             :   { 0, true },
    7336             :   { 0, true },
    7337             :   { 0, true },
    7338             :   { 0, true },
    7339             :   { 0, true },
    7340             :   { 0, false },
    7341             :   { 1, true },
    7342             :   { 0, true },
    7343             :   { 0, true },
    7344             :   { 0, true },
    7345             :   { 0, true },
    7346             :   { 0, true },
    7347             :   { 0, false },
    7348             :   { 0, true },
    7349             :   { 0, true },
    7350             :   { 0, false },
    7351             :   { 1, true },
    7352             :   { 0, true },
    7353             :   { 0, true },
    7354             :   { 0, true },
    7355             :   { 0, true },
    7356             :   { 0, true },
    7357             :   { 0, true },
    7358             :   { 0, true },
    7359             :   { 0, true },
    7360             :   { 0, true },
    7361             :   { 0, false },
    7362             :   { 0, false },
    7363             :   { 0, false },
    7364             :   { 0, true },
    7365             :   { 0, true },
    7366             :   { 0, true },
    7367             :   { 0, false },
    7368             :   { 0, true },
    7369             :   { 0, true },
    7370             :   { 0, false },
    7371             :   { 0, false },
    7372             :   { 0, false },
    7373             :   { 0, false },
    7374             :   { 0, false },
    7375             :   { 0, false },
    7376             :   { 0, false },
    7377             :   { 0, false },
    7378             :   { 0, false },
    7379             :   { 0, false },
    7380             :   { 0, true },
    7381             :   { 0, true },
    7382             :   { 0, true },
    7383             :   { 0, true },
    7384             :   { 0, true },
    7385             :   { 0, true },
    7386             :   { 1, true },
    7387             :   { 0, false },
    7388             :   { 0, true },
    7389             :   { 0, true },
    7390             :   { 0, true },
    7391             :   { 0, false },
    7392             :   { 1, true },
    7393             :   { 0, true },
    7394             :   { 0, false },
    7395             :   { 1, true },
    7396             :   { 0, true },
    7397             :   { 0, false },
    7398             :   { 0, true },
    7399             :   { 0, true },
    7400             :   { 0, true },
    7401             :   { 0, true },
    7402             :   { 0, true },
    7403             :   { 0, true },
    7404             :   { 0, true },
    7405             :   { 0, true },
    7406             :   { 0, true },
    7407             :   { 0, true },
    7408             :   { 0, true },
    7409             :   { 0, true },
    7410             :   { 0, true },
    7411             :   { 0, true },
    7412             :   { 0, true },
    7413             :   { 0, true },
    7414             :   { 0, true },
    7415             :   { 0, true },
    7416             :   { 0, true },
    7417             :   { 0, true },
    7418             :   { 0, true },
    7419             :   { 0, true },
    7420             :   { 0, true },
    7421             :   { 0, true },
    7422             :   { 0, true },
    7423             :   { 0, true },
    7424             :   { 0, true },
    7425             :   { 0, true },
    7426             :   { 0, true },
    7427             :   { 0, true },
    7428             :   { 0, true },
    7429             :   { 0, true },
    7430             :   { 0, true },
    7431             :   { 0, true },
    7432             :   { 0, true },
    7433             :   { 0, true },
    7434             :   { 0, true },
    7435             :   { 0, true },
    7436             :   { 0, true },
    7437             :   { 0, true },
    7438             :   { 0, true },
    7439             :   { 0, true },
    7440             :   { 0, true },
    7441             :   { 0, false },
    7442             :   { 0, true },
    7443             :   { 0, true },
    7444             :   { 0, true },
    7445             :   { 0, true },
    7446             :   { 0, true },
    7447             :   { 0, true },
    7448             :   { 0, true },
    7449             :   { 0, true },
    7450             :   { 0, true },
    7451             :   { 0, true },
    7452             :   { 0, true },
    7453             :   { 0, true },
    7454             :   { 0, true },
    7455             :   { 0, true },
    7456             :   { 0, true },
    7457             :   { 0, true },
    7458             :   { 1, true },
    7459             :   { 1, true },
    7460             :   { 1, true },
    7461             :   { 1, true },
    7462             :   { 1, true },
    7463             :   { 1, true },
    7464             :   { 1, true },
    7465             :   { 1, true },
    7466             :   { 0, false },
    7467             :   { 0, false },
    7468             :   { 0, false },
    7469             :   { 0, false },
    7470             :   { 0, false },
    7471             :   { 0, false },
    7472             :   { 0, false },
    7473             :   { 0, false },
    7474             :   { 0, true },
    7475             :   { 0, true },
    7476             :   { 0, true },
    7477             :   { 0, true },
    7478             :   { 0, true },
    7479             :   { 0, true },
    7480             :   { 0, true },
    7481             :   { 0, true },
    7482             :   { 1, true },
    7483             :   { 1, true },
    7484             :   { 1, true },
    7485             :   { 1, true },
    7486             :   { 1, true },
    7487             :   { 1, true },
    7488             :   { 1, true },
    7489             :   { 1, true },
    7490             :   { 1, true },
    7491             :   { 1, true },
    7492             :   { 1, true },
    7493             :   { 1, true },
    7494             :   { 1, true },
    7495             :   { 1, true },
    7496             :   { 1, true },
    7497             :   { 1, true },
    7498             :   { 1, true },
    7499             :   { 1, true },
    7500             :   { 1, true },
    7501             :   { 1, true },
    7502             :   { 1, true },
    7503             :   { 1, true },
    7504             :   { 1, true },
    7505             :   { 1, true },
    7506             :   { 0, true },
    7507             :   { 0, true },
    7508             :   { 0, true },
    7509             :   { 0, true },
    7510             :   { 0, true },
    7511             :   { 0, true },
    7512             :   { 0, true },
    7513             :   { 0, true },
    7514             :   { 0, true },
    7515             :   { 0, true },
    7516             :   { 0, true },
    7517             :   { 0, true },
    7518             :   { 0, true },
    7519             :   { 0, true },
    7520             :   { 0, true },
    7521             :   { 0, true },
    7522             :   { 0, true },
    7523             :   { 0, true },
    7524             :   { 0, true },
    7525             :   { 0, true },
    7526             :   { 0, true },
    7527             :   { 0, true },
    7528             :   { 0, true },
    7529             :   { 0, true },
    7530             :   { 0, true },
    7531             :   { 0, true },
    7532             :   { 0, true },
    7533             :   { 0, true },
    7534             :   { 0, true },
    7535             :   { 0, true },
    7536             :   { 0, true },
    7537             :   { 0, true },
    7538             :   { 0, true },
    7539             :   { 0, true },
    7540             :   { 0, true },
    7541             :   { 0, true },
    7542             :   { 0, true },
    7543             :   { 0, true },
    7544             :   { 0, true },
    7545             :   { 0, true },
    7546             :   { 0, true },
    7547             :   { 0, true },
    7548             :   { 0, true },
    7549             :   { 0, true },
    7550             :   { 0, true },
    7551             :   { 0, true },
    7552             :   { 0, true },
    7553             :   { 0, true },
    7554             :   { 0, true },
    7555             :   { 0, true },
    7556             :   { 0, true },
    7557             :   { 0, true },
    7558             :   { 0, true },
    7559             :   { 0, true },
    7560             :   { 0, true },
    7561             :   { 0, true },
    7562             :   { 0, true },
    7563             :   { 0, true },
    7564             :   { 0, true },
    7565             :   { 0, true },
    7566             :   { 0, true },
    7567             :   { 0, true },
    7568             :   { 0, true },
    7569             :   { 0, true },
    7570             :   { 1, true },
    7571             :   { 1, true },
    7572             :   { 1, true },
    7573             :   { 1, true },
    7574             :   { 1, true },
    7575             :   { 1, true },
    7576             :   { 1, true },
    7577             :   { 1, true },
    7578             :   { 0, false },
    7579             :   { 0, false },
    7580             :   { 0, false },
    7581             :   { 0, false },
    7582             :   { 0, false },
    7583             :   { 0, false },
    7584             :   { 0, false },
    7585             :   { 0, false },
    7586             :   { 1, true },
    7587             :   { 1, true },
    7588             :   { 1, true },
    7589             :   { 1, true },
    7590             :   { 1, true },
    7591             :   { 1, true },
    7592             :   { 1, true },
    7593             :   { 1, true },
    7594             :   { 1, true },
    7595             :   { 1, true },
    7596             :   { 1, true },
    7597             :   { 1, true },
    7598             :   { 1, true },
    7599             :   { 1, true },
    7600             :   { 1, true },
    7601             :   { 1, true },
    7602             :   { 0, false },
    7603             :   { 0, false },
    7604             :   { 0, false },
    7605             :   { 0, false },
    7606             :   { 0, false },
    7607             :   { 0, false },
    7608             :   { 0, false },
    7609             :   { 0, false },
    7610             : };
    7611        3870 : unsigned X86GenRegisterInfo::composeSubRegIndicesImpl(unsigned IdxA, unsigned IdxB) const {
    7612             :   static const uint8_t Rows[1][8] = {
    7613             :     { 1, 2, 3, 4, 5, 0, 7, 0, },
    7614             :   };
    7615             : 
    7616             :   --IdxA; assert(IdxA < 8);
    7617        3870 :   --IdxB; assert(IdxB < 8);
    7618        3870 :   return Rows[0][IdxB];
    7619             : }
    7620             : 
    7621             :   struct MaskRolOp {
    7622             :     LaneBitmask Mask;
    7623             :     uint8_t  RotateLeft;
    7624             :   };
    7625             :   static const MaskRolOp LaneMaskComposeSequences[] = {
    7626             :     { LaneBitmask(0xFFFFFFFF),  0 }, { LaneBitmask::getNone(), 0 },   // Sequence 0
    7627             :     { LaneBitmask(0xFFFFFFFF),  1 }, { LaneBitmask::getNone(), 0 },   // Sequence 2
    7628             :     { LaneBitmask(0xFFFFFFFF),  2 }, { LaneBitmask::getNone(), 0 },   // Sequence 4
    7629             :     { LaneBitmask(0xFFFFFFFF),  3 }, { LaneBitmask::getNone(), 0 },   // Sequence 6
    7630             :     { LaneBitmask(0xFFFFFFFF),  4 }, { LaneBitmask::getNone(), 0 }  // Sequence 8
    7631             :   };
    7632             :   static const MaskRolOp *const CompositeSequences[] = {
    7633             :     &LaneMaskComposeSequences[0], // to sub_8bit
    7634             :     &LaneMaskComposeSequences[2], // to sub_8bit_hi
    7635             :     &LaneMaskComposeSequences[4], // to sub_8bit_hi_phony
    7636             :     &LaneMaskComposeSequences[0], // to sub_16bit
    7637             :     &LaneMaskComposeSequences[6], // to sub_16bit_hi
    7638             :     &LaneMaskComposeSequences[0], // to sub_32bit
    7639             :     &LaneMaskComposeSequences[8], // to sub_xmm
    7640             :     &LaneMaskComposeSequences[0] // to sub_ymm
    7641             :   };
    7642             : 
    7643           0 : LaneBitmask X86GenRegisterInfo::composeSubRegIndexLaneMaskImpl(unsigned IdxA, LaneBitmask LaneMask) const {
    7644           0 :   --IdxA; assert(IdxA < 8 && "Subregister index out of bounds");
    7645             :   LaneBitmask Result;
    7646           0 :   for (const MaskRolOp *Ops = CompositeSequences[IdxA]; Ops->Mask.any(); ++Ops) {
    7647           0 :     LaneBitmask::Type M = LaneMask.getAsInteger() & Ops->Mask.getAsInteger();
    7648           0 :     if (unsigned S = Ops->RotateLeft)
    7649           0 :       Result |= LaneBitmask((M << S) | (M >> (LaneBitmask::BitWidth - S)));
    7650             :     else
    7651             :       Result |= LaneBitmask(M);
    7652             :   }
    7653           0 :   return Result;
    7654             : }
    7655             : 
    7656           0 : LaneBitmask X86GenRegisterInfo::reverseComposeSubRegIndexLaneMaskImpl(unsigned IdxA,  LaneBitmask LaneMask) const {
    7657           0 :   LaneMask &= getSubRegIndexLaneMask(IdxA);
    7658           0 :   --IdxA; assert(IdxA < 8 && "Subregister index out of bounds");
    7659             :   LaneBitmask Result;
    7660           0 :   for (const MaskRolOp *Ops = CompositeSequences[IdxA]; Ops->Mask.any(); ++Ops) {
    7661             :     LaneBitmask::Type M = LaneMask.getAsInteger();
    7662           0 :     if (unsigned S = Ops->RotateLeft)
    7663           0 :       Result |= LaneBitmask((M >> S) | (M << (LaneBitmask::BitWidth - S)));
    7664             :     else
    7665             :       Result |= LaneBitmask(M);
    7666             :   }
    7667           0 :   return Result;
    7668             : }
    7669             : 
    7670      571118 : const TargetRegisterClass *X86GenRegisterInfo::getSubClassWithSubReg(const TargetRegisterClass *RC, unsigned Idx) const {
    7671             :   static const uint8_t Table[109][8] = {
    7672             :     {   // GR8
    7673             :       0,        // sub_8bit
    7674             :       0,        // sub_8bit_hi
    7675             :       0,        // sub_8bit_hi_phony
    7676             :       0,        // sub_16bit
    7677             :       0,        // sub_16bit_hi
    7678             :       0,        // sub_32bit
    7679             :       0,        // sub_xmm
    7680             :       0,        // sub_ymm
    7681             :     },
    7682             :     {   // GRH8
    7683             :       0,        // sub_8bit
    7684             :       0,        // sub_8bit_hi
    7685             :       0,        // sub_8bit_hi_phony
    7686             :       0,        // sub_16bit
    7687             :       0,        // sub_16bit_hi
    7688             :       0,        // sub_32bit
    7689             :       0,        // sub_xmm
    7690             :       0,        // sub_ymm
    7691             :     },
    7692             :     {   // GR8_NOREX
    7693             :       0,        // sub_8bit
    7694             :       0,        // sub_8bit_hi
    7695             :       0,        // sub_8bit_hi_phony
    7696             :       0,        // sub_16bit
    7697             :       0,        // sub_16bit_hi
    7698             :       0,        // sub_32bit
    7699             :       0,        // sub_xmm
    7700             :       0,        // sub_ymm
    7701             :     },
    7702             :     {   // GR8_ABCD_H
    7703             :       0,        // sub_8bit
    7704             :       0,        // sub_8bit_hi
    7705             :       0,        // sub_8bit_hi_phony
    7706             :       0,        // sub_16bit
    7707             :       0,        // sub_16bit_hi
    7708             :       0,        // sub_32bit
    7709             :       0,        // sub_xmm
    7710             :       0,        // sub_ymm
    7711             :     },
    7712             :     {   // GR8_ABCD_L
    7713             :       0,        // sub_8bit
    7714             :       0,        // sub_8bit_hi
    7715             :       0,        // sub_8bit_hi_phony
    7716             :       0,        // sub_16bit
    7717             :       0,        // sub_16bit_hi
    7718             :       0,        // sub_32bit
    7719             :       0,        // sub_xmm
    7720             :       0,        // sub_ymm
    7721             :     },
    7722             :     {   // GRH16
    7723             :       0,        // sub_8bit
    7724             :       0,        // sub_8bit_hi
    7725             :       0,        // sub_8bit_hi_phony
    7726             :       0,        // sub_16bit
    7727             :       0,        // sub_16bit_hi
    7728             :       0,        // sub_32bit
    7729             :       0,        // sub_xmm
    7730             :       0,        // sub_ymm
    7731             :     },
    7732             :     {   // GR16
    7733             :       7,        // sub_8bit -> GR16
    7734             :       20,       // sub_8bit_hi -> GR16_ABCD
    7735             :       0,        // sub_8bit_hi_phony
    7736             :       0,        // sub_16bit
    7737             :       0,        // sub_16bit_hi
    7738             :       0,        // sub_32bit
    7739             :       0,        // sub_xmm
    7740             :       0,        // sub_ymm
    7741             :     },
    7742             :     {   // GR16_NOREX
    7743             :       8,        // sub_8bit -> GR16_NOREX
    7744             :       20,       // sub_8bit_hi -> GR16_ABCD
    7745             :       0,        // sub_8bit_hi_phony
    7746             :       0,        // sub_16bit
    7747             :       0,        // sub_16bit_hi
    7748             :       0,        // sub_32bit
    7749             :       0,        // sub_xmm
    7750             :       0,        // sub_ymm
    7751             :     },
    7752             :     {   // VK1
    7753             :       0,        // sub_8bit
    7754             :       0,        // sub_8bit_hi
    7755             :       0,        // sub_8bit_hi_phony
    7756             :       0,        // sub_16bit
    7757             :       0,        // sub_16bit_hi
    7758             :       0,        // sub_32bit
    7759             :       0,        // sub_xmm
    7760             :       0,        // sub_ymm
    7761             :     },
    7762             :     {   // VK16
    7763             :       0,        // sub_8bit
    7764             :       0,        // sub_8bit_hi
    7765             :       0,        // sub_8bit_hi_phony
    7766             :       0,        // sub_16bit
    7767             :       0,        // sub_16bit_hi
    7768             :       0,        // sub_32bit
    7769             :       0,        // sub_xmm
    7770             :       0,        // sub_ymm
    7771             :     },
    7772             :     {   // VK2
    7773             :       0,        // sub_8bit
    7774             :       0,        // sub_8bit_hi
    7775             :       0,        // sub_8bit_hi_phony
    7776             :       0,        // sub_16bit
    7777             :       0,        // sub_16bit_hi
    7778             :       0,        // sub_32bit
    7779             :       0,        // sub_xmm
    7780             :       0,        // sub_ymm
    7781             :     },
    7782             :     {   // VK4
    7783             :       0,        // sub_8bit
    7784             :       0,        // sub_8bit_hi
    7785             :       0,        // sub_8bit_hi_phony
    7786             :       0,        // sub_16bit
    7787             :       0,        // sub_16bit_hi
    7788             :       0,        // sub_32bit
    7789             :       0,        // sub_xmm
    7790             :       0,        // sub_ymm
    7791             :     },
    7792             :     {   // VK8
    7793             :       0,        // sub_8bit
    7794             :       0,        // sub_8bit_hi
    7795             :       0,        // sub_8bit_hi_phony
    7796             :       0,        // sub_16bit
    7797             :       0,        // sub_16bit_hi
    7798             :       0,        // sub_32bit
    7799             :       0,        // sub_xmm
    7800             :       0,        // sub_ymm
    7801             :     },
    7802             :     {   // VK16WM
    7803             :       0,        // sub_8bit
    7804             :       0,        // sub_8bit_hi
    7805             :       0,        // sub_8bit_hi_phony
    7806             :       0,        // sub_16bit
    7807             :       0,        // sub_16bit_hi
    7808             :       0,        // sub_32bit
    7809             :       0,        // sub_xmm
    7810             :       0,        // sub_ymm
    7811             :     },
    7812             :     {   // VK1WM
    7813             :       0,        // sub_8bit
    7814             :       0,        // sub_8bit_hi
    7815             :       0,        // sub_8bit_hi_phony
    7816             :       0,        // sub_16bit
    7817             :       0,        // sub_16bit_hi
    7818             :       0,        // sub_32bit
    7819             :       0,        // sub_xmm
    7820             :       0,        // sub_ymm
    7821             :     },
    7822             :     {   // VK2WM
    7823             :       0,        // sub_8bit
    7824             :       0,        // sub_8bit_hi
    7825             :       0,        // sub_8bit_hi_phony
    7826             :       0,        // sub_16bit
    7827             :       0,        // sub_16bit_hi
    7828             :       0,        // sub_32bit
    7829             :       0,        // sub_xmm
    7830             :       0,        // sub_ymm
    7831             :     },
    7832             :     {   // VK4WM
    7833             :       0,        // sub_8bit
    7834             :       0,        // sub_8bit_hi
    7835             :       0,        // sub_8bit_hi_phony
    7836             :       0,        // sub_16bit
    7837             :       0,        // sub_16bit_hi
    7838             :       0,        // sub_32bit
    7839             :       0,        // sub_xmm
    7840             :       0,        // sub_ymm
    7841             :     },
    7842             :     {   // VK8WM
    7843             :       0,        // sub_8bit
    7844             :       0,        // sub_8bit_hi
    7845             :       0,        // sub_8bit_hi_phony
    7846             :       0,        // sub_16bit
    7847             :       0,        // sub_16bit_hi
    7848             :       0,        // sub_32bit
    7849             :       0,        // sub_xmm
    7850             :       0,        // sub_ymm
    7851             :     },
    7852             :     {   // SEGMENT_REG
    7853             :       0,        // sub_8bit
    7854             :       0,        // sub_8bit_hi
    7855             :       0,        // sub_8bit_hi_phony
    7856             :       0,        // sub_16bit
    7857             :       0,        // sub_16bit_hi
    7858             :       0,        // sub_32bit
    7859             :       0,        // sub_xmm
    7860             :       0,        // sub_ymm
    7861             :     },
    7862             :     {   // GR16_ABCD
    7863             :       20,       // sub_8bit -> GR16_ABCD
    7864             :       20,       // sub_8bit_hi -> GR16_ABCD
    7865             :       0,        // sub_8bit_hi_phony
    7866             :       0,        // sub_16bit
    7867             :       0,        // sub_16bit_hi
    7868             :       0,        // sub_32bit
    7869             :       0,        // sub_xmm
    7870             :       0,        // sub_ymm
    7871             :     },
    7872             :     {   // FPCCR
    7873             :       0,        // sub_8bit
    7874             :       0,        // sub_8bit_hi
    7875             :       0,        // sub_8bit_hi_phony
    7876             :       0,        // sub_16bit
    7877             :       0,        // sub_16bit_hi
    7878             :       0,        // sub_32bit
    7879             :       0,        // sub_xmm
    7880             :       0,        // sub_ymm
    7881             :     },
    7882             :     {   // FR32X
    7883             :       0,        // sub_8bit
    7884             :       0,        // sub_8bit_hi
    7885             :       0,        // sub_8bit_hi_phony
    7886             :       0,        // sub_16bit
    7887             :       0,        // sub_16bit_hi
    7888             :       0,        // sub_32bit
    7889             :       0,        // sub_xmm
    7890             :       0,        // sub_ymm
    7891             :     },
    7892             :     {   // LOW32_ADDR_ACCESS_RBP
    7893             :       25,       // sub_8bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit
    7894             :       36,       // sub_8bit_hi -> GR32_ABCD
    7895             :       0,        // sub_8bit_hi_phony
    7896             :       23,       // sub_16bit -> LOW32_ADDR_ACCESS_RBP
    7897             :       0,        // sub_16bit_hi
    7898             :       45,       // sub_32bit -> LOW32_ADDR_ACCESS_RBP_with_sub_32bit
    7899             :       0,        // sub_xmm
    7900             :       0,        // sub_ymm
    7901             :     },
    7902             :     {   // LOW32_ADDR_ACCESS
    7903             :       28,       // sub_8bit -> GR32
    7904             :       36,       // sub_8bit_hi -> GR32_ABCD
    7905             :       0,        // sub_8bit_hi_phony
    7906             :       24,       // sub_16bit -> LOW32_ADDR_ACCESS
    7907             :       0,        // sub_16bit_hi
    7908             :       55,       // sub_32bit -> LOW32_ADDR_ACCESS_with_sub_32bit
    7909             :       0,        // sub_xmm
    7910             :       0,        // sub_ymm
    7911             :     },
    7912             :     {   // LOW32_ADDR_ACCESS_RBP_with_sub_8bit
    7913             :       25,       // sub_8bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit
    7914             :       36,       // sub_8bit_hi -> GR32_ABCD
    7915             :       0,        // sub_8bit_hi_phony
    7916             :       25,       // sub_16bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit
    7917             :       0,        // sub_16bit_hi
    7918             :       54,       // sub_32bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
    7919             :       0,        // sub_xmm
    7920             :       0,        // sub_ymm
    7921             :     },
    7922             :     {   // DEBUG_REG
    7923             :       0,        // sub_8bit
    7924             :       0,        // sub_8bit_hi
    7925             :       0,        // sub_8bit_hi_phony
    7926             :       0,        // sub_16bit
    7927             :       0,        // sub_16bit_hi
    7928             :       0,        // sub_32bit
    7929             :       0,        // sub_xmm
    7930             :       0,        // sub_ymm
    7931             :     },
    7932             :     {   // FR32
    7933             :       0,        // sub_8bit
    7934             :       0,        // sub_8bit_hi
    7935             :       0,        // sub_8bit_hi_phony
    7936             :       0,        // sub_16bit
    7937             :       0,        // sub_16bit_hi
    7938             :       0,        // sub_32bit
    7939             :       0,        // sub_xmm
    7940             :       0,        // sub_ymm
    7941             :     },
    7942             :     {   // GR32
    7943             :       28,       // sub_8bit -> GR32
    7944             :       36,       // sub_8bit_hi -> GR32_ABCD
    7945             :       0,        // sub_8bit_hi_phony
    7946             :       28,       // sub_16bit -> GR32
    7947             :       0,        // sub_16bit_hi
    7948             :       0,        // sub_32bit
    7949             :       0,        // sub_xmm
    7950             :       0,        // sub_ymm
    7951             :     },
    7952             :     {   // GR32_NOSP
    7953             :       29,       // sub_8bit -> GR32_NOSP
    7954             :       36,       // sub_8bit_hi -> GR32_ABCD
    7955             :       0,        // sub_8bit_hi_phony
    7956             :       29,       // sub_16bit -> GR32_NOSP
    7957             :       0,        // sub_16bit_hi
    7958             :       0,        // sub_32bit
    7959             :       0,        // sub_xmm
    7960             :       0,        // sub_ymm
    7961             :     },
    7962             :     {   // LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX
    7963             :       30,       // sub_8bit -> LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX
    7964             :       36,       // sub_8bit_hi -> GR32_ABCD
    7965             :       0,        // sub_8bit_hi_phony
    7966             :       30,       // sub_16bit -> LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX
    7967             :       0,        // sub_16bit_hi
    7968             :       54,       // sub_32bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
    7969             :       0,        // sub_xmm
    7970             :       0,        // sub_ymm
    7971             :     },
    7972             :     {   // GR32_NOREX
    7973             :       31,       // sub_8bit -> GR32_NOREX
    7974             :       36,       // sub_8bit_hi -> GR32_ABCD
    7975             :       0,        // sub_8bit_hi_phony
    7976             :       31,       // sub_16bit -> GR32_NOREX
    7977             :       0,        // sub_16bit_hi
    7978             :       0,        // sub_32bit
    7979             :       0,        // sub_xmm
    7980             :       0,        // sub_ymm
    7981             :     },
    7982             :     {   // VK32
    7983             :       0,        // sub_8bit
    7984             :       0,        // sub_8bit_hi
    7985             :       0,        // sub_8bit_hi_phony
    7986             :       0,        // sub_16bit
    7987             :       0,        // sub_16bit_hi
    7988             :       0,        // sub_32bit
    7989             :       0,        // sub_xmm
    7990             :       0,        // sub_ymm
    7991             :     },
    7992             :     {   // GR32_NOREX_NOSP
    7993             :       33,       // sub_8bit -> GR32_NOREX_NOSP
    7994             :       36,       // sub_8bit_hi -> GR32_ABCD
    7995             :       0,        // sub_8bit_hi_phony
    7996             :       33,       // sub_16bit -> GR32_NOREX_NOSP
    7997             :       0,        // sub_16bit_hi
    7998             :       0,        // sub_32bit
    7999             :       0,        // sub_xmm
    8000             :       0,        // sub_ymm
    8001             :     },
    8002             :     {   // RFP32
    8003             :       0,        // sub_8bit
    8004             :       0,        // sub_8bit_hi
    8005             :       0,        // sub_8bit_hi_phony
    8006             :       0,        // sub_16bit
    8007             :       0,        // sub_16bit_hi
    8008             :       0,        // sub_32bit
    8009             :       0,        // sub_xmm
    8010             :       0,        // sub_ymm
    8011             :     },
    8012             :     {   // VK32WM
    8013             :       0,        // sub_8bit
    8014             :       0,        // sub_8bit_hi
    8015             :       0,        // sub_8bit_hi_phony
    8016             :       0,        // sub_16bit
    8017             :       0,        // sub_16bit_hi
    8018             :       0,        // sub_32bit
    8019             :       0,        // sub_xmm
    8020             :       0,        // sub_ymm
    8021             :     },
    8022             :     {   // GR32_ABCD
    8023             :       36,       // sub_8bit -> GR32_ABCD
    8024             :       36,       // sub_8bit_hi -> GR32_ABCD
    8025             :       0,        // sub_8bit_hi_phony
    8026             :       36,       // sub_16bit -> GR32_ABCD
    8027             :       0,        // sub_16bit_hi
    8028             :       0,        // sub_32bit
    8029             :       0,        // sub_xmm
    8030             :       0,        // sub_ymm
    8031             :     },
    8032             :     {   // GR32_TC
    8033             :       37,       // sub_8bit -> GR32_TC
    8034             :       37,       // sub_8bit_hi -> GR32_TC
    8035             :       0,        // sub_8bit_hi_phony
    8036             :       37,       // sub_16bit -> GR32_TC
    8037             :       0,        // sub_16bit_hi
    8038             :       0,        // sub_32bit
    8039             :       0,        // sub_xmm
    8040             :       0,        // sub_ymm
    8041             :     },
    8042             :     {   // GR32_AD
    8043             :       38,       // sub_8bit -> GR32_AD
    8044             :       38,       // sub_8bit_hi -> GR32_AD
    8045             :       0,        // sub_8bit_hi_phony
    8046             :       38,       // sub_16bit -> GR32_AD
    8047             :       0,        // sub_16bit_hi
    8048             :       0,        // sub_32bit
    8049             :       0,        // sub_xmm
    8050             :       0,        // sub_ymm
    8051             :     },
    8052             :     {   // GR32_BPSP
    8053             :       39,       // sub_8bit -> GR32_BPSP
    8054             :       0,        // sub_8bit_hi
    8055             :       0,        // sub_8bit_hi_phony
    8056             :       39,       // sub_16bit -> GR32_BPSP
    8057             :       0,        // sub_16bit_hi
    8058             :       0,        // sub_32bit
    8059             :       0,        // sub_xmm
    8060             :       0,        // sub_ymm
    8061             :     },
    8062             :     {   // GR32_BSI
    8063             :       40,       // sub_8bit -> GR32_BSI
    8064             :       48,       // sub_8bit_hi -> GR32_ABCD_and_GR32_BSI
    8065             :       0,        // sub_8bit_hi_phony
    8066             :       40,       // sub_16bit -> GR32_BSI
    8067             :       0,        // sub_16bit_hi
    8068             :       0,        // sub_32bit
    8069             :       0,        // sub_xmm
    8070             :       0,        // sub_ymm
    8071             :     },
    8072             :     {   // GR32_CB
    8073             :       41,       // sub_8bit -> GR32_CB
    8074             :       41,       // sub_8bit_hi -> GR32_CB
    8075             :       0,        // sub_8bit_hi_phony
    8076             :       41,       // sub_16bit -> GR32_CB
    8077             :       0,        // sub_16bit_hi
    8078             :       0,        // sub_32bit
    8079             :       0,        // sub_xmm
    8080             :       0,        // sub_ymm
    8081             :     },
    8082             :     {   // GR32_DC
    8083             :       42,       // sub_8bit -> GR32_DC
    8084             :       42,       // sub_8bit_hi -> GR32_DC
    8085             :       0,        // sub_8bit_hi_phony
    8086             :       42,       // sub_16bit -> GR32_DC
    8087             :       0,        // sub_16bit_hi
    8088             :       0,        // sub_32bit
    8089             :       0,        // sub_xmm
    8090             :       0,        // sub_ymm
    8091             :     },
    8092             :     {   // GR32_DIBP
    8093             :       43,       // sub_8bit -> GR32_DIBP
    8094             :       0,        // sub_8bit_hi
    8095             :       0,        // sub_8bit_hi_phony
    8096             :       43,       // sub_16bit -> GR32_DIBP
    8097             :       0,        // sub_16bit_hi
    8098             :       0,        // sub_32bit
    8099             :       0,        // sub_xmm
    8100             :       0,        // sub_ymm
    8101             :     },
    8102             :     {   // GR32_SIDI
    8103             :       44,       // sub_8bit -> GR32_SIDI
    8104             :       0,        // sub_8bit_hi
    8105             :       0,        // sub_8bit_hi_phony
    8106             :       44,       // sub_16bit -> GR32_SIDI
    8107             :       0,        // sub_16bit_hi
    8108             :       0,        // sub_32bit
    8109             :       0,        // sub_xmm
    8110             :       0,        // sub_ymm
    8111             :     },
    8112             :     {   // LOW32_ADDR_ACCESS_RBP_with_sub_32bit
    8113             :       54,       // sub_8bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
    8114             :       0,        // sub_8bit_hi
    8115             :       0,        // sub_8bit_hi_phony
    8116             :       45,       // sub_16bit -> LOW32_ADDR_ACCESS_RBP_with_sub_32bit
    8117             :       0,        // sub_16bit_hi
    8118             :       45,       // sub_32bit -> LOW32_ADDR_ACCESS_RBP_with_sub_32bit
    8119             :       0,        // sub_xmm
    8120             :       0,        // sub_ymm
    8121             :     },
    8122             :     {   // CCR
    8123             :       0,        // sub_8bit
    8124             :       0,        // sub_8bit_hi
    8125             :       0,        // sub_8bit_hi_phony
    8126             :       0,        // sub_16bit
    8127             :       0,        // sub_16bit_hi
    8128             :       0,        // sub_32bit
    8129             :       0,        // sub_xmm
    8130             :       0,        // sub_ymm
    8131             :     },
    8132             :     {   // DFCCR
    8133             :       0,        // sub_8bit
    8134             :       0,        // sub_8bit_hi
    8135             :       0,        // sub_8bit_hi_phony
    8136             :       0,        // sub_16bit
    8137             :       0,        // sub_16bit_hi
    8138             :       0,        // sub_32bit
    8139             :       0,        // sub_xmm
    8140             :       0,        // sub_ymm
    8141             :     },
    8142             :     {   // GR32_ABCD_and_GR32_BSI
    8143             :       48,       // sub_8bit -> GR32_ABCD_and_GR32_BSI
    8144             :       48,       // sub_8bit_hi -> GR32_ABCD_and_GR32_BSI
    8145             :       0,        // sub_8bit_hi_phony
    8146             :       48,       // sub_16bit -> GR32_ABCD_and_GR32_BSI
    8147             :       0,        // sub_16bit_hi
    8148             :       0,        // sub_32bit
    8149             :       0,        // sub_xmm
    8150             :       0,        // sub_ymm
    8151             :     },
    8152             :     {   // GR32_AD_and_GR32_DC
    8153             :       49,       // sub_8bit -> GR32_AD_and_GR32_DC
    8154             :       49,       // sub_8bit_hi -> GR32_AD_and_GR32_DC
    8155             :       0,        // sub_8bit_hi_phony
    8156             :       49,       // sub_16bit -> GR32_AD_and_GR32_DC
    8157             :       0,        // sub_16bit_hi
    8158             :       0,        // sub_32bit
    8159             :       0,        // sub_xmm
    8160             :       0,        // sub_ymm
    8161             :     },
    8162             :     {   // GR32_BPSP_and_GR32_DIBP
    8163             :       50,       // sub_8bit -> GR32_BPSP_and_GR32_DIBP
    8164             :       0,        // sub_8bit_hi
    8165             :       0,        // sub_8bit_hi_phony
    8166             :       50,       // sub_16bit -> GR32_BPSP_and_GR32_DIBP
    8167             :       0,        // sub_16bit_hi
    8168             :       0,        // sub_32bit
    8169             :       0,        // sub_xmm
    8170             :       0,        // sub_ymm
    8171             :     },
    8172             :     {   // GR32_BSI_and_GR32_SIDI
    8173             :       51,       // sub_8bit -> GR32_BSI_and_GR32_SIDI
    8174             :       0,        // sub_8bit_hi
    8175             :       0,        // sub_8bit_hi_phony
    8176             :       51,       // sub_16bit -> GR32_BSI_and_GR32_SIDI
    8177             :       0,        // sub_16bit_hi
    8178             :       0,        // sub_32bit
    8179             :       0,        // sub_xmm
    8180             :       0,        // sub_ymm
    8181             :     },
    8182             :     {   // GR32_CB_and_GR32_DC
    8183             :       52,       // sub_8bit -> GR32_CB_and_GR32_DC
    8184             :       52,       // sub_8bit_hi -> GR32_CB_and_GR32_DC
    8185             :       0,        // sub_8bit_hi_phony
    8186             :       52,       // sub_16bit -> GR32_CB_and_GR32_DC
    8187             :       0,        // sub_16bit_hi
    8188             :       0,        // sub_32bit
    8189             :       0,        // sub_xmm
    8190             :       0,        // sub_ymm
    8191             :     },
    8192             :     {   // GR32_DIBP_and_GR32_SIDI
    8193             :       53,       // sub_8bit -> GR32_DIBP_and_GR32_SIDI
    8194             :       0,        // sub_8bit_hi
    8195             :       0,        // sub_8bit_hi_phony
    8196             :       53,       // sub_16bit -> GR32_DIBP_and_GR32_SIDI
    8197             :       0,        // sub_16bit_hi
    8198             :       0,        // sub_32bit
    8199             :       0,        // sub_xmm
    8200             :       0,        // sub_ymm
    8201             :     },
    8202             :     {   // LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
    8203             :       54,       // sub_8bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
    8204             :       0,        // sub_8bit_hi
    8205             :       0,        // sub_8bit_hi_phony
    8206             :       54,       // sub_16bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
    8207             :       0,        // sub_16bit_hi
    8208             :       54,       // sub_32bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
    8209             :       0,        // sub_xmm
    8210             :       0,        // sub_ymm
    8211             :     },
    8212             :     {   // LOW32_ADDR_ACCESS_with_sub_32bit
    8213             :       0,        // sub_8bit
    8214             :       0,        // sub_8bit_hi
    8215             :       0,        // sub_8bit_hi_phony
    8216             :       55,       // sub_16bit -> LOW32_ADDR_ACCESS_with_sub_32bit
    8217             :       0,        // sub_16bit_hi
    8218             :       55,       // sub_32bit -> LOW32_ADDR_ACCESS_with_sub_32bit
    8219             :       0,        // sub_xmm
    8220             :       0,        // sub_ymm
    8221             :     },
    8222             :     {   // RFP64
    8223             :       0,        // sub_8bit
    8224             :       0,        // sub_8bit_hi
    8225             :       0,        // sub_8bit_hi_phony
    8226             :       0,        // sub_16bit
    8227             :       0,        // sub_16bit_hi
    8228             :       0,        // sub_32bit
    8229             :       0,        // sub_xmm
    8230             :       0,        // sub_ymm
    8231             :     },
    8232             :     {   // FR64X
    8233             :       0,        // sub_8bit
    8234             :       0,        // sub_8bit_hi
    8235             :       0,        // sub_8bit_hi_phony
    8236             :       0,        // sub_16bit
    8237             :       0,        // sub_16bit_hi
    8238             :       0,        // sub_32bit
    8239             :       0,        // sub_xmm
    8240             :       0,        // sub_ymm
    8241             :     },
    8242             :     {   // GR64
    8243             :       61,       // sub_8bit -> GR64_with_sub_8bit
    8244             :       77,       // sub_8bit_hi -> GR64_ABCD
    8245             :       0,        // sub_8bit_hi_phony
    8246             :       58,       // sub_16bit -> GR64
    8247             :       0,        // sub_16bit_hi
    8248             :       58,       // sub_32bit -> GR64
    8249             :       0,        // sub_xmm
    8250             :       0,        // sub_ymm
    8251             :     },
    8252             :     {   // CONTROL_REG
    8253             :       0,        // sub_8bit
    8254             :       0,        // sub_8bit_hi
    8255             :       0,        // sub_8bit_hi_phony
    8256             :       0,        // sub_16bit
    8257             :       0,        // sub_16bit_hi
    8258             :       0,        // sub_32bit
    8259             :       0,        // sub_xmm
    8260             :       0,        // sub_ymm
    8261             :     },
    8262             :     {   // FR64
    8263             :       0,        // sub_8bit
    8264             :       0,        // sub_8bit_hi
    8265             :       0,        // sub_8bit_hi_phony
    8266             :       0,        // sub_16bit
    8267             :       0,        // sub_16bit_hi
    8268             :       0,        // sub_32bit
    8269             :       0,        // sub_xmm
    8270             :       0,        // sub_ymm
    8271             :     },
    8272             :     {   // GR64_with_sub_8bit
    8273             :       61,       // sub_8bit -> GR64_with_sub_8bit
    8274             :       77,       // sub_8bit_hi -> GR64_ABCD
    8275             :       0,        // sub_8bit_hi_phony
    8276             :       61,       // sub_16bit -> GR64_with_sub_8bit
    8277             :       0,        // sub_16bit_hi
    8278             :       61,       // sub_32bit -> GR64_with_sub_8bit
    8279             :       0,        // sub_xmm
    8280             :       0,        // sub_ymm
    8281             :     },
    8282             :     {   // GR64_NOSP
    8283             :       62,       // sub_8bit -> GR64_NOSP
    8284             :       77,       // sub_8bit_hi -> GR64_ABCD
    8285             :       0,        // sub_8bit_hi_phony
    8286             :       62,       // sub_16bit -> GR64_NOSP
    8287             :       0,        // sub_16bit_hi
    8288             :       62,       // sub_32bit -> GR64_NOSP
    8289             :       0,        // sub_xmm
    8290             :       0,        // sub_ymm
    8291             :     },
    8292             :     {   // GR64_NOREX
    8293             :       67,       // sub_8bit -> GR64_with_sub_16bit_in_GR16_NOREX
    8294             :       77,       // sub_8bit_hi -> GR64_ABCD
    8295             :       0,        // sub_8bit_hi_phony
    8296             :       63,       // sub_16bit -> GR64_NOREX
    8297             :       0,        // sub_16bit_hi
    8298             :       63,       // sub_32bit -> GR64_NOREX
    8299             :       0,        // sub_xmm
    8300             :       0,        // sub_ymm
    8301             :     },
    8302             :     {   // GR64_TC
    8303             :       65,       // sub_8bit -> GR64_NOSP_and_GR64_TC
    8304             :       79,       // sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
    8305             :       0,        // sub_8bit_hi_phony
    8306             :       64,       // sub_16bit -> GR64_TC
    8307             :       0,        // sub_16bit_hi
    8308             :       64,       // sub_32bit -> GR64_TC
    8309             :       0,        // sub_xmm
    8310             :       0,        // sub_ymm
    8311             :     },
    8312             :     {   // GR64_NOSP_and_GR64_TC
    8313             :       65,       // sub_8bit -> GR64_NOSP_and_GR64_TC
    8314             :       79,       // sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
    8315             :       0,        // sub_8bit_hi_phony
    8316             :       65,       // sub_16bit -> GR64_NOSP_and_GR64_TC
    8317             :       0,        // sub_16bit_hi
    8318             :       65,       // sub_32bit -> GR64_NOSP_and_GR64_TC
    8319             :       0,        // sub_xmm
    8320             :       0,        // sub_ymm
    8321             :     },
    8322             :     {   // GR64_TCW64
    8323             :       71,       // sub_8bit -> GR64_NOSP_and_GR64_TCW64
    8324             :       79,       // sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
    8325             :       0,        // sub_8bit_hi_phony
    8326             :       66,       // sub_16bit -> GR64_TCW64
    8327             :       0,        // sub_16bit_hi
    8328             :       66,       // sub_32bit -> GR64_TCW64
    8329             :       0,        // sub_xmm
    8330             :       0,        // sub_ymm
    8331             :     },
    8332             :     {   // GR64_with_sub_16bit_in_GR16_NOREX
    8333             :       67,       // sub_8bit -> GR64_with_sub_16bit_in_GR16_NOREX
    8334             :       77,       // sub_8bit_hi -> GR64_ABCD
    8335             :       0,        // sub_8bit_hi_phony
    8336             :       67,       // sub_16bit -> GR64_with_sub_16bit_in_GR16_NOREX
    8337             :       0,        // sub_16bit_hi
    8338             :       67,       // sub_32bit -> GR64_with_sub_16bit_in_GR16_NOREX
    8339             :       0,        // sub_xmm
    8340             :       0,        // sub_ymm
    8341             :     },
    8342             :     {   // VK64
    8343             :       0,        // sub_8bit
    8344             :       0,        // sub_8bit_hi
    8345             :       0,        // sub_8bit_hi_phony
    8346             :       0,        // sub_16bit
    8347             :       0,        // sub_16bit_hi
    8348             :       0,        // sub_32bit
    8349             :       0,        // sub_xmm
    8350             :       0,        // sub_ymm
    8351             :     },
    8352             :     {   // VR64
    8353             :       0,        // sub_8bit
    8354             :       0,        // sub_8bit_hi
    8355             :       0,        // sub_8bit_hi_phony
    8356             :       0,        // sub_16bit
    8357             :       0,        // sub_16bit_hi
    8358             :       0,        // sub_32bit
    8359             :       0,        // sub_xmm
    8360             :       0,        // sub_ymm
    8361             :     },
    8362             :     {   // GR64_NOREX_NOSP
    8363             :       70,       // sub_8bit -> GR64_NOREX_NOSP
    8364             :       77,       // sub_8bit_hi -> GR64_ABCD
    8365             :       0,        // sub_8bit_hi_phony
    8366             :       70,       // sub_16bit -> GR64_NOREX_NOSP
    8367             :       0,        // sub_16bit_hi
    8368             :       70,       // sub_32bit -> GR64_NOREX_NOSP
    8369             :       0,        // sub_xmm
    8370             :       0,        // sub_ymm
    8371             :     },
    8372             :     {   // GR64_NOSP_and_GR64_TCW64
    8373             :       71,       // sub_8bit -> GR64_NOSP_and_GR64_TCW64
    8374             :       79,       // sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
    8375             :       0,        // sub_8bit_hi_phony
    8376             :       71,       // sub_16bit -> GR64_NOSP_and_GR64_TCW64
    8377             :       0,        // sub_16bit_hi
    8378             :       71,       // sub_32bit -> GR64_NOSP_and_GR64_TCW64
    8379             :       0,        // sub_xmm
    8380             :       0,        // sub_ymm
    8381             :     },
    8382             :     {   // GR64_TC_and_GR64_TCW64
    8383             :       75,       // sub_8bit -> GR64_TC_and_GR64_NOSP_and_GR64_TCW64
    8384             :       79,       // sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
    8385             :       0,        // sub_8bit_hi_phony
    8386             :       72,       // sub_16bit -> GR64_TC_and_GR64_TCW64
    8387             :       0,        // sub_16bit_hi
    8388             :       72,       // sub_32bit -> GR64_TC_and_GR64_TCW64
    8389             :       0,        // sub_xmm
    8390             :       0,        // sub_ymm
    8391             :     },
    8392             :     {   // VK64WM
    8393             :       0,        // sub_8bit
    8394             :       0,        // sub_8bit_hi
    8395             :       0,        // sub_8bit_hi_phony
    8396             :       0,        // sub_16bit
    8397             :       0,        // sub_16bit_hi
    8398             :       0,        // sub_32bit
    8399             :       0,        // sub_xmm
    8400             :       0,        // sub_ymm
    8401             :     },
    8402             :     {   // GR64_NOREX_and_GR64_TC
    8403             :       76,       // sub_8bit -> GR64_NOREX_NOSP_and_GR64_TC
    8404             :       79,       // sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
    8405             :       0,        // sub_8bit_hi_phony
    8406             :       74,       // sub_16bit -> GR64_NOREX_and_GR64_TC
    8407             :       0,        // sub_16bit_hi
    8408             :       74,       // sub_32bit -> GR64_NOREX_and_GR64_TC
    8409             :       0,        // sub_xmm
    8410             :       0,        // sub_ymm
    8411             :     },
    8412             :     {   // GR64_TC_and_GR64_NOSP_and_GR64_TCW64
    8413             :       75,       // sub_8bit -> GR64_TC_and_GR64_NOSP_and_GR64_TCW64
    8414             :       79,       // sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
    8415             :       0,        // sub_8bit_hi_phony
    8416             :       75,       // sub_16bit -> GR64_TC_and_GR64_NOSP_and_GR64_TCW64
    8417             :       0,        // sub_16bit_hi
    8418             :       75,       // sub_32bit -> GR64_TC_and_GR64_NOSP_and_GR64_TCW64
    8419             :       0,        // sub_xmm
    8420             :       0,        // sub_ymm
    8421             :     },
    8422             :     {   // GR64_NOREX_NOSP_and_GR64_TC
    8423             :       76,       // sub_8bit -> GR64_NOREX_NOSP_and_GR64_TC
    8424             :       79,       // sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
    8425             :       0,        // sub_8bit_hi_phony
    8426             :       76,       // sub_16bit -> GR64_NOREX_NOSP_and_GR64_TC
    8427             :       0,        // sub_16bit_hi
    8428             :       76,       // sub_32bit -> GR64_NOREX_NOSP_and_GR64_TC
    8429             :       0,        // sub_xmm
    8430             :       0,        // sub_ymm
    8431             :     },
    8432             :     {   // GR64_ABCD
    8433             :       77,       // sub_8bit -> GR64_ABCD
    8434             :       77,       // sub_8bit_hi -> GR64_ABCD
    8435             :       0,        // sub_8bit_hi_phony
    8436             :       77,       // sub_16bit -> GR64_ABCD
    8437             :       0,        // sub_16bit_hi
    8438             :       77,       // sub_32bit -> GR64_ABCD
    8439             :       0,        // sub_xmm
    8440             :       0,        // sub_ymm
    8441             :     },
    8442             :     {   // GR64_NOREX_and_GR64_TCW64
    8443             :       79,       // sub_8bit -> GR64_with_sub_32bit_in_GR32_TC
    8444             :       79,       // sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
    8445             :       0,        // sub_8bit_hi_phony
    8446             :       78,       // sub_16bit -> GR64_NOREX_and_GR64_TCW64
    8447             :       0,        // sub_16bit_hi
    8448             :       78,       // sub_32bit -> GR64_NOREX_and_GR64_TCW64
    8449             :       0,        // sub_xmm
    8450             :       0,        // sub_ymm
    8451             :     },
    8452             :     {   // GR64_with_sub_32bit_in_GR32_TC
    8453             :       79,       // sub_8bit -> GR64_with_sub_32bit_in_GR32_TC
    8454             :       79,       // sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
    8455             :       0,        // sub_8bit_hi_phony
    8456             :       79,       // sub_16bit -> GR64_with_sub_32bit_in_GR32_TC
    8457             :       0,        // sub_16bit_hi
    8458             :       79,       // sub_32bit -> GR64_with_sub_32bit_in_GR32_TC
    8459             :       0,        // sub_xmm
    8460             :       0,        // sub_ymm
    8461             :     },
    8462             :     {   // GR64_AD
    8463             :       80,       // sub_8bit -> GR64_AD
    8464             :       80,       // sub_8bit_hi -> GR64_AD
    8465             :       0,        // sub_8bit_hi_phony
    8466             :       80,       // sub_16bit -> GR64_AD
    8467             :       0,        // sub_16bit_hi
    8468             :       80,       // sub_32bit -> GR64_AD
    8469             :       0,        // sub_xmm
    8470             :       0,        // sub_ymm
    8471             :     },
    8472             :     {   // GR64_and_LOW32_ADDR_ACCESS_RBP
    8473             :       91,       // sub_8bit -> GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBP
    8474             :       0,        // sub_8bit_hi
    8475             :       0,        // sub_8bit_hi_phony
    8476             :       81,       // sub_16bit -> GR64_and_LOW32_ADDR_ACCESS_RBP
    8477             :       0,        // sub_16bit_hi
    8478             :       81,       // sub_32bit -> GR64_and_LOW32_ADDR_ACCESS_RBP
    8479             :       0,        // sub_xmm
    8480             :       0,        // sub_ymm
    8481             :     },
    8482             :     {   // GR64_with_sub_32bit_in_GR32_BPSP
    8483             :       82,       // sub_8bit -> GR64_with_sub_32bit_in_GR32_BPSP
    8484             :       0,        // sub_8bit_hi
    8485             :       0,        // sub_8bit_hi_phony
    8486             :       82,       // sub_16bit -> GR64_with_sub_32bit_in_GR32_BPSP
    8487             :       0,        // sub_16bit_hi
    8488             :       82,       // sub_32bit -> GR64_with_sub_32bit_in_GR32_BPSP
    8489             :       0,        // sub_xmm
    8490             :       0,        // sub_ymm
    8491             :     },
    8492             :     {   // GR64_with_sub_32bit_in_GR32_BSI
    8493             :       83,       // sub_8bit -> GR64_with_sub_32bit_in_GR32_BSI
    8494             :       89,       // sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSI
    8495             :       0,        // sub_8bit_hi_phony
    8496             :       83,       // sub_16bit -> GR64_with_sub_32bit_in_GR32_BSI
    8497             :       0,        // sub_16bit_hi
    8498             :       83,       // sub_32bit -> GR64_with_sub_32bit_in_GR32_BSI
    8499             :       0,        // sub_xmm
    8500             :       0,        // sub_ymm
    8501             :     },
    8502             :     {   // GR64_with_sub_32bit_in_GR32_CB
    8503             :       84,       // sub_8bit -> GR64_with_sub_32bit_in_GR32_CB
    8504             :       84,       // sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_CB
    8505             :       0,        // sub_8bit_hi_phony
    8506             :       84,       // sub_16bit -> GR64_with_sub_32bit_in_GR32_CB
    8507             :       0,        // sub_16bit_hi
    8508             :       84,       // sub_32bit -> GR64_with_sub_32bit_in_GR32_CB
    8509             :       0,        // sub_xmm
    8510             :       0,        // sub_ymm
    8511             :     },
    8512             :     {   // GR64_with_sub_32bit_in_GR32_DC
    8513             :       85,       // sub_8bit -> GR64_with_sub_32bit_in_GR32_DC
    8514             :       85,       // sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_DC
    8515             :       0,        // sub_8bit_hi_phony
    8516             :       85,       // sub_16bit -> GR64_with_sub_32bit_in_GR32_DC
    8517             :       0,        // sub_16bit_hi
    8518             :       85,       // sub_32bit -> GR64_with_sub_32bit_in_GR32_DC
    8519             :       0,        // sub_xmm
    8520             :       0,        // sub_ymm
    8521             :     },
    8522             :     {   // GR64_with_sub_32bit_in_GR32_DIBP
    8523             :       86,       // sub_8bit -> GR64_with_sub_32bit_in_GR32_DIBP
    8524             :       0,        // sub_8bit_hi
    8525             :       0,        // sub_8bit_hi_phony
    8526             :       86,       // sub_16bit -> GR64_with_sub_32bit_in_GR32_DIBP
    8527             :       0,        // sub_16bit_hi
    8528             :       86,       // sub_32bit -> GR64_with_sub_32bit_in_GR32_DIBP
    8529             :       0,        // sub_xmm
    8530             :       0,        // sub_ymm
    8531             :     },
    8532             :     {   // GR64_with_sub_32bit_in_GR32_SIDI
    8533             :       87,       // sub_8bit -> GR64_with_sub_32bit_in_GR32_SIDI
    8534             :       0,        // sub_8bit_hi
    8535             :       0,        // sub_8bit_hi_phony
    8536             :       87,       // sub_16bit -> GR64_with_sub_32bit_in_GR32_SIDI
    8537             :       0,        // sub_16bit_hi
    8538             :       87,       // sub_32bit -> GR64_with_sub_32bit_in_GR32_SIDI
    8539             :       0,        // sub_xmm
    8540             :       0,        // sub_ymm
    8541             :     },
    8542             :     {   // GR64_and_LOW32_ADDR_ACCESS
    8543             :       0,        // sub_8bit
    8544             :       0,        // sub_8bit_hi
    8545             :       0,        // sub_8bit_hi_phony
    8546             :       88,       // sub_16bit -> GR64_and_LOW32_ADDR_ACCESS
    8547             :       0,        // sub_16bit_hi
    8548             :       88,       // sub_32bit -> GR64_and_LOW32_ADDR_ACCESS
    8549             :       0,        // sub_xmm
    8550             :       0,        // sub_ymm
    8551             :     },
    8552             :     {   // GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSI
    8553             :       89,       // sub_8bit -> GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSI
    8554             :       89,       // sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSI
    8555             :       0,        // sub_8bit_hi_phony
    8556             :       89,       // sub_16bit -> GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSI
    8557             :       0,        // sub_16bit_hi
    8558             :       89,       // sub_32bit -> GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSI
    8559             :       0,        // sub_xmm
    8560             :       0,        // sub_ymm
    8561             :     },
    8562             :     {   // GR64_with_sub_32bit_in_GR32_AD_and_GR32_DC
    8563             :       90,       // sub_8bit -> GR64_with_sub_32bit_in_GR32_AD_and_GR32_DC
    8564             :       90,       // sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_AD_and_GR32_DC
    8565             :       0,        // sub_8bit_hi_phony
    8566             :       90,       // sub_16bit -> GR64_with_sub_32bit_in_GR32_AD_and_GR32_DC
    8567             :       0,        // sub_16bit_hi
    8568             :       90,       // sub_32bit -> GR64_with_sub_32bit_in_GR32_AD_and_GR32_DC
    8569             :       0,        // sub_xmm
    8570             :       0,        // sub_ymm
    8571             :     },
    8572             :     {   // GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBP
    8573             :       91,       // sub_8bit -> GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBP
    8574             :       0,        // sub_8bit_hi
    8575             :       0,        // sub_8bit_hi_phony
    8576             :       91,       // sub_16bit -> GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBP
    8577             :       0,        // sub_16bit_hi
    8578             :       91,       // sub_32bit -> GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBP
    8579             :       0,        // sub_xmm
    8580             :       0,        // sub_ymm
    8581             :     },
    8582             :     {   // GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDI
    8583             :       92,       // sub_8bit -> GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDI
    8584             :       0,        // sub_8bit_hi
    8585             :       0,        // sub_8bit_hi_phony
    8586             :       92,       // sub_16bit -> GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDI
    8587             :       0,        // sub_16bit_hi
    8588             :       92,       // sub_32bit -> GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDI
    8589             :       0,        // sub_xmm
    8590             :       0,        // sub_ymm
    8591             :     },
    8592             :     {   // GR64_with_sub_32bit_in_GR32_CB_and_GR32_DC
    8593             :       93,       // sub_8bit -> GR64_with_sub_32bit_in_GR32_CB_and_GR32_DC
    8594             :       93,       // sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_CB_and_GR32_DC
    8595             :       0,        // sub_8bit_hi_phony
    8596             :       93,       // sub_16bit -> GR64_with_sub_32bit_in_GR32_CB_and_GR32_DC
    8597             :       0,        // sub_16bit_hi
    8598             :       93,       // sub_32bit -> GR64_with_sub_32bit_in_GR32_CB_and_GR32_DC
    8599             :       0,        // sub_xmm
    8600             :       0,        // sub_ymm
    8601             :     },
    8602             :     {   // GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDI
    8603             :       94,       // sub_8bit -> GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDI
    8604             :       0,        // sub_8bit_hi
    8605             :       0,        // sub_8bit_hi_phony
    8606             :       94,       // sub_16bit -> GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDI
    8607             :       0,        // sub_16bit_hi
    8608             :       94,       // sub_32bit -> GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDI
    8609             :       0,        // sub_xmm
    8610             :       0,        // sub_ymm
    8611             :     },
    8612             :     {   // RST
    8613             :       0,        // sub_8bit
    8614             :       0,        // sub_8bit_hi
    8615             :       0,        // sub_8bit_hi_phony
    8616             :       0,        // sub_16bit
    8617             :       0,        // sub_16bit_hi
    8618             :       0,        // sub_32bit
    8619             :       0,        // sub_xmm
    8620             :       0,        // sub_ymm
    8621             :     },
    8622             :     {   // RFP80
    8623             :       0,        // sub_8bit
    8624             :       0,        // sub_8bit_hi
    8625             :       0,        // sub_8bit_hi_phony
    8626             :       0,        // sub_16bit
    8627             :       0,        // sub_16bit_hi
    8628             :       0,        // sub_32bit
    8629             :       0,        // sub_xmm
    8630             :       0,        // sub_ymm
    8631             :     },
    8632             :     {   // VR128X
    8633             :       0,        // sub_8bit
    8634             :       0,        // sub_8bit_hi
    8635             :       0,        // sub_8bit_hi_phony
    8636             :       0,        // sub_16bit
    8637             :       0,        // sub_16bit_hi
    8638             :       0,        // sub_32bit
    8639             :       0,        // sub_xmm
    8640             :       0,        // sub_ymm
    8641             :     },
    8642             :     {   // VR128
    8643             :       0,        // sub_8bit
    8644             :       0,        // sub_8bit_hi
    8645             :       0,        // sub_8bit_hi_phony
    8646             :       0,        // sub_16bit
    8647             :       0,        // sub_16bit_hi
    8648             :       0,        // sub_32bit
    8649             :       0,        // sub_xmm
    8650             :       0,        // sub_ymm
    8651             :     },
    8652             :     {   // VR128H
    8653             :       0,        // sub_8bit
    8654             :       0,        // sub_8bit_hi
    8655             :       0,        // sub_8bit_hi_phony
    8656             :       0,        // sub_16bit
    8657             :       0,        // sub_16bit_hi
    8658             :       0,        // sub_32bit
    8659             :       0,        // sub_xmm
    8660             :       0,        // sub_ymm
    8661             :     },
    8662             :     {   // VR128L
    8663             :       0,        // sub_8bit
    8664             :       0,        // sub_8bit_hi
    8665             :       0,        // sub_8bit_hi_phony
    8666             :       0,        // sub_16bit
    8667             :       0,        // sub_16bit_hi
    8668             :       0,        // sub_32bit
    8669             :       0,        // sub_xmm
    8670             :       0,        // sub_ymm
    8671             :     },
    8672             :     {   // BNDR
    8673             :       0,        // sub_8bit
    8674             :       0,        // sub_8bit_hi
    8675             :       0,        // sub_8bit_hi_phony
    8676             :       0,        // sub_16bit
    8677             :       0,        // sub_16bit_hi
    8678             :       0,        // sub_32bit
    8679             :       0,        // sub_xmm
    8680             :       0,        // sub_ymm
    8681             :     },
    8682             :     {   // VR256X
    8683             :       0,        // sub_8bit
    8684             :       0,        // sub_8bit_hi
    8685             :       0,        // sub_8bit_hi_phony
    8686             :       0,        // sub_16bit
    8687             :       0,        // sub_16bit_hi
    8688             :       0,        // sub_32bit
    8689             :       102,      // sub_xmm -> VR256X
    8690             :       0,        // sub_ymm
    8691             :     },
    8692             :     {   // VR256
    8693             :       0,        // sub_8bit
    8694             :       0,        // sub_8bit_hi
    8695             :       0,        // sub_8bit_hi_phony
    8696             :       0,        // sub_16bit
    8697             :       0,        // sub_16bit_hi
    8698             :       0,        // sub_32bit
    8699             :       103,      // sub_xmm -> VR256
    8700             :       0,        // sub_ymm
    8701             :     },
    8702             :     {   // VR256H
    8703             :       0,        // sub_8bit
    8704             :       0,        // sub_8bit_hi
    8705             :       0,        // sub_8bit_hi_phony
    8706             :       0,        // sub_16bit
    8707             :       0,        // sub_16bit_hi
    8708             :       0,        // sub_32bit
    8709             :       104,      // sub_xmm -> VR256H
    8710             :       0,        // sub_ymm
    8711             :     },
    8712             :     {   // VR256L
    8713             :       0,        // sub_8bit
    8714             :       0,        // sub_8bit_hi
    8715             :       0,        // sub_8bit_hi_phony
    8716             :       0,        // sub_16bit
    8717             :       0,        // sub_16bit_hi
    8718             :       0,        // sub_32bit
    8719             :       105,      // sub_xmm -> VR256L
    8720             :       0,        // sub_ymm
    8721             :     },
    8722             :     {   // VR512
    8723             :       0,        // sub_8bit
    8724             :       0,        // sub_8bit_hi
    8725             :       0,        // sub_8bit_hi_phony
    8726             :       0,        // sub_16bit
    8727             :       0,        // sub_16bit_hi
    8728             :       0,        // sub_32bit
    8729             :       106,      // sub_xmm -> VR512
    8730             :       106,      // sub_ymm -> VR512
    8731             :     },
    8732             :     {   // VR512_with_sub_xmm_in_FR32
    8733             :       0,        // sub_8bit
    8734             :       0,        // sub_8bit_hi
    8735             :       0,        // sub_8bit_hi_phony
    8736             :       0,        // sub_16bit
    8737             :       0,        // sub_16bit_hi
    8738             :       0,        // sub_32bit
    8739             :       107,      // sub_xmm -> VR512_with_sub_xmm_in_FR32
    8740             :       107,      // sub_ymm -> VR512_with_sub_xmm_in_FR32
    8741             :     },
    8742             :     {   // VR512_with_sub_xmm_in_VR128H
    8743             :       0,        // sub_8bit
    8744             :       0,        // sub_8bit_hi
    8745             :       0,        // sub_8bit_hi_phony
    8746             :       0,        // sub_16bit
    8747             :       0,        // sub_16bit_hi
    8748             :       0,        // sub_32bit
    8749             :       108,      // sub_xmm -> VR512_with_sub_xmm_in_VR128H
    8750             :       108,      // sub_ymm -> VR512_with_sub_xmm_in_VR128H
    8751             :     },
    8752             :     {   // VR512_with_sub_xmm_in_VR128L
    8753             :       0,        // sub_8bit
    8754             :       0,        // sub_8bit_hi
    8755             :       0,        // sub_8bit_hi_phony
    8756             :       0,        // sub_16bit
    8757             :       0,        // sub_16bit_hi
    8758             :       0,        // sub_32bit
    8759             :       109,      // sub_xmm -> VR512_with_sub_xmm_in_VR128L
    8760             :       109,      // sub_ymm -> VR512_with_sub_xmm_in_VR128L
    8761             :     },
    8762             :   };
    8763             :   assert(RC && "Missing regclass");
    8764      571118 :   if (!Idx) return RC;
    8765      571114 :   --Idx;
    8766             :   assert(Idx < 8 && "Bad subreg");
    8767      571114 :   unsigned TV = Table[RC->getID()][Idx];
    8768      571114 :   return TV ? getRegClass(TV - 1) : nullptr;
    8769             : }
    8770             : 
    8771             : /// Get the weight in units of pressure for this register class.
    8772     9369104 : const RegClassWeight &X86GenRegisterInfo::
    8773             : getRegClassWeight(const TargetRegisterClass *RC) const {
    8774             :   static const RegClassWeight RCWeightTable[] = {
    8775             :     {1, 20},    // GR8
    8776             :     {0, 0},     // GRH8
    8777             :     {1, 8},     // GR8_NOREX
    8778             :     {1, 4},     // GR8_ABCD_H
    8779             :     {1, 4},     // GR8_ABCD_L
    8780             :     {0, 0},     // GRH16
    8781             :     {2, 32},    // GR16
    8782             :     {2, 16},    // GR16_NOREX
    8783             :     {1, 8},     // VK1
    8784             :     {1, 8},     // VK16
    8785             :     {1, 8},     // VK2
    8786             :     {1, 8},     // VK4
    8787             :     {1, 8},     // VK8
    8788             :     {1, 7},     // VK16WM
    8789             :     {1, 7},     // VK1WM
    8790             :     {1, 7},     // VK2WM
    8791             :     {1, 7},     // VK4WM
    8792             :     {1, 7},     // VK8WM
    8793             :     {1, 6},     // SEGMENT_REG
    8794             :     {2, 8},     // GR16_ABCD
    8795             :     {0, 0},     // FPCCR
    8796             :     {1, 32},    // FR32X
    8797             :     {2, 34},    // LOW32_ADDR_ACCESS_RBP
    8798             :     {2, 34},    // LOW32_ADDR_ACCESS
    8799             :     {2, 32},    // LOW32_ADDR_ACCESS_RBP_with_sub_8bit
    8800             :     {1, 16},    // DEBUG_REG
    8801             :     {1, 16},    // FR32
    8802             :     {2, 32},    // GR32
    8803             :     {2, 30},    // GR32_NOSP
    8804             :     {2, 16},    // LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX
    8805             :     {2, 16},    // GR32_NOREX
    8806             :     {1, 8},     // VK32
    8807             :     {2, 14},    // GR32_NOREX_NOSP
    8808             :     {1, 7},     // RFP32
    8809             :     {1, 7},     // VK32WM
    8810             :     {2, 8},     // GR32_ABCD
    8811             :     {2, 6},     // GR32_TC
    8812             :     {2, 4},     // GR32_AD
    8813             :     {2, 4},     // GR32_BPSP
    8814             :     {2, 4},     // GR32_BSI
    8815             :     {2, 4},     // GR32_CB
    8816             :     {2, 4},     // GR32_DC
    8817             :     {2, 4},     // GR32_DIBP
    8818             :     {2, 4},     // GR32_SIDI
    8819             :     {2, 4},     // LOW32_ADDR_ACCESS_RBP_with_sub_32bit
    8820             :     {0, 0},     // CCR
    8821             :     {0, 0},     // DFCCR
    8822             :     {2, 2},     // GR32_ABCD_and_GR32_BSI
    8823             :     {2, 2},     // GR32_AD_and_GR32_DC
    8824             :     {2, 2},     // GR32_BPSP_and_GR32_DIBP
    8825             :     {2, 2},     // GR32_BSI_and_GR32_SIDI
    8826             :     {2, 2},     // GR32_CB_and_GR32_DC
    8827             :     {2, 2},     // GR32_DIBP_and_GR32_SIDI
    8828             :     {2, 2},     // LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
    8829             :     {2, 2},     // LOW32_ADDR_ACCESS_with_sub_32bit
    8830             :     {1, 7},     // RFP64
    8831             :     {1, 32},    // FR64X
    8832             :     {2, 34},    // GR64
    8833             :     {1, 16},    // CONTROL_REG
    8834             :     {1, 16},    // FR64
    8835             :     {2, 32},    // GR64_with_sub_8bit
    8836             :     {2, 30},    // GR64_NOSP
    8837             :     {2, 18},    // GR64_NOREX
    8838             :     {2, 18},    // GR64_TC
    8839             :     {2, 16},    // GR64_NOSP_and_GR64_TC
    8840             :     {2, 16},    // GR64_TCW64
    8841             :     {2, 16},    // GR64_with_sub_16bit_in_GR16_NOREX
    8842             :     {1, 8},     // VK64
    8843             :     {1, 8},     // VR64
    8844             :     {2, 14},    // GR64_NOREX_NOSP
    8845             :     {2, 14},    // GR64_NOSP_and_GR64_TCW64
    8846             :     {2, 14},    // GR64_TC_and_GR64_TCW64
    8847             :     {1, 7},     // VK64WM
    8848             :     {2, 12},    // GR64_NOREX_and_GR64_TC
    8849             :     {2, 12},    // GR64_TC_and_GR64_NOSP_and_GR64_TCW64
    8850             :     {2, 10},    // GR64_NOREX_NOSP_and_GR64_TC
    8851             :     {2, 8},     // GR64_ABCD
    8852             :     {2, 8},     // GR64_NOREX_and_GR64_TCW64
    8853             :     {2, 6},     // GR64_with_sub_32bit_in_GR32_TC
    8854             :     {2, 4},     // GR64_AD
    8855             :     {2, 4},     // GR64_and_LOW32_ADDR_ACCESS_RBP
    8856             :     {2, 4},     // GR64_with_sub_32bit_in_GR32_BPSP
    8857             :     {2, 4},     // GR64_with_sub_32bit_in_GR32_BSI
    8858             :     {2, 4},     // GR64_with_sub_32bit_in_GR32_CB
    8859             :     {2, 4},     // GR64_with_sub_32bit_in_GR32_DC
    8860             :     {2, 4},     // GR64_with_sub_32bit_in_GR32_DIBP
    8861             :     {2, 4},     // GR64_with_sub_32bit_in_GR32_SIDI
    8862             :     {2, 2},     // GR64_and_LOW32_ADDR_ACCESS
    8863             :     {2, 2},     // GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSI
    8864             :     {2, 2},     // GR64_with_sub_32bit_in_GR32_AD_and_GR32_DC
    8865             :     {2, 2},     // GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBP
    8866             :     {2, 2},     // GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDI
    8867             :     {2, 2},     // GR64_with_sub_32bit_in_GR32_CB_and_GR32_DC
    8868             :     {2, 2},     // GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDI
    8869             :     {0, 0},     // RST
    8870             :     {1, 7},     // RFP80
    8871             :     {1, 32},    // VR128X
    8872             :     {1, 16},    // VR128
    8873             :     {1, 8},     // VR128H
    8874             :     {1, 8},     // VR128L
    8875             :     {1, 4},     // BNDR
    8876             :     {1, 32},    // VR256X
    8877             :     {1, 16},    // VR256
    8878             :     {1, 8},     // VR256H
    8879             :     {1, 8},     // VR256L
    8880             :     {1, 32},    // VR512
    8881             :     {1, 16},    // VR512_with_sub_xmm_in_FR32
    8882             :     {1, 8},     // VR512_with_sub_xmm_in_VR128H
    8883             :     {1, 8},     // VR512_with_sub_xmm_in_VR128L
    8884             :   };
    8885    18738208 :   return RCWeightTable[RC->getID()];
    8886             : }
    8887             : 
    8888             : /// Get the weight in units of pressure for this register unit.
    8889     1061917 : unsigned X86GenRegisterInfo::
    8890             : getRegUnitWeight(unsigned RegUnit) const {
    8891             :   assert(RegUnit < 162 && "invalid register unit");
    8892             :   // All register units have unit weight.
    8893     1061917 :   return 1;
    8894             : }
    8895             : 
    8896             : 
    8897             : // Get the number of dimensions of register pressure.
    8898      515935 : unsigned X86GenRegisterInfo::getNumRegPressureSets() const {
    8899      515935 :   return 38;
    8900             : }
    8901             : 
    8902             : // Get the name of this register unit pressure set.
    8903           0 : const char *X86GenRegisterInfo::
    8904             : getRegPressureSetName(unsigned Idx) const {
    8905             :   static const char *const PressureNameTable[] = {
    8906             :     "BNDR",
    8907             :     "SEGMENT_REG",
    8908             :     "GR32_BPSP",
    8909             :     "LOW32_ADDR_ACCESS_with_sub_32bit",
    8910             :     "GR32_BSI",
    8911             :     "GR32_SIDI",
    8912             :     "GR32_DIBP+GR32_SIDI",
    8913             :     "GR32_DIBP+LOW32_ADDR_ACCESS_with_sub_32bit",
    8914             :     "RFP32",
    8915             :     "GR8_ABCD_H+GR32_BSI",
    8916             :     "GR8_ABCD_L+GR32_BSI",
    8917             :     "VK1",
    8918             :     "VR64",
    8919             :     "VR128H",
    8920             :     "VR128L",
    8921             :     "GR32_TC",
    8922             :     "GR64_NOREX_and_GR64_TCW64",
    8923             :     "LOW32_ADDR_ACCESS_with_sub_32bit+GR64_NOREX_and_GR64_TCW64",
    8924             :     "GR64_NOREX_and_GR64_TC",
    8925             :     "GR32_DIBP+GR64_NOREX_and_GR64_TC",
    8926             :     "DEBUG_REG",
    8927             :     "FR32",
    8928             :     "CONTROL_REG",
    8929             :     "GR64_NOREX",
    8930             :     "GR64_TCW64",
    8931             :     "LOW32_ADDR_ACCESS_with_sub_32bit+GR64_TCW64",
    8932             :     "GR64_TC",
    8933             :     "GR32_DIBP+GR64_TC",
    8934             :     "GR64_TC+GR64_TCW64",
    8935             :     "GR8",
    8936             :     "GR8+GR32_DIBP",
    8937             :     "GR8+GR64_NOREX_and_GR64_TCW64",
    8938             :     "GR8+GR32_BSI",
    8939             :     "GR8+GR64_TCW64",
    8940             :     "GR64_NOREX+GR64_TC",
    8941             :     "GR8+GR64_TC",
    8942             :     "FR32X",
    8943             :     "GR16",
    8944             :   };
    8945           0 :   return PressureNameTable[Idx];
    8946             : }
    8947             : 
    8948             : // Get the register unit pressure limit for this dimension.
    8949             : // This limit must be adjusted dynamically for reserved registers.
    8950     4453591 : unsigned X86GenRegisterInfo::
    8951             : getRegPressureSetLimit(const MachineFunction &MF, unsigned Idx) const {
    8952             :   static const uint8_t PressureLimitTable[] = {
    8953             :     4,          // 0: BNDR
    8954             :     6,          // 1: SEGMENT_REG
    8955             :     6,          // 2: GR32_BPSP
    8956             :     6,          // 3: LOW32_ADDR_ACCESS_with_sub_32bit
    8957             :     6,          // 4: GR32_BSI
    8958             :     6,          // 5: GR32_SIDI
    8959             :     6,          // 6: GR32_DIBP+GR32_SIDI
    8960             :     6,          // 7: GR32_DIBP+LOW32_ADDR_ACCESS_with_sub_32bit
    8961             :     7,          // 8: RFP32
    8962             :     7,          // 9: GR8_ABCD_H+GR32_BSI
    8963             :     7,          // 10: GR8_ABCD_L+GR32_BSI
    8964             :     8,          // 11: VK1
    8965             :     8,          // 12: VR64
    8966             :     8,          // 13: VR128H
    8967             :     8,          // 14: VR128L
    8968             :     10,         // 15: GR32_TC
    8969             :     10,         // 16: GR64_NOREX_and_GR64_TCW64
    8970             :     10,         // 17: LOW32_ADDR_ACCESS_with_sub_32bit+GR64_NOREX_and_GR64_TCW64
    8971             :     14,         // 18: GR64_NOREX_and_GR64_TC
    8972             :     14,         // 19: GR32_DIBP+GR64_NOREX_and_GR64_TC
    8973             :     16,         // 20: DEBUG_REG
    8974             :     16,         // 21: FR32
    8975             :     16,         // 22: CONTROL_REG
    8976             :     18,         // 23: GR64_NOREX
    8977             :     18,         // 24: GR64_TCW64
    8978             :     18,         // 25: LOW32_ADDR_ACCESS_with_sub_32bit+GR64_TCW64
    8979             :     20,         // 26: GR64_TC
    8980             :     20,         // 27: GR32_DIBP+GR64_TC
    8981             :     20,         // 28: GR64_TC+GR64_TCW64
    8982             :     22,         // 29: GR8
    8983             :     22,         // 30: GR8+GR32_DIBP
    8984             :     23,         // 31: GR8+GR64_NOREX_and_GR64_TCW64
    8985             :     26,         // 32: GR8+GR32_BSI
    8986             :     26,         // 33: GR8+GR64_TCW64
    8987             :     26,         // 34: GR64_NOREX+GR64_TC
    8988             :     27,         // 35: GR8+GR64_TC
    8989             :     32,         // 36: FR32X
    8990             :     34,         // 37: GR16
    8991             :   };
    8992     4453591 :   return PressureLimitTable[Idx];
    8993             : }
    8994             : 
    8995             : /// Table of pressure sets per register class or unit.
    8996             : static const int RCSetsTable[] = {
    8997             :   /* 0 */ 0, -1,
    8998             :   /* 2 */ 1, -1,
    8999             :   /* 4 */ 8, -1,
    9000             :   /* 6 */ 11, -1,
    9001             :   /* 8 */ 12, -1,
    9002             :   /* 10 */ 20, -1,
    9003             :   /* 12 */ 22, -1,
    9004             :   /* 14 */ 13, 21, 36, -1,
    9005             :   /* 18 */ 14, 21, 36, -1,
    9006             :   /* 22 */ 23, 32, 34, 37, -1,
    9007             :   /* 27 */ 2, 3, 23, 29, 32, 34, 37, -1,
    9008             :   /* 35 */ 2, 6, 7, 19, 23, 27, 30, 32, 34, 37, -1,
    9009             :   /* 46 */ 3, 7, 17, 19, 23, 25, 27, 31, 32, 34, 37, -1,
    9010             :   /* 58 */ 2, 3, 6, 7, 17, 19, 23, 25, 27, 29, 30, 31, 32, 34, 37, -1,
    9011             :   /* 74 */ 24, 25, 28, 33, 34, 37, -1,
    9012             :   /* 81 */ 29, 30, 31, 32, 33, 35, 37, -1,
    9013             :   /* 89 */ 26, 27, 28, 34, 35, 37, -1,
    9014             :   /* 96 */ 4, 5, 9, 10, 15, 18, 23, 26, 32, 34, 35, 37, -1,
    9015             :   /* 109 */ 5, 6, 18, 19, 23, 26, 27, 28, 32, 34, 35, 37, -1,
    9016             :   /* 122 */ 4, 5, 6, 9, 10, 15, 18, 19, 23, 26, 27, 28, 32, 34, 35, 37, -1,
    9017             :   /* 139 */ 2, 5, 6, 7, 18, 19, 23, 26, 27, 28, 30, 32, 34, 35, 37, -1,
    9018             :   /* 155 */ 24, 25, 26, 27, 28, 33, 34, 35, 37, -1,
    9019             :   /* 165 */ 3, 7, 16, 17, 18, 19, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 37, -1,
    9020             :   /* 184 */ 2, 3, 23, 29, 30, 31, 32, 33, 34, 35, 37, -1,
    9021             :   /* 196 */ 4, 15, 16, 18, 23, 24, 26, 29, 30, 31, 32, 33, 34, 35, 37, -1,
    9022             :   /* 212 */ 9, 15, 16, 18, 23, 24, 26, 29, 30, 31, 32, 33, 34, 35, 37, -1,
    9023             :   /* 228 */ 4, 5, 9, 10, 15, 16, 18, 23, 24, 26, 29, 30, 31, 32, 33, 34, 35, 37, -1,
    9024             :   /* 247 */ 2, 3, 6, 7, 17, 19, 23, 25, 27, 29, 30, 31, 32, 33, 34, 35, 37, -1,
    9025             :   /* 265 */ 24, 25, 28, 29, 30, 31, 32, 33, 34, 35, 37, -1,
    9026             :   /* 277 */ 2, 5, 6, 7, 18, 19, 23, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, -1,
    9027             :   /* 296 */ 4, 5, 6, 9, 10, 15, 18, 19, 23, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, -1,
    9028             :   /* 317 */ 4, 15, 16, 17, 18, 19, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, -1,
    9029             :   /* 338 */ 4, 9, 15, 16, 17, 18, 19, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, -1,
    9030             :   /* 360 */ 4, 10, 15, 16, 17, 18, 19, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, -1,
    9031             : };
    9032             : 
    9033             : /// Get the dimensions of register pressure impacted by this register class.
    9034             : /// Returns a -1 terminated array of pressure set IDs
    9035    34829521 : const int* X86GenRegisterInfo::
    9036             : getRegClassPressureSets(const TargetRegisterClass *RC) const {
    9037             :   static const uint16_t RCSetStartTable[] = {
    9038             :     81,1,197,212,231,1,25,22,6,6,6,6,6,6,6,6,6,6,2,197,1,16,25,25,25,10,15,25,25,22,22,6,22,4,6,197,318,318,27,96,196,318,35,109,46,1,1,228,318,58,122,317,139,58,165,4,16,25,12,15,25,25,22,89,89,74,22,6,8,22,74,155,6,111,155,111,197,167,318,318,46,27,96,196,318,35,109,165,228,318,58,122,317,139,1,4,16,15,14,18,0,16,15,14,18,16,15,14,18,};
    9039    69659042 :   return &RCSetsTable[RCSetStartTable[RC->getID()]];
    9040             : }
    9041             : 
    9042             : /// Get the dimensions of register pressure impacted by this register unit.
    9043             : /// Returns a -1 terminated array of pressure set IDs
    9044     1061917 : const int* X86GenRegisterInfo::
    9045             : getRegUnitPressureSets(unsigned RegUnit) const {
    9046             :   assert(RegUnit < 162 && "invalid register unit");
    9047             :   static const uint16_t RUSetStartTable[] = {
    9048             :     339,361,228,228,247,1,338,360,2,1,339,277,1,361,2,1,1,1,1,1,1,1,165,1,1,2,296,1,1,184,1,1,1,2,2,1,2,1,0,0,0,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,4,4,4,4,4,4,4,1,6,6,6,6,6,6,6,6,8,8,8,8,8,8,8,8,324,1,1,324,1,1,265,1,1,324,1,1,81,1,1,81,1,1,81,1,1,81,1,1,1,1,1,1,1,1,1,1,18,18,18,18,18,18,18,18,14,14,14,14,14,14,14,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,};
    9049     1061917 :   return &RCSetsTable[RUSetStartTable[RegUnit]];
    9050             : }
    9051             : 
    9052             : extern const MCRegisterDesc X86RegDesc[];
    9053             : extern const MCPhysReg X86RegDiffLists[];
    9054             : extern const LaneBitmask X86LaneMaskLists[];
    9055             : extern const char X86RegStrings[];
    9056             : extern const char X86RegClassStrings[];
    9057             : extern const MCPhysReg X86RegUnitRoots[][2];
    9058             : extern const uint16_t X86SubRegIdxLists[];
    9059             : extern const MCRegisterInfo::SubRegCoveredBits X86SubRegIdxRanges[];
    9060             : extern const uint16_t X86RegEncodingTable[];
    9061             : // X86 Dwarf<->LLVM register mappings.
    9062             : extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour0Dwarf2L[];
    9063             : extern const unsigned X86DwarfFlavour0Dwarf2LSize;
    9064             : 
    9065             : extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour1Dwarf2L[];
    9066             : extern const unsigned X86DwarfFlavour1Dwarf2LSize;
    9067             : 
    9068             : extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour2Dwarf2L[];
    9069             : extern const unsigned X86DwarfFlavour2Dwarf2LSize;
    9070             : 
    9071             : extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour0Dwarf2L[];
    9072             : extern const unsigned X86EHFlavour0Dwarf2LSize;
    9073             : 
    9074             : extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour1Dwarf2L[];
    9075             : extern const unsigned X86EHFlavour1Dwarf2LSize;
    9076             : 
    9077             : extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour2Dwarf2L[];
    9078             : extern const unsigned X86EHFlavour2Dwarf2LSize;
    9079             : 
    9080             : extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour0L2Dwarf[];
    9081             : extern const unsigned X86DwarfFlavour0L2DwarfSize;
    9082             : 
    9083             : extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour1L2Dwarf[];
    9084             : extern const unsigned X86DwarfFlavour1L2DwarfSize;
    9085             : 
    9086             : extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour2L2Dwarf[];
    9087             : extern const unsigned X86DwarfFlavour2L2DwarfSize;
    9088             : 
    9089             : extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour0L2Dwarf[];
    9090             : extern const unsigned X86EHFlavour0L2DwarfSize;
    9091             : 
    9092             : extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour1L2Dwarf[];
    9093             : extern const unsigned X86EHFlavour1L2DwarfSize;
    9094             : 
    9095             : extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour2L2Dwarf[];
    9096             : extern const unsigned X86EHFlavour2L2DwarfSize;
    9097             : 
    9098       17390 : X86GenRegisterInfo::
    9099             : X86GenRegisterInfo(unsigned RA, unsigned DwarfFlavour, unsigned EHFlavour,
    9100       17390 :       unsigned PC, unsigned HwMode)
    9101             :   : TargetRegisterInfo(X86RegInfoDesc, RegisterClasses, RegisterClasses+109,
    9102             :              SubRegIndexNameTable, SubRegIndexLaneMaskTable,
    9103       34780 :              LaneBitmask(0xFFFFFFE0), RegClassInfos, HwMode) {
    9104             :   InitMCRegisterInfo(X86RegDesc, 277, RA, PC,
    9105             :                      X86MCRegisterClasses, 109,
    9106             :                      X86RegUnitRoots,
    9107             :                      162,
    9108             :                      X86RegDiffLists,
    9109             :                      X86LaneMaskLists,
    9110             :                      X86RegStrings,
    9111             :                      X86RegClassStrings,
    9112             :                      X86SubRegIdxLists,
    9113             :                      9,
    9114             :                      X86SubRegIdxRanges,
    9115             :                      X86RegEncodingTable);
    9116             : 
    9117       17390 :   switch (DwarfFlavour) {
    9118           0 :   default:
    9119           0 :     llvm_unreachable("Unknown DWARF flavour");
    9120       14970 :   case 0:
    9121       14970 :     mapDwarfRegsToLLVMRegs(X86DwarfFlavour0Dwarf2L, X86DwarfFlavour0Dwarf2LSize, false);
    9122             :     break;
    9123           0 :   case 1:
    9124           0 :     mapDwarfRegsToLLVMRegs(X86DwarfFlavour1Dwarf2L, X86DwarfFlavour1Dwarf2LSize, false);
    9125             :     break;
    9126        2420 :   case 2:
    9127        2420 :     mapDwarfRegsToLLVMRegs(X86DwarfFlavour2Dwarf2L, X86DwarfFlavour2Dwarf2LSize, false);
    9128             :     break;
    9129             :   }
    9130       17390 :   switch (EHFlavour) {
    9131           0 :   default:
    9132           0 :     llvm_unreachable("Unknown DWARF flavour");
    9133       14970 :   case 0:
    9134       14970 :     mapDwarfRegsToLLVMRegs(X86EHFlavour0Dwarf2L, X86EHFlavour0Dwarf2LSize, true);
    9135             :     break;
    9136         476 :   case 1:
    9137         476 :     mapDwarfRegsToLLVMRegs(X86EHFlavour1Dwarf2L, X86EHFlavour1Dwarf2LSize, true);
    9138             :     break;
    9139        1944 :   case 2:
    9140        1944 :     mapDwarfRegsToLLVMRegs(X86EHFlavour2Dwarf2L, X86EHFlavour2Dwarf2LSize, true);
    9141             :     break;
    9142             :   }
    9143       17390 :   switch (DwarfFlavour) {
    9144           0 :   default:
    9145           0 :     llvm_unreachable("Unknown DWARF flavour");
    9146       14970 :   case 0:
    9147       14970 :     mapLLVMRegsToDwarfRegs(X86DwarfFlavour0L2Dwarf, X86DwarfFlavour0L2DwarfSize, false);
    9148             :     break;
    9149           0 :   case 1:
    9150           0 :     mapLLVMRegsToDwarfRegs(X86DwarfFlavour1L2Dwarf, X86DwarfFlavour1L2DwarfSize, false);
    9151             :     break;
    9152        2420 :   case 2:
    9153        2420 :     mapLLVMRegsToDwarfRegs(X86DwarfFlavour2L2Dwarf, X86DwarfFlavour2L2DwarfSize, false);
    9154             :     break;
    9155             :   }
    9156       17390 :   switch (EHFlavour) {
    9157           0 :   default:
    9158           0 :     llvm_unreachable("Unknown DWARF flavour");
    9159       14970 :   case 0:
    9160       14970 :     mapLLVMRegsToDwarfRegs(X86EHFlavour0L2Dwarf, X86EHFlavour0L2DwarfSize, true);
    9161             :     break;
    9162         476 :   case 1:
    9163         476 :     mapLLVMRegsToDwarfRegs(X86EHFlavour1L2Dwarf, X86EHFlavour1L2DwarfSize, true);
    9164             :     break;
    9165        1944 :   case 2:
    9166        1944 :     mapLLVMRegsToDwarfRegs(X86EHFlavour2L2Dwarf, X86EHFlavour2L2DwarfSize, true);
    9167             :     break;
    9168             :   }
    9169       17390 : }
    9170             : 
    9171             : static const MCPhysReg CSR_32_SaveList[] = { X86::ESI, X86::EDI, X86::EBX, X86::EBP, 0 };
    9172             : static const uint32_t CSR_32_RegMask[] = { 0x058703f0, 0x0e0012c1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
    9173             : static const MCPhysReg CSR_32EHRet_SaveList[] = { X86::EAX, X86::EDX, X86::ESI, X86::EDI, X86::EBX, X86::EBP, 0 };
    9174             : static const uint32_t CSR_32EHRet_RegMask[] = { 0x0def83fe, 0x0e0016e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
    9175             : static const MCPhysReg CSR_32_AllRegs_SaveList[] = { X86::EAX, X86::EBX, X86::ECX, X86::EDX, X86::EBP, X86::ESI, X86::EDI, 0 };
    9176             : static const uint32_t CSR_32_AllRegs_RegMask[] = { 0x0fefaffe, 0x0e0017e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
    9177             : static const MCPhysReg CSR_32_AllRegs_AVX_SaveList[] = { X86::EAX, X86::EBX, X86::ECX, X86::EDX, X86::EBP, X86::ESI, X86::EDI, X86::YMM0, X86::YMM1, X86::YMM2, X86::YMM3, X86::YMM4, X86::YMM5, X86::YMM6, X86::YMM7, 0 };
    9178             : static const uint32_t CSR_32_AllRegs_AVX_RegMask[] = { 0x0fefaffe, 0x0e0017e1, 0x00000000, 0x00000000, 0x001fe000, 0x001fe000, 0x00000000, 0x00000000, 0x00000000, };
    9179             : static const MCPhysReg CSR_32_AllRegs_AVX512_SaveList[] = { X86::EAX, X86::EBX, X86::ECX, X86::EDX, X86::EBP, X86::ESI, X86::EDI, X86::ZMM0, X86::ZMM1, X86::ZMM2, X86::ZMM3, X86::ZMM4, X86::ZMM5, X86::ZMM6, X86::ZMM7, X86::K0, X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7, 0 };
    9180             : static const uint32_t CSR_32_AllRegs_AVX512_RegMask[] = { 0x0fefaffe, 0x0e0017e1, 0x00000000, 0x001fe000, 0x001fe000, 0x001fe000, 0x001fe000, 0x00000000, 0x00000000, };
    9181             : static const MCPhysReg CSR_32_AllRegs_SSE_SaveList[] = { X86::EAX, X86::EBX, X86::ECX, X86::EDX, X86::EBP, X86::ESI, X86::EDI, X86::XMM0, X86::XMM1, X86::XMM2, X86::XMM3, X86::XMM4, X86::XMM5, X86::XMM6, X86::XMM7, 0 };
    9182             : static const uint32_t CSR_32_AllRegs_SSE_RegMask[] = { 0x0fefaffe, 0x0e0017e1, 0x00000000, 0x00000000, 0x001fe000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
    9183             : static const MCPhysReg CSR_32_RegCall_SaveList[] = { X86::ESI, X86::EDI, X86::EBX, X86::EBP, X86::ESP, X86::XMM4, X86::XMM5, X86::XMM6, X86::XMM7, 0 };
    9184             : static const uint32_t CSR_32_RegCall_RegMask[] = { 0x058703f0, 0x7e0032c3, 0x00000000, 0x00000000, 0x001e0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
    9185             : static const MCPhysReg CSR_32_RegCall_NoSSE_SaveList[] = { X86::ESI, X86::EDI, X86::EBX, X86::EBP, X86::ESP, 0 };
    9186             : static const uint32_t CSR_32_RegCall_NoSSE_RegMask[] = { 0x058703f0, 0x7e0032c3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
    9187             : static const MCPhysReg CSR_64_SaveList[] = { X86::RBX, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, 0 };
    9188             : static const uint32_t CSR_64_RegMask[] = { 0x018003f0, 0x000300c0, 0x00000000, 0x00000000, 0x0000001e, 0x00000000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
    9189             : static const MCPhysReg CSR_64EHRet_SaveList[] = { X86::RAX, X86::RDX, X86::RBX, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, 0 };
    9190             : static const uint32_t CSR_64EHRet_RegMask[] = { 0x09e883fe, 0x001384e0, 0x00000000, 0x00000000, 0x0000001e, 0x00000000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
    9191             : static const MCPhysReg CSR_64_AllRegs_SaveList[] = { X86::RBX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R10, X86::R11, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, X86::XMM0, X86::XMM1, X86::XMM2, X86::XMM3, X86::XMM4, X86::XMM5, X86::XMM6, X86::XMM7, X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, X86::RAX, 0 };
    9192             : static const uint32_t CSR_64_AllRegs_RegMask[] = { 0x0fefaffe, 0x0e9f97e1, 0x00000000, 0xe0000000, 0x1fffe01f, 0x00000000, 0x00000000, 0xffffe000, 0x001fffff, };
    9193             : static const MCPhysReg CSR_64_AllRegs_AVX_SaveList[] = { X86::RBX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R10, X86::R11, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, X86::RAX, X86::YMM0, X86::YMM1, X86::YMM2, X86::YMM3, X86::YMM4, X86::YMM5, X86::YMM6, X86::YMM7, X86::YMM8, X86::YMM9, X86::YMM10, X86::YMM11, X86::YMM12, X86::YMM13, X86::YMM14, X86::YMM15, 0 };
    9194             : static const uint32_t CSR_64_AllRegs_AVX_RegMask[] = { 0x0fefaffe, 0x0e9f97e1, 0x00000000, 0xe0000000, 0x1fffe01f, 0x1fffe000, 0x00000000, 0xffffe000, 0x001fffff, };
    9195             : static const MCPhysReg CSR_64_AllRegs_AVX512_SaveList[] = { X86::RBX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R10, X86::R11, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, X86::RAX, X86::ZMM0, X86::ZMM1, X86::ZMM2, X86::ZMM3, X86::ZMM4, X86::ZMM5, X86::ZMM6, X86::ZMM7, X86::ZMM8, X86::ZMM9, X86::ZMM10, X86::ZMM11, X86::ZMM12, X86::ZMM13, X86::ZMM14, X86::ZMM15, X86::ZMM16, X86::ZMM17, X86::ZMM18, X86::ZMM19, X86::ZMM20, X86::ZMM21, X86::ZMM22, X86::ZMM23, X86::ZMM24, X86::ZMM25, X86::ZMM26, X86::ZMM27, X86::ZMM28, X86::ZMM29, X86::ZMM30, X86::ZMM31, X86::K0, X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7, 0 };
    9196             : static const uint32_t CSR_64_AllRegs_AVX512_RegMask[] = { 0x0fefaffe, 0x0e9f97e1, 0x00000000, 0xe01fe000, 0xffffe01f, 0xffffffff, 0xffffffff, 0xffffffff, 0x001fffff, };
    9197             : static const MCPhysReg CSR_64_AllRegs_NoSSE_SaveList[] = { X86::RAX, X86::RBX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R10, X86::R11, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, 0 };
    9198             : static const uint32_t CSR_64_AllRegs_NoSSE_RegMask[] = { 0x0fefaffe, 0x0e9f97e1, 0x00000000, 0xe0000000, 0x0000001f, 0x00000000, 0x00000000, 0xffffe000, 0x001fffff, };
    9199             : static const MCPhysReg CSR_64_CXX_TLS_Darwin_PE_SaveList[] = { X86::RBP, 0 };
    9200             : static const uint32_t CSR_64_CXX_TLS_Darwin_PE_RegMask[] = { 0x008001c0, 0x00010040, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
    9201             : static const MCPhysReg CSR_64_CXX_TLS_Darwin_ViaCopy_SaveList[] = { X86::RBX, X86::R12, X86::R13, X86::R14, X86::R15, X86::RCX, X86::RDX, X86::RSI, X86::R8, X86::R9, X86::R10, X86::R11, 0 };
    9202             : static const uint32_t CSR_64_CXX_TLS_Darwin_ViaCopy_RegMask[] = { 0x0b28ae30, 0x0e961581, 0x00000000, 0xe0000000, 0x0000001f, 0x00000000, 0x00000000, 0xffffe000, 0x001fffff, };
    9203             : static const MCPhysReg CSR_64_HHVM_SaveList[] = { X86::R12, 0 };
    9204             : static const uint32_t CSR_64_HHVM_RegMask[] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x02020000, 0x00020202, };
    9205             : static const MCPhysReg CSR_64_Intel_OCL_BI_SaveList[] = { X86::RBX, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, 0 };
    9206             : static const uint32_t CSR_64_Intel_OCL_BI_RegMask[] = { 0x018003f0, 0x000300c0, 0x00000000, 0x00000000, 0x1fe0001e, 0x00000000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
    9207             : static const MCPhysReg CSR_64_Intel_OCL_BI_AVX_SaveList[] = { X86::RBX, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, X86::YMM8, X86::YMM9, X86::YMM10, X86::YMM11, X86::YMM12, X86::YMM13, X86::YMM14, X86::YMM15, 0 };
    9208             : static const uint32_t CSR_64_Intel_OCL_BI_AVX_RegMask[] = { 0x018003f0, 0x000300c0, 0x00000000, 0x00000000, 0x1fe0001e, 0x1fe00000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
    9209             : static const MCPhysReg CSR_64_Intel_OCL_BI_AVX512_SaveList[] = { X86::RBX, X86::RDI, X86::RSI, X86::R14, X86::R15, X86::ZMM16, X86::ZMM17, X86::ZMM18, X86::ZMM19, X86::ZMM20, X86::ZMM21, X86::ZMM22, X86::ZMM23, X86::ZMM24, X86::ZMM25, X86::ZMM26, X86::ZMM27, X86::ZMM28, X86::ZMM29, X86::ZMM30, X86::ZMM31, X86::K4, X86::K5, X86::K6, X86::K7, 0 };
    9210             : static const uint32_t CSR_64_Intel_OCL_BI_AVX512_RegMask[] = { 0x05070230, 0x0e8a1281, 0x00000000, 0x001e0000, 0xe0000018, 0xe0001fff, 0xe0001fff, 0x18181fff, 0x00181818, };
    9211             : static const MCPhysReg CSR_64_MostRegs_SaveList[] = { X86::RBX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R10, X86::R11, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, X86::XMM0, X86::XMM1, X86::XMM2, X86::XMM3, X86::XMM4, X86::XMM5, X86::XMM6, X86::XMM7, X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, 0 };
    9212             : static const uint32_t CSR_64_MostRegs_RegMask[] = { 0x0fafaff0, 0x0e9f17c1, 0x00000000, 0xe0000000, 0x1fffe01f, 0x00000000, 0x00000000, 0xffffe000, 0x001fffff, };
    9213             : static const MCPhysReg CSR_64_RT_AllRegs_SaveList[] = { X86::RBX, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R10, X86::RSP, X86::XMM0, X86::XMM1, X86::XMM2, X86::XMM3, X86::XMM4, X86::XMM5, X86::XMM6, X86::XMM7, X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, 0 };
    9214             : static const uint32_t CSR_64_RT_AllRegs_RegMask[] = { 0x0fefaffe, 0x7f9fb7e3, 0x00000000, 0xe0000000, 0x1fffe01e, 0x00000000, 0x00000000, 0xfefee000, 0x001efefe, };
    9215             : static const MCPhysReg CSR_64_RT_AllRegs_AVX_SaveList[] = { X86::RBX, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R10, X86::RSP, X86::YMM0, X86::YMM1, X86::YMM2, X86::YMM3, X86::YMM4, X86::YMM5, X86::YMM6, X86::YMM7, X86::YMM8, X86::YMM9, X86::YMM10, X86::YMM11, X86::YMM12, X86::YMM13, X86::YMM14, X86::YMM15, 0 };
    9216             : static const uint32_t CSR_64_RT_AllRegs_AVX_RegMask[] = { 0x0fefaffe, 0x7f9fb7e3, 0x00000000, 0xe0000000, 0x1fffe01e, 0x1fffe000, 0x00000000, 0xfefee000, 0x001efefe, };
    9217             : static const MCPhysReg CSR_64_RT_MostRegs_SaveList[] = { X86::RBX, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R10, X86::RSP, 0 };
    9218             : static const uint32_t CSR_64_RT_MostRegs_RegMask[] = { 0x0fefaffe, 0x7f9fb7e3, 0x00000000, 0xe0000000, 0x0000001e, 0x00000000, 0x00000000, 0xfefee000, 0x001efefe, };
    9219             : static const MCPhysReg CSR_64_SwiftError_SaveList[] = { X86::RBX, X86::R13, X86::R14, X86::R15, X86::RBP, 0 };
    9220             : static const uint32_t CSR_64_SwiftError_RegMask[] = { 0x018003f0, 0x000300c0, 0x00000000, 0x00000000, 0x0000001c, 0x00000000, 0x00000000, 0x1c1c0000, 0x001c1c1c, };
    9221             : static const MCPhysReg CSR_64_TLS_Darwin_SaveList[] = { X86::RBX, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, X86::RCX, X86::RDX, X86::RSI, X86::R8, X86::R9, X86::R10, X86::R11, 0 };
    9222             : static const uint32_t CSR_64_TLS_Darwin_RegMask[] = { 0x0ba8aff0, 0x0e9715c1, 0x00000000, 0xe0000000, 0x0000001f, 0x00000000, 0x00000000, 0xffffe000, 0x001fffff, };
    9223             : static const MCPhysReg CSR_NoRegs_SaveList[] = { 0 };
    9224             : static const uint32_t CSR_NoRegs_RegMask[] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
    9225             : static const MCPhysReg CSR_SysV64_RegCall_SaveList[] = { X86::RBX, X86::RBP, X86::RSP, X86::R12, X86::R13, X86::R14, X86::R15, X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, 0 };
    9226             : static const uint32_t CSR_SysV64_RegCall_RegMask[] = { 0x018003f0, 0x710320c2, 0x00000000, 0x00000000, 0x1fe0001e, 0x00000000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
    9227             : static const MCPhysReg CSR_SysV64_RegCall_NoSSE_SaveList[] = { X86::RBX, X86::RBP, X86::RSP, X86::R12, X86::R13, X86::R14, X86::R15, 0 };
    9228             : static const uint32_t CSR_SysV64_RegCall_NoSSE_RegMask[] = { 0x018003f0, 0x710320c2, 0x00000000, 0x00000000, 0x0000001e, 0x00000000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
    9229             : static const MCPhysReg CSR_Win64_SaveList[] = { X86::RBX, X86::RBP, X86::RDI, X86::RSI, X86::R12, X86::R13, X86::R14, X86::R15, X86::XMM6, X86::XMM7, X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, 0 };
    9230             : static const uint32_t CSR_Win64_RegMask[] = { 0x058703f0, 0x0e8b12c1, 0x00000000, 0x00000000, 0x1ff8001e, 0x00000000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
    9231             : static const MCPhysReg CSR_Win64_Intel_OCL_BI_AVX_SaveList[] = { X86::RBX, X86::RBP, X86::RDI, X86::RSI, X86::R12, X86::R13, X86::R14, X86::R15, X86::YMM6, X86::YMM7, X86::YMM8, X86::YMM9, X86::YMM10, X86::YMM11, X86::YMM12, X86::YMM13, X86::YMM14, X86::YMM15, 0 };
    9232             : static const uint32_t CSR_Win64_Intel_OCL_BI_AVX_RegMask[] = { 0x058703f0, 0x0e8b12c1, 0x00000000, 0x00000000, 0x1ff8001e, 0x1ff80000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
    9233             : static const MCPhysReg CSR_Win64_Intel_OCL_BI_AVX512_SaveList[] = { X86::RBX, X86::RBP, X86::RDI, X86::RSI, X86::R12, X86::R13, X86::R14, X86::R15, X86::ZMM6, X86::ZMM7, X86::ZMM8, X86::ZMM9, X86::ZMM10, X86::ZMM11, X86::ZMM12, X86::ZMM13, X86::ZMM14, X86::ZMM15, X86::ZMM16, X86::ZMM17, X86::ZMM18, X86::ZMM19, X86::ZMM20, X86::ZMM21, X86::K4, X86::K5, X86::K6, X86::K7, 0 };
    9234             : static const uint32_t CSR_Win64_Intel_OCL_BI_AVX512_RegMask[] = { 0x058703f0, 0x0e8b12c1, 0x00000000, 0x001e0000, 0xfff8001e, 0xfff80007, 0xfff80007, 0x1e1e0007, 0x001e1e1e, };
    9235             : static const MCPhysReg CSR_Win64_NoSSE_SaveList[] = { X86::RBX, X86::RBP, X86::RDI, X86::RSI, X86::R12, X86::R13, X86::R14, X86::R15, 0 };
    9236             : static const uint32_t CSR_Win64_NoSSE_RegMask[] = { 0x058703f0, 0x0e8b12c1, 0x00000000, 0x00000000, 0x0000001e, 0x00000000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
    9237             : static const MCPhysReg CSR_Win64_RegCall_SaveList[] = { X86::RBX, X86::RBP, X86::RSP, X86::R10, X86::R11, X86::R12, X86::R13, X86::R14, X86::R15, X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, 0 };
    9238             : static const uint32_t CSR_Win64_RegCall_RegMask[] = { 0x018003f0, 0x710320c2, 0x00000000, 0x80000000, 0x1fe0001f, 0x00000000, 0x00000000, 0x9f9f8000, 0x001f9f9f, };
    9239             : static const MCPhysReg CSR_Win64_RegCall_NoSSE_SaveList[] = { X86::RBX, X86::RBP, X86::RSP, X86::R10, X86::R11, X86::R12, X86::R13, X86::R14, X86::R15, 0 };
    9240             : static const uint32_t CSR_Win64_RegCall_NoSSE_RegMask[] = { 0x018003f0, 0x710320c2, 0x00000000, 0x80000000, 0x0000001f, 0x00000000, 0x00000000, 0x9f9f8000, 0x001f9f9f, };
    9241             : static const MCPhysReg CSR_Win64_SwiftError_SaveList[] = { X86::RBX, X86::RBP, X86::RDI, X86::RSI, X86::R13, X86::R14, X86::R15, X86::XMM6, X86::XMM7, X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, 0 };
    9242             : static const uint32_t CSR_Win64_SwiftError_RegMask[] = { 0x058703f0, 0x0e8b12c1, 0x00000000, 0x00000000, 0x1ff8001c, 0x00000000, 0x00000000, 0x1c1c0000, 0x001c1c1c, };
    9243             : 
    9244             : 
    9245        1583 : ArrayRef<const uint32_t *> X86GenRegisterInfo::getRegMasks() const {
    9246             :   static const uint32_t *const Masks[] = {
    9247             :     CSR_32_RegMask,
    9248             :     CSR_32EHRet_RegMask,
    9249             :     CSR_32_AllRegs_RegMask,
    9250             :     CSR_32_AllRegs_AVX_RegMask,
    9251             :     CSR_32_AllRegs_AVX512_RegMask,
    9252             :     CSR_32_AllRegs_SSE_RegMask,
    9253             :     CSR_32_RegCall_RegMask,
    9254             :     CSR_32_RegCall_NoSSE_RegMask,
    9255             :     CSR_64_RegMask,
    9256             :     CSR_64EHRet_RegMask,
    9257             :     CSR_64_AllRegs_RegMask,
    9258             :     CSR_64_AllRegs_AVX_RegMask,
    9259             :     CSR_64_AllRegs_AVX512_RegMask,
    9260             :     CSR_64_AllRegs_NoSSE_RegMask,
    9261             :     CSR_64_CXX_TLS_Darwin_PE_RegMask,
    9262             :     CSR_64_CXX_TLS_Darwin_ViaCopy_RegMask,
    9263             :     CSR_64_HHVM_RegMask,
    9264             :     CSR_64_Intel_OCL_BI_RegMask,
    9265             :     CSR_64_Intel_OCL_BI_AVX_RegMask,
    9266             :     CSR_64_Intel_OCL_BI_AVX512_RegMask,
    9267             :     CSR_64_MostRegs_RegMask,
    9268             :     CSR_64_RT_AllRegs_RegMask,
    9269             :     CSR_64_RT_AllRegs_AVX_RegMask,
    9270             :     CSR_64_RT_MostRegs_RegMask,
    9271             :     CSR_64_SwiftError_RegMask,
    9272             :     CSR_64_TLS_Darwin_RegMask,
    9273             :     CSR_NoRegs_RegMask,
    9274             :     CSR_SysV64_RegCall_RegMask,
    9275             :     CSR_SysV64_RegCall_NoSSE_RegMask,
    9276             :     CSR_Win64_RegMask,
    9277             :     CSR_Win64_Intel_OCL_BI_AVX_RegMask,
    9278             :     CSR_Win64_Intel_OCL_BI_AVX512_RegMask,
    9279             :     CSR_Win64_NoSSE_RegMask,
    9280             :     CSR_Win64_RegCall_RegMask,
    9281             :     CSR_Win64_RegCall_NoSSE_RegMask,
    9282             :     CSR_Win64_SwiftError_RegMask,
    9283             :   };
    9284        1583 :   return makeArrayRef(Masks);
    9285             : }
    9286             : 
    9287         330 : ArrayRef<const char *> X86GenRegisterInfo::getRegMaskNames() const {
    9288             :   static const char *const Names[] = {
    9289             :     "CSR_32",
    9290             :     "CSR_32EHRet",
    9291             :     "CSR_32_AllRegs",
    9292             :     "CSR_32_AllRegs_AVX",
    9293             :     "CSR_32_AllRegs_AVX512",
    9294             :     "CSR_32_AllRegs_SSE",
    9295             :     "CSR_32_RegCall",
    9296             :     "CSR_32_RegCall_NoSSE",
    9297             :     "CSR_64",
    9298             :     "CSR_64EHRet",
    9299             :     "CSR_64_AllRegs",
    9300             :     "CSR_64_AllRegs_AVX",
    9301             :     "CSR_64_AllRegs_AVX512",
    9302             :     "CSR_64_AllRegs_NoSSE",
    9303             :     "CSR_64_CXX_TLS_Darwin_PE",
    9304             :     "CSR_64_CXX_TLS_Darwin_ViaCopy",
    9305             :     "CSR_64_HHVM",
    9306             :     "CSR_64_Intel_OCL_BI",
    9307             :     "CSR_64_Intel_OCL_BI_AVX",
    9308             :     "CSR_64_Intel_OCL_BI_AVX512",
    9309             :     "CSR_64_MostRegs",
    9310             :     "CSR_64_RT_AllRegs",
    9311             :     "CSR_64_RT_AllRegs_AVX",
    9312             :     "CSR_64_RT_MostRegs",
    9313             :     "CSR_64_SwiftError",
    9314             :     "CSR_64_TLS_Darwin",
    9315             :     "CSR_NoRegs",
    9316             :     "CSR_SysV64_RegCall",
    9317             :     "CSR_SysV64_RegCall_NoSSE",
    9318             :     "CSR_Win64",
    9319             :     "CSR_Win64_Intel_OCL_BI_AVX",
    9320             :     "CSR_Win64_Intel_OCL_BI_AVX512",
    9321             :     "CSR_Win64_NoSSE",
    9322             :     "CSR_Win64_RegCall",
    9323             :     "CSR_Win64_RegCall_NoSSE",
    9324             :     "CSR_Win64_SwiftError",
    9325             :   };
    9326         330 :   return makeArrayRef(Names);
    9327             : }
    9328             : 
    9329             : const X86FrameLowering *
    9330    36480208 : X86GenRegisterInfo::getFrameLowering(const MachineFunction &MF) {
    9331             :   return static_cast<const X86FrameLowering *>(
    9332    36480208 :       MF.getSubtarget().getFrameLowering());
    9333             : }
    9334             : 
    9335             : } // end namespace llvm
    9336             : 
    9337             : #endif // GET_REGINFO_TARGET_DESC
    9338             : 

Generated by: LCOV version 1.13