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
13namespace llvm {
14
15class MCRegisterClass;
16extern const MCRegisterClass X86MCRegisterClasses[];
17
18namespace X86 {
19enum {
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
303namespace X86 {
304enum {
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  LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClassID = 38,
344  CCRRegClassID = 39,
345  DFCCRRegClassID = 40,
346  LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitRegClassID = 41,
347  LOW32_ADDR_ACCESS_with_sub_32bitRegClassID = 42,
348  RFP64RegClassID = 43,
349  FR64XRegClassID = 44,
350  GR64RegClassID = 45,
351  CONTROL_REGRegClassID = 46,
352  FR64RegClassID = 47,
353  GR64_with_sub_8bitRegClassID = 48,
354  GR64_NOSPRegClassID = 49,
355  GR64_NOREXRegClassID = 50,
356  GR64_TCRegClassID = 51,
357  GR64_NOSP_and_GR64_TCRegClassID = 52,
358  GR64_TCW64RegClassID = 53,
359  GR64_with_sub_16bit_in_GR16_NOREXRegClassID = 54,
360  VK64RegClassID = 55,
361  VR64RegClassID = 56,
362  GR64_NOREX_NOSPRegClassID = 57,
363  GR64_NOSP_and_GR64_TCW64RegClassID = 58,
364  GR64_TC_and_GR64_TCW64RegClassID = 59,
365  VK64WMRegClassID = 60,
366  GR64_NOREX_and_GR64_TCRegClassID = 61,
367  GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClassID = 62,
368  GR64_NOREX_NOSP_and_GR64_TCRegClassID = 63,
369  GR64_ABCDRegClassID = 64,
370  GR64_NOREX_and_GR64_TCW64RegClassID = 65,
371  GR64_with_sub_32bit_in_GR32_TCRegClassID = 66,
372  GR64_ADRegClassID = 67,
373  GR64_and_LOW32_ADDR_ACCESS_RBPRegClassID = 68,
374  GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBPRegClassID = 69,
375  GR64_and_LOW32_ADDR_ACCESSRegClassID = 70,
376  RSTRegClassID = 71,
377  RFP80RegClassID = 72,
378  VR128XRegClassID = 73,
379  VR128RegClassID = 74,
380  VR128HRegClassID = 75,
381  VR128LRegClassID = 76,
382  BNDRRegClassID = 77,
383  VR256XRegClassID = 78,
384  VR256RegClassID = 79,
385  VR256HRegClassID = 80,
386  VR256LRegClassID = 81,
387  VR512RegClassID = 82,
388  VR512_with_sub_xmm_in_FR32RegClassID = 83,
389  VR512_with_sub_xmm_in_VR128HRegClassID = 84,
390  VR512_with_sub_xmm_in_VR128LRegClassID = 85,
391
392  };
393} // end namespace X86
394
395
396// Subregister indices
397
398namespace X86 {
399enum {
400  NoSubRegister,
401  sub_8bit,	// 1
402  sub_8bit_hi,	// 2
403  sub_8bit_hi_phony,	// 3
404  sub_16bit,	// 4
405  sub_16bit_hi,	// 5
406  sub_32bit,	// 6
407  sub_xmm,	// 7
408  sub_ymm,	// 8
409  NUM_TARGET_SUBREGS
410};
411} // end namespace X86
412
413} // end namespace llvm
414
415#endif // GET_REGINFO_ENUM
416
417/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
418|*                                                                            *|
419|* MC Register Information                                                    *|
420|*                                                                            *|
421|* Automatically generated file, do not edit!                                 *|
422|*                                                                            *|
423\*===----------------------------------------------------------------------===*/
424
425
426#ifdef GET_REGINFO_MC_DESC
427#undef GET_REGINFO_MC_DESC
428
429namespace llvm {
430
431extern const MCPhysReg X86RegDiffLists[] = {
432  /* 0 */ 0, 1, 0,
433  /* 3 */ 64875, 1, 1, 0,
434  /* 7 */ 65259, 1, 1, 0,
435  /* 11 */ 65397, 1, 1, 0,
436  /* 15 */ 65466, 1, 1, 0,
437  /* 19 */ 2, 1, 0,
438  /* 22 */ 4, 1, 0,
439  /* 25 */ 6, 1, 0,
440  /* 28 */ 11, 1, 0,
441  /* 31 */ 22, 1, 0,
442  /* 34 */ 26, 1, 0,
443  /* 37 */ 29, 1, 0,
444  /* 40 */ 64851, 1, 0,
445  /* 43 */ 10, 3, 0,
446  /* 46 */ 4, 0,
447  /* 48 */ 5, 0,
448  /* 50 */ 65292, 1, 7, 0,
449  /* 54 */ 65417, 1, 7, 0,
450  /* 58 */ 10, 3, 7, 0,
451  /* 62 */ 65512, 8, 0,
452  /* 65 */ 65342, 1, 11, 0,
453  /* 69 */ 65348, 1, 11, 0,
454  /* 73 */ 65442, 1, 11, 0,
455  /* 77 */ 65448, 1, 11, 0,
456  /* 81 */ 12, 0,
457  /* 83 */ 65342, 1, 14, 0,
458  /* 87 */ 65348, 1, 14, 0,
459  /* 91 */ 65442, 1, 14, 0,
460  /* 95 */ 65448, 1, 14, 0,
461  /* 99 */ 21, 0,
462  /* 101 */ 22, 0,
463  /* 103 */ 65534, 65509, 23, 0,
464  /* 107 */ 65535, 65509, 23, 0,
465  /* 111 */ 65534, 65511, 23, 0,
466  /* 115 */ 65535, 65511, 23, 0,
467  /* 119 */ 65524, 23, 0,
468  /* 122 */ 128, 8, 65512, 8, 24, 0,
469  /* 128 */ 65519, 24, 0,
470  /* 131 */ 65522, 24, 0,
471  /* 134 */ 65511, 65526, 2, 65535, 24, 0,
472  /* 140 */ 2, 6, 25, 0,
473  /* 144 */ 6, 6, 25, 0,
474  /* 148 */ 65534, 10, 25, 0,
475  /* 152 */ 65535, 10, 25, 0,
476  /* 156 */ 2, 12, 25, 0,
477  /* 160 */ 3, 12, 25, 0,
478  /* 164 */ 4, 15, 25, 0,
479  /* 168 */ 5, 15, 25, 0,
480  /* 172 */ 65534, 17, 25, 0,
481  /* 176 */ 65535, 17, 25, 0,
482  /* 180 */ 1, 19, 25, 0,
483  /* 184 */ 2, 19, 25, 0,
484  /* 188 */ 65521, 25, 0,
485  /* 191 */ 26, 0,
486  /* 193 */ 65511, 65530, 65534, 65532, 27, 0,
487  /* 199 */ 65511, 65524, 65534, 65535, 30, 0,
488  /* 205 */ 65511, 65519, 2, 65535, 31, 0,
489  /* 211 */ 32, 32, 0,
490  /* 214 */ 65511, 65521, 65532, 65535, 35, 0,
491  /* 220 */ 65511, 65517, 65535, 65535, 36, 0,
492  /* 226 */ 64829, 0,
493  /* 228 */ 64900, 0,
494  /* 230 */ 64923, 0,
495  /* 232 */ 65131, 0,
496  /* 234 */ 65520, 65408, 0,
497  /* 237 */ 16, 65528, 65408, 0,
498  /* 241 */ 24, 65528, 65408, 0,
499  /* 245 */ 65430, 0,
500  /* 247 */ 65432, 0,
501  /* 249 */ 65461, 0,
502  /* 251 */ 65493, 0,
503  /* 253 */ 65504, 65504, 0,
504  /* 256 */ 65509, 0,
505  /* 258 */ 65511, 0,
506  /* 260 */ 65514, 0,
507  /* 262 */ 65513, 27, 2, 65535, 65520, 0,
508  /* 268 */ 65513, 25, 2, 65535, 65522, 0,
509  /* 274 */ 65525, 0,
510  /* 276 */ 65530, 0,
511  /* 278 */ 65531, 0,
512  /* 280 */ 65534, 65532, 0,
513  /* 283 */ 65512, 17, 65533, 0,
514  /* 287 */ 65534, 0,
515  /* 289 */ 2, 65535, 0,
516  /* 292 */ 65532, 65535, 0,
517  /* 295 */ 65534, 65535, 0,
518  /* 298 */ 65535, 65535, 0,
519};
520
521extern const LaneBitmask X86LaneMaskLists[] = {
522  /* 0 */ LaneBitmask(0x00000000), LaneBitmask::getAll(),
523  /* 2 */ LaneBitmask(0x00000002), LaneBitmask(0x00000001), LaneBitmask::getAll(),
524  /* 5 */ LaneBitmask(0x00000001), LaneBitmask(0x00000004), LaneBitmask::getAll(),
525  /* 8 */ LaneBitmask(0x00000002), LaneBitmask(0x00000001), LaneBitmask(0x00000008), LaneBitmask::getAll(),
526  /* 12 */ LaneBitmask(0x00000001), LaneBitmask(0x00000004), LaneBitmask(0x00000008), LaneBitmask::getAll(),
527  /* 16 */ LaneBitmask(0x00000007), LaneBitmask(0x00000008), LaneBitmask::getAll(),
528  /* 19 */ LaneBitmask(0x00000010), LaneBitmask::getAll(),
529};
530
531extern const uint16_t X86SubRegIdxLists[] = {
532  /* 0 */ 1, 2, 0,
533  /* 3 */ 1, 3, 0,
534  /* 6 */ 6, 4, 1, 2, 5, 0,
535  /* 12 */ 6, 4, 1, 3, 5, 0,
536  /* 18 */ 6, 4, 5, 0,
537  /* 22 */ 8, 7, 0,
538};
539
540extern const MCRegisterInfo::SubRegCoveredBits X86SubRegIdxRanges[] = {
541  { 65535, 65535 },
542  { 0, 8 },	// sub_8bit
543  { 8, 8 },	// sub_8bit_hi
544  { 8, 8 },	// sub_8bit_hi_phony
545  { 0, 16 },	// sub_16bit
546  { 16, 16 },	// sub_16bit_hi
547  { 0, 32 },	// sub_32bit
548  { 0, 128 },	// sub_xmm
549  { 0, 256 },	// sub_ymm
550};
551
552extern const char X86RegStrings[] = {
553  /* 0 */ 'X', 'M', 'M', '1', '0', 0,
554  /* 6 */ 'Y', 'M', 'M', '1', '0', 0,
555  /* 12 */ 'Z', 'M', 'M', '1', '0', 0,
556  /* 18 */ 'C', 'R', '1', '0', 0,
557  /* 23 */ 'D', 'R', '1', '0', 0,
558  /* 28 */ 'X', 'M', 'M', '2', '0', 0,
559  /* 34 */ 'Y', 'M', 'M', '2', '0', 0,
560  /* 40 */ 'Z', 'M', 'M', '2', '0', 0,
561  /* 46 */ 'X', 'M', 'M', '3', '0', 0,
562  /* 52 */ 'Y', 'M', 'M', '3', '0', 0,
563  /* 58 */ 'Z', 'M', 'M', '3', '0', 0,
564  /* 64 */ 'B', 'N', 'D', '0', 0,
565  /* 69 */ 'K', '0', 0,
566  /* 72 */ 'X', 'M', 'M', '0', 0,
567  /* 77 */ 'Y', 'M', 'M', '0', 0,
568  /* 82 */ 'Z', 'M', 'M', '0', 0,
569  /* 87 */ 'F', 'P', '0', 0,
570  /* 91 */ 'C', 'R', '0', 0,
571  /* 95 */ 'D', 'R', '0', 0,
572  /* 99 */ 'S', 'T', '0', 0,
573  /* 103 */ 'X', 'M', 'M', '1', '1', 0,
574  /* 109 */ 'Y', 'M', 'M', '1', '1', 0,
575  /* 115 */ 'Z', 'M', 'M', '1', '1', 0,
576  /* 121 */ 'C', 'R', '1', '1', 0,
577  /* 126 */ 'D', 'R', '1', '1', 0,
578  /* 131 */ 'X', 'M', 'M', '2', '1', 0,
579  /* 137 */ 'Y', 'M', 'M', '2', '1', 0,
580  /* 143 */ 'Z', 'M', 'M', '2', '1', 0,
581  /* 149 */ 'X', 'M', 'M', '3', '1', 0,
582  /* 155 */ 'Y', 'M', 'M', '3', '1', 0,
583  /* 161 */ 'Z', 'M', 'M', '3', '1', 0,
584  /* 167 */ 'B', 'N', 'D', '1', 0,
585  /* 172 */ 'K', '1', 0,
586  /* 175 */ 'X', 'M', 'M', '1', 0,
587  /* 180 */ 'Y', 'M', 'M', '1', 0,
588  /* 185 */ 'Z', 'M', 'M', '1', 0,
589  /* 190 */ 'F', 'P', '1', 0,
590  /* 194 */ 'C', 'R', '1', 0,
591  /* 198 */ 'D', 'R', '1', 0,
592  /* 202 */ 'S', 'T', '1', 0,
593  /* 206 */ 'X', 'M', 'M', '1', '2', 0,
594  /* 212 */ 'Y', 'M', 'M', '1', '2', 0,
595  /* 218 */ 'Z', 'M', 'M', '1', '2', 0,
596  /* 224 */ 'C', 'R', '1', '2', 0,
597  /* 229 */ 'D', 'R', '1', '2', 0,
598  /* 234 */ 'X', 'M', 'M', '2', '2', 0,
599  /* 240 */ 'Y', 'M', 'M', '2', '2', 0,
600  /* 246 */ 'Z', 'M', 'M', '2', '2', 0,
601  /* 252 */ 'B', 'N', 'D', '2', 0,
602  /* 257 */ 'K', '2', 0,
603  /* 260 */ 'X', 'M', 'M', '2', 0,
604  /* 265 */ 'Y', 'M', 'M', '2', 0,
605  /* 270 */ 'Z', 'M', 'M', '2', 0,
606  /* 275 */ 'F', 'P', '2', 0,
607  /* 279 */ 'C', 'R', '2', 0,
608  /* 283 */ 'D', 'R', '2', 0,
609  /* 287 */ 'S', 'T', '2', 0,
610  /* 291 */ 'X', 'M', 'M', '1', '3', 0,
611  /* 297 */ 'Y', 'M', 'M', '1', '3', 0,
612  /* 303 */ 'Z', 'M', 'M', '1', '3', 0,
613  /* 309 */ 'C', 'R', '1', '3', 0,
614  /* 314 */ 'D', 'R', '1', '3', 0,
615  /* 319 */ 'X', 'M', 'M', '2', '3', 0,
616  /* 325 */ 'Y', 'M', 'M', '2', '3', 0,
617  /* 331 */ 'Z', 'M', 'M', '2', '3', 0,
618  /* 337 */ 'B', 'N', 'D', '3', 0,
619  /* 342 */ 'K', '3', 0,
620  /* 345 */ 'X', 'M', 'M', '3', 0,
621  /* 350 */ 'Y', 'M', 'M', '3', 0,
622  /* 355 */ 'Z', 'M', 'M', '3', 0,
623  /* 360 */ 'F', 'P', '3', 0,
624  /* 364 */ 'C', 'R', '3', 0,
625  /* 368 */ 'D', 'R', '3', 0,
626  /* 372 */ 'S', 'T', '3', 0,
627  /* 376 */ 'X', 'M', 'M', '1', '4', 0,
628  /* 382 */ 'Y', 'M', 'M', '1', '4', 0,
629  /* 388 */ 'Z', 'M', 'M', '1', '4', 0,
630  /* 394 */ 'C', 'R', '1', '4', 0,
631  /* 399 */ 'D', 'R', '1', '4', 0,
632  /* 404 */ 'X', 'M', 'M', '2', '4', 0,
633  /* 410 */ 'Y', 'M', 'M', '2', '4', 0,
634  /* 416 */ 'Z', 'M', 'M', '2', '4', 0,
635  /* 422 */ 'K', '4', 0,
636  /* 425 */ 'X', 'M', 'M', '4', 0,
637  /* 430 */ 'Y', 'M', 'M', '4', 0,
638  /* 435 */ 'Z', 'M', 'M', '4', 0,
639  /* 440 */ 'F', 'P', '4', 0,
640  /* 444 */ 'C', 'R', '4', 0,
641  /* 448 */ 'D', 'R', '4', 0,
642  /* 452 */ 'S', 'T', '4', 0,
643  /* 456 */ 'X', 'M', 'M', '1', '5', 0,
644  /* 462 */ 'Y', 'M', 'M', '1', '5', 0,
645  /* 468 */ 'Z', 'M', 'M', '1', '5', 0,
646  /* 474 */ 'C', 'R', '1', '5', 0,
647  /* 479 */ 'D', 'R', '1', '5', 0,
648  /* 484 */ 'X', 'M', 'M', '2', '5', 0,
649  /* 490 */ 'Y', 'M', 'M', '2', '5', 0,
650  /* 496 */ 'Z', 'M', 'M', '2', '5', 0,
651  /* 502 */ 'K', '5', 0,
652  /* 505 */ 'X', 'M', 'M', '5', 0,
653  /* 510 */ 'Y', 'M', 'M', '5', 0,
654  /* 515 */ 'Z', 'M', 'M', '5', 0,
655  /* 520 */ 'F', 'P', '5', 0,
656  /* 524 */ 'C', 'R', '5', 0,
657  /* 528 */ 'D', 'R', '5', 0,
658  /* 532 */ 'S', 'T', '5', 0,
659  /* 536 */ 'X', 'M', 'M', '1', '6', 0,
660  /* 542 */ 'Y', 'M', 'M', '1', '6', 0,
661  /* 548 */ 'Z', 'M', 'M', '1', '6', 0,
662  /* 554 */ 'X', 'M', 'M', '2', '6', 0,
663  /* 560 */ 'Y', 'M', 'M', '2', '6', 0,
664  /* 566 */ 'Z', 'M', 'M', '2', '6', 0,
665  /* 572 */ 'K', '6', 0,
666  /* 575 */ 'X', 'M', 'M', '6', 0,
667  /* 580 */ 'Y', 'M', 'M', '6', 0,
668  /* 585 */ 'Z', 'M', 'M', '6', 0,
669  /* 590 */ 'F', 'P', '6', 0,
670  /* 594 */ 'C', 'R', '6', 0,
671  /* 598 */ 'D', 'R', '6', 0,
672  /* 602 */ 'S', 'T', '6', 0,
673  /* 606 */ 'X', 'M', 'M', '1', '7', 0,
674  /* 612 */ 'Y', 'M', 'M', '1', '7', 0,
675  /* 618 */ 'Z', 'M', 'M', '1', '7', 0,
676  /* 624 */ 'X', 'M', 'M', '2', '7', 0,
677  /* 630 */ 'Y', 'M', 'M', '2', '7', 0,
678  /* 636 */ 'Z', 'M', 'M', '2', '7', 0,
679  /* 642 */ 'K', '7', 0,
680  /* 645 */ 'X', 'M', 'M', '7', 0,
681  /* 650 */ 'Y', 'M', 'M', '7', 0,
682  /* 655 */ 'Z', 'M', 'M', '7', 0,
683  /* 660 */ 'F', 'P', '7', 0,
684  /* 664 */ 'C', 'R', '7', 0,
685  /* 668 */ 'D', 'R', '7', 0,
686  /* 672 */ 'S', 'T', '7', 0,
687  /* 676 */ 'X', 'M', 'M', '1', '8', 0,
688  /* 682 */ 'Y', 'M', 'M', '1', '8', 0,
689  /* 688 */ 'Z', 'M', 'M', '1', '8', 0,
690  /* 694 */ 'X', 'M', 'M', '2', '8', 0,
691  /* 700 */ 'Y', 'M', 'M', '2', '8', 0,
692  /* 706 */ 'Z', 'M', 'M', '2', '8', 0,
693  /* 712 */ 'X', 'M', 'M', '8', 0,
694  /* 717 */ 'Y', 'M', 'M', '8', 0,
695  /* 722 */ 'Z', 'M', 'M', '8', 0,
696  /* 727 */ 'C', 'R', '8', 0,
697  /* 731 */ 'D', 'R', '8', 0,
698  /* 735 */ 'X', 'M', 'M', '1', '9', 0,
699  /* 741 */ 'Y', 'M', 'M', '1', '9', 0,
700  /* 747 */ 'Z', 'M', 'M', '1', '9', 0,
701  /* 753 */ 'X', 'M', 'M', '2', '9', 0,
702  /* 759 */ 'Y', 'M', 'M', '2', '9', 0,
703  /* 765 */ 'Z', 'M', 'M', '2', '9', 0,
704  /* 771 */ 'X', 'M', 'M', '9', 0,
705  /* 776 */ 'Y', 'M', 'M', '9', 0,
706  /* 781 */ 'Z', 'M', 'M', '9', 0,
707  /* 786 */ 'C', 'R', '9', 0,
708  /* 790 */ 'D', 'R', '9', 0,
709  /* 794 */ 'R', '1', '0', 'B', 0,
710  /* 799 */ 'R', '1', '1', 'B', 0,
711  /* 804 */ 'R', '1', '2', 'B', 0,
712  /* 809 */ 'R', '1', '3', 'B', 0,
713  /* 814 */ 'R', '1', '4', 'B', 0,
714  /* 819 */ 'R', '1', '5', 'B', 0,
715  /* 824 */ 'R', '8', 'B', 0,
716  /* 828 */ 'R', '9', 'B', 0,
717  /* 832 */ 'R', '1', '0', 'D', 0,
718  /* 837 */ 'R', '1', '1', 'D', 0,
719  /* 842 */ 'R', '1', '2', 'D', 0,
720  /* 847 */ 'R', '1', '3', 'D', 0,
721  /* 852 */ 'R', '1', '4', 'D', 0,
722  /* 857 */ 'R', '1', '5', 'D', 0,
723  /* 862 */ 'R', '8', 'D', 0,
724  /* 866 */ 'R', '9', 'D', 0,
725  /* 870 */ 'D', 'F', 0,
726  /* 873 */ 'A', 'H', 0,
727  /* 876 */ 'R', '1', '0', 'B', 'H', 0,
728  /* 882 */ 'R', '1', '1', 'B', 'H', 0,
729  /* 888 */ 'R', '1', '2', 'B', 'H', 0,
730  /* 894 */ 'R', '1', '3', 'B', 'H', 0,
731  /* 900 */ 'R', '1', '4', 'B', 'H', 0,
732  /* 906 */ 'R', '1', '5', 'B', 'H', 0,
733  /* 912 */ 'R', '8', 'B', 'H', 0,
734  /* 917 */ 'R', '9', 'B', 'H', 0,
735  /* 922 */ 'C', 'H', 0,
736  /* 925 */ 'D', 'H', 0,
737  /* 928 */ 'D', 'I', 'H', 0,
738  /* 932 */ 'S', 'I', 'H', 0,
739  /* 936 */ 'B', 'P', 'H', 0,
740  /* 940 */ 'S', 'P', 'H', 0,
741  /* 944 */ 'R', '1', '0', 'W', 'H', 0,
742  /* 950 */ 'R', '1', '1', 'W', 'H', 0,
743  /* 956 */ 'R', '1', '2', 'W', 'H', 0,
744  /* 962 */ 'R', '1', '3', 'W', 'H', 0,
745  /* 968 */ 'R', '1', '4', 'W', 'H', 0,
746  /* 974 */ 'R', '1', '5', 'W', 'H', 0,
747  /* 980 */ 'R', '8', 'W', 'H', 0,
748  /* 985 */ 'R', '9', 'W', 'H', 0,
749  /* 990 */ 'E', 'D', 'I', 0,
750  /* 994 */ 'H', 'D', 'I', 0,
751  /* 998 */ 'R', 'D', 'I', 0,
752  /* 1002 */ 'E', 'S', 'I', 0,
753  /* 1006 */ 'H', 'S', 'I', 0,
754  /* 1010 */ 'R', 'S', 'I', 0,
755  /* 1014 */ 'A', 'L', 0,
756  /* 1017 */ 'B', 'L', 0,
757  /* 1020 */ 'C', 'L', 0,
758  /* 1023 */ 'D', 'L', 0,
759  /* 1026 */ 'D', 'I', 'L', 0,
760  /* 1030 */ 'S', 'I', 'L', 0,
761  /* 1034 */ 'B', 'P', 'L', 0,
762  /* 1038 */ 'S', 'P', 'L', 0,
763  /* 1042 */ 'E', 'B', 'P', 0,
764  /* 1046 */ 'H', 'B', 'P', 0,
765  /* 1050 */ 'R', 'B', 'P', 0,
766  /* 1054 */ 'E', 'I', 'P', 0,
767  /* 1058 */ 'H', 'I', 'P', 0,
768  /* 1062 */ 'R', 'I', 'P', 0,
769  /* 1066 */ 'E', 'S', 'P', 0,
770  /* 1070 */ 'H', 'S', 'P', 0,
771  /* 1074 */ 'R', 'S', 'P', 0,
772  /* 1078 */ 'S', 'S', 'P', 0,
773  /* 1082 */ 'C', 'S', 0,
774  /* 1085 */ 'D', 'S', 0,
775  /* 1088 */ 'E', 'S', 0,
776  /* 1091 */ 'F', 'S', 0,
777  /* 1094 */ 'E', 'F', 'L', 'A', 'G', 'S', 0,
778  /* 1101 */ 'S', 'S', 0,
779  /* 1104 */ 'R', '1', '0', 'W', 0,
780  /* 1109 */ 'R', '1', '1', 'W', 0,
781  /* 1114 */ 'R', '1', '2', 'W', 0,
782  /* 1119 */ 'R', '1', '3', 'W', 0,
783  /* 1124 */ 'R', '1', '4', 'W', 0,
784  /* 1129 */ 'R', '1', '5', 'W', 0,
785  /* 1134 */ 'R', '8', 'W', 0,
786  /* 1138 */ 'R', '9', 'W', 0,
787  /* 1142 */ 'F', 'P', 'S', 'W', 0,
788  /* 1147 */ 'E', 'A', 'X', 0,
789  /* 1151 */ 'H', 'A', 'X', 0,
790  /* 1155 */ 'R', 'A', 'X', 0,
791  /* 1159 */ 'E', 'B', 'X', 0,
792  /* 1163 */ 'H', 'B', 'X', 0,
793  /* 1167 */ 'R', 'B', 'X', 0,
794  /* 1171 */ 'E', 'C', 'X', 0,
795  /* 1175 */ 'H', 'C', 'X', 0,
796  /* 1179 */ 'R', 'C', 'X', 0,
797  /* 1183 */ 'E', 'D', 'X', 0,
798  /* 1187 */ 'H', 'D', 'X', 0,
799  /* 1191 */ 'R', 'D', 'X', 0,
800  /* 1195 */ 'E', 'I', 'Z', 0,
801  /* 1199 */ 'R', 'I', 'Z', 0,
802};
803
804extern const MCRegisterDesc X86RegDesc[] = { // Descriptors
805  { 5, 0, 0, 0, 0, 0 },
806  { 873, 2, 184, 2, 4641, 0 },
807  { 1014, 2, 180, 2, 4641, 0 },
808  { 1148, 298, 181, 0, 0, 2 },
809  { 879, 2, 168, 2, 4593, 0 },
810  { 1017, 2, 164, 2, 4593, 0 },
811  { 1043, 289, 173, 3, 352, 5 },
812  { 936, 2, 176, 2, 768, 0 },
813  { 1034, 2, 172, 2, 736, 0 },
814  { 1160, 292, 165, 0, 304, 2 },
815  { 922, 2, 160, 2, 4497, 0 },
816  { 1020, 2, 156, 2, 4497, 0 },
817  { 1082, 2, 2, 2, 4497, 0 },
818  { 1172, 295, 157, 0, 400, 2 },
819  { 870, 2, 2, 2, 4449, 0 },
820  { 925, 2, 144, 2, 4449, 0 },
821  { 991, 289, 149, 3, 448, 5 },
822  { 928, 2, 152, 2, 1296, 0 },
823  { 1026, 2, 148, 2, 4130, 0 },
824  { 1023, 2, 140, 2, 4417, 0 },
825  { 1085, 2, 2, 2, 4417, 0 },
826  { 1184, 280, 141, 0, 688, 2 },
827  { 1147, 221, 142, 7, 1524, 8 },
828  { 1042, 206, 142, 13, 1236, 12 },
829  { 1159, 215, 142, 7, 1460, 8 },
830  { 1171, 200, 142, 7, 1172, 8 },
831  { 990, 135, 142, 13, 869, 12 },
832  { 1183, 194, 142, 7, 928, 8 },
833  { 1094, 2, 2, 2, 1584, 0 },
834  { 1054, 284, 126, 19, 496, 16 },
835  { 1195, 2, 2, 2, 4417, 0 },
836  { 1088, 2, 2, 2, 4417, 0 },
837  { 1002, 269, 105, 13, 243, 12 },
838  { 1066, 263, 105, 13, 243, 12 },
839  { 1142, 2, 2, 2, 4593, 0 },
840  { 1091, 2, 2, 2, 4593, 0 },
841  { 1098, 2, 2, 2, 4593, 0 },
842  { 1151, 2, 188, 2, 4161, 0 },
843  { 1046, 2, 188, 2, 4161, 0 },
844  { 1163, 2, 188, 2, 4161, 0 },
845  { 1175, 2, 188, 2, 4161, 0 },
846  { 994, 2, 188, 2, 4161, 0 },
847  { 1187, 2, 188, 2, 4161, 0 },
848  { 1058, 2, 131, 2, 3923, 0 },
849  { 1006, 2, 119, 2, 3955, 0 },
850  { 1070, 2, 119, 2, 3955, 0 },
851  { 1055, 2, 128, 2, 1616, 0 },
852  { 1155, 220, 2, 6, 1396, 8 },
853  { 1050, 205, 2, 12, 1108, 12 },
854  { 1167, 214, 2, 6, 1332, 8 },
855  { 1179, 199, 2, 6, 1044, 8 },
856  { 998, 134, 2, 12, 805, 12 },
857  { 1191, 193, 2, 6, 928, 8 },
858  { 1062, 283, 2, 18, 496, 16 },
859  { 1199, 2, 2, 2, 3488, 0 },
860  { 1010, 268, 2, 12, 179, 12 },
861  { 1074, 262, 2, 12, 179, 12 },
862  { 1003, 289, 112, 3, 544, 5 },
863  { 932, 2, 115, 2, 3152, 0 },
864  { 1030, 2, 111, 2, 3056, 0 },
865  { 1067, 289, 104, 3, 592, 5 },
866  { 940, 2, 107, 2, 3248, 0 },
867  { 1038, 2, 103, 2, 3719, 0 },
868  { 1101, 2, 2, 2, 4097, 0 },
869  { 1078, 2, 2, 2, 4097, 0 },
870  { 64, 2, 2, 2, 4097, 0 },
871  { 167, 2, 2, 2, 4097, 0 },
872  { 252, 2, 2, 2, 4097, 0 },
873  { 337, 2, 2, 2, 4097, 0 },
874  { 91, 2, 2, 2, 4097, 0 },
875  { 194, 2, 2, 2, 4097, 0 },
876  { 279, 2, 2, 2, 4097, 0 },
877  { 364, 2, 2, 2, 4097, 0 },
878  { 444, 2, 2, 2, 4097, 0 },
879  { 524, 2, 2, 2, 4097, 0 },
880  { 594, 2, 2, 2, 4097, 0 },
881  { 664, 2, 2, 2, 4097, 0 },
882  { 727, 2, 2, 2, 4097, 0 },
883  { 786, 2, 2, 2, 4097, 0 },
884  { 18, 2, 2, 2, 4097, 0 },
885  { 121, 2, 2, 2, 4097, 0 },
886  { 224, 2, 2, 2, 4097, 0 },
887  { 309, 2, 2, 2, 4097, 0 },
888  { 394, 2, 2, 2, 4097, 0 },
889  { 474, 2, 2, 2, 4097, 0 },
890  { 95, 2, 2, 2, 4097, 0 },
891  { 198, 2, 2, 2, 4097, 0 },
892  { 283, 2, 2, 2, 4097, 0 },
893  { 368, 2, 2, 2, 4097, 0 },
894  { 448, 2, 2, 2, 4097, 0 },
895  { 528, 2, 2, 2, 4097, 0 },
896  { 598, 2, 2, 2, 4097, 0 },
897  { 668, 2, 2, 2, 4097, 0 },
898  { 731, 2, 2, 2, 4097, 0 },
899  { 790, 2, 2, 2, 4097, 0 },
900  { 23, 2, 2, 2, 4097, 0 },
901  { 126, 2, 2, 2, 4097, 0 },
902  { 229, 2, 2, 2, 4097, 0 },
903  { 314, 2, 2, 2, 4097, 0 },
904  { 399, 2, 2, 2, 4097, 0 },
905  { 479, 2, 2, 2, 4097, 0 },
906  { 87, 2, 2, 2, 4097, 0 },
907  { 190, 2, 2, 2, 4097, 0 },
908  { 275, 2, 2, 2, 4097, 0 },
909  { 360, 2, 2, 2, 4097, 0 },
910  { 440, 2, 2, 2, 4097, 0 },
911  { 520, 2, 2, 2, 4097, 0 },
912  { 590, 2, 2, 2, 4097, 0 },
913  { 660, 2, 2, 2, 4097, 0 },
914  { 69, 2, 2, 2, 4097, 0 },
915  { 172, 2, 2, 2, 4097, 0 },
916  { 257, 2, 2, 2, 4097, 0 },
917  { 342, 2, 2, 2, 4097, 0 },
918  { 422, 2, 2, 2, 4097, 0 },
919  { 502, 2, 2, 2, 4097, 0 },
920  { 572, 2, 2, 2, 4097, 0 },
921  { 642, 2, 2, 2, 4097, 0 },
922  { 73, 2, 2, 2, 4097, 0 },
923  { 176, 2, 2, 2, 4097, 0 },
924  { 261, 2, 2, 2, 4097, 0 },
925  { 346, 2, 2, 2, 4097, 0 },
926  { 426, 2, 2, 2, 4097, 0 },
927  { 506, 2, 2, 2, 4097, 0 },
928  { 576, 2, 2, 2, 4097, 0 },
929  { 646, 2, 2, 2, 4097, 0 },
930  { 728, 122, 2, 12, 115, 12 },
931  { 787, 122, 2, 12, 115, 12 },
932  { 19, 122, 2, 12, 115, 12 },
933  { 122, 122, 2, 12, 115, 12 },
934  { 225, 122, 2, 12, 115, 12 },
935  { 310, 122, 2, 12, 115, 12 },
936  { 395, 122, 2, 12, 115, 12 },
937  { 475, 122, 2, 12, 115, 12 },
938  { 99, 2, 2, 2, 4385, 0 },
939  { 202, 2, 2, 2, 4385, 0 },
940  { 287, 2, 2, 2, 4385, 0 },
941  { 372, 2, 2, 2, 4385, 0 },
942  { 452, 2, 2, 2, 4385, 0 },
943  { 532, 2, 2, 2, 4385, 0 },
944  { 602, 2, 2, 2, 4385, 0 },
945  { 672, 2, 2, 2, 4385, 0 },
946  { 72, 2, 211, 2, 4385, 0 },
947  { 175, 2, 211, 2, 4385, 0 },
948  { 260, 2, 211, 2, 4385, 0 },
949  { 345, 2, 211, 2, 4385, 0 },
950  { 425, 2, 211, 2, 4385, 0 },
951  { 505, 2, 211, 2, 4385, 0 },
952  { 575, 2, 211, 2, 4385, 0 },
953  { 645, 2, 211, 2, 4385, 0 },
954  { 712, 2, 211, 2, 4385, 0 },
955  { 771, 2, 211, 2, 4385, 0 },
956  { 0, 2, 211, 2, 4385, 0 },
957  { 103, 2, 211, 2, 4385, 0 },
958  { 206, 2, 211, 2, 4385, 0 },
959  { 291, 2, 211, 2, 4385, 0 },
960  { 376, 2, 211, 2, 4385, 0 },
961  { 456, 2, 211, 2, 4385, 0 },
962  { 536, 2, 211, 2, 4385, 0 },
963  { 606, 2, 211, 2, 4385, 0 },
964  { 676, 2, 211, 2, 4385, 0 },
965  { 735, 2, 211, 2, 4385, 0 },
966  { 28, 2, 211, 2, 4385, 0 },
967  { 131, 2, 211, 2, 4385, 0 },
968  { 234, 2, 211, 2, 4385, 0 },
969  { 319, 2, 211, 2, 4385, 0 },
970  { 404, 2, 211, 2, 4385, 0 },
971  { 484, 2, 211, 2, 4385, 0 },
972  { 554, 2, 211, 2, 4385, 0 },
973  { 624, 2, 211, 2, 4385, 0 },
974  { 694, 2, 211, 2, 4385, 0 },
975  { 753, 2, 211, 2, 4385, 0 },
976  { 46, 2, 211, 2, 4385, 0 },
977  { 149, 2, 211, 2, 4385, 0 },
978  { 77, 254, 212, 23, 4017, 19 },
979  { 180, 254, 212, 23, 4017, 19 },
980  { 265, 254, 212, 23, 4017, 19 },
981  { 350, 254, 212, 23, 4017, 19 },
982  { 430, 254, 212, 23, 4017, 19 },
983  { 510, 254, 212, 23, 4017, 19 },
984  { 580, 254, 212, 23, 4017, 19 },
985  { 650, 254, 212, 23, 4017, 19 },
986  { 717, 254, 212, 23, 4017, 19 },
987  { 776, 254, 212, 23, 4017, 19 },
988  { 6, 254, 212, 23, 4017, 19 },
989  { 109, 254, 212, 23, 4017, 19 },
990  { 212, 254, 212, 23, 4017, 19 },
991  { 297, 254, 212, 23, 4017, 19 },
992  { 382, 254, 212, 23, 4017, 19 },
993  { 462, 254, 212, 23, 4017, 19 },
994  { 542, 254, 212, 23, 4017, 19 },
995  { 612, 254, 212, 23, 4017, 19 },
996  { 682, 254, 212, 23, 4017, 19 },
997  { 741, 254, 212, 23, 4017, 19 },
998  { 34, 254, 212, 23, 4017, 19 },
999  { 137, 254, 212, 23, 4017, 19 },
1000  { 240, 254, 212, 23, 4017, 19 },
1001  { 325, 254, 212, 23, 4017, 19 },
1002  { 410, 254, 212, 23, 4017, 19 },
1003  { 490, 254, 212, 23, 4017, 19 },
1004  { 560, 254, 212, 23, 4017, 19 },
1005  { 630, 254, 212, 23, 4017, 19 },
1006  { 700, 254, 212, 23, 4017, 19 },
1007  { 759, 254, 212, 23, 4017, 19 },
1008  { 52, 254, 212, 23, 4017, 19 },
1009  { 155, 254, 212, 23, 4017, 19 },
1010  { 82, 253, 2, 22, 3985, 19 },
1011  { 185, 253, 2, 22, 3985, 19 },
1012  { 270, 253, 2, 22, 3985, 19 },
1013  { 355, 253, 2, 22, 3985, 19 },
1014  { 435, 253, 2, 22, 3985, 19 },
1015  { 515, 253, 2, 22, 3985, 19 },
1016  { 585, 253, 2, 22, 3985, 19 },
1017  { 655, 253, 2, 22, 3985, 19 },
1018  { 722, 253, 2, 22, 3985, 19 },
1019  { 781, 253, 2, 22, 3985, 19 },
1020  { 12, 253, 2, 22, 3985, 19 },
1021  { 115, 253, 2, 22, 3985, 19 },
1022  { 218, 253, 2, 22, 3985, 19 },
1023  { 303, 253, 2, 22, 3985, 19 },
1024  { 388, 253, 2, 22, 3985, 19 },
1025  { 468, 253, 2, 22, 3985, 19 },
1026  { 548, 253, 2, 22, 3985, 19 },
1027  { 618, 253, 2, 22, 3985, 19 },
1028  { 688, 253, 2, 22, 3985, 19 },
1029  { 747, 253, 2, 22, 3985, 19 },
1030  { 40, 253, 2, 22, 3985, 19 },
1031  { 143, 253, 2, 22, 3985, 19 },
1032  { 246, 253, 2, 22, 3985, 19 },
1033  { 331, 253, 2, 22, 3985, 19 },
1034  { 416, 253, 2, 22, 3985, 19 },
1035  { 496, 253, 2, 22, 3985, 19 },
1036  { 566, 253, 2, 22, 3985, 19 },
1037  { 636, 253, 2, 22, 3985, 19 },
1038  { 706, 253, 2, 22, 3985, 19 },
1039  { 765, 253, 2, 22, 3985, 19 },
1040  { 58, 253, 2, 22, 3985, 19 },
1041  { 161, 253, 2, 22, 3985, 19 },
1042  { 824, 2, 241, 2, 3683, 0 },
1043  { 828, 2, 241, 2, 3683, 0 },
1044  { 794, 2, 241, 2, 3683, 0 },
1045  { 799, 2, 241, 2, 3683, 0 },
1046  { 804, 2, 241, 2, 3683, 0 },
1047  { 809, 2, 241, 2, 3683, 0 },
1048  { 814, 2, 241, 2, 3683, 0 },
1049  { 819, 2, 241, 2, 3683, 0 },
1050  { 912, 2, 237, 2, 3651, 0 },
1051  { 917, 2, 237, 2, 3651, 0 },
1052  { 876, 2, 237, 2, 3651, 0 },
1053  { 882, 2, 237, 2, 3651, 0 },
1054  { 888, 2, 237, 2, 3651, 0 },
1055  { 894, 2, 237, 2, 3651, 0 },
1056  { 900, 2, 237, 2, 3651, 0 },
1057  { 906, 2, 237, 2, 3651, 0 },
1058  { 862, 123, 235, 13, 51, 12 },
1059  { 866, 123, 235, 13, 51, 12 },
1060  { 832, 123, 235, 13, 51, 12 },
1061  { 837, 123, 235, 13, 51, 12 },
1062  { 842, 123, 235, 13, 51, 12 },
1063  { 847, 123, 235, 13, 51, 12 },
1064  { 852, 123, 235, 13, 51, 12 },
1065  { 857, 123, 235, 13, 51, 12 },
1066  { 1134, 62, 238, 3, 643, 5 },
1067  { 1138, 62, 238, 3, 643, 5 },
1068  { 1104, 62, 238, 3, 643, 5 },
1069  { 1109, 62, 238, 3, 643, 5 },
1070  { 1114, 62, 238, 3, 643, 5 },
1071  { 1119, 62, 238, 3, 643, 5 },
1072  { 1124, 62, 238, 3, 643, 5 },
1073  { 1129, 62, 238, 3, 643, 5 },
1074  { 980, 2, 234, 2, 3619, 0 },
1075  { 985, 2, 234, 2, 3619, 0 },
1076  { 944, 2, 234, 2, 3619, 0 },
1077  { 950, 2, 234, 2, 3619, 0 },
1078  { 956, 2, 234, 2, 3619, 0 },
1079  { 962, 2, 234, 2, 3619, 0 },
1080  { 968, 2, 234, 2, 3619, 0 },
1081  { 974, 2, 234, 2, 3619, 0 },
1082};
1083
1084extern const MCPhysReg X86RegUnitRoots[][2] = {
1085  { X86::AH },
1086  { X86::AL },
1087  { X86::BH },
1088  { X86::BL },
1089  { X86::BPL },
1090  { X86::BPH },
1091  { X86::CH },
1092  { X86::CL },
1093  { X86::CS },
1094  { X86::DF },
1095  { X86::DH },
1096  { X86::DIL },
1097  { X86::DIH },
1098  { X86::DL },
1099  { X86::DS },
1100  { X86::HAX },
1101  { X86::HBP },
1102  { X86::HBX },
1103  { X86::HCX },
1104  { X86::HDI },
1105  { X86::HDX },
1106  { X86::EFLAGS },
1107  { X86::IP },
1108  { X86::HIP },
1109  { X86::EIZ },
1110  { X86::ES },
1111  { X86::SIL },
1112  { X86::SIH },
1113  { X86::HSI },
1114  { X86::SPL },
1115  { X86::SPH },
1116  { X86::HSP },
1117  { X86::FPSW },
1118  { X86::FS },
1119  { X86::GS },
1120  { X86::RIZ },
1121  { X86::SS },
1122  { X86::SSP },
1123  { X86::BND0 },
1124  { X86::BND1 },
1125  { X86::BND2 },
1126  { X86::BND3 },
1127  { X86::CR0 },
1128  { X86::CR1 },
1129  { X86::CR2 },
1130  { X86::CR3 },
1131  { X86::CR4 },
1132  { X86::CR5 },
1133  { X86::CR6 },
1134  { X86::CR7 },
1135  { X86::CR8 },
1136  { X86::CR9 },
1137  { X86::CR10 },
1138  { X86::CR11 },
1139  { X86::CR12 },
1140  { X86::CR13 },
1141  { X86::CR14 },
1142  { X86::CR15 },
1143  { X86::DR0 },
1144  { X86::DR1 },
1145  { X86::DR2 },
1146  { X86::DR3 },
1147  { X86::DR4 },
1148  { X86::DR5 },
1149  { X86::DR6 },
1150  { X86::DR7 },
1151  { X86::DR8 },
1152  { X86::DR9 },
1153  { X86::DR10 },
1154  { X86::DR11 },
1155  { X86::DR12 },
1156  { X86::DR13 },
1157  { X86::DR14 },
1158  { X86::DR15 },
1159  { X86::FP0 },
1160  { X86::FP1 },
1161  { X86::FP2 },
1162  { X86::FP3 },
1163  { X86::FP4 },
1164  { X86::FP5 },
1165  { X86::FP6 },
1166  { X86::FP7 },
1167  { X86::K0 },
1168  { X86::K1 },
1169  { X86::K2 },
1170  { X86::K3 },
1171  { X86::K4 },
1172  { X86::K5 },
1173  { X86::K6 },
1174  { X86::K7 },
1175  { X86::MM0 },
1176  { X86::MM1 },
1177  { X86::MM2 },
1178  { X86::MM3 },
1179  { X86::MM4 },
1180  { X86::MM5 },
1181  { X86::MM6 },
1182  { X86::MM7 },
1183  { X86::R8B },
1184  { X86::R8BH },
1185  { X86::R8WH },
1186  { X86::R9B },
1187  { X86::R9BH },
1188  { X86::R9WH },
1189  { X86::R10B },
1190  { X86::R10BH },
1191  { X86::R10WH },
1192  { X86::R11B },
1193  { X86::R11BH },
1194  { X86::R11WH },
1195  { X86::R12B },
1196  { X86::R12BH },
1197  { X86::R12WH },
1198  { X86::R13B },
1199  { X86::R13BH },
1200  { X86::R13WH },
1201  { X86::R14B },
1202  { X86::R14BH },
1203  { X86::R14WH },
1204  { X86::R15B },
1205  { X86::R15BH },
1206  { X86::R15WH },
1207  { X86::ST0 },
1208  { X86::ST1 },
1209  { X86::ST2 },
1210  { X86::ST3 },
1211  { X86::ST4 },
1212  { X86::ST5 },
1213  { X86::ST6 },
1214  { X86::ST7 },
1215  { X86::XMM0 },
1216  { X86::XMM1 },
1217  { X86::XMM2 },
1218  { X86::XMM3 },
1219  { X86::XMM4 },
1220  { X86::XMM5 },
1221  { X86::XMM6 },
1222  { X86::XMM7 },
1223  { X86::XMM8 },
1224  { X86::XMM9 },
1225  { X86::XMM10 },
1226  { X86::XMM11 },
1227  { X86::XMM12 },
1228  { X86::XMM13 },
1229  { X86::XMM14 },
1230  { X86::XMM15 },
1231  { X86::XMM16 },
1232  { X86::XMM17 },
1233  { X86::XMM18 },
1234  { X86::XMM19 },
1235  { X86::XMM20 },
1236  { X86::XMM21 },
1237  { X86::XMM22 },
1238  { X86::XMM23 },
1239  { X86::XMM24 },
1240  { X86::XMM25 },
1241  { X86::XMM26 },
1242  { X86::XMM27 },
1243  { X86::XMM28 },
1244  { X86::XMM29 },
1245  { X86::XMM30 },
1246  { X86::XMM31 },
1247};
1248
1249namespace {     // Register classes...
1250  // GR8 Register Class...
1251  const MCPhysReg GR8[] = {
1252    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,
1253  };
1254
1255  // GR8 Bit set.
1256  const uint8_t GR8Bits[] = {
1257    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,
1258  };
1259
1260  // GRH8 Register Class...
1261  const MCPhysReg GRH8[] = {
1262    X86::SIH, X86::DIH, X86::BPH, X86::SPH, X86::R8BH, X86::R9BH, X86::R10BH, X86::R11BH, X86::R12BH, X86::R13BH, X86::R14BH, X86::R15BH,
1263  };
1264
1265  // GRH8 Bit set.
1266  const uint8_t GRH8Bits[] = {
1267    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,
1268  };
1269
1270  // GR8_NOREX Register Class...
1271  const MCPhysReg GR8_NOREX[] = {
1272    X86::AL, X86::CL, X86::DL, X86::AH, X86::CH, X86::DH, X86::BL, X86::BH,
1273  };
1274
1275  // GR8_NOREX Bit set.
1276  const uint8_t GR8_NOREXBits[] = {
1277    0x36, 0x8c, 0x08,
1278  };
1279
1280  // GR8_ABCD_H Register Class...
1281  const MCPhysReg GR8_ABCD_H[] = {
1282    X86::AH, X86::CH, X86::DH, X86::BH,
1283  };
1284
1285  // GR8_ABCD_H Bit set.
1286  const uint8_t GR8_ABCD_HBits[] = {
1287    0x12, 0x84,
1288  };
1289
1290  // GR8_ABCD_L Register Class...
1291  const MCPhysReg GR8_ABCD_L[] = {
1292    X86::AL, X86::CL, X86::DL, X86::BL,
1293  };
1294
1295  // GR8_ABCD_L Bit set.
1296  const uint8_t GR8_ABCD_LBits[] = {
1297    0x24, 0x08, 0x08,
1298  };
1299
1300  // GRH16 Register Class...
1301  const MCPhysReg GRH16[] = {
1302    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,
1303  };
1304
1305  // GRH16 Bit set.
1306  const uint8_t GRH16Bits[] = {
1307    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,
1308  };
1309
1310  // GR16 Register Class...
1311  const MCPhysReg GR16[] = {
1312    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,
1313  };
1314
1315  // GR16 Bit set.
1316  const uint8_t GR16Bits[] = {
1317    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,
1318  };
1319
1320  // GR16_NOREX Register Class...
1321  const MCPhysReg GR16_NOREX[] = {
1322    X86::AX, X86::CX, X86::DX, X86::SI, X86::DI, X86::BX, X86::BP, X86::SP,
1323  };
1324
1325  // GR16_NOREX Bit set.
1326  const uint8_t GR16_NOREXBits[] = {
1327    0x48, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x12,
1328  };
1329
1330  // VK1 Register Class...
1331  const MCPhysReg VK1[] = {
1332    X86::K0, X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7,
1333  };
1334
1335  // VK1 Bit set.
1336  const uint8_t VK1Bits[] = {
1337    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
1338  };
1339
1340  // VK16 Register Class...
1341  const MCPhysReg VK16[] = {
1342    X86::K0, X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7,
1343  };
1344
1345  // VK16 Bit set.
1346  const uint8_t VK16Bits[] = {
1347    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
1348  };
1349
1350  // VK2 Register Class...
1351  const MCPhysReg VK2[] = {
1352    X86::K0, X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7,
1353  };
1354
1355  // VK2 Bit set.
1356  const uint8_t VK2Bits[] = {
1357    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
1358  };
1359
1360  // VK4 Register Class...
1361  const MCPhysReg VK4[] = {
1362    X86::K0, X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7,
1363  };
1364
1365  // VK4 Bit set.
1366  const uint8_t VK4Bits[] = {
1367    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
1368  };
1369
1370  // VK8 Register Class...
1371  const MCPhysReg VK8[] = {
1372    X86::K0, X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7,
1373  };
1374
1375  // VK8 Bit set.
1376  const uint8_t VK8Bits[] = {
1377    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
1378  };
1379
1380  // VK16WM Register Class...
1381  const MCPhysReg VK16WM[] = {
1382    X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7,
1383  };
1384
1385  // VK16WM Bit set.
1386  const uint8_t VK16WMBits[] = {
1387    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f,
1388  };
1389
1390  // VK1WM Register Class...
1391  const MCPhysReg VK1WM[] = {
1392    X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7,
1393  };
1394
1395  // VK1WM Bit set.
1396  const uint8_t VK1WMBits[] = {
1397    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f,
1398  };
1399
1400  // VK2WM Register Class...
1401  const MCPhysReg VK2WM[] = {
1402    X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7,
1403  };
1404
1405  // VK2WM Bit set.
1406  const uint8_t VK2WMBits[] = {
1407    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f,
1408  };
1409
1410  // VK4WM Register Class...
1411  const MCPhysReg VK4WM[] = {
1412    X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7,
1413  };
1414
1415  // VK4WM Bit set.
1416  const uint8_t VK4WMBits[] = {
1417    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f,
1418  };
1419
1420  // VK8WM Register Class...
1421  const MCPhysReg VK8WM[] = {
1422    X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7,
1423  };
1424
1425  // VK8WM Bit set.
1426  const uint8_t VK8WMBits[] = {
1427    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f,
1428  };
1429
1430  // SEGMENT_REG Register Class...
1431  const MCPhysReg SEGMENT_REG[] = {
1432    X86::CS, X86::DS, X86::SS, X86::ES, X86::FS, X86::GS,
1433  };
1434
1435  // SEGMENT_REG Bit set.
1436  const uint8_t SEGMENT_REGBits[] = {
1437    0x00, 0x10, 0x10, 0x80, 0x18, 0x00, 0x00, 0x80,
1438  };
1439
1440  // GR16_ABCD Register Class...
1441  const MCPhysReg GR16_ABCD[] = {
1442    X86::AX, X86::CX, X86::DX, X86::BX,
1443  };
1444
1445  // GR16_ABCD Bit set.
1446  const uint8_t GR16_ABCDBits[] = {
1447    0x08, 0x22, 0x20,
1448  };
1449
1450  // FPCCR Register Class...
1451  const MCPhysReg FPCCR[] = {
1452    X86::FPSW,
1453  };
1454
1455  // FPCCR Bit set.
1456  const uint8_t FPCCRBits[] = {
1457    0x00, 0x00, 0x00, 0x00, 0x04,
1458  };
1459
1460  // FR32X Register Class...
1461  const MCPhysReg FR32X[] = {
1462    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,
1463  };
1464
1465  // FR32X Bit set.
1466  const uint8_t FR32XBits[] = {
1467    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f,
1468  };
1469
1470  // LOW32_ADDR_ACCESS_RBP Register Class...
1471  const MCPhysReg LOW32_ADDR_ACCESS_RBP[] = {
1472    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,
1473  };
1474
1475  // LOW32_ADDR_ACCESS_RBP Bit set.
1476  const uint8_t LOW32_ADDR_ACCESS_RBPBits[] = {
1477    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,
1478  };
1479
1480  // LOW32_ADDR_ACCESS Register Class...
1481  const MCPhysReg LOW32_ADDR_ACCESS[] = {
1482    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,
1483  };
1484
1485  // LOW32_ADDR_ACCESS Bit set.
1486  const uint8_t LOW32_ADDR_ACCESSBits[] = {
1487    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,
1488  };
1489
1490  // LOW32_ADDR_ACCESS_RBP_with_sub_8bit Register Class...
1491  const MCPhysReg LOW32_ADDR_ACCESS_RBP_with_sub_8bit[] = {
1492    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,
1493  };
1494
1495  // LOW32_ADDR_ACCESS_RBP_with_sub_8bit Bit set.
1496  const uint8_t LOW32_ADDR_ACCESS_RBP_with_sub_8bitBits[] = {
1497    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,
1498  };
1499
1500  // DEBUG_REG Register Class...
1501  const MCPhysReg DEBUG_REG[] = {
1502    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,
1503  };
1504
1505  // DEBUG_REG Bit set.
1506  const uint8_t DEBUG_REGBits[] = {
1507    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f,
1508  };
1509
1510  // FR32 Register Class...
1511  const MCPhysReg FR32[] = {
1512    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,
1513  };
1514
1515  // FR32 Bit set.
1516  const uint8_t FR32Bits[] = {
1517    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f,
1518  };
1519
1520  // GR32 Register Class...
1521  const MCPhysReg GR32[] = {
1522    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,
1523  };
1524
1525  // GR32 Bit set.
1526  const uint8_t GR32Bits[] = {
1527    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,
1528  };
1529
1530  // GR32_NOSP Register Class...
1531  const MCPhysReg GR32_NOSP[] = {
1532    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,
1533  };
1534
1535  // GR32_NOSP Bit set.
1536  const uint8_t GR32_NOSPBits[] = {
1537    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,
1538  };
1539
1540  // LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX Register Class...
1541  const MCPhysReg LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX[] = {
1542    X86::EAX, X86::ECX, X86::EDX, X86::ESI, X86::EDI, X86::EBX, X86::EBP, X86::ESP, X86::RBP,
1543  };
1544
1545  // LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX Bit set.
1546  const uint8_t LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXBits[] = {
1547    0x00, 0x00, 0xc0, 0x0f, 0x03, 0x00, 0x01,
1548  };
1549
1550  // GR32_NOREX Register Class...
1551  const MCPhysReg GR32_NOREX[] = {
1552    X86::EAX, X86::ECX, X86::EDX, X86::ESI, X86::EDI, X86::EBX, X86::EBP, X86::ESP,
1553  };
1554
1555  // GR32_NOREX Bit set.
1556  const uint8_t GR32_NOREXBits[] = {
1557    0x00, 0x00, 0xc0, 0x0f, 0x03,
1558  };
1559
1560  // VK32 Register Class...
1561  const MCPhysReg VK32[] = {
1562    X86::K0, X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7,
1563  };
1564
1565  // VK32 Bit set.
1566  const uint8_t VK32Bits[] = {
1567    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
1568  };
1569
1570  // GR32_NOREX_NOSP Register Class...
1571  const MCPhysReg GR32_NOREX_NOSP[] = {
1572    X86::EAX, X86::ECX, X86::EDX, X86::ESI, X86::EDI, X86::EBX, X86::EBP,
1573  };
1574
1575  // GR32_NOREX_NOSP Bit set.
1576  const uint8_t GR32_NOREX_NOSPBits[] = {
1577    0x00, 0x00, 0xc0, 0x0f, 0x01,
1578  };
1579
1580  // RFP32 Register Class...
1581  const MCPhysReg RFP32[] = {
1582    X86::FP0, X86::FP1, X86::FP2, X86::FP3, X86::FP4, X86::FP5, X86::FP6,
1583  };
1584
1585  // RFP32 Bit set.
1586  const uint8_t RFP32Bits[] = {
1587    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f,
1588  };
1589
1590  // VK32WM Register Class...
1591  const MCPhysReg VK32WM[] = {
1592    X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7,
1593  };
1594
1595  // VK32WM Bit set.
1596  const uint8_t VK32WMBits[] = {
1597    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f,
1598  };
1599
1600  // GR32_ABCD Register Class...
1601  const MCPhysReg GR32_ABCD[] = {
1602    X86::EAX, X86::ECX, X86::EDX, X86::EBX,
1603  };
1604
1605  // GR32_ABCD Bit set.
1606  const uint8_t GR32_ABCDBits[] = {
1607    0x00, 0x00, 0x40, 0x0b,
1608  };
1609
1610  // GR32_TC Register Class...
1611  const MCPhysReg GR32_TC[] = {
1612    X86::EAX, X86::ECX, X86::EDX,
1613  };
1614
1615  // GR32_TC Bit set.
1616  const uint8_t GR32_TCBits[] = {
1617    0x00, 0x00, 0x40, 0x0a,
1618  };
1619
1620  // GR32_AD Register Class...
1621  const MCPhysReg GR32_AD[] = {
1622    X86::EAX, X86::EDX,
1623  };
1624
1625  // GR32_AD Bit set.
1626  const uint8_t GR32_ADBits[] = {
1627    0x00, 0x00, 0x40, 0x08,
1628  };
1629
1630  // LOW32_ADDR_ACCESS_RBP_with_sub_32bit Register Class...
1631  const MCPhysReg LOW32_ADDR_ACCESS_RBP_with_sub_32bit[] = {
1632    X86::RIP, X86::RBP,
1633  };
1634
1635  // LOW32_ADDR_ACCESS_RBP_with_sub_32bit Bit set.
1636  const uint8_t LOW32_ADDR_ACCESS_RBP_with_sub_32bitBits[] = {
1637    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
1638  };
1639
1640  // CCR Register Class...
1641  const MCPhysReg CCR[] = {
1642    X86::EFLAGS,
1643  };
1644
1645  // CCR Bit set.
1646  const uint8_t CCRBits[] = {
1647    0x00, 0x00, 0x00, 0x10,
1648  };
1649
1650  // DFCCR Register Class...
1651  const MCPhysReg DFCCR[] = {
1652    X86::DF,
1653  };
1654
1655  // DFCCR Bit set.
1656  const uint8_t DFCCRBits[] = {
1657    0x00, 0x40,
1658  };
1659
1660  // LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit Register Class...
1661  const MCPhysReg LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit[] = {
1662    X86::RBP,
1663  };
1664
1665  // LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit Bit set.
1666  const uint8_t LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitBits[] = {
1667    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
1668  };
1669
1670  // LOW32_ADDR_ACCESS_with_sub_32bit Register Class...
1671  const MCPhysReg LOW32_ADDR_ACCESS_with_sub_32bit[] = {
1672    X86::RIP,
1673  };
1674
1675  // LOW32_ADDR_ACCESS_with_sub_32bit Bit set.
1676  const uint8_t LOW32_ADDR_ACCESS_with_sub_32bitBits[] = {
1677    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
1678  };
1679
1680  // RFP64 Register Class...
1681  const MCPhysReg RFP64[] = {
1682    X86::FP0, X86::FP1, X86::FP2, X86::FP3, X86::FP4, X86::FP5, X86::FP6,
1683  };
1684
1685  // RFP64 Bit set.
1686  const uint8_t RFP64Bits[] = {
1687    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f,
1688  };
1689
1690  // FR64X Register Class...
1691  const MCPhysReg FR64X[] = {
1692    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,
1693  };
1694
1695  // FR64X Bit set.
1696  const uint8_t FR64XBits[] = {
1697    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f,
1698  };
1699
1700  // GR64 Register Class...
1701  const MCPhysReg GR64[] = {
1702    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,
1703  };
1704
1705  // GR64 Bit set.
1706  const uint8_t GR64Bits[] = {
1707    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
1708  };
1709
1710  // CONTROL_REG Register Class...
1711  const MCPhysReg CONTROL_REG[] = {
1712    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,
1713  };
1714
1715  // CONTROL_REG Bit set.
1716  const uint8_t CONTROL_REGBits[] = {
1717    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f,
1718  };
1719
1720  // FR64 Register Class...
1721  const MCPhysReg FR64[] = {
1722    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,
1723  };
1724
1725  // FR64 Bit set.
1726  const uint8_t FR64Bits[] = {
1727    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f,
1728  };
1729
1730  // GR64_with_sub_8bit Register Class...
1731  const MCPhysReg GR64_with_sub_8bit[] = {
1732    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,
1733  };
1734
1735  // GR64_with_sub_8bit Bit set.
1736  const uint8_t GR64_with_sub_8bitBits[] = {
1737    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
1738  };
1739
1740  // GR64_NOSP Register Class...
1741  const MCPhysReg GR64_NOSP[] = {
1742    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,
1743  };
1744
1745  // GR64_NOSP Bit set.
1746  const uint8_t GR64_NOSPBits[] = {
1747    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
1748  };
1749
1750  // GR64_NOREX Register Class...
1751  const MCPhysReg GR64_NOREX[] = {
1752    X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::RBX, X86::RBP, X86::RSP, X86::RIP,
1753  };
1754
1755  // GR64_NOREX Bit set.
1756  const uint8_t GR64_NOREXBits[] = {
1757    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x01,
1758  };
1759
1760  // GR64_TC Register Class...
1761  const MCPhysReg GR64_TC[] = {
1762    X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R11, X86::RIP,
1763  };
1764
1765  // GR64_TC Bit set.
1766  const uint8_t GR64_TCBits[] = {
1767    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01,
1768  };
1769
1770  // GR64_NOSP_and_GR64_TC Register Class...
1771  const MCPhysReg GR64_NOSP_and_GR64_TC[] = {
1772    X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R11,
1773  };
1774
1775  // GR64_NOSP_and_GR64_TC Bit set.
1776  const uint8_t GR64_NOSP_and_GR64_TCBits[] = {
1777    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01,
1778  };
1779
1780  // GR64_TCW64 Register Class...
1781  const MCPhysReg GR64_TCW64[] = {
1782    X86::RAX, X86::RCX, X86::RDX, X86::R8, X86::R9, X86::R10, X86::R11, X86::RIP,
1783  };
1784
1785  // GR64_TCW64 Bit set.
1786  const uint8_t GR64_TCW64Bits[] = {
1787    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01,
1788  };
1789
1790  // GR64_with_sub_16bit_in_GR16_NOREX Register Class...
1791  const MCPhysReg GR64_with_sub_16bit_in_GR16_NOREX[] = {
1792    X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::RBX, X86::RBP, X86::RSP,
1793  };
1794
1795  // GR64_with_sub_16bit_in_GR16_NOREX Bit set.
1796  const uint8_t GR64_with_sub_16bit_in_GR16_NOREXBits[] = {
1797    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9f, 0x01,
1798  };
1799
1800  // VK64 Register Class...
1801  const MCPhysReg VK64[] = {
1802    X86::K0, X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7,
1803  };
1804
1805  // VK64 Bit set.
1806  const uint8_t VK64Bits[] = {
1807    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
1808  };
1809
1810  // VR64 Register Class...
1811  const MCPhysReg VR64[] = {
1812    X86::MM0, X86::MM1, X86::MM2, X86::MM3, X86::MM4, X86::MM5, X86::MM6, X86::MM7,
1813  };
1814
1815  // VR64 Bit set.
1816  const uint8_t VR64Bits[] = {
1817    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
1818  };
1819
1820  // GR64_NOREX_NOSP Register Class...
1821  const MCPhysReg GR64_NOREX_NOSP[] = {
1822    X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::RBX, X86::RBP,
1823  };
1824
1825  // GR64_NOREX_NOSP Bit set.
1826  const uint8_t GR64_NOREX_NOSPBits[] = {
1827    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9f,
1828  };
1829
1830  // GR64_NOSP_and_GR64_TCW64 Register Class...
1831  const MCPhysReg GR64_NOSP_and_GR64_TCW64[] = {
1832    X86::RAX, X86::RCX, X86::RDX, X86::R8, X86::R9, X86::R10, X86::R11,
1833  };
1834
1835  // GR64_NOSP_and_GR64_TCW64 Bit set.
1836  const uint8_t GR64_NOSP_and_GR64_TCW64Bits[] = {
1837    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01,
1838  };
1839
1840  // GR64_TC_and_GR64_TCW64 Register Class...
1841  const MCPhysReg GR64_TC_and_GR64_TCW64[] = {
1842    X86::RAX, X86::RCX, X86::RDX, X86::R8, X86::R9, X86::R11, X86::RIP,
1843  };
1844
1845  // GR64_TC_and_GR64_TCW64 Bit set.
1846  const uint8_t GR64_TC_and_GR64_TCW64Bits[] = {
1847    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01,
1848  };
1849
1850  // VK64WM Register Class...
1851  const MCPhysReg VK64WM[] = {
1852    X86::K1, X86::K2, X86::K3, X86::K4, X86::K5, X86::K6, X86::K7,
1853  };
1854
1855  // VK64WM Bit set.
1856  const uint8_t VK64WMBits[] = {
1857    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f,
1858  };
1859
1860  // GR64_NOREX_and_GR64_TC Register Class...
1861  const MCPhysReg GR64_NOREX_and_GR64_TC[] = {
1862    X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::RIP,
1863  };
1864
1865  // GR64_NOREX_and_GR64_TC Bit set.
1866  const uint8_t GR64_NOREX_and_GR64_TCBits[] = {
1867    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbc,
1868  };
1869
1870  // GR64_TC_and_GR64_NOSP_and_GR64_TCW64 Register Class...
1871  const MCPhysReg GR64_TC_and_GR64_NOSP_and_GR64_TCW64[] = {
1872    X86::RAX, X86::RCX, X86::RDX, X86::R8, X86::R9, X86::R11,
1873  };
1874
1875  // GR64_TC_and_GR64_NOSP_and_GR64_TCW64 Bit set.
1876  const uint8_t GR64_TC_and_GR64_NOSP_and_GR64_TCW64Bits[] = {
1877    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01,
1878  };
1879
1880  // GR64_NOREX_NOSP_and_GR64_TC Register Class...
1881  const MCPhysReg GR64_NOREX_NOSP_and_GR64_TC[] = {
1882    X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI,
1883  };
1884
1885  // GR64_NOREX_NOSP_and_GR64_TC Bit set.
1886  const uint8_t GR64_NOREX_NOSP_and_GR64_TCBits[] = {
1887    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9c,
1888  };
1889
1890  // GR64_ABCD Register Class...
1891  const MCPhysReg GR64_ABCD[] = {
1892    X86::RAX, X86::RCX, X86::RDX, X86::RBX,
1893  };
1894
1895  // GR64_ABCD Bit set.
1896  const uint8_t GR64_ABCDBits[] = {
1897    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x16,
1898  };
1899
1900  // GR64_NOREX_and_GR64_TCW64 Register Class...
1901  const MCPhysReg GR64_NOREX_and_GR64_TCW64[] = {
1902    X86::RAX, X86::RCX, X86::RDX, X86::RIP,
1903  };
1904
1905  // GR64_NOREX_and_GR64_TCW64 Bit set.
1906  const uint8_t GR64_NOREX_and_GR64_TCW64Bits[] = {
1907    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x34,
1908  };
1909
1910  // GR64_with_sub_32bit_in_GR32_TC Register Class...
1911  const MCPhysReg GR64_with_sub_32bit_in_GR32_TC[] = {
1912    X86::RAX, X86::RCX, X86::RDX,
1913  };
1914
1915  // GR64_with_sub_32bit_in_GR32_TC Bit set.
1916  const uint8_t GR64_with_sub_32bit_in_GR32_TCBits[] = {
1917    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x14,
1918  };
1919
1920  // GR64_AD Register Class...
1921  const MCPhysReg GR64_AD[] = {
1922    X86::RAX, X86::RDX,
1923  };
1924
1925  // GR64_AD Bit set.
1926  const uint8_t GR64_ADBits[] = {
1927    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x10,
1928  };
1929
1930  // GR64_and_LOW32_ADDR_ACCESS_RBP Register Class...
1931  const MCPhysReg GR64_and_LOW32_ADDR_ACCESS_RBP[] = {
1932    X86::RBP, X86::RIP,
1933  };
1934
1935  // GR64_and_LOW32_ADDR_ACCESS_RBP Bit set.
1936  const uint8_t GR64_and_LOW32_ADDR_ACCESS_RBPBits[] = {
1937    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
1938  };
1939
1940  // GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBP Register Class...
1941  const MCPhysReg GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBP[] = {
1942    X86::RBP,
1943  };
1944
1945  // GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBP Bit set.
1946  const uint8_t GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBPBits[] = {
1947    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
1948  };
1949
1950  // GR64_and_LOW32_ADDR_ACCESS Register Class...
1951  const MCPhysReg GR64_and_LOW32_ADDR_ACCESS[] = {
1952    X86::RIP,
1953  };
1954
1955  // GR64_and_LOW32_ADDR_ACCESS Bit set.
1956  const uint8_t GR64_and_LOW32_ADDR_ACCESSBits[] = {
1957    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
1958  };
1959
1960  // RST Register Class...
1961  const MCPhysReg RST[] = {
1962    X86::ST0, X86::ST1, X86::ST2, X86::ST3, X86::ST4, X86::ST5, X86::ST6, X86::ST7,
1963  };
1964
1965  // RST Bit set.
1966  const uint8_t RSTBits[] = {
1967    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
1968  };
1969
1970  // RFP80 Register Class...
1971  const MCPhysReg RFP80[] = {
1972    X86::FP0, X86::FP1, X86::FP2, X86::FP3, X86::FP4, X86::FP5, X86::FP6,
1973  };
1974
1975  // RFP80 Bit set.
1976  const uint8_t RFP80Bits[] = {
1977    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f,
1978  };
1979
1980  // VR128X Register Class...
1981  const MCPhysReg VR128X[] = {
1982    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,
1983  };
1984
1985  // VR128X Bit set.
1986  const uint8_t VR128XBits[] = {
1987    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f,
1988  };
1989
1990  // VR128 Register Class...
1991  const MCPhysReg VR128[] = {
1992    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,
1993  };
1994
1995  // VR128 Bit set.
1996  const uint8_t VR128Bits[] = {
1997    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f,
1998  };
1999
2000  // VR128H Register Class...
2001  const MCPhysReg VR128H[] = {
2002    X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15,
2003  };
2004
2005  // VR128H Bit set.
2006  const uint8_t VR128HBits[] = {
2007    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
2008  };
2009
2010  // VR128L Register Class...
2011  const MCPhysReg VR128L[] = {
2012    X86::XMM0, X86::XMM1, X86::XMM2, X86::XMM3, X86::XMM4, X86::XMM5, X86::XMM6, X86::XMM7,
2013  };
2014
2015  // VR128L Bit set.
2016  const uint8_t VR128LBits[] = {
2017    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
2018  };
2019
2020  // BNDR Register Class...
2021  const MCPhysReg BNDR[] = {
2022    X86::BND0, X86::BND1, X86::BND2, X86::BND3,
2023  };
2024
2025  // BNDR Bit set.
2026  const uint8_t BNDRBits[] = {
2027    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e,
2028  };
2029
2030  // VR256X Register Class...
2031  const MCPhysReg VR256X[] = {
2032    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,
2033  };
2034
2035  // VR256X Bit set.
2036  const uint8_t VR256XBits[] = {
2037    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,
2038  };
2039
2040  // VR256 Register Class...
2041  const MCPhysReg VR256[] = {
2042    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,
2043  };
2044
2045  // VR256 Bit set.
2046  const uint8_t VR256Bits[] = {
2047    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f,
2048  };
2049
2050  // VR256H Register Class...
2051  const MCPhysReg VR256H[] = {
2052    X86::YMM8, X86::YMM9, X86::YMM10, X86::YMM11, X86::YMM12, X86::YMM13, X86::YMM14, X86::YMM15,
2053  };
2054
2055  // VR256H Bit set.
2056  const uint8_t VR256HBits[] = {
2057    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
2058  };
2059
2060  // VR256L Register Class...
2061  const MCPhysReg VR256L[] = {
2062    X86::YMM0, X86::YMM1, X86::YMM2, X86::YMM3, X86::YMM4, X86::YMM5, X86::YMM6, X86::YMM7,
2063  };
2064
2065  // VR256L Bit set.
2066  const uint8_t VR256LBits[] = {
2067    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
2068  };
2069
2070  // VR512 Register Class...
2071  const MCPhysReg VR512[] = {
2072    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,
2073  };
2074
2075  // VR512 Bit set.
2076  const uint8_t VR512Bits[] = {
2077    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,
2078  };
2079
2080  // VR512_with_sub_xmm_in_FR32 Register Class...
2081  const MCPhysReg VR512_with_sub_xmm_in_FR32[] = {
2082    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,
2083  };
2084
2085  // VR512_with_sub_xmm_in_FR32 Bit set.
2086  const uint8_t VR512_with_sub_xmm_in_FR32Bits[] = {
2087    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,
2088  };
2089
2090  // VR512_with_sub_xmm_in_VR128H Register Class...
2091  const MCPhysReg VR512_with_sub_xmm_in_VR128H[] = {
2092    X86::ZMM8, X86::ZMM9, X86::ZMM10, X86::ZMM11, X86::ZMM12, X86::ZMM13, X86::ZMM14, X86::ZMM15,
2093  };
2094
2095  // VR512_with_sub_xmm_in_VR128H Bit set.
2096  const uint8_t VR512_with_sub_xmm_in_VR128HBits[] = {
2097    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,
2098  };
2099
2100  // VR512_with_sub_xmm_in_VR128L Register Class...
2101  const MCPhysReg VR512_with_sub_xmm_in_VR128L[] = {
2102    X86::ZMM0, X86::ZMM1, X86::ZMM2, X86::ZMM3, X86::ZMM4, X86::ZMM5, X86::ZMM6, X86::ZMM7,
2103  };
2104
2105  // VR512_with_sub_xmm_in_VR128L Bit set.
2106  const uint8_t VR512_with_sub_xmm_in_VR128LBits[] = {
2107    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,
2108  };
2109
2110} // end anonymous namespace
2111
2112extern const char X86RegClassStrings[] = {
2113  /* 0 */ 'R', 'F', 'P', '8', '0', 0,
2114  /* 6 */ 'V', 'K', '1', 0,
2115  /* 10 */ 'V', 'R', '5', '1', '2', 0,
2116  /* 16 */ 'V', 'K', '3', '2', 0,
2117  /* 21 */ 'R', 'F', 'P', '3', '2', 0,
2118  /* 27 */ 'V', 'R', '5', '1', '2', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', 'x', 'm', 'm', '_', 'i', 'n', '_', 'F', 'R', '3', '2', 0,
2119  /* 54 */ 'G', 'R', '3', '2', 0,
2120  /* 59 */ 'V', 'K', '2', 0,
2121  /* 63 */ 'V', 'K', '6', '4', 0,
2122  /* 68 */ 'R', 'F', 'P', '6', '4', 0,
2123  /* 74 */ 'F', 'R', '6', '4', 0,
2124  /* 79 */ 'G', 'R', '6', '4', 0,
2125  /* 84 */ 'V', 'R', '6', '4', 0,
2126  /* 89 */ 'G', 'R', '6', '4', '_', 'T', 'C', '_', 'a', 'n', 'd', '_', 'G', 'R', '6', '4', '_', 'T', 'C', 'W', '6', '4', 0,
2127  /* 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,
2128  /* 149 */ 'G', 'R', '6', '4', '_', 'N', 'O', 'R', 'E', 'X', '_', 'a', 'n', 'd', '_', 'G', 'R', '6', '4', '_', 'T', 'C', 'W', '6', '4', 0,
2129  /* 175 */ 'V', 'K', '4', 0,
2130  /* 179 */ 'G', 'R', 'H', '1', '6', 0,
2131  /* 185 */ 'V', 'K', '1', '6', 0,
2132  /* 190 */ 'G', 'R', '1', '6', 0,
2133  /* 195 */ 'V', 'R', '2', '5', '6', 0,
2134  /* 201 */ 'V', 'R', '1', '2', '8', 0,
2135  /* 207 */ 'G', 'R', 'H', '8', 0,
2136  /* 212 */ 'V', 'K', '8', 0,
2137  /* 216 */ 'G', 'R', '8', 0,
2138  /* 220 */ '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,
2139  /* 251 */ 'G', 'R', '6', '4', '_', 'N', 'O', 'S', 'P', '_', 'a', 'n', 'd', '_', 'G', 'R', '6', '4', '_', 'T', 'C', 0,
2140  /* 273 */ 'G', 'R', '6', '4', '_', 'N', 'O', 'R', 'E', 'X', '_', 'N', 'O', 'S', 'P', '_', 'a', 'n', 'd', '_', 'G', 'R', '6', '4', '_', 'T', 'C', 0,
2141  /* 301 */ 'G', 'R', '6', '4', '_', 'N', 'O', 'R', 'E', 'X', '_', 'a', 'n', 'd', '_', 'G', 'R', '6', '4', '_', 'T', 'C', 0,
2142  /* 324 */ 'G', 'R', '3', '2', '_', 'A', 'D', 0,
2143  /* 332 */ 'G', 'R', '6', '4', '_', 'A', 'D', 0,
2144  /* 340 */ 'G', 'R', '3', '2', '_', 'A', 'B', 'C', 'D', 0,
2145  /* 350 */ 'G', 'R', '6', '4', '_', 'A', 'B', 'C', 'D', 0,
2146  /* 360 */ 'G', 'R', '1', '6', '_', 'A', 'B', 'C', 'D', 0,
2147  /* 370 */ 'D', 'E', 'B', 'U', 'G', '_', 'R', 'E', 'G', 0,
2148  /* 380 */ 'C', 'O', 'N', 'T', 'R', 'O', 'L', '_', 'R', 'E', 'G', 0,
2149  /* 392 */ 'S', 'E', 'G', 'M', 'E', 'N', 'T', '_', 'R', 'E', 'G', 0,
2150  /* 404 */ 'V', 'R', '2', '5', '6', 'H', 0,
2151  /* 411 */ 'V', 'R', '5', '1', '2', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', 'x', 'm', 'm', '_', 'i', 'n', '_', 'V', 'R', '1', '2', '8', 'H', 0,
2152  /* 440 */ 'G', 'R', '8', '_', 'A', 'B', 'C', 'D', '_', 'H', 0,
2153  /* 451 */ 'V', 'R', '2', '5', '6', 'L', 0,
2154  /* 458 */ 'V', 'R', '5', '1', '2', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', 'x', 'm', 'm', '_', 'i', 'n', '_', 'V', 'R', '1', '2', '8', 'L', 0,
2155  /* 487 */ 'G', 'R', '8', '_', 'A', 'B', 'C', 'D', '_', 'L', 0,
2156  /* 498 */ 'V', 'K', '1', 'W', 'M', 0,
2157  /* 504 */ 'V', 'K', '3', '2', 'W', 'M', 0,
2158  /* 511 */ 'V', 'K', '2', 'W', 'M', 0,
2159  /* 517 */ 'V', 'K', '6', '4', 'W', 'M', 0,
2160  /* 524 */ 'V', 'K', '4', 'W', 'M', 0,
2161  /* 530 */ 'V', 'K', '1', '6', 'W', 'M', 0,
2162  /* 537 */ 'V', 'K', '8', 'W', 'M', 0,
2163  /* 543 */ '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,
2164  /* 574 */ 'G', 'R', '6', '4', '_', 'N', 'O', 'R', 'E', 'X', '_', 'N', 'O', 'S', 'P', '_', 'a', 'n', 'd', '_', 'L', 'O', 'W', '3', '2', '_', 'A', 'D', 'D', 'R', '_', 'A', 'C', 'C', 'E', 'S', 'S', '_', 'R', 'B', 'P', 0,
2165  /* 616 */ 'G', 'R', '3', '2', '_', 'N', 'O', 'S', 'P', 0,
2166  /* 626 */ 'G', 'R', '6', '4', '_', 'N', 'O', 'S', 'P', 0,
2167  /* 636 */ 'G', 'R', '3', '2', '_', 'N', 'O', 'R', 'E', 'X', '_', 'N', 'O', 'S', 'P', 0,
2168  /* 652 */ 'G', 'R', '6', '4', '_', 'N', 'O', 'R', 'E', 'X', '_', 'N', 'O', 'S', 'P', 0,
2169  /* 668 */ 'D', 'F', 'C', 'C', 'R', 0,
2170  /* 674 */ 'F', 'P', 'C', 'C', 'R', 0,
2171  /* 680 */ 'B', 'N', 'D', 'R', 0,
2172  /* 685 */ 'G', 'R', '6', '4', '_', 'a', 'n', 'd', '_', 'L', 'O', 'W', '3', '2', '_', 'A', 'D', 'D', 'R', '_', 'A', 'C', 'C', 'E', 'S', 'S', 0,
2173  /* 712 */ 'R', 'S', 'T', 0,
2174  /* 716 */ 'F', 'R', '3', '2', 'X', 0,
2175  /* 722 */ 'F', 'R', '6', '4', 'X', 0,
2176  /* 728 */ 'V', 'R', '2', '5', '6', 'X', 0,
2177  /* 735 */ 'V', 'R', '1', '2', '8', 'X', 0,
2178  /* 742 */ 'G', 'R', '3', '2', '_', 'N', 'O', 'R', 'E', 'X', 0,
2179  /* 753 */ 'G', 'R', '6', '4', '_', 'N', 'O', 'R', 'E', 'X', 0,
2180  /* 764 */ '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,
2181  /* 798 */ '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,
2182  /* 849 */ 'G', 'R', '8', '_', 'N', 'O', 'R', 'E', 'X', 0,
2183  /* 859 */ '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,
2184  /* 896 */ '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,
2185  /* 929 */ '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,
2186  /* 980 */ 'G', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '8', 'b', 'i', 't', 0,
2187  /* 999 */ '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,
2188};
2189
2190extern const MCRegisterClass X86MCRegisterClasses[] = {
2191  { GR8, GR8Bits, 216, 20, sizeof(GR8Bits), X86::GR8RegClassID, 1, 1, true },
2192  { GRH8, GRH8Bits, 207, 12, sizeof(GRH8Bits), X86::GRH8RegClassID, 1, 1, false },
2193  { GR8_NOREX, GR8_NOREXBits, 849, 8, sizeof(GR8_NOREXBits), X86::GR8_NOREXRegClassID, 1, 1, true },
2194  { GR8_ABCD_H, GR8_ABCD_HBits, 440, 4, sizeof(GR8_ABCD_HBits), X86::GR8_ABCD_HRegClassID, 1, 1, true },
2195  { GR8_ABCD_L, GR8_ABCD_LBits, 487, 4, sizeof(GR8_ABCD_LBits), X86::GR8_ABCD_LRegClassID, 1, 1, true },
2196  { GRH16, GRH16Bits, 179, 17, sizeof(GRH16Bits), X86::GRH16RegClassID, 2, 1, false },
2197  { GR16, GR16Bits, 190, 16, sizeof(GR16Bits), X86::GR16RegClassID, 2, 1, true },
2198  { GR16_NOREX, GR16_NOREXBits, 787, 8, sizeof(GR16_NOREXBits), X86::GR16_NOREXRegClassID, 2, 1, true },
2199  { VK1, VK1Bits, 6, 8, sizeof(VK1Bits), X86::VK1RegClassID, 2, 1, true },
2200  { VK16, VK16Bits, 185, 8, sizeof(VK16Bits), X86::VK16RegClassID, 2, 1, true },
2201  { VK2, VK2Bits, 59, 8, sizeof(VK2Bits), X86::VK2RegClassID, 2, 1, true },
2202  { VK4, VK4Bits, 175, 8, sizeof(VK4Bits), X86::VK4RegClassID, 2, 1, true },
2203  { VK8, VK8Bits, 212, 8, sizeof(VK8Bits), X86::VK8RegClassID, 2, 1, true },
2204  { VK16WM, VK16WMBits, 530, 7, sizeof(VK16WMBits), X86::VK16WMRegClassID, 2, 1, true },
2205  { VK1WM, VK1WMBits, 498, 7, sizeof(VK1WMBits), X86::VK1WMRegClassID, 2, 1, true },
2206  { VK2WM, VK2WMBits, 511, 7, sizeof(VK2WMBits), X86::VK2WMRegClassID, 2, 1, true },
2207  { VK4WM, VK4WMBits, 524, 7, sizeof(VK4WMBits), X86::VK4WMRegClassID, 2, 1, true },
2208  { VK8WM, VK8WMBits, 537, 7, sizeof(VK8WMBits), X86::VK8WMRegClassID, 2, 1, true },
2209  { SEGMENT_REG, SEGMENT_REGBits, 392, 6, sizeof(SEGMENT_REGBits), X86::SEGMENT_REGRegClassID, 2, 1, true },
2210  { GR16_ABCD, GR16_ABCDBits, 360, 4, sizeof(GR16_ABCDBits), X86::GR16_ABCDRegClassID, 2, 1, true },
2211  { FPCCR, FPCCRBits, 674, 1, sizeof(FPCCRBits), X86::FPCCRRegClassID, 2, -1, false },
2212  { FR32X, FR32XBits, 716, 32, sizeof(FR32XBits), X86::FR32XRegClassID, 4, 1, true },
2213  { LOW32_ADDR_ACCESS_RBP, LOW32_ADDR_ACCESS_RBPBits, 552, 18, sizeof(LOW32_ADDR_ACCESS_RBPBits), X86::LOW32_ADDR_ACCESS_RBPRegClassID, 4, 1, true },
2214  { LOW32_ADDR_ACCESS, LOW32_ADDR_ACCESSBits, 694, 17, sizeof(LOW32_ADDR_ACCESSBits), X86::LOW32_ADDR_ACCESSRegClassID, 4, 1, true },
2215  { LOW32_ADDR_ACCESS_RBP_with_sub_8bit, LOW32_ADDR_ACCESS_RBP_with_sub_8bitBits, 999, 17, sizeof(LOW32_ADDR_ACCESS_RBP_with_sub_8bitBits), X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID, 4, 1, true },
2216  { DEBUG_REG, DEBUG_REGBits, 370, 16, sizeof(DEBUG_REGBits), X86::DEBUG_REGRegClassID, 4, 1, true },
2217  { FR32, FR32Bits, 49, 16, sizeof(FR32Bits), X86::FR32RegClassID, 4, 1, true },
2218  { GR32, GR32Bits, 54, 16, sizeof(GR32Bits), X86::GR32RegClassID, 4, 1, true },
2219  { GR32_NOSP, GR32_NOSPBits, 616, 15, sizeof(GR32_NOSPBits), X86::GR32_NOSPRegClassID, 4, 1, true },
2220  { LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX, LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXBits, 798, 9, sizeof(LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXBits), X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClassID, 4, 1, true },
2221  { GR32_NOREX, GR32_NOREXBits, 742, 8, sizeof(GR32_NOREXBits), X86::GR32_NOREXRegClassID, 4, 1, true },
2222  { VK32, VK32Bits, 16, 8, sizeof(VK32Bits), X86::VK32RegClassID, 4, 1, true },
2223  { GR32_NOREX_NOSP, GR32_NOREX_NOSPBits, 636, 7, sizeof(GR32_NOREX_NOSPBits), X86::GR32_NOREX_NOSPRegClassID, 4, 1, true },
2224  { RFP32, RFP32Bits, 21, 7, sizeof(RFP32Bits), X86::RFP32RegClassID, 4, 1, true },
2225  { VK32WM, VK32WMBits, 504, 7, sizeof(VK32WMBits), X86::VK32WMRegClassID, 4, 1, true },
2226  { GR32_ABCD, GR32_ABCDBits, 340, 4, sizeof(GR32_ABCDBits), X86::GR32_ABCDRegClassID, 4, 1, true },
2227  { GR32_TC, GR32_TCBits, 243, 3, sizeof(GR32_TCBits), X86::GR32_TCRegClassID, 4, 1, true },
2228  { GR32_AD, GR32_ADBits, 324, 2, sizeof(GR32_ADBits), X86::GR32_ADRegClassID, 4, 1, true },
2229  { LOW32_ADDR_ACCESS_RBP_with_sub_32bit, LOW32_ADDR_ACCESS_RBP_with_sub_32bitBits, 859, 2, sizeof(LOW32_ADDR_ACCESS_RBP_with_sub_32bitBits), X86::LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClassID, 4, 1, true },
2230  { CCR, CCRBits, 670, 1, sizeof(CCRBits), X86::CCRRegClassID, 4, -1, false },
2231  { DFCCR, DFCCRBits, 668, 1, sizeof(DFCCRBits), X86::DFCCRRegClassID, 4, -1, false },
2232  { LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit, LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitBits, 929, 1, sizeof(LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitBits), X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitRegClassID, 4, 1, true },
2233  { LOW32_ADDR_ACCESS_with_sub_32bit, LOW32_ADDR_ACCESS_with_sub_32bitBits, 896, 1, sizeof(LOW32_ADDR_ACCESS_with_sub_32bitBits), X86::LOW32_ADDR_ACCESS_with_sub_32bitRegClassID, 4, 1, true },
2234  { RFP64, RFP64Bits, 68, 7, sizeof(RFP64Bits), X86::RFP64RegClassID, 8, 1, true },
2235  { FR64X, FR64XBits, 722, 32, sizeof(FR64XBits), X86::FR64XRegClassID, 8, 1, true },
2236  { GR64, GR64Bits, 79, 17, sizeof(GR64Bits), X86::GR64RegClassID, 8, 1, true },
2237  { CONTROL_REG, CONTROL_REGBits, 380, 16, sizeof(CONTROL_REGBits), X86::CONTROL_REGRegClassID, 8, 1, true },
2238  { FR64, FR64Bits, 74, 16, sizeof(FR64Bits), X86::FR64RegClassID, 8, 1, true },
2239  { GR64_with_sub_8bit, GR64_with_sub_8bitBits, 980, 16, sizeof(GR64_with_sub_8bitBits), X86::GR64_with_sub_8bitRegClassID, 8, 1, true },
2240  { GR64_NOSP, GR64_NOSPBits, 626, 15, sizeof(GR64_NOSPBits), X86::GR64_NOSPRegClassID, 8, 1, true },
2241  { GR64_NOREX, GR64_NOREXBits, 753, 9, sizeof(GR64_NOREXBits), X86::GR64_NOREXRegClassID, 8, 1, true },
2242  { GR64_TC, GR64_TCBits, 265, 9, sizeof(GR64_TCBits), X86::GR64_TCRegClassID, 8, 1, true },
2243  { GR64_NOSP_and_GR64_TC, GR64_NOSP_and_GR64_TCBits, 251, 8, sizeof(GR64_NOSP_and_GR64_TCBits), X86::GR64_NOSP_and_GR64_TCRegClassID, 8, 1, true },
2244  { GR64_TCW64, GR64_TCW64Bits, 101, 8, sizeof(GR64_TCW64Bits), X86::GR64_TCW64RegClassID, 8, 1, true },
2245  { GR64_with_sub_16bit_in_GR16_NOREX, GR64_with_sub_16bit_in_GR16_NOREXBits, 764, 8, sizeof(GR64_with_sub_16bit_in_GR16_NOREXBits), X86::GR64_with_sub_16bit_in_GR16_NOREXRegClassID, 8, 1, true },
2246  { VK64, VK64Bits, 63, 8, sizeof(VK64Bits), X86::VK64RegClassID, 8, 1, true },
2247  { VR64, VR64Bits, 84, 8, sizeof(VR64Bits), X86::VR64RegClassID, 8, 1, true },
2248  { GR64_NOREX_NOSP, GR64_NOREX_NOSPBits, 652, 7, sizeof(GR64_NOREX_NOSPBits), X86::GR64_NOREX_NOSPRegClassID, 8, 1, true },
2249  { GR64_NOSP_and_GR64_TCW64, GR64_NOSP_and_GR64_TCW64Bits, 124, 7, sizeof(GR64_NOSP_and_GR64_TCW64Bits), X86::GR64_NOSP_and_GR64_TCW64RegClassID, 8, 1, true },
2250  { GR64_TC_and_GR64_TCW64, GR64_TC_and_GR64_TCW64Bits, 89, 7, sizeof(GR64_TC_and_GR64_TCW64Bits), X86::GR64_TC_and_GR64_TCW64RegClassID, 8, 1, true },
2251  { VK64WM, VK64WMBits, 517, 7, sizeof(VK64WMBits), X86::VK64WMRegClassID, 8, 1, true },
2252  { GR64_NOREX_and_GR64_TC, GR64_NOREX_and_GR64_TCBits, 301, 6, sizeof(GR64_NOREX_and_GR64_TCBits), X86::GR64_NOREX_and_GR64_TCRegClassID, 8, 1, true },
2253  { 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, 8, 1, true },
2254  { GR64_NOREX_NOSP_and_GR64_TC, GR64_NOREX_NOSP_and_GR64_TCBits, 273, 5, sizeof(GR64_NOREX_NOSP_and_GR64_TCBits), X86::GR64_NOREX_NOSP_and_GR64_TCRegClassID, 8, 1, true },
2255  { GR64_ABCD, GR64_ABCDBits, 350, 4, sizeof(GR64_ABCDBits), X86::GR64_ABCDRegClassID, 8, 1, true },
2256  { GR64_NOREX_and_GR64_TCW64, GR64_NOREX_and_GR64_TCW64Bits, 149, 4, sizeof(GR64_NOREX_and_GR64_TCW64Bits), X86::GR64_NOREX_and_GR64_TCW64RegClassID, 8, 1, true },
2257  { GR64_with_sub_32bit_in_GR32_TC, GR64_with_sub_32bit_in_GR32_TCBits, 220, 3, sizeof(GR64_with_sub_32bit_in_GR32_TCBits), X86::GR64_with_sub_32bit_in_GR32_TCRegClassID, 8, 1, true },
2258  { GR64_AD, GR64_ADBits, 332, 2, sizeof(GR64_ADBits), X86::GR64_ADRegClassID, 8, 1, true },
2259  { GR64_and_LOW32_ADDR_ACCESS_RBP, GR64_and_LOW32_ADDR_ACCESS_RBPBits, 543, 2, sizeof(GR64_and_LOW32_ADDR_ACCESS_RBPBits), X86::GR64_and_LOW32_ADDR_ACCESS_RBPRegClassID, 8, 1, true },
2260  { GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBP, GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBPBits, 574, 1, sizeof(GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBPBits), X86::GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBPRegClassID, 8, 1, true },
2261  { GR64_and_LOW32_ADDR_ACCESS, GR64_and_LOW32_ADDR_ACCESSBits, 685, 1, sizeof(GR64_and_LOW32_ADDR_ACCESSBits), X86::GR64_and_LOW32_ADDR_ACCESSRegClassID, 8, 1, true },
2262  { RST, RSTBits, 712, 8, sizeof(RSTBits), X86::RSTRegClassID, 10, 1, false },
2263  { RFP80, RFP80Bits, 0, 7, sizeof(RFP80Bits), X86::RFP80RegClassID, 10, 1, true },
2264  { VR128X, VR128XBits, 735, 32, sizeof(VR128XBits), X86::VR128XRegClassID, 16, 1, true },
2265  { VR128, VR128Bits, 201, 16, sizeof(VR128Bits), X86::VR128RegClassID, 16, 1, true },
2266  { VR128H, VR128HBits, 433, 8, sizeof(VR128HBits), X86::VR128HRegClassID, 16, 1, true },
2267  { VR128L, VR128LBits, 480, 8, sizeof(VR128LBits), X86::VR128LRegClassID, 16, 1, true },
2268  { BNDR, BNDRBits, 680, 4, sizeof(BNDRBits), X86::BNDRRegClassID, 16, 1, true },
2269  { VR256X, VR256XBits, 728, 32, sizeof(VR256XBits), X86::VR256XRegClassID, 32, 1, true },
2270  { VR256, VR256Bits, 195, 16, sizeof(VR256Bits), X86::VR256RegClassID, 32, 1, true },
2271  { VR256H, VR256HBits, 404, 8, sizeof(VR256HBits), X86::VR256HRegClassID, 32, 1, true },
2272  { VR256L, VR256LBits, 451, 8, sizeof(VR256LBits), X86::VR256LRegClassID, 32, 1, true },
2273  { VR512, VR512Bits, 10, 32, sizeof(VR512Bits), X86::VR512RegClassID, 64, 1, true },
2274  { 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, 64, 1, true },
2275  { VR512_with_sub_xmm_in_VR128H, VR512_with_sub_xmm_in_VR128HBits, 411, 8, sizeof(VR512_with_sub_xmm_in_VR128HBits), X86::VR512_with_sub_xmm_in_VR128HRegClassID, 64, 1, true },
2276  { VR512_with_sub_xmm_in_VR128L, VR512_with_sub_xmm_in_VR128LBits, 458, 8, sizeof(VR512_with_sub_xmm_in_VR128LBits), X86::VR512_with_sub_xmm_in_VR128LRegClassID, 64, 1, true },
2277};
2278
2279// X86 Dwarf<->LLVM register mappings.
2280extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour0Dwarf2L[] = {
2281  { 0U, X86::RAX },
2282  { 1U, X86::RDX },
2283  { 2U, X86::RCX },
2284  { 3U, X86::RBX },
2285  { 4U, X86::RSI },
2286  { 5U, X86::RDI },
2287  { 6U, X86::RBP },
2288  { 7U, X86::RSP },
2289  { 8U, X86::R8 },
2290  { 9U, X86::R9 },
2291  { 10U, X86::R10 },
2292  { 11U, X86::R11 },
2293  { 12U, X86::R12 },
2294  { 13U, X86::R13 },
2295  { 14U, X86::R14 },
2296  { 15U, X86::R15 },
2297  { 16U, X86::RIP },
2298  { 17U, X86::XMM0 },
2299  { 18U, X86::XMM1 },
2300  { 19U, X86::XMM2 },
2301  { 20U, X86::XMM3 },
2302  { 21U, X86::XMM4 },
2303  { 22U, X86::XMM5 },
2304  { 23U, X86::XMM6 },
2305  { 24U, X86::XMM7 },
2306  { 25U, X86::XMM8 },
2307  { 26U, X86::XMM9 },
2308  { 27U, X86::XMM10 },
2309  { 28U, X86::XMM11 },
2310  { 29U, X86::XMM12 },
2311  { 30U, X86::XMM13 },
2312  { 31U, X86::XMM14 },
2313  { 32U, X86::XMM15 },
2314  { 33U, X86::ST0 },
2315  { 34U, X86::ST1 },
2316  { 35U, X86::ST2 },
2317  { 36U, X86::ST3 },
2318  { 37U, X86::ST4 },
2319  { 38U, X86::ST5 },
2320  { 39U, X86::ST6 },
2321  { 40U, X86::ST7 },
2322  { 41U, X86::MM0 },
2323  { 42U, X86::MM1 },
2324  { 43U, X86::MM2 },
2325  { 44U, X86::MM3 },
2326  { 45U, X86::MM4 },
2327  { 46U, X86::MM5 },
2328  { 47U, X86::MM6 },
2329  { 48U, X86::MM7 },
2330  { 67U, X86::XMM16 },
2331  { 68U, X86::XMM17 },
2332  { 69U, X86::XMM18 },
2333  { 70U, X86::XMM19 },
2334  { 71U, X86::XMM20 },
2335  { 72U, X86::XMM21 },
2336  { 73U, X86::XMM22 },
2337  { 74U, X86::XMM23 },
2338  { 75U, X86::XMM24 },
2339  { 76U, X86::XMM25 },
2340  { 77U, X86::XMM26 },
2341  { 78U, X86::XMM27 },
2342  { 79U, X86::XMM28 },
2343  { 80U, X86::XMM29 },
2344  { 81U, X86::XMM30 },
2345  { 82U, X86::XMM31 },
2346  { 118U, X86::K0 },
2347  { 119U, X86::K1 },
2348  { 120U, X86::K2 },
2349  { 121U, X86::K3 },
2350  { 122U, X86::K4 },
2351  { 123U, X86::K5 },
2352  { 124U, X86::K6 },
2353  { 125U, X86::K7 },
2354};
2355extern const unsigned X86DwarfFlavour0Dwarf2LSize = array_lengthof(X86DwarfFlavour0Dwarf2L);
2356
2357extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour1Dwarf2L[] = {
2358  { 0U, X86::EAX },
2359  { 1U, X86::ECX },
2360  { 2U, X86::EDX },
2361  { 3U, X86::EBX },
2362  { 4U, X86::EBP },
2363  { 5U, X86::ESP },
2364  { 6U, X86::ESI },
2365  { 7U, X86::EDI },
2366  { 8U, X86::EIP },
2367  { 12U, X86::ST0 },
2368  { 13U, X86::ST1 },
2369  { 14U, X86::ST2 },
2370  { 15U, X86::ST3 },
2371  { 16U, X86::ST4 },
2372  { 17U, X86::ST5 },
2373  { 18U, X86::ST6 },
2374  { 19U, X86::ST7 },
2375  { 21U, X86::XMM0 },
2376  { 22U, X86::XMM1 },
2377  { 23U, X86::XMM2 },
2378  { 24U, X86::XMM3 },
2379  { 25U, X86::XMM4 },
2380  { 26U, X86::XMM5 },
2381  { 27U, X86::XMM6 },
2382  { 28U, X86::XMM7 },
2383  { 29U, X86::MM0 },
2384  { 30U, X86::MM1 },
2385  { 31U, X86::MM2 },
2386  { 32U, X86::MM3 },
2387  { 33U, X86::MM4 },
2388  { 34U, X86::MM5 },
2389  { 35U, X86::MM6 },
2390  { 36U, X86::MM7 },
2391  { 93U, X86::K0 },
2392  { 94U, X86::K1 },
2393  { 95U, X86::K2 },
2394  { 96U, X86::K3 },
2395  { 97U, X86::K4 },
2396  { 98U, X86::K5 },
2397  { 99U, X86::K6 },
2398  { 100U, X86::K7 },
2399};
2400extern const unsigned X86DwarfFlavour1Dwarf2LSize = array_lengthof(X86DwarfFlavour1Dwarf2L);
2401
2402extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour2Dwarf2L[] = {
2403  { 0U, X86::EAX },
2404  { 1U, X86::ECX },
2405  { 2U, X86::EDX },
2406  { 3U, X86::EBX },
2407  { 4U, X86::ESP },
2408  { 5U, X86::EBP },
2409  { 6U, X86::ESI },
2410  { 7U, X86::EDI },
2411  { 8U, X86::EIP },
2412  { 11U, X86::ST0 },
2413  { 12U, X86::ST1 },
2414  { 13U, X86::ST2 },
2415  { 14U, X86::ST3 },
2416  { 15U, X86::ST4 },
2417  { 16U, X86::ST5 },
2418  { 17U, X86::ST6 },
2419  { 18U, X86::ST7 },
2420  { 21U, X86::XMM0 },
2421  { 22U, X86::XMM1 },
2422  { 23U, X86::XMM2 },
2423  { 24U, X86::XMM3 },
2424  { 25U, X86::XMM4 },
2425  { 26U, X86::XMM5 },
2426  { 27U, X86::XMM6 },
2427  { 28U, X86::XMM7 },
2428  { 29U, X86::MM0 },
2429  { 30U, X86::MM1 },
2430  { 31U, X86::MM2 },
2431  { 32U, X86::MM3 },
2432  { 33U, X86::MM4 },
2433  { 34U, X86::MM5 },
2434  { 35U, X86::MM6 },
2435  { 36U, X86::MM7 },
2436  { 93U, X86::K0 },
2437  { 94U, X86::K1 },
2438  { 95U, X86::K2 },
2439  { 96U, X86::K3 },
2440  { 97U, X86::K4 },
2441  { 98U, X86::K5 },
2442  { 99U, X86::K6 },
2443  { 100U, X86::K7 },
2444};
2445extern const unsigned X86DwarfFlavour2Dwarf2LSize = array_lengthof(X86DwarfFlavour2Dwarf2L);
2446
2447extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour0Dwarf2L[] = {
2448  { 0U, X86::RAX },
2449  { 1U, X86::RDX },
2450  { 2U, X86::RCX },
2451  { 3U, X86::RBX },
2452  { 4U, X86::RSI },
2453  { 5U, X86::RDI },
2454  { 6U, X86::RBP },
2455  { 7U, X86::RSP },
2456  { 8U, X86::R8 },
2457  { 9U, X86::R9 },
2458  { 10U, X86::R10 },
2459  { 11U, X86::R11 },
2460  { 12U, X86::R12 },
2461  { 13U, X86::R13 },
2462  { 14U, X86::R14 },
2463  { 15U, X86::R15 },
2464  { 16U, X86::RIP },
2465  { 17U, X86::XMM0 },
2466  { 18U, X86::XMM1 },
2467  { 19U, X86::XMM2 },
2468  { 20U, X86::XMM3 },
2469  { 21U, X86::XMM4 },
2470  { 22U, X86::XMM5 },
2471  { 23U, X86::XMM6 },
2472  { 24U, X86::XMM7 },
2473  { 25U, X86::XMM8 },
2474  { 26U, X86::XMM9 },
2475  { 27U, X86::XMM10 },
2476  { 28U, X86::XMM11 },
2477  { 29U, X86::XMM12 },
2478  { 30U, X86::XMM13 },
2479  { 31U, X86::XMM14 },
2480  { 32U, X86::XMM15 },
2481  { 33U, X86::ST0 },
2482  { 34U, X86::ST1 },
2483  { 35U, X86::ST2 },
2484  { 36U, X86::ST3 },
2485  { 37U, X86::ST4 },
2486  { 38U, X86::ST5 },
2487  { 39U, X86::ST6 },
2488  { 40U, X86::ST7 },
2489  { 41U, X86::MM0 },
2490  { 42U, X86::MM1 },
2491  { 43U, X86::MM2 },
2492  { 44U, X86::MM3 },
2493  { 45U, X86::MM4 },
2494  { 46U, X86::MM5 },
2495  { 47U, X86::MM6 },
2496  { 48U, X86::MM7 },
2497  { 67U, X86::XMM16 },
2498  { 68U, X86::XMM17 },
2499  { 69U, X86::XMM18 },
2500  { 70U, X86::XMM19 },
2501  { 71U, X86::XMM20 },
2502  { 72U, X86::XMM21 },
2503  { 73U, X86::XMM22 },
2504  { 74U, X86::XMM23 },
2505  { 75U, X86::XMM24 },
2506  { 76U, X86::XMM25 },
2507  { 77U, X86::XMM26 },
2508  { 78U, X86::XMM27 },
2509  { 79U, X86::XMM28 },
2510  { 80U, X86::XMM29 },
2511  { 81U, X86::XMM30 },
2512  { 82U, X86::XMM31 },
2513  { 118U, X86::K0 },
2514  { 119U, X86::K1 },
2515  { 120U, X86::K2 },
2516  { 121U, X86::K3 },
2517  { 122U, X86::K4 },
2518  { 123U, X86::K5 },
2519  { 124U, X86::K6 },
2520  { 125U, X86::K7 },
2521};
2522extern const unsigned X86EHFlavour0Dwarf2LSize = array_lengthof(X86EHFlavour0Dwarf2L);
2523
2524extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour1Dwarf2L[] = {
2525  { 0U, X86::EAX },
2526  { 1U, X86::ECX },
2527  { 2U, X86::EDX },
2528  { 3U, X86::EBX },
2529  { 4U, X86::EBP },
2530  { 5U, X86::ESP },
2531  { 6U, X86::ESI },
2532  { 7U, X86::EDI },
2533  { 8U, X86::EIP },
2534  { 12U, X86::ST0 },
2535  { 13U, X86::ST1 },
2536  { 14U, X86::ST2 },
2537  { 15U, X86::ST3 },
2538  { 16U, X86::ST4 },
2539  { 17U, X86::ST5 },
2540  { 18U, X86::ST6 },
2541  { 19U, X86::ST7 },
2542  { 21U, X86::XMM0 },
2543  { 22U, X86::XMM1 },
2544  { 23U, X86::XMM2 },
2545  { 24U, X86::XMM3 },
2546  { 25U, X86::XMM4 },
2547  { 26U, X86::XMM5 },
2548  { 27U, X86::XMM6 },
2549  { 28U, X86::XMM7 },
2550  { 29U, X86::MM0 },
2551  { 30U, X86::MM1 },
2552  { 31U, X86::MM2 },
2553  { 32U, X86::MM3 },
2554  { 33U, X86::MM4 },
2555  { 34U, X86::MM5 },
2556  { 35U, X86::MM6 },
2557  { 36U, X86::MM7 },
2558  { 93U, X86::K0 },
2559  { 94U, X86::K1 },
2560  { 95U, X86::K2 },
2561  { 96U, X86::K3 },
2562  { 97U, X86::K4 },
2563  { 98U, X86::K5 },
2564  { 99U, X86::K6 },
2565  { 100U, X86::K7 },
2566};
2567extern const unsigned X86EHFlavour1Dwarf2LSize = array_lengthof(X86EHFlavour1Dwarf2L);
2568
2569extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour2Dwarf2L[] = {
2570  { 0U, X86::EAX },
2571  { 1U, X86::ECX },
2572  { 2U, X86::EDX },
2573  { 3U, X86::EBX },
2574  { 4U, X86::ESP },
2575  { 5U, X86::EBP },
2576  { 6U, X86::ESI },
2577  { 7U, X86::EDI },
2578  { 8U, X86::EIP },
2579  { 11U, X86::ST0 },
2580  { 12U, X86::ST1 },
2581  { 13U, X86::ST2 },
2582  { 14U, X86::ST3 },
2583  { 15U, X86::ST4 },
2584  { 16U, X86::ST5 },
2585  { 17U, X86::ST6 },
2586  { 18U, X86::ST7 },
2587  { 21U, X86::XMM0 },
2588  { 22U, X86::XMM1 },
2589  { 23U, X86::XMM2 },
2590  { 24U, X86::XMM3 },
2591  { 25U, X86::XMM4 },
2592  { 26U, X86::XMM5 },
2593  { 27U, X86::XMM6 },
2594  { 28U, X86::XMM7 },
2595  { 29U, X86::MM0 },
2596  { 30U, X86::MM1 },
2597  { 31U, X86::MM2 },
2598  { 32U, X86::MM3 },
2599  { 33U, X86::MM4 },
2600  { 34U, X86::MM5 },
2601  { 35U, X86::MM6 },
2602  { 36U, X86::MM7 },
2603  { 93U, X86::K0 },
2604  { 94U, X86::K1 },
2605  { 95U, X86::K2 },
2606  { 96U, X86::K3 },
2607  { 97U, X86::K4 },
2608  { 98U, X86::K5 },
2609  { 99U, X86::K6 },
2610  { 100U, X86::K7 },
2611};
2612extern const unsigned X86EHFlavour2Dwarf2LSize = array_lengthof(X86EHFlavour2Dwarf2L);
2613
2614extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour0L2Dwarf[] = {
2615  { X86::EAX, -2U },
2616  { X86::EBP, -2U },
2617  { X86::EBX, -2U },
2618  { X86::ECX, -2U },
2619  { X86::EDI, -2U },
2620  { X86::EDX, -2U },
2621  { X86::EIP, -2U },
2622  { X86::ESI, -2U },
2623  { X86::ESP, -2U },
2624  { X86::RAX, 0U },
2625  { X86::RBP, 6U },
2626  { X86::RBX, 3U },
2627  { X86::RCX, 2U },
2628  { X86::RDI, 5U },
2629  { X86::RDX, 1U },
2630  { X86::RIP, 16U },
2631  { X86::RSI, 4U },
2632  { X86::RSP, 7U },
2633  { X86::K0, 118U },
2634  { X86::K1, 119U },
2635  { X86::K2, 120U },
2636  { X86::K3, 121U },
2637  { X86::K4, 122U },
2638  { X86::K5, 123U },
2639  { X86::K6, 124U },
2640  { X86::K7, 125U },
2641  { X86::MM0, 41U },
2642  { X86::MM1, 42U },
2643  { X86::MM2, 43U },
2644  { X86::MM3, 44U },
2645  { X86::MM4, 45U },
2646  { X86::MM5, 46U },
2647  { X86::MM6, 47U },
2648  { X86::MM7, 48U },
2649  { X86::R8, 8U },
2650  { X86::R9, 9U },
2651  { X86::R10, 10U },
2652  { X86::R11, 11U },
2653  { X86::R12, 12U },
2654  { X86::R13, 13U },
2655  { X86::R14, 14U },
2656  { X86::R15, 15U },
2657  { X86::ST0, 33U },
2658  { X86::ST1, 34U },
2659  { X86::ST2, 35U },
2660  { X86::ST3, 36U },
2661  { X86::ST4, 37U },
2662  { X86::ST5, 38U },
2663  { X86::ST6, 39U },
2664  { X86::ST7, 40U },
2665  { X86::XMM0, 17U },
2666  { X86::XMM1, 18U },
2667  { X86::XMM2, 19U },
2668  { X86::XMM3, 20U },
2669  { X86::XMM4, 21U },
2670  { X86::XMM5, 22U },
2671  { X86::XMM6, 23U },
2672  { X86::XMM7, 24U },
2673  { X86::XMM8, 25U },
2674  { X86::XMM9, 26U },
2675  { X86::XMM10, 27U },
2676  { X86::XMM11, 28U },
2677  { X86::XMM12, 29U },
2678  { X86::XMM13, 30U },
2679  { X86::XMM14, 31U },
2680  { X86::XMM15, 32U },
2681  { X86::XMM16, 67U },
2682  { X86::XMM17, 68U },
2683  { X86::XMM18, 69U },
2684  { X86::XMM19, 70U },
2685  { X86::XMM20, 71U },
2686  { X86::XMM21, 72U },
2687  { X86::XMM22, 73U },
2688  { X86::XMM23, 74U },
2689  { X86::XMM24, 75U },
2690  { X86::XMM25, 76U },
2691  { X86::XMM26, 77U },
2692  { X86::XMM27, 78U },
2693  { X86::XMM28, 79U },
2694  { X86::XMM29, 80U },
2695  { X86::XMM30, 81U },
2696  { X86::XMM31, 82U },
2697  { X86::YMM0, 17U },
2698  { X86::YMM1, 18U },
2699  { X86::YMM2, 19U },
2700  { X86::YMM3, 20U },
2701  { X86::YMM4, 21U },
2702  { X86::YMM5, 22U },
2703  { X86::YMM6, 23U },
2704  { X86::YMM7, 24U },
2705  { X86::YMM8, 25U },
2706  { X86::YMM9, 26U },
2707  { X86::YMM10, 27U },
2708  { X86::YMM11, 28U },
2709  { X86::YMM12, 29U },
2710  { X86::YMM13, 30U },
2711  { X86::YMM14, 31U },
2712  { X86::YMM15, 32U },
2713  { X86::YMM16, 67U },
2714  { X86::YMM17, 68U },
2715  { X86::YMM18, 69U },
2716  { X86::YMM19, 70U },
2717  { X86::YMM20, 71U },
2718  { X86::YMM21, 72U },
2719  { X86::YMM22, 73U },
2720  { X86::YMM23, 74U },
2721  { X86::YMM24, 75U },
2722  { X86::YMM25, 76U },
2723  { X86::YMM26, 77U },
2724  { X86::YMM27, 78U },
2725  { X86::YMM28, 79U },
2726  { X86::YMM29, 80U },
2727  { X86::YMM30, 81U },
2728  { X86::YMM31, 82U },
2729  { X86::ZMM0, 17U },
2730  { X86::ZMM1, 18U },
2731  { X86::ZMM2, 19U },
2732  { X86::ZMM3, 20U },
2733  { X86::ZMM4, 21U },
2734  { X86::ZMM5, 22U },
2735  { X86::ZMM6, 23U },
2736  { X86::ZMM7, 24U },
2737  { X86::ZMM8, 25U },
2738  { X86::ZMM9, 26U },
2739  { X86::ZMM10, 27U },
2740  { X86::ZMM11, 28U },
2741  { X86::ZMM12, 29U },
2742  { X86::ZMM13, 30U },
2743  { X86::ZMM14, 31U },
2744  { X86::ZMM15, 32U },
2745  { X86::ZMM16, 67U },
2746  { X86::ZMM17, 68U },
2747  { X86::ZMM18, 69U },
2748  { X86::ZMM19, 70U },
2749  { X86::ZMM20, 71U },
2750  { X86::ZMM21, 72U },
2751  { X86::ZMM22, 73U },
2752  { X86::ZMM23, 74U },
2753  { X86::ZMM24, 75U },
2754  { X86::ZMM25, 76U },
2755  { X86::ZMM26, 77U },
2756  { X86::ZMM27, 78U },
2757  { X86::ZMM28, 79U },
2758  { X86::ZMM29, 80U },
2759  { X86::ZMM30, 81U },
2760  { X86::ZMM31, 82U },
2761};
2762extern const unsigned X86DwarfFlavour0L2DwarfSize = array_lengthof(X86DwarfFlavour0L2Dwarf);
2763
2764extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour1L2Dwarf[] = {
2765  { X86::EAX, 0U },
2766  { X86::EBP, 4U },
2767  { X86::EBX, 3U },
2768  { X86::ECX, 1U },
2769  { X86::EDI, 7U },
2770  { X86::EDX, 2U },
2771  { X86::EIP, 8U },
2772  { X86::ESI, 6U },
2773  { X86::ESP, 5U },
2774  { X86::RAX, -2U },
2775  { X86::RBP, -2U },
2776  { X86::RBX, -2U },
2777  { X86::RCX, -2U },
2778  { X86::RDI, -2U },
2779  { X86::RDX, -2U },
2780  { X86::RIP, -2U },
2781  { X86::RSI, -2U },
2782  { X86::RSP, -2U },
2783  { X86::K0, 93U },
2784  { X86::K1, 94U },
2785  { X86::K2, 95U },
2786  { X86::K3, 96U },
2787  { X86::K4, 97U },
2788  { X86::K5, 98U },
2789  { X86::K6, 99U },
2790  { X86::K7, 100U },
2791  { X86::MM0, 29U },
2792  { X86::MM1, 30U },
2793  { X86::MM2, 31U },
2794  { X86::MM3, 32U },
2795  { X86::MM4, 33U },
2796  { X86::MM5, 34U },
2797  { X86::MM6, 35U },
2798  { X86::MM7, 36U },
2799  { X86::R8, -2U },
2800  { X86::R9, -2U },
2801  { X86::R10, -2U },
2802  { X86::R11, -2U },
2803  { X86::R12, -2U },
2804  { X86::R13, -2U },
2805  { X86::R14, -2U },
2806  { X86::R15, -2U },
2807  { X86::ST0, 12U },
2808  { X86::ST1, 13U },
2809  { X86::ST2, 14U },
2810  { X86::ST3, 15U },
2811  { X86::ST4, 16U },
2812  { X86::ST5, 17U },
2813  { X86::ST6, 18U },
2814  { X86::ST7, 19U },
2815  { X86::XMM0, 21U },
2816  { X86::XMM1, 22U },
2817  { X86::XMM2, 23U },
2818  { X86::XMM3, 24U },
2819  { X86::XMM4, 25U },
2820  { X86::XMM5, 26U },
2821  { X86::XMM6, 27U },
2822  { X86::XMM7, 28U },
2823  { X86::XMM8, -2U },
2824  { X86::XMM9, -2U },
2825  { X86::XMM10, -2U },
2826  { X86::XMM11, -2U },
2827  { X86::XMM12, -2U },
2828  { X86::XMM13, -2U },
2829  { X86::XMM14, -2U },
2830  { X86::XMM15, -2U },
2831  { X86::XMM16, -2U },
2832  { X86::XMM17, -2U },
2833  { X86::XMM18, -2U },
2834  { X86::XMM19, -2U },
2835  { X86::XMM20, -2U },
2836  { X86::XMM21, -2U },
2837  { X86::XMM22, -2U },
2838  { X86::XMM23, -2U },
2839  { X86::XMM24, -2U },
2840  { X86::XMM25, -2U },
2841  { X86::XMM26, -2U },
2842  { X86::XMM27, -2U },
2843  { X86::XMM28, -2U },
2844  { X86::XMM29, -2U },
2845  { X86::XMM30, -2U },
2846  { X86::XMM31, -2U },
2847  { X86::YMM0, 21U },
2848  { X86::YMM1, 22U },
2849  { X86::YMM2, 23U },
2850  { X86::YMM3, 24U },
2851  { X86::YMM4, 25U },
2852  { X86::YMM5, 26U },
2853  { X86::YMM6, 27U },
2854  { X86::YMM7, 28U },
2855  { X86::YMM8, -2U },
2856  { X86::YMM9, -2U },
2857  { X86::YMM10, -2U },
2858  { X86::YMM11, -2U },
2859  { X86::YMM12, -2U },
2860  { X86::YMM13, -2U },
2861  { X86::YMM14, -2U },
2862  { X86::YMM15, -2U },
2863  { X86::YMM16, -2U },
2864  { X86::YMM17, -2U },
2865  { X86::YMM18, -2U },
2866  { X86::YMM19, -2U },
2867  { X86::YMM20, -2U },
2868  { X86::YMM21, -2U },
2869  { X86::YMM22, -2U },
2870  { X86::YMM23, -2U },
2871  { X86::YMM24, -2U },
2872  { X86::YMM25, -2U },
2873  { X86::YMM26, -2U },
2874  { X86::YMM27, -2U },
2875  { X86::YMM28, -2U },
2876  { X86::YMM29, -2U },
2877  { X86::YMM30, -2U },
2878  { X86::YMM31, -2U },
2879  { X86::ZMM0, 21U },
2880  { X86::ZMM1, 22U },
2881  { X86::ZMM2, 23U },
2882  { X86::ZMM3, 24U },
2883  { X86::ZMM4, 25U },
2884  { X86::ZMM5, 26U },
2885  { X86::ZMM6, 27U },
2886  { X86::ZMM7, 28U },
2887  { X86::ZMM8, -2U },
2888  { X86::ZMM9, -2U },
2889  { X86::ZMM10, -2U },
2890  { X86::ZMM11, -2U },
2891  { X86::ZMM12, -2U },
2892  { X86::ZMM13, -2U },
2893  { X86::ZMM14, -2U },
2894  { X86::ZMM15, -2U },
2895  { X86::ZMM16, -2U },
2896  { X86::ZMM17, -2U },
2897  { X86::ZMM18, -2U },
2898  { X86::ZMM19, -2U },
2899  { X86::ZMM20, -2U },
2900  { X86::ZMM21, -2U },
2901  { X86::ZMM22, -2U },
2902  { X86::ZMM23, -2U },
2903  { X86::ZMM24, -2U },
2904  { X86::ZMM25, -2U },
2905  { X86::ZMM26, -2U },
2906  { X86::ZMM27, -2U },
2907  { X86::ZMM28, -2U },
2908  { X86::ZMM29, -2U },
2909  { X86::ZMM30, -2U },
2910  { X86::ZMM31, -2U },
2911};
2912extern const unsigned X86DwarfFlavour1L2DwarfSize = array_lengthof(X86DwarfFlavour1L2Dwarf);
2913
2914extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour2L2Dwarf[] = {
2915  { X86::EAX, 0U },
2916  { X86::EBP, 5U },
2917  { X86::EBX, 3U },
2918  { X86::ECX, 1U },
2919  { X86::EDI, 7U },
2920  { X86::EDX, 2U },
2921  { X86::EIP, 8U },
2922  { X86::ESI, 6U },
2923  { X86::ESP, 4U },
2924  { X86::RAX, -2U },
2925  { X86::RBP, -2U },
2926  { X86::RBX, -2U },
2927  { X86::RCX, -2U },
2928  { X86::RDI, -2U },
2929  { X86::RDX, -2U },
2930  { X86::RIP, -2U },
2931  { X86::RSI, -2U },
2932  { X86::RSP, -2U },
2933  { X86::K0, 93U },
2934  { X86::K1, 94U },
2935  { X86::K2, 95U },
2936  { X86::K3, 96U },
2937  { X86::K4, 97U },
2938  { X86::K5, 98U },
2939  { X86::K6, 99U },
2940  { X86::K7, 100U },
2941  { X86::MM0, 29U },
2942  { X86::MM1, 30U },
2943  { X86::MM2, 31U },
2944  { X86::MM3, 32U },
2945  { X86::MM4, 33U },
2946  { X86::MM5, 34U },
2947  { X86::MM6, 35U },
2948  { X86::MM7, 36U },
2949  { X86::R8, -2U },
2950  { X86::R9, -2U },
2951  { X86::R10, -2U },
2952  { X86::R11, -2U },
2953  { X86::R12, -2U },
2954  { X86::R13, -2U },
2955  { X86::R14, -2U },
2956  { X86::R15, -2U },
2957  { X86::ST0, 11U },
2958  { X86::ST1, 12U },
2959  { X86::ST2, 13U },
2960  { X86::ST3, 14U },
2961  { X86::ST4, 15U },
2962  { X86::ST5, 16U },
2963  { X86::ST6, 17U },
2964  { X86::ST7, 18U },
2965  { X86::XMM0, 21U },
2966  { X86::XMM1, 22U },
2967  { X86::XMM2, 23U },
2968  { X86::XMM3, 24U },
2969  { X86::XMM4, 25U },
2970  { X86::XMM5, 26U },
2971  { X86::XMM6, 27U },
2972  { X86::XMM7, 28U },
2973  { X86::XMM8, -2U },
2974  { X86::XMM9, -2U },
2975  { X86::XMM10, -2U },
2976  { X86::XMM11, -2U },
2977  { X86::XMM12, -2U },
2978  { X86::XMM13, -2U },
2979  { X86::XMM14, -2U },
2980  { X86::XMM15, -2U },
2981  { X86::XMM16, -2U },
2982  { X86::XMM17, -2U },
2983  { X86::XMM18, -2U },
2984  { X86::XMM19, -2U },
2985  { X86::XMM20, -2U },
2986  { X86::XMM21, -2U },
2987  { X86::XMM22, -2U },
2988  { X86::XMM23, -2U },
2989  { X86::XMM24, -2U },
2990  { X86::XMM25, -2U },
2991  { X86::XMM26, -2U },
2992  { X86::XMM27, -2U },
2993  { X86::XMM28, -2U },
2994  { X86::XMM29, -2U },
2995  { X86::XMM30, -2U },
2996  { X86::XMM31, -2U },
2997  { X86::YMM0, 21U },
2998  { X86::YMM1, 22U },
2999  { X86::YMM2, 23U },
3000  { X86::YMM3, 24U },
3001  { X86::YMM4, 25U },
3002  { X86::YMM5, 26U },
3003  { X86::YMM6, 27U },
3004  { X86::YMM7, 28U },
3005  { X86::YMM8, -2U },
3006  { X86::YMM9, -2U },
3007  { X86::YMM10, -2U },
3008  { X86::YMM11, -2U },
3009  { X86::YMM12, -2U },
3010  { X86::YMM13, -2U },
3011  { X86::YMM14, -2U },
3012  { X86::YMM15, -2U },
3013  { X86::YMM16, -2U },
3014  { X86::YMM17, -2U },
3015  { X86::YMM18, -2U },
3016  { X86::YMM19, -2U },
3017  { X86::YMM20, -2U },
3018  { X86::YMM21, -2U },
3019  { X86::YMM22, -2U },
3020  { X86::YMM23, -2U },
3021  { X86::YMM24, -2U },
3022  { X86::YMM25, -2U },
3023  { X86::YMM26, -2U },
3024  { X86::YMM27, -2U },
3025  { X86::YMM28, -2U },
3026  { X86::YMM29, -2U },
3027  { X86::YMM30, -2U },
3028  { X86::YMM31, -2U },
3029  { X86::ZMM0, 21U },
3030  { X86::ZMM1, 22U },
3031  { X86::ZMM2, 23U },
3032  { X86::ZMM3, 24U },
3033  { X86::ZMM4, 25U },
3034  { X86::ZMM5, 26U },
3035  { X86::ZMM6, 27U },
3036  { X86::ZMM7, 28U },
3037  { X86::ZMM8, -2U },
3038  { X86::ZMM9, -2U },
3039  { X86::ZMM10, -2U },
3040  { X86::ZMM11, -2U },
3041  { X86::ZMM12, -2U },
3042  { X86::ZMM13, -2U },
3043  { X86::ZMM14, -2U },
3044  { X86::ZMM15, -2U },
3045  { X86::ZMM16, -2U },
3046  { X86::ZMM17, -2U },
3047  { X86::ZMM18, -2U },
3048  { X86::ZMM19, -2U },
3049  { X86::ZMM20, -2U },
3050  { X86::ZMM21, -2U },
3051  { X86::ZMM22, -2U },
3052  { X86::ZMM23, -2U },
3053  { X86::ZMM24, -2U },
3054  { X86::ZMM25, -2U },
3055  { X86::ZMM26, -2U },
3056  { X86::ZMM27, -2U },
3057  { X86::ZMM28, -2U },
3058  { X86::ZMM29, -2U },
3059  { X86::ZMM30, -2U },
3060  { X86::ZMM31, -2U },
3061};
3062extern const unsigned X86DwarfFlavour2L2DwarfSize = array_lengthof(X86DwarfFlavour2L2Dwarf);
3063
3064extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour0L2Dwarf[] = {
3065  { X86::EAX, -2U },
3066  { X86::EBP, -2U },
3067  { X86::EBX, -2U },
3068  { X86::ECX, -2U },
3069  { X86::EDI, -2U },
3070  { X86::EDX, -2U },
3071  { X86::EIP, -2U },
3072  { X86::ESI, -2U },
3073  { X86::ESP, -2U },
3074  { X86::RAX, 0U },
3075  { X86::RBP, 6U },
3076  { X86::RBX, 3U },
3077  { X86::RCX, 2U },
3078  { X86::RDI, 5U },
3079  { X86::RDX, 1U },
3080  { X86::RIP, 16U },
3081  { X86::RSI, 4U },
3082  { X86::RSP, 7U },
3083  { X86::K0, 118U },
3084  { X86::K1, 119U },
3085  { X86::K2, 120U },
3086  { X86::K3, 121U },
3087  { X86::K4, 122U },
3088  { X86::K5, 123U },
3089  { X86::K6, 124U },
3090  { X86::K7, 125U },
3091  { X86::MM0, 41U },
3092  { X86::MM1, 42U },
3093  { X86::MM2, 43U },
3094  { X86::MM3, 44U },
3095  { X86::MM4, 45U },
3096  { X86::MM5, 46U },
3097  { X86::MM6, 47U },
3098  { X86::MM7, 48U },
3099  { X86::R8, 8U },
3100  { X86::R9, 9U },
3101  { X86::R10, 10U },
3102  { X86::R11, 11U },
3103  { X86::R12, 12U },
3104  { X86::R13, 13U },
3105  { X86::R14, 14U },
3106  { X86::R15, 15U },
3107  { X86::ST0, 33U },
3108  { X86::ST1, 34U },
3109  { X86::ST2, 35U },
3110  { X86::ST3, 36U },
3111  { X86::ST4, 37U },
3112  { X86::ST5, 38U },
3113  { X86::ST6, 39U },
3114  { X86::ST7, 40U },
3115  { X86::XMM0, 17U },
3116  { X86::XMM1, 18U },
3117  { X86::XMM2, 19U },
3118  { X86::XMM3, 20U },
3119  { X86::XMM4, 21U },
3120  { X86::XMM5, 22U },
3121  { X86::XMM6, 23U },
3122  { X86::XMM7, 24U },
3123  { X86::XMM8, 25U },
3124  { X86::XMM9, 26U },
3125  { X86::XMM10, 27U },
3126  { X86::XMM11, 28U },
3127  { X86::XMM12, 29U },
3128  { X86::XMM13, 30U },
3129  { X86::XMM14, 31U },
3130  { X86::XMM15, 32U },
3131  { X86::XMM16, 67U },
3132  { X86::XMM17, 68U },
3133  { X86::XMM18, 69U },
3134  { X86::XMM19, 70U },
3135  { X86::XMM20, 71U },
3136  { X86::XMM21, 72U },
3137  { X86::XMM22, 73U },
3138  { X86::XMM23, 74U },
3139  { X86::XMM24, 75U },
3140  { X86::XMM25, 76U },
3141  { X86::XMM26, 77U },
3142  { X86::XMM27, 78U },
3143  { X86::XMM28, 79U },
3144  { X86::XMM29, 80U },
3145  { X86::XMM30, 81U },
3146  { X86::XMM31, 82U },
3147  { X86::YMM0, 17U },
3148  { X86::YMM1, 18U },
3149  { X86::YMM2, 19U },
3150  { X86::YMM3, 20U },
3151  { X86::YMM4, 21U },
3152  { X86::YMM5, 22U },
3153  { X86::YMM6, 23U },
3154  { X86::YMM7, 24U },
3155  { X86::YMM8, 25U },
3156  { X86::YMM9, 26U },
3157  { X86::YMM10, 27U },
3158  { X86::YMM11, 28U },
3159  { X86::YMM12, 29U },
3160  { X86::YMM13, 30U },
3161  { X86::YMM14, 31U },
3162  { X86::YMM15, 32U },
3163  { X86::YMM16, 67U },
3164  { X86::YMM17, 68U },
3165  { X86::YMM18, 69U },
3166  { X86::YMM19, 70U },
3167  { X86::YMM20, 71U },
3168  { X86::YMM21, 72U },
3169  { X86::YMM22, 73U },
3170  { X86::YMM23, 74U },
3171  { X86::YMM24, 75U },
3172  { X86::YMM25, 76U },
3173  { X86::YMM26, 77U },
3174  { X86::YMM27, 78U },
3175  { X86::YMM28, 79U },
3176  { X86::YMM29, 80U },
3177  { X86::YMM30, 81U },
3178  { X86::YMM31, 82U },
3179  { X86::ZMM0, 17U },
3180  { X86::ZMM1, 18U },
3181  { X86::ZMM2, 19U },
3182  { X86::ZMM3, 20U },
3183  { X86::ZMM4, 21U },
3184  { X86::ZMM5, 22U },
3185  { X86::ZMM6, 23U },
3186  { X86::ZMM7, 24U },
3187  { X86::ZMM8, 25U },
3188  { X86::ZMM9, 26U },
3189  { X86::ZMM10, 27U },
3190  { X86::ZMM11, 28U },
3191  { X86::ZMM12, 29U },
3192  { X86::ZMM13, 30U },
3193  { X86::ZMM14, 31U },
3194  { X86::ZMM15, 32U },
3195  { X86::ZMM16, 67U },
3196  { X86::ZMM17, 68U },
3197  { X86::ZMM18, 69U },
3198  { X86::ZMM19, 70U },
3199  { X86::ZMM20, 71U },
3200  { X86::ZMM21, 72U },
3201  { X86::ZMM22, 73U },
3202  { X86::ZMM23, 74U },
3203  { X86::ZMM24, 75U },
3204  { X86::ZMM25, 76U },
3205  { X86::ZMM26, 77U },
3206  { X86::ZMM27, 78U },
3207  { X86::ZMM28, 79U },
3208  { X86::ZMM29, 80U },
3209  { X86::ZMM30, 81U },
3210  { X86::ZMM31, 82U },
3211};
3212extern const unsigned X86EHFlavour0L2DwarfSize = array_lengthof(X86EHFlavour0L2Dwarf);
3213
3214extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour1L2Dwarf[] = {
3215  { X86::EAX, 0U },
3216  { X86::EBP, 4U },
3217  { X86::EBX, 3U },
3218  { X86::ECX, 1U },
3219  { X86::EDI, 7U },
3220  { X86::EDX, 2U },
3221  { X86::EIP, 8U },
3222  { X86::ESI, 6U },
3223  { X86::ESP, 5U },
3224  { X86::RAX, -2U },
3225  { X86::RBP, -2U },
3226  { X86::RBX, -2U },
3227  { X86::RCX, -2U },
3228  { X86::RDI, -2U },
3229  { X86::RDX, -2U },
3230  { X86::RIP, -2U },
3231  { X86::RSI, -2U },
3232  { X86::RSP, -2U },
3233  { X86::K0, 93U },
3234  { X86::K1, 94U },
3235  { X86::K2, 95U },
3236  { X86::K3, 96U },
3237  { X86::K4, 97U },
3238  { X86::K5, 98U },
3239  { X86::K6, 99U },
3240  { X86::K7, 100U },
3241  { X86::MM0, 29U },
3242  { X86::MM1, 30U },
3243  { X86::MM2, 31U },
3244  { X86::MM3, 32U },
3245  { X86::MM4, 33U },
3246  { X86::MM5, 34U },
3247  { X86::MM6, 35U },
3248  { X86::MM7, 36U },
3249  { X86::R8, -2U },
3250  { X86::R9, -2U },
3251  { X86::R10, -2U },
3252  { X86::R11, -2U },
3253  { X86::R12, -2U },
3254  { X86::R13, -2U },
3255  { X86::R14, -2U },
3256  { X86::R15, -2U },
3257  { X86::ST0, 12U },
3258  { X86::ST1, 13U },
3259  { X86::ST2, 14U },
3260  { X86::ST3, 15U },
3261  { X86::ST4, 16U },
3262  { X86::ST5, 17U },
3263  { X86::ST6, 18U },
3264  { X86::ST7, 19U },
3265  { X86::XMM0, 21U },
3266  { X86::XMM1, 22U },
3267  { X86::XMM2, 23U },
3268  { X86::XMM3, 24U },
3269  { X86::XMM4, 25U },
3270  { X86::XMM5, 26U },
3271  { X86::XMM6, 27U },
3272  { X86::XMM7, 28U },
3273  { X86::XMM8, -2U },
3274  { X86::XMM9, -2U },
3275  { X86::XMM10, -2U },
3276  { X86::XMM11, -2U },
3277  { X86::XMM12, -2U },
3278  { X86::XMM13, -2U },
3279  { X86::XMM14, -2U },
3280  { X86::XMM15, -2U },
3281  { X86::XMM16, -2U },
3282  { X86::XMM17, -2U },
3283  { X86::XMM18, -2U },
3284  { X86::XMM19, -2U },
3285  { X86::XMM20, -2U },
3286  { X86::XMM21, -2U },
3287  { X86::XMM22, -2U },
3288  { X86::XMM23, -2U },
3289  { X86::XMM24, -2U },
3290  { X86::XMM25, -2U },
3291  { X86::XMM26, -2U },
3292  { X86::XMM27, -2U },
3293  { X86::XMM28, -2U },
3294  { X86::XMM29, -2U },
3295  { X86::XMM30, -2U },
3296  { X86::XMM31, -2U },
3297  { X86::YMM0, 21U },
3298  { X86::YMM1, 22U },
3299  { X86::YMM2, 23U },
3300  { X86::YMM3, 24U },
3301  { X86::YMM4, 25U },
3302  { X86::YMM5, 26U },
3303  { X86::YMM6, 27U },
3304  { X86::YMM7, 28U },
3305  { X86::YMM8, -2U },
3306  { X86::YMM9, -2U },
3307  { X86::YMM10, -2U },
3308  { X86::YMM11, -2U },
3309  { X86::YMM12, -2U },
3310  { X86::YMM13, -2U },
3311  { X86::YMM14, -2U },
3312  { X86::YMM15, -2U },
3313  { X86::YMM16, -2U },
3314  { X86::YMM17, -2U },
3315  { X86::YMM18, -2U },
3316  { X86::YMM19, -2U },
3317  { X86::YMM20, -2U },
3318  { X86::YMM21, -2U },
3319  { X86::YMM22, -2U },
3320  { X86::YMM23, -2U },
3321  { X86::YMM24, -2U },
3322  { X86::YMM25, -2U },
3323  { X86::YMM26, -2U },
3324  { X86::YMM27, -2U },
3325  { X86::YMM28, -2U },
3326  { X86::YMM29, -2U },
3327  { X86::YMM30, -2U },
3328  { X86::YMM31, -2U },
3329  { X86::ZMM0, 21U },
3330  { X86::ZMM1, 22U },
3331  { X86::ZMM2, 23U },
3332  { X86::ZMM3, 24U },
3333  { X86::ZMM4, 25U },
3334  { X86::ZMM5, 26U },
3335  { X86::ZMM6, 27U },
3336  { X86::ZMM7, 28U },
3337  { X86::ZMM8, -2U },
3338  { X86::ZMM9, -2U },
3339  { X86::ZMM10, -2U },
3340  { X86::ZMM11, -2U },
3341  { X86::ZMM12, -2U },
3342  { X86::ZMM13, -2U },
3343  { X86::ZMM14, -2U },
3344  { X86::ZMM15, -2U },
3345  { X86::ZMM16, -2U },
3346  { X86::ZMM17, -2U },
3347  { X86::ZMM18, -2U },
3348  { X86::ZMM19, -2U },
3349  { X86::ZMM20, -2U },
3350  { X86::ZMM21, -2U },
3351  { X86::ZMM22, -2U },
3352  { X86::ZMM23, -2U },
3353  { X86::ZMM24, -2U },
3354  { X86::ZMM25, -2U },
3355  { X86::ZMM26, -2U },
3356  { X86::ZMM27, -2U },
3357  { X86::ZMM28, -2U },
3358  { X86::ZMM29, -2U },
3359  { X86::ZMM30, -2U },
3360  { X86::ZMM31, -2U },
3361};
3362extern const unsigned X86EHFlavour1L2DwarfSize = array_lengthof(X86EHFlavour1L2Dwarf);
3363
3364extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour2L2Dwarf[] = {
3365  { X86::EAX, 0U },
3366  { X86::EBP, 5U },
3367  { X86::EBX, 3U },
3368  { X86::ECX, 1U },
3369  { X86::EDI, 7U },
3370  { X86::EDX, 2U },
3371  { X86::EIP, 8U },
3372  { X86::ESI, 6U },
3373  { X86::ESP, 4U },
3374  { X86::RAX, -2U },
3375  { X86::RBP, -2U },
3376  { X86::RBX, -2U },
3377  { X86::RCX, -2U },
3378  { X86::RDI, -2U },
3379  { X86::RDX, -2U },
3380  { X86::RIP, -2U },
3381  { X86::RSI, -2U },
3382  { X86::RSP, -2U },
3383  { X86::K0, 93U },
3384  { X86::K1, 94U },
3385  { X86::K2, 95U },
3386  { X86::K3, 96U },
3387  { X86::K4, 97U },
3388  { X86::K5, 98U },
3389  { X86::K6, 99U },
3390  { X86::K7, 100U },
3391  { X86::MM0, 29U },
3392  { X86::MM1, 30U },
3393  { X86::MM2, 31U },
3394  { X86::MM3, 32U },
3395  { X86::MM4, 33U },
3396  { X86::MM5, 34U },
3397  { X86::MM6, 35U },
3398  { X86::MM7, 36U },
3399  { X86::R8, -2U },
3400  { X86::R9, -2U },
3401  { X86::R10, -2U },
3402  { X86::R11, -2U },
3403  { X86::R12, -2U },
3404  { X86::R13, -2U },
3405  { X86::R14, -2U },
3406  { X86::R15, -2U },
3407  { X86::ST0, 11U },
3408  { X86::ST1, 12U },
3409  { X86::ST2, 13U },
3410  { X86::ST3, 14U },
3411  { X86::ST4, 15U },
3412  { X86::ST5, 16U },
3413  { X86::ST6, 17U },
3414  { X86::ST7, 18U },
3415  { X86::XMM0, 21U },
3416  { X86::XMM1, 22U },
3417  { X86::XMM2, 23U },
3418  { X86::XMM3, 24U },
3419  { X86::XMM4, 25U },
3420  { X86::XMM5, 26U },
3421  { X86::XMM6, 27U },
3422  { X86::XMM7, 28U },
3423  { X86::XMM8, -2U },
3424  { X86::XMM9, -2U },
3425  { X86::XMM10, -2U },
3426  { X86::XMM11, -2U },
3427  { X86::XMM12, -2U },
3428  { X86::XMM13, -2U },
3429  { X86::XMM14, -2U },
3430  { X86::XMM15, -2U },
3431  { X86::XMM16, -2U },
3432  { X86::XMM17, -2U },
3433  { X86::XMM18, -2U },
3434  { X86::XMM19, -2U },
3435  { X86::XMM20, -2U },
3436  { X86::XMM21, -2U },
3437  { X86::XMM22, -2U },
3438  { X86::XMM23, -2U },
3439  { X86::XMM24, -2U },
3440  { X86::XMM25, -2U },
3441  { X86::XMM26, -2U },
3442  { X86::XMM27, -2U },
3443  { X86::XMM28, -2U },
3444  { X86::XMM29, -2U },
3445  { X86::XMM30, -2U },
3446  { X86::XMM31, -2U },
3447  { X86::YMM0, 21U },
3448  { X86::YMM1, 22U },
3449  { X86::YMM2, 23U },
3450  { X86::YMM3, 24U },
3451  { X86::YMM4, 25U },
3452  { X86::YMM5, 26U },
3453  { X86::YMM6, 27U },
3454  { X86::YMM7, 28U },
3455  { X86::YMM8, -2U },
3456  { X86::YMM9, -2U },
3457  { X86::YMM10, -2U },
3458  { X86::YMM11, -2U },
3459  { X86::YMM12, -2U },
3460  { X86::YMM13, -2U },
3461  { X86::YMM14, -2U },
3462  { X86::YMM15, -2U },
3463  { X86::YMM16, -2U },
3464  { X86::YMM17, -2U },
3465  { X86::YMM18, -2U },
3466  { X86::YMM19, -2U },
3467  { X86::YMM20, -2U },
3468  { X86::YMM21, -2U },
3469  { X86::YMM22, -2U },
3470  { X86::YMM23, -2U },
3471  { X86::YMM24, -2U },
3472  { X86::YMM25, -2U },
3473  { X86::YMM26, -2U },
3474  { X86::YMM27, -2U },
3475  { X86::YMM28, -2U },
3476  { X86::YMM29, -2U },
3477  { X86::YMM30, -2U },
3478  { X86::YMM31, -2U },
3479  { X86::ZMM0, 21U },
3480  { X86::ZMM1, 22U },
3481  { X86::ZMM2, 23U },
3482  { X86::ZMM3, 24U },
3483  { X86::ZMM4, 25U },
3484  { X86::ZMM5, 26U },
3485  { X86::ZMM6, 27U },
3486  { X86::ZMM7, 28U },
3487  { X86::ZMM8, -2U },
3488  { X86::ZMM9, -2U },
3489  { X86::ZMM10, -2U },
3490  { X86::ZMM11, -2U },
3491  { X86::ZMM12, -2U },
3492  { X86::ZMM13, -2U },
3493  { X86::ZMM14, -2U },
3494  { X86::ZMM15, -2U },
3495  { X86::ZMM16, -2U },
3496  { X86::ZMM17, -2U },
3497  { X86::ZMM18, -2U },
3498  { X86::ZMM19, -2U },
3499  { X86::ZMM20, -2U },
3500  { X86::ZMM21, -2U },
3501  { X86::ZMM22, -2U },
3502  { X86::ZMM23, -2U },
3503  { X86::ZMM24, -2U },
3504  { X86::ZMM25, -2U },
3505  { X86::ZMM26, -2U },
3506  { X86::ZMM27, -2U },
3507  { X86::ZMM28, -2U },
3508  { X86::ZMM29, -2U },
3509  { X86::ZMM30, -2U },
3510  { X86::ZMM31, -2U },
3511};
3512extern const unsigned X86EHFlavour2L2DwarfSize = array_lengthof(X86EHFlavour2L2Dwarf);
3513
3514extern const uint16_t X86RegEncodingTable[] = {
3515  0,
3516  4,
3517  0,
3518  0,
3519  7,
3520  3,
3521  5,
3522  65535,
3523  5,
3524  3,
3525  5,
3526  1,
3527  1,
3528  1,
3529  0,
3530  6,
3531  7,
3532  65535,
3533  7,
3534  2,
3535  3,
3536  2,
3537  0,
3538  5,
3539  3,
3540  1,
3541  7,
3542  2,
3543  0,
3544  0,
3545  4,
3546  0,
3547  6,
3548  4,
3549  0,
3550  4,
3551  5,
3552  65535,
3553  65535,
3554  65535,
3555  65535,
3556  65535,
3557  65535,
3558  65535,
3559  65535,
3560  65535,
3561  0,
3562  0,
3563  5,
3564  3,
3565  1,
3566  7,
3567  2,
3568  0,
3569  4,
3570  6,
3571  4,
3572  6,
3573  65535,
3574  6,
3575  4,
3576  65535,
3577  4,
3578  2,
3579  0,
3580  0,
3581  1,
3582  2,
3583  3,
3584  0,
3585  1,
3586  2,
3587  3,
3588  4,
3589  5,
3590  6,
3591  7,
3592  8,
3593  9,
3594  10,
3595  11,
3596  12,
3597  13,
3598  14,
3599  15,
3600  0,
3601  1,
3602  2,
3603  3,
3604  4,
3605  5,
3606  6,
3607  7,
3608  8,
3609  9,
3610  10,
3611  11,
3612  12,
3613  13,
3614  14,
3615  15,
3616  0,
3617  0,
3618  0,
3619  0,
3620  0,
3621  0,
3622  0,
3623  0,
3624  0,
3625  1,
3626  2,
3627  3,
3628  4,
3629  5,
3630  6,
3631  7,
3632  0,
3633  1,
3634  2,
3635  3,
3636  4,
3637  5,
3638  6,
3639  7,
3640  8,
3641  9,
3642  10,
3643  11,
3644  12,
3645  13,
3646  14,
3647  15,
3648  0,
3649  1,
3650  2,
3651  3,
3652  4,
3653  5,
3654  6,
3655  7,
3656  0,
3657  1,
3658  2,
3659  3,
3660  4,
3661  5,
3662  6,
3663  7,
3664  8,
3665  9,
3666  10,
3667  11,
3668  12,
3669  13,
3670  14,
3671  15,
3672  16,
3673  17,
3674  18,
3675  19,
3676  20,
3677  21,
3678  22,
3679  23,
3680  24,
3681  25,
3682  26,
3683  27,
3684  28,
3685  29,
3686  30,
3687  31,
3688  0,
3689  1,
3690  2,
3691  3,
3692  4,
3693  5,
3694  6,
3695  7,
3696  8,
3697  9,
3698  10,
3699  11,
3700  12,
3701  13,
3702  14,
3703  15,
3704  16,
3705  17,
3706  18,
3707  19,
3708  20,
3709  21,
3710  22,
3711  23,
3712  24,
3713  25,
3714  26,
3715  27,
3716  28,
3717  29,
3718  30,
3719  31,
3720  0,
3721  1,
3722  2,
3723  3,
3724  4,
3725  5,
3726  6,
3727  7,
3728  8,
3729  9,
3730  10,
3731  11,
3732  12,
3733  13,
3734  14,
3735  15,
3736  16,
3737  17,
3738  18,
3739  19,
3740  20,
3741  21,
3742  22,
3743  23,
3744  24,
3745  25,
3746  26,
3747  27,
3748  28,
3749  29,
3750  30,
3751  31,
3752  8,
3753  9,
3754  10,
3755  11,
3756  12,
3757  13,
3758  14,
3759  15,
3760  65535,
3761  65535,
3762  65535,
3763  65535,
3764  65535,
3765  65535,
3766  65535,
3767  65535,
3768  8,
3769  9,
3770  10,
3771  11,
3772  12,
3773  13,
3774  14,
3775  15,
3776  8,
3777  9,
3778  10,
3779  11,
3780  12,
3781  13,
3782  14,
3783  15,
3784  65535,
3785  65535,
3786  65535,
3787  65535,
3788  65535,
3789  65535,
3790  65535,
3791  65535,
3792};
3793static inline void InitX86MCRegisterInfo(MCRegisterInfo *RI, unsigned RA, unsigned DwarfFlavour = 0, unsigned EHFlavour = 0, unsigned PC = 0) {
3794  RI->InitMCRegisterInfo(X86RegDesc, 277, RA, PC, X86MCRegisterClasses, 86, X86RegUnitRoots, 162, X86RegDiffLists, X86LaneMaskLists, X86RegStrings, X86RegClassStrings, X86SubRegIdxLists, 9,
3795X86SubRegIdxRanges, X86RegEncodingTable);
3796
3797  switch (DwarfFlavour) {
3798  default:
3799    llvm_unreachable("Unknown DWARF flavour");
3800  case 0:
3801    RI->mapDwarfRegsToLLVMRegs(X86DwarfFlavour0Dwarf2L, X86DwarfFlavour0Dwarf2LSize, false);
3802    break;
3803  case 1:
3804    RI->mapDwarfRegsToLLVMRegs(X86DwarfFlavour1Dwarf2L, X86DwarfFlavour1Dwarf2LSize, false);
3805    break;
3806  case 2:
3807    RI->mapDwarfRegsToLLVMRegs(X86DwarfFlavour2Dwarf2L, X86DwarfFlavour2Dwarf2LSize, false);
3808    break;
3809  }
3810  switch (EHFlavour) {
3811  default:
3812    llvm_unreachable("Unknown DWARF flavour");
3813  case 0:
3814    RI->mapDwarfRegsToLLVMRegs(X86EHFlavour0Dwarf2L, X86EHFlavour0Dwarf2LSize, true);
3815    break;
3816  case 1:
3817    RI->mapDwarfRegsToLLVMRegs(X86EHFlavour1Dwarf2L, X86EHFlavour1Dwarf2LSize, true);
3818    break;
3819  case 2:
3820    RI->mapDwarfRegsToLLVMRegs(X86EHFlavour2Dwarf2L, X86EHFlavour2Dwarf2LSize, true);
3821    break;
3822  }
3823  switch (DwarfFlavour) {
3824  default:
3825    llvm_unreachable("Unknown DWARF flavour");
3826  case 0:
3827    RI->mapLLVMRegsToDwarfRegs(X86DwarfFlavour0L2Dwarf, X86DwarfFlavour0L2DwarfSize, false);
3828    break;
3829  case 1:
3830    RI->mapLLVMRegsToDwarfRegs(X86DwarfFlavour1L2Dwarf, X86DwarfFlavour1L2DwarfSize, false);
3831    break;
3832  case 2:
3833    RI->mapLLVMRegsToDwarfRegs(X86DwarfFlavour2L2Dwarf, X86DwarfFlavour2L2DwarfSize, false);
3834    break;
3835  }
3836  switch (EHFlavour) {
3837  default:
3838    llvm_unreachable("Unknown DWARF flavour");
3839  case 0:
3840    RI->mapLLVMRegsToDwarfRegs(X86EHFlavour0L2Dwarf, X86EHFlavour0L2DwarfSize, true);
3841    break;
3842  case 1:
3843    RI->mapLLVMRegsToDwarfRegs(X86EHFlavour1L2Dwarf, X86EHFlavour1L2DwarfSize, true);
3844    break;
3845  case 2:
3846    RI->mapLLVMRegsToDwarfRegs(X86EHFlavour2L2Dwarf, X86EHFlavour2L2DwarfSize, true);
3847    break;
3848  }
3849}
3850
3851} // end namespace llvm
3852
3853#endif // GET_REGINFO_MC_DESC
3854
3855/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
3856|*                                                                            *|
3857|* Register Information Header Fragment                                       *|
3858|*                                                                            *|
3859|* Automatically generated file, do not edit!                                 *|
3860|*                                                                            *|
3861\*===----------------------------------------------------------------------===*/
3862
3863
3864#ifdef GET_REGINFO_HEADER
3865#undef GET_REGINFO_HEADER
3866
3867#include "llvm/CodeGen/TargetRegisterInfo.h"
3868
3869namespace llvm {
3870
3871class X86FrameLowering;
3872
3873struct X86GenRegisterInfo : public TargetRegisterInfo {
3874  explicit X86GenRegisterInfo(unsigned RA, unsigned D = 0, unsigned E = 0,
3875      unsigned PC = 0, unsigned HwMode = 0);
3876  unsigned composeSubRegIndicesImpl(unsigned, unsigned) const override;
3877  LaneBitmask composeSubRegIndexLaneMaskImpl(unsigned, LaneBitmask) const override;
3878  LaneBitmask reverseComposeSubRegIndexLaneMaskImpl(unsigned, LaneBitmask) const override;
3879  const TargetRegisterClass *getSubClassWithSubReg(const TargetRegisterClass*, unsigned) const override;
3880  const RegClassWeight &getRegClassWeight(const TargetRegisterClass *RC) const override;
3881  unsigned getRegUnitWeight(unsigned RegUnit) const override;
3882  unsigned getNumRegPressureSets() const override;
3883  const char *getRegPressureSetName(unsigned Idx) const override;
3884  unsigned getRegPressureSetLimit(const MachineFunction &MF, unsigned Idx) const override;
3885  const int *getRegClassPressureSets(const TargetRegisterClass *RC) const override;
3886  const int *getRegUnitPressureSets(unsigned RegUnit) const override;
3887  ArrayRef<const char *> getRegMaskNames() const override;
3888  ArrayRef<const uint32_t *> getRegMasks() const override;
3889  /// Devirtualized TargetFrameLowering.
3890  static const X86FrameLowering *getFrameLowering(
3891      const MachineFunction &MF);
3892};
3893
3894namespace X86 { // Register classes
3895  extern const TargetRegisterClass GR8RegClass;
3896  extern const TargetRegisterClass GRH8RegClass;
3897  extern const TargetRegisterClass GR8_NOREXRegClass;
3898  extern const TargetRegisterClass GR8_ABCD_HRegClass;
3899  extern const TargetRegisterClass GR8_ABCD_LRegClass;
3900  extern const TargetRegisterClass GRH16RegClass;
3901  extern const TargetRegisterClass GR16RegClass;
3902  extern const TargetRegisterClass GR16_NOREXRegClass;
3903  extern const TargetRegisterClass VK1RegClass;
3904  extern const TargetRegisterClass VK16RegClass;
3905  extern const TargetRegisterClass VK2RegClass;
3906  extern const TargetRegisterClass VK4RegClass;
3907  extern const TargetRegisterClass VK8RegClass;
3908  extern const TargetRegisterClass VK16WMRegClass;
3909  extern const TargetRegisterClass VK1WMRegClass;
3910  extern const TargetRegisterClass VK2WMRegClass;
3911  extern const TargetRegisterClass VK4WMRegClass;
3912  extern const TargetRegisterClass VK8WMRegClass;
3913  extern const TargetRegisterClass SEGMENT_REGRegClass;
3914  extern const TargetRegisterClass GR16_ABCDRegClass;
3915  extern const TargetRegisterClass FPCCRRegClass;
3916  extern const TargetRegisterClass FR32XRegClass;
3917  extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBPRegClass;
3918  extern const TargetRegisterClass LOW32_ADDR_ACCESSRegClass;
3919  extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass;
3920  extern const TargetRegisterClass DEBUG_REGRegClass;
3921  extern const TargetRegisterClass FR32RegClass;
3922  extern const TargetRegisterClass GR32RegClass;
3923  extern const TargetRegisterClass GR32_NOSPRegClass;
3924  extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass;
3925  extern const TargetRegisterClass GR32_NOREXRegClass;
3926  extern const TargetRegisterClass VK32RegClass;
3927  extern const TargetRegisterClass GR32_NOREX_NOSPRegClass;
3928  extern const TargetRegisterClass RFP32RegClass;
3929  extern const TargetRegisterClass VK32WMRegClass;
3930  extern const TargetRegisterClass GR32_ABCDRegClass;
3931  extern const TargetRegisterClass GR32_TCRegClass;
3932  extern const TargetRegisterClass GR32_ADRegClass;
3933  extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass;
3934  extern const TargetRegisterClass CCRRegClass;
3935  extern const TargetRegisterClass DFCCRRegClass;
3936  extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitRegClass;
3937  extern const TargetRegisterClass LOW32_ADDR_ACCESS_with_sub_32bitRegClass;
3938  extern const TargetRegisterClass RFP64RegClass;
3939  extern const TargetRegisterClass FR64XRegClass;
3940  extern const TargetRegisterClass GR64RegClass;
3941  extern const TargetRegisterClass CONTROL_REGRegClass;
3942  extern const TargetRegisterClass FR64RegClass;
3943  extern const TargetRegisterClass GR64_with_sub_8bitRegClass;
3944  extern const TargetRegisterClass GR64_NOSPRegClass;
3945  extern const TargetRegisterClass GR64_NOREXRegClass;
3946  extern const TargetRegisterClass GR64_TCRegClass;
3947  extern const TargetRegisterClass GR64_NOSP_and_GR64_TCRegClass;
3948  extern const TargetRegisterClass GR64_TCW64RegClass;
3949  extern const TargetRegisterClass GR64_with_sub_16bit_in_GR16_NOREXRegClass;
3950  extern const TargetRegisterClass VK64RegClass;
3951  extern const TargetRegisterClass VR64RegClass;
3952  extern const TargetRegisterClass GR64_NOREX_NOSPRegClass;
3953  extern const TargetRegisterClass GR64_NOSP_and_GR64_TCW64RegClass;
3954  extern const TargetRegisterClass GR64_TC_and_GR64_TCW64RegClass;
3955  extern const TargetRegisterClass VK64WMRegClass;
3956  extern const TargetRegisterClass GR64_NOREX_and_GR64_TCRegClass;
3957  extern const TargetRegisterClass GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClass;
3958  extern const TargetRegisterClass GR64_NOREX_NOSP_and_GR64_TCRegClass;
3959  extern const TargetRegisterClass GR64_ABCDRegClass;
3960  extern const TargetRegisterClass GR64_NOREX_and_GR64_TCW64RegClass;
3961  extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_TCRegClass;
3962  extern const TargetRegisterClass GR64_ADRegClass;
3963  extern const TargetRegisterClass GR64_and_LOW32_ADDR_ACCESS_RBPRegClass;
3964  extern const TargetRegisterClass GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBPRegClass;
3965  extern const TargetRegisterClass GR64_and_LOW32_ADDR_ACCESSRegClass;
3966  extern const TargetRegisterClass RSTRegClass;
3967  extern const TargetRegisterClass RFP80RegClass;
3968  extern const TargetRegisterClass VR128XRegClass;
3969  extern const TargetRegisterClass VR128RegClass;
3970  extern const TargetRegisterClass VR128HRegClass;
3971  extern const TargetRegisterClass VR128LRegClass;
3972  extern const TargetRegisterClass BNDRRegClass;
3973  extern const TargetRegisterClass VR256XRegClass;
3974  extern const TargetRegisterClass VR256RegClass;
3975  extern const TargetRegisterClass VR256HRegClass;
3976  extern const TargetRegisterClass VR256LRegClass;
3977  extern const TargetRegisterClass VR512RegClass;
3978  extern const TargetRegisterClass VR512_with_sub_xmm_in_FR32RegClass;
3979  extern const TargetRegisterClass VR512_with_sub_xmm_in_VR128HRegClass;
3980  extern const TargetRegisterClass VR512_with_sub_xmm_in_VR128LRegClass;
3981} // end namespace X86
3982
3983} // end namespace llvm
3984
3985#endif // GET_REGINFO_HEADER
3986
3987/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
3988|*                                                                            *|
3989|* Target Register and Register Classes Information                           *|
3990|*                                                                            *|
3991|* Automatically generated file, do not edit!                                 *|
3992|*                                                                            *|
3993\*===----------------------------------------------------------------------===*/
3994
3995
3996#ifdef GET_REGINFO_TARGET_DESC
3997#undef GET_REGINFO_TARGET_DESC
3998
3999namespace llvm {
4000
4001extern const MCRegisterClass X86MCRegisterClasses[];
4002
4003static const MVT::SimpleValueType VTLists[] = {
4004  /* 0 */ MVT::i8, MVT::Other,
4005  /* 2 */ MVT::i16, MVT::Other,
4006  /* 4 */ MVT::i32, MVT::Other,
4007  /* 6 */ MVT::i64, MVT::Other,
4008  /* 8 */ MVT::f80, MVT::f64, MVT::f32, MVT::Other,
4009  /* 12 */ MVT::f64, MVT::Other,
4010  /* 14 */ MVT::f80, MVT::Other,
4011  /* 16 */ MVT::v4f32, MVT::v2f64, MVT::v16i8, MVT::v8i16, MVT::v4i32, MVT::v2i64, MVT::f128, MVT::Other,
4012  /* 24 */ MVT::v1i1, MVT::Other,
4013  /* 26 */ MVT::v2i1, MVT::Other,
4014  /* 28 */ MVT::v4i1, MVT::Other,
4015  /* 30 */ MVT::v8i1, MVT::Other,
4016  /* 32 */ MVT::v16i1, MVT::Other,
4017  /* 34 */ MVT::v32i1, MVT::Other,
4018  /* 36 */ MVT::v64i1, MVT::Other,
4019  /* 38 */ MVT::v2i64, MVT::Other,
4020  /* 40 */ MVT::v8f32, MVT::v4f64, MVT::v32i8, MVT::v16i16, MVT::v8i32, MVT::v4i64, MVT::Other,
4021  /* 47 */ MVT::v16f32, MVT::v8f64, MVT::v64i8, MVT::v32i16, MVT::v16i32, MVT::v8i64, MVT::Other,
4022  /* 54 */ MVT::x86mmx, MVT::Other,
4023};
4024
4025static const char *const SubRegIndexNameTable[] = { "sub_8bit", "sub_8bit_hi", "sub_8bit_hi_phony", "sub_16bit", "sub_16bit_hi", "sub_32bit", "sub_xmm", "sub_ymm", "" };
4026
4027
4028static const LaneBitmask SubRegIndexLaneMaskTable[] = {
4029  LaneBitmask::getAll(),
4030  LaneBitmask(0x00000001), // sub_8bit
4031  LaneBitmask(0x00000002), // sub_8bit_hi
4032  LaneBitmask(0x00000004), // sub_8bit_hi_phony
4033  LaneBitmask(0x00000007), // sub_16bit
4034  LaneBitmask(0x00000008), // sub_16bit_hi
4035  LaneBitmask(0x0000000F), // sub_32bit
4036  LaneBitmask(0x00000010), // sub_xmm
4037  LaneBitmask(0x00000010), // sub_ymm
4038 };
4039
4040
4041
4042static const TargetRegisterInfo::RegClassInfo RegClassInfos[] = {
4043  // Mode = 0 (Default)
4044  { 8, 8, 8, VTLists+0 },    // GR8
4045  { 8, 8, 8, VTLists+0 },    // GRH8
4046  { 8, 8, 8, VTLists+0 },    // GR8_NOREX
4047  { 8, 8, 8, VTLists+0 },    // GR8_ABCD_H
4048  { 8, 8, 8, VTLists+0 },    // GR8_ABCD_L
4049  { 16, 16, 16, VTLists+2 },    // GRH16
4050  { 16, 16, 16, VTLists+2 },    // GR16
4051  { 16, 16, 16, VTLists+2 },    // GR16_NOREX
4052  { 16, 16, 16, VTLists+24 },    // VK1
4053  { 16, 16, 16, VTLists+32 },    // VK16
4054  { 16, 16, 16, VTLists+26 },    // VK2
4055  { 16, 16, 16, VTLists+28 },    // VK4
4056  { 16, 16, 16, VTLists+30 },    // VK8
4057  { 16, 16, 16, VTLists+32 },    // VK16WM
4058  { 16, 16, 16, VTLists+24 },    // VK1WM
4059  { 16, 16, 16, VTLists+26 },    // VK2WM
4060  { 16, 16, 16, VTLists+28 },    // VK4WM
4061  { 16, 16, 16, VTLists+30 },    // VK8WM
4062  { 16, 16, 16, VTLists+2 },    // SEGMENT_REG
4063  { 16, 16, 16, VTLists+2 },    // GR16_ABCD
4064  { 16, 16, 16, VTLists+2 },    // FPCCR
4065  { 32, 32, 32, VTLists+10 },    // FR32X
4066  { 32, 32, 32, VTLists+4 },    // LOW32_ADDR_ACCESS_RBP
4067  { 32, 32, 32, VTLists+4 },    // LOW32_ADDR_ACCESS
4068  { 32, 32, 32, VTLists+4 },    // LOW32_ADDR_ACCESS_RBP_with_sub_8bit
4069  { 32, 32, 32, VTLists+4 },    // DEBUG_REG
4070  { 32, 32, 32, VTLists+10 },    // FR32
4071  { 32, 32, 32, VTLists+4 },    // GR32
4072  { 32, 32, 32, VTLists+4 },    // GR32_NOSP
4073  { 32, 32, 32, VTLists+4 },    // LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX
4074  { 32, 32, 32, VTLists+4 },    // GR32_NOREX
4075  { 32, 32, 32, VTLists+34 },    // VK32
4076  { 32, 32, 32, VTLists+4 },    // GR32_NOREX_NOSP
4077  { 32, 32, 32, VTLists+10 },    // RFP32
4078  { 32, 32, 32, VTLists+34 },    // VK32WM
4079  { 32, 32, 32, VTLists+4 },    // GR32_ABCD
4080  { 32, 32, 32, VTLists+4 },    // GR32_TC
4081  { 32, 32, 32, VTLists+4 },    // GR32_AD
4082  { 32, 32, 32, VTLists+4 },    // LOW32_ADDR_ACCESS_RBP_with_sub_32bit
4083  { 32, 32, 32, VTLists+4 },    // CCR
4084  { 32, 32, 32, VTLists+4 },    // DFCCR
4085  { 32, 32, 32, VTLists+4 },    // LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
4086  { 32, 32, 32, VTLists+4 },    // LOW32_ADDR_ACCESS_with_sub_32bit
4087  { 64, 64, 32, VTLists+12 },    // RFP64
4088  { 64, 64, 64, VTLists+12 },    // FR64X
4089  { 64, 64, 64, VTLists+6 },    // GR64
4090  { 64, 64, 64, VTLists+6 },    // CONTROL_REG
4091  { 64, 64, 64, VTLists+12 },    // FR64
4092  { 64, 64, 64, VTLists+6 },    // GR64_with_sub_8bit
4093  { 64, 64, 64, VTLists+6 },    // GR64_NOSP
4094  { 64, 64, 64, VTLists+6 },    // GR64_NOREX
4095  { 64, 64, 64, VTLists+6 },    // GR64_TC
4096  { 64, 64, 64, VTLists+6 },    // GR64_NOSP_and_GR64_TC
4097  { 64, 64, 64, VTLists+6 },    // GR64_TCW64
4098  { 64, 64, 64, VTLists+6 },    // GR64_with_sub_16bit_in_GR16_NOREX
4099  { 64, 64, 64, VTLists+36 },    // VK64
4100  { 64, 64, 64, VTLists+54 },    // VR64
4101  { 64, 64, 64, VTLists+6 },    // GR64_NOREX_NOSP
4102  { 64, 64, 64, VTLists+6 },    // GR64_NOSP_and_GR64_TCW64
4103  { 64, 64, 64, VTLists+6 },    // GR64_TC_and_GR64_TCW64
4104  { 64, 64, 64, VTLists+36 },    // VK64WM
4105  { 64, 64, 64, VTLists+6 },    // GR64_NOREX_and_GR64_TC
4106  { 64, 64, 64, VTLists+6 },    // GR64_TC_and_GR64_NOSP_and_GR64_TCW64
4107  { 64, 64, 64, VTLists+6 },    // GR64_NOREX_NOSP_and_GR64_TC
4108  { 64, 64, 64, VTLists+6 },    // GR64_ABCD
4109  { 64, 64, 64, VTLists+6 },    // GR64_NOREX_and_GR64_TCW64
4110  { 64, 64, 64, VTLists+6 },    // GR64_with_sub_32bit_in_GR32_TC
4111  { 64, 64, 64, VTLists+6 },    // GR64_AD
4112  { 64, 64, 64, VTLists+6 },    // GR64_and_LOW32_ADDR_ACCESS_RBP
4113  { 64, 64, 64, VTLists+6 },    // GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBP
4114  { 64, 64, 64, VTLists+6 },    // GR64_and_LOW32_ADDR_ACCESS
4115  { 80, 80, 32, VTLists+8 },    // RST
4116  { 80, 80, 32, VTLists+14 },    // RFP80
4117  { 128, 128, 128, VTLists+16 },    // VR128X
4118  { 128, 128, 128, VTLists+16 },    // VR128
4119  { 128, 128, 128, VTLists+16 },    // VR128H
4120  { 128, 128, 128, VTLists+16 },    // VR128L
4121  { 128, 128, 128, VTLists+38 },    // BNDR
4122  { 256, 256, 256, VTLists+40 },    // VR256X
4123  { 256, 256, 256, VTLists+40 },    // VR256
4124  { 256, 256, 256, VTLists+40 },    // VR256H
4125  { 256, 256, 256, VTLists+40 },    // VR256L
4126  { 512, 512, 512, VTLists+47 },    // VR512
4127  { 512, 512, 512, VTLists+47 },    // VR512_with_sub_xmm_in_FR32
4128  { 512, 512, 512, VTLists+47 },    // VR512_with_sub_xmm_in_VR128H
4129  { 512, 512, 512, VTLists+47 },    // VR512_with_sub_xmm_in_VR128L
4130};
4131
4132static const TargetRegisterClass *const NullRegClasses[] = { nullptr };
4133
4134static const uint32_t GR8SubClassMask[] = {
4135  0x0000001d, 0x00000000, 0x00000000,
4136  0x790800c0, 0xc6530239, 0x0000002d, // sub_8bit
4137  0x00080000, 0x00000038, 0x0000000d, // sub_8bit_hi
4138};
4139
4140static const uint32_t GRH8SubClassMask[] = {
4141  0x00000002, 0x00000000, 0x00000000,
4142};
4143
4144static const uint32_t GR8_NOREXSubClassMask[] = {
4145  0x0000001c, 0x00000000, 0x00000000,
4146  0x00080000, 0x00000038, 0x0000000d, // sub_8bit
4147  0x00080000, 0x00000038, 0x0000000d, // sub_8bit_hi
4148};
4149
4150static const uint32_t GR8_ABCD_HSubClassMask[] = {
4151  0x00000008, 0x00000000, 0x00000000,
4152  0x00080000, 0x00000038, 0x0000000d, // sub_8bit_hi
4153};
4154
4155static const uint32_t GR8_ABCD_LSubClassMask[] = {
4156  0x00000010, 0x00000000, 0x00000000,
4157  0x00080000, 0x00000038, 0x0000000d, // sub_8bit
4158};
4159
4160static const uint32_t GRH16SubClassMask[] = {
4161  0x00000020, 0x00000000, 0x00000000,
4162};
4163
4164static const uint32_t GR16SubClassMask[] = {
4165  0x000800c0, 0x00000000, 0x00000000,
4166  0x79000000, 0xc6530239, 0x0000002d, // sub_16bit
4167};
4168
4169static const uint32_t GR16_NOREXSubClassMask[] = {
4170  0x00080080, 0x00000000, 0x00000000,
4171  0x60000000, 0x82400239, 0x0000002d, // sub_16bit
4172};
4173
4174static const uint32_t VK1SubClassMask[] = {
4175  0x8003ff00, 0x10800004, 0x00000000,
4176};
4177
4178static const uint32_t VK16SubClassMask[] = {
4179  0x8003ff00, 0x10800004, 0x00000000,
4180};
4181
4182static const uint32_t VK2SubClassMask[] = {
4183  0x8003ff00, 0x10800004, 0x00000000,
4184};
4185
4186static const uint32_t VK4SubClassMask[] = {
4187  0x8003ff00, 0x10800004, 0x00000000,
4188};
4189
4190static const uint32_t VK8SubClassMask[] = {
4191  0x8003ff00, 0x10800004, 0x00000000,
4192};
4193
4194static const uint32_t VK16WMSubClassMask[] = {
4195  0x0003e000, 0x10000004, 0x00000000,
4196};
4197
4198static const uint32_t VK1WMSubClassMask[] = {
4199  0x0003e000, 0x10000004, 0x00000000,
4200};
4201
4202static const uint32_t VK2WMSubClassMask[] = {
4203  0x0003e000, 0x10000004, 0x00000000,
4204};
4205
4206static const uint32_t VK4WMSubClassMask[] = {
4207  0x0003e000, 0x10000004, 0x00000000,
4208};
4209
4210static const uint32_t VK8WMSubClassMask[] = {
4211  0x0003e000, 0x10000004, 0x00000000,
4212};
4213
4214static const uint32_t SEGMENT_REGSubClassMask[] = {
4215  0x00040000, 0x00000000, 0x00000000,
4216};
4217
4218static const uint32_t GR16_ABCDSubClassMask[] = {
4219  0x00080000, 0x00000000, 0x00000000,
4220  0x00000000, 0x00000038, 0x0000000d, // sub_16bit
4221};
4222
4223static const uint32_t FPCCRSubClassMask[] = {
4224  0x00100000, 0x00000000, 0x00000000,
4225};
4226
4227static const uint32_t FR32XSubClassMask[] = {
4228  0x04200000, 0x00009000, 0x00001e00,
4229  0x00000000, 0x00000000, 0x003fc000, // sub_xmm
4230};
4231
4232static const uint32_t LOW32_ADDR_ACCESS_RBPSubClassMask[] = {
4233  0x79c00000, 0x00000679, 0x00000070,
4234  0x00000000, 0xc6530200, 0x0000002d, // sub_32bit
4235};
4236
4237static const uint32_t LOW32_ADDR_ACCESSSubClassMask[] = {
4238  0x58800000, 0x00000439, 0x00000040,
4239  0x00000000, 0xc6530200, 0x0000002d, // sub_32bit
4240};
4241
4242static const uint32_t LOW32_ADDR_ACCESS_RBP_with_sub_8bitSubClassMask[] = {
4243  0x79000000, 0x00000239, 0x00000020,
4244  0x00000000, 0xc6530200, 0x0000002d, // sub_32bit
4245};
4246
4247static const uint32_t DEBUG_REGSubClassMask[] = {
4248  0x02000000, 0x00000000, 0x00000000,
4249};
4250
4251static const uint32_t FR32SubClassMask[] = {
4252  0x04000000, 0x00008000, 0x00001c00,
4253  0x00000000, 0x00000000, 0x003b8000, // sub_xmm
4254};
4255
4256static const uint32_t GR32SubClassMask[] = {
4257  0x58000000, 0x00000039, 0x00000000,
4258  0x00000000, 0xc6530200, 0x0000002d, // sub_32bit
4259};
4260
4261static const uint32_t GR32_NOSPSubClassMask[] = {
4262  0x10000000, 0x00000039, 0x00000000,
4263  0x00000000, 0xc6120200, 0x0000002d, // sub_32bit
4264};
4265
4266static const uint32_t LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXSubClassMask[] = {
4267  0x60000000, 0x00000239, 0x00000020,
4268  0x00000000, 0x82400200, 0x0000002d, // sub_32bit
4269};
4270
4271static const uint32_t GR32_NOREXSubClassMask[] = {
4272  0x40000000, 0x00000039, 0x00000000,
4273  0x00000000, 0x82400200, 0x0000002d, // sub_32bit
4274};
4275
4276static const uint32_t VK32SubClassMask[] = {
4277  0x80000000, 0x10800004, 0x00000000,
4278};
4279
4280static const uint32_t GR32_NOREX_NOSPSubClassMask[] = {
4281  0x00000000, 0x00000039, 0x00000000,
4282  0x00000000, 0x82000200, 0x0000002d, // sub_32bit
4283};
4284
4285static const uint32_t RFP32SubClassMask[] = {
4286  0x00000000, 0x00000802, 0x00000100,
4287};
4288
4289static const uint32_t VK32WMSubClassMask[] = {
4290  0x00000000, 0x10000004, 0x00000000,
4291};
4292
4293static const uint32_t GR32_ABCDSubClassMask[] = {
4294  0x00000000, 0x00000038, 0x00000000,
4295  0x00000000, 0x00000000, 0x0000000d, // sub_32bit
4296};
4297
4298static const uint32_t GR32_TCSubClassMask[] = {
4299  0x00000000, 0x00000030, 0x00000000,
4300  0x00000000, 0x00000000, 0x0000000c, // sub_32bit
4301};
4302
4303static const uint32_t GR32_ADSubClassMask[] = {
4304  0x00000000, 0x00000020, 0x00000000,
4305  0x00000000, 0x00000000, 0x00000008, // sub_32bit
4306};
4307
4308static const uint32_t LOW32_ADDR_ACCESS_RBP_with_sub_32bitSubClassMask[] = {
4309  0x00000000, 0x00000640, 0x00000070,
4310};
4311
4312static const uint32_t CCRSubClassMask[] = {
4313  0x00000000, 0x00000080, 0x00000000,
4314};
4315
4316static const uint32_t DFCCRSubClassMask[] = {
4317  0x00000000, 0x00000100, 0x00000000,
4318};
4319
4320static const uint32_t LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitSubClassMask[] = {
4321  0x00000000, 0x00000200, 0x00000020,
4322};
4323
4324static const uint32_t LOW32_ADDR_ACCESS_with_sub_32bitSubClassMask[] = {
4325  0x00000000, 0x00000400, 0x00000040,
4326};
4327
4328static const uint32_t RFP64SubClassMask[] = {
4329  0x00000000, 0x00000800, 0x00000100,
4330};
4331
4332static const uint32_t FR64XSubClassMask[] = {
4333  0x00000000, 0x00009000, 0x00001e00,
4334  0x00000000, 0x00000000, 0x003fc000, // sub_xmm
4335};
4336
4337static const uint32_t GR64SubClassMask[] = {
4338  0x00000000, 0xee7f2000, 0x0000007f,
4339};
4340
4341static const uint32_t CONTROL_REGSubClassMask[] = {
4342  0x00000000, 0x00004000, 0x00000000,
4343};
4344
4345static const uint32_t FR64SubClassMask[] = {
4346  0x00000000, 0x00008000, 0x00001c00,
4347  0x00000000, 0x00000000, 0x003b8000, // sub_xmm
4348};
4349
4350static const uint32_t GR64_with_sub_8bitSubClassMask[] = {
4351  0x00000000, 0xc6530000, 0x0000002d,
4352};
4353
4354static const uint32_t GR64_NOSPSubClassMask[] = {
4355  0x00000000, 0xc6120000, 0x0000002d,
4356};
4357
4358static const uint32_t GR64_NOREXSubClassMask[] = {
4359  0x00000000, 0xa2440000, 0x0000007f,
4360};
4361
4362static const uint32_t GR64_TCSubClassMask[] = {
4363  0x00000000, 0xe8180000, 0x0000004e,
4364};
4365
4366static const uint32_t GR64_NOSP_and_GR64_TCSubClassMask[] = {
4367  0x00000000, 0xc0100000, 0x0000000c,
4368};
4369
4370static const uint32_t GR64_TCW64SubClassMask[] = {
4371  0x00000000, 0x4c200000, 0x0000004e,
4372};
4373
4374static const uint32_t GR64_with_sub_16bit_in_GR16_NOREXSubClassMask[] = {
4375  0x00000000, 0x82400000, 0x0000002d,
4376};
4377
4378static const uint32_t VK64SubClassMask[] = {
4379  0x00000000, 0x10800000, 0x00000000,
4380};
4381
4382static const uint32_t VR64SubClassMask[] = {
4383  0x00000000, 0x01000000, 0x00000000,
4384};
4385
4386static const uint32_t GR64_NOREX_NOSPSubClassMask[] = {
4387  0x00000000, 0x82000000, 0x0000002d,
4388};
4389
4390static const uint32_t GR64_NOSP_and_GR64_TCW64SubClassMask[] = {
4391  0x00000000, 0x44000000, 0x0000000c,
4392};
4393
4394static const uint32_t GR64_TC_and_GR64_TCW64SubClassMask[] = {
4395  0x00000000, 0x48000000, 0x0000004e,
4396};
4397
4398static const uint32_t VK64WMSubClassMask[] = {
4399  0x00000000, 0x10000000, 0x00000000,
4400};
4401
4402static const uint32_t GR64_NOREX_and_GR64_TCSubClassMask[] = {
4403  0x00000000, 0xa0000000, 0x0000004e,
4404};
4405
4406static const uint32_t GR64_TC_and_GR64_NOSP_and_GR64_TCW64SubClassMask[] = {
4407  0x00000000, 0x40000000, 0x0000000c,
4408};
4409
4410static const uint32_t GR64_NOREX_NOSP_and_GR64_TCSubClassMask[] = {
4411  0x00000000, 0x80000000, 0x0000000c,
4412};
4413
4414static const uint32_t GR64_ABCDSubClassMask[] = {
4415  0x00000000, 0x00000000, 0x0000000d,
4416};
4417
4418static const uint32_t GR64_NOREX_and_GR64_TCW64SubClassMask[] = {
4419  0x00000000, 0x00000000, 0x0000004e,
4420};
4421
4422static const uint32_t GR64_with_sub_32bit_in_GR32_TCSubClassMask[] = {
4423  0x00000000, 0x00000000, 0x0000000c,
4424};
4425
4426static const uint32_t GR64_ADSubClassMask[] = {
4427  0x00000000, 0x00000000, 0x00000008,
4428};
4429
4430static const uint32_t GR64_and_LOW32_ADDR_ACCESS_RBPSubClassMask[] = {
4431  0x00000000, 0x00000000, 0x00000070,
4432};
4433
4434static const uint32_t GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBPSubClassMask[] = {
4435  0x00000000, 0x00000000, 0x00000020,
4436};
4437
4438static const uint32_t GR64_and_LOW32_ADDR_ACCESSSubClassMask[] = {
4439  0x00000000, 0x00000000, 0x00000040,
4440};
4441
4442static const uint32_t RSTSubClassMask[] = {
4443  0x00000000, 0x00000000, 0x00000080,
4444};
4445
4446static const uint32_t RFP80SubClassMask[] = {
4447  0x00000000, 0x00000000, 0x00000100,
4448};
4449
4450static const uint32_t VR128XSubClassMask[] = {
4451  0x00000000, 0x00000000, 0x00001e00,
4452  0x00000000, 0x00000000, 0x003fc000, // sub_xmm
4453};
4454
4455static const uint32_t VR128SubClassMask[] = {
4456  0x00000000, 0x00000000, 0x00001c00,
4457  0x00000000, 0x00000000, 0x003b8000, // sub_xmm
4458};
4459
4460static const uint32_t VR128HSubClassMask[] = {
4461  0x00000000, 0x00000000, 0x00000800,
4462  0x00000000, 0x00000000, 0x00110000, // sub_xmm
4463};
4464
4465static const uint32_t VR128LSubClassMask[] = {
4466  0x00000000, 0x00000000, 0x00001000,
4467  0x00000000, 0x00000000, 0x00220000, // sub_xmm
4468};
4469
4470static const uint32_t BNDRSubClassMask[] = {
4471  0x00000000, 0x00000000, 0x00002000,
4472};
4473
4474static const uint32_t VR256XSubClassMask[] = {
4475  0x00000000, 0x00000000, 0x0003c000,
4476  0x00000000, 0x00000000, 0x003c0000, // sub_ymm
4477};
4478
4479static const uint32_t VR256SubClassMask[] = {
4480  0x00000000, 0x00000000, 0x00038000,
4481  0x00000000, 0x00000000, 0x00380000, // sub_ymm
4482};
4483
4484static const uint32_t VR256HSubClassMask[] = {
4485  0x00000000, 0x00000000, 0x00010000,
4486  0x00000000, 0x00000000, 0x00100000, // sub_ymm
4487};
4488
4489static const uint32_t VR256LSubClassMask[] = {
4490  0x00000000, 0x00000000, 0x00020000,
4491  0x00000000, 0x00000000, 0x00200000, // sub_ymm
4492};
4493
4494static const uint32_t VR512SubClassMask[] = {
4495  0x00000000, 0x00000000, 0x003c0000,
4496};
4497
4498static const uint32_t VR512_with_sub_xmm_in_FR32SubClassMask[] = {
4499  0x00000000, 0x00000000, 0x00380000,
4500};
4501
4502static const uint32_t VR512_with_sub_xmm_in_VR128HSubClassMask[] = {
4503  0x00000000, 0x00000000, 0x00100000,
4504};
4505
4506static const uint32_t VR512_with_sub_xmm_in_VR128LSubClassMask[] = {
4507  0x00000000, 0x00000000, 0x00200000,
4508};
4509
4510static const uint16_t SuperRegIdxSeqs[] = {
4511  /* 0 */ 1, 0,
4512  /* 2 */ 1, 2, 0,
4513  /* 5 */ 4, 0,
4514  /* 7 */ 6, 0,
4515  /* 9 */ 7, 0,
4516  /* 11 */ 8, 0,
4517};
4518
4519static const TargetRegisterClass *const GR8_NOREXSuperclasses[] = {
4520  &X86::GR8RegClass,
4521  nullptr
4522};
4523
4524static const TargetRegisterClass *const GR8_ABCD_HSuperclasses[] = {
4525  &X86::GR8RegClass,
4526  &X86::GR8_NOREXRegClass,
4527  nullptr
4528};
4529
4530static const TargetRegisterClass *const GR8_ABCD_LSuperclasses[] = {
4531  &X86::GR8RegClass,
4532  &X86::GR8_NOREXRegClass,
4533  nullptr
4534};
4535
4536static const TargetRegisterClass *const GR16_NOREXSuperclasses[] = {
4537  &X86::GR16RegClass,
4538  nullptr
4539};
4540
4541static const TargetRegisterClass *const VK1Superclasses[] = {
4542  &X86::VK16RegClass,
4543  &X86::VK2RegClass,
4544  &X86::VK4RegClass,
4545  &X86::VK8RegClass,
4546  nullptr
4547};
4548
4549static const TargetRegisterClass *const VK16Superclasses[] = {
4550  &X86::VK1RegClass,
4551  &X86::VK2RegClass,
4552  &X86::VK4RegClass,
4553  &X86::VK8RegClass,
4554  nullptr
4555};
4556
4557static const TargetRegisterClass *const VK2Superclasses[] = {
4558  &X86::VK1RegClass,
4559  &X86::VK16RegClass,
4560  &X86::VK4RegClass,
4561  &X86::VK8RegClass,
4562  nullptr
4563};
4564
4565static const TargetRegisterClass *const VK4Superclasses[] = {
4566  &X86::VK1RegClass,
4567  &X86::VK16RegClass,
4568  &X86::VK2RegClass,
4569  &X86::VK8RegClass,
4570  nullptr
4571};
4572
4573static const TargetRegisterClass *const VK8Superclasses[] = {
4574  &X86::VK1RegClass,
4575  &X86::VK16RegClass,
4576  &X86::VK2RegClass,
4577  &X86::VK4RegClass,
4578  nullptr
4579};
4580
4581static const TargetRegisterClass *const VK16WMSuperclasses[] = {
4582  &X86::VK1RegClass,
4583  &X86::VK16RegClass,
4584  &X86::VK2RegClass,
4585  &X86::VK4RegClass,
4586  &X86::VK8RegClass,
4587  &X86::VK1WMRegClass,
4588  &X86::VK2WMRegClass,
4589  &X86::VK4WMRegClass,
4590  &X86::VK8WMRegClass,
4591  nullptr
4592};
4593
4594static const TargetRegisterClass *const VK1WMSuperclasses[] = {
4595  &X86::VK1RegClass,
4596  &X86::VK16RegClass,
4597  &X86::VK2RegClass,
4598  &X86::VK4RegClass,
4599  &X86::VK8RegClass,
4600  &X86::VK16WMRegClass,
4601  &X86::VK2WMRegClass,
4602  &X86::VK4WMRegClass,
4603  &X86::VK8WMRegClass,
4604  nullptr
4605};
4606
4607static const TargetRegisterClass *const VK2WMSuperclasses[] = {
4608  &X86::VK1RegClass,
4609  &X86::VK16RegClass,
4610  &X86::VK2RegClass,
4611  &X86::VK4RegClass,
4612  &X86::VK8RegClass,
4613  &X86::VK16WMRegClass,
4614  &X86::VK1WMRegClass,
4615  &X86::VK4WMRegClass,
4616  &X86::VK8WMRegClass,
4617  nullptr
4618};
4619
4620static const TargetRegisterClass *const VK4WMSuperclasses[] = {
4621  &X86::VK1RegClass,
4622  &X86::VK16RegClass,
4623  &X86::VK2RegClass,
4624  &X86::VK4RegClass,
4625  &X86::VK8RegClass,
4626  &X86::VK16WMRegClass,
4627  &X86::VK1WMRegClass,
4628  &X86::VK2WMRegClass,
4629  &X86::VK8WMRegClass,
4630  nullptr
4631};
4632
4633static const TargetRegisterClass *const VK8WMSuperclasses[] = {
4634  &X86::VK1RegClass,
4635  &X86::VK16RegClass,
4636  &X86::VK2RegClass,
4637  &X86::VK4RegClass,
4638  &X86::VK8RegClass,
4639  &X86::VK16WMRegClass,
4640  &X86::VK1WMRegClass,
4641  &X86::VK2WMRegClass,
4642  &X86::VK4WMRegClass,
4643  nullptr
4644};
4645
4646static const TargetRegisterClass *const GR16_ABCDSuperclasses[] = {
4647  &X86::GR16RegClass,
4648  &X86::GR16_NOREXRegClass,
4649  nullptr
4650};
4651
4652static const TargetRegisterClass *const LOW32_ADDR_ACCESSSuperclasses[] = {
4653  &X86::LOW32_ADDR_ACCESS_RBPRegClass,
4654  nullptr
4655};
4656
4657static const TargetRegisterClass *const LOW32_ADDR_ACCESS_RBP_with_sub_8bitSuperclasses[] = {
4658  &X86::LOW32_ADDR_ACCESS_RBPRegClass,
4659  nullptr
4660};
4661
4662static const TargetRegisterClass *const FR32Superclasses[] = {
4663  &X86::FR32XRegClass,
4664  nullptr
4665};
4666
4667static const TargetRegisterClass *const GR32Superclasses[] = {
4668  &X86::LOW32_ADDR_ACCESS_RBPRegClass,
4669  &X86::LOW32_ADDR_ACCESSRegClass,
4670  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
4671  nullptr
4672};
4673
4674static const TargetRegisterClass *const GR32_NOSPSuperclasses[] = {
4675  &X86::LOW32_ADDR_ACCESS_RBPRegClass,
4676  &X86::LOW32_ADDR_ACCESSRegClass,
4677  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
4678  &X86::GR32RegClass,
4679  nullptr
4680};
4681
4682static const TargetRegisterClass *const LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXSuperclasses[] = {
4683  &X86::LOW32_ADDR_ACCESS_RBPRegClass,
4684  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
4685  nullptr
4686};
4687
4688static const TargetRegisterClass *const GR32_NOREXSuperclasses[] = {
4689  &X86::LOW32_ADDR_ACCESS_RBPRegClass,
4690  &X86::LOW32_ADDR_ACCESSRegClass,
4691  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
4692  &X86::GR32RegClass,
4693  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
4694  nullptr
4695};
4696
4697static const TargetRegisterClass *const VK32Superclasses[] = {
4698  &X86::VK1RegClass,
4699  &X86::VK16RegClass,
4700  &X86::VK2RegClass,
4701  &X86::VK4RegClass,
4702  &X86::VK8RegClass,
4703  nullptr
4704};
4705
4706static const TargetRegisterClass *const GR32_NOREX_NOSPSuperclasses[] = {
4707  &X86::LOW32_ADDR_ACCESS_RBPRegClass,
4708  &X86::LOW32_ADDR_ACCESSRegClass,
4709  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
4710  &X86::GR32RegClass,
4711  &X86::GR32_NOSPRegClass,
4712  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
4713  &X86::GR32_NOREXRegClass,
4714  nullptr
4715};
4716
4717static const TargetRegisterClass *const VK32WMSuperclasses[] = {
4718  &X86::VK1RegClass,
4719  &X86::VK16RegClass,
4720  &X86::VK2RegClass,
4721  &X86::VK4RegClass,
4722  &X86::VK8RegClass,
4723  &X86::VK16WMRegClass,
4724  &X86::VK1WMRegClass,
4725  &X86::VK2WMRegClass,
4726  &X86::VK4WMRegClass,
4727  &X86::VK8WMRegClass,
4728  &X86::VK32RegClass,
4729  nullptr
4730};
4731
4732static const TargetRegisterClass *const GR32_ABCDSuperclasses[] = {
4733  &X86::LOW32_ADDR_ACCESS_RBPRegClass,
4734  &X86::LOW32_ADDR_ACCESSRegClass,
4735  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
4736  &X86::GR32RegClass,
4737  &X86::GR32_NOSPRegClass,
4738  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
4739  &X86::GR32_NOREXRegClass,
4740  &X86::GR32_NOREX_NOSPRegClass,
4741  nullptr
4742};
4743
4744static const TargetRegisterClass *const GR32_TCSuperclasses[] = {
4745  &X86::LOW32_ADDR_ACCESS_RBPRegClass,
4746  &X86::LOW32_ADDR_ACCESSRegClass,
4747  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
4748  &X86::GR32RegClass,
4749  &X86::GR32_NOSPRegClass,
4750  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
4751  &X86::GR32_NOREXRegClass,
4752  &X86::GR32_NOREX_NOSPRegClass,
4753  &X86::GR32_ABCDRegClass,
4754  nullptr
4755};
4756
4757static const TargetRegisterClass *const GR32_ADSuperclasses[] = {
4758  &X86::LOW32_ADDR_ACCESS_RBPRegClass,
4759  &X86::LOW32_ADDR_ACCESSRegClass,
4760  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
4761  &X86::GR32RegClass,
4762  &X86::GR32_NOSPRegClass,
4763  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
4764  &X86::GR32_NOREXRegClass,
4765  &X86::GR32_NOREX_NOSPRegClass,
4766  &X86::GR32_ABCDRegClass,
4767  &X86::GR32_TCRegClass,
4768  nullptr
4769};
4770
4771static const TargetRegisterClass *const LOW32_ADDR_ACCESS_RBP_with_sub_32bitSuperclasses[] = {
4772  &X86::LOW32_ADDR_ACCESS_RBPRegClass,
4773  nullptr
4774};
4775
4776static const TargetRegisterClass *const LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitSuperclasses[] = {
4777  &X86::LOW32_ADDR_ACCESS_RBPRegClass,
4778  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
4779  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
4780  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass,
4781  nullptr
4782};
4783
4784static const TargetRegisterClass *const LOW32_ADDR_ACCESS_with_sub_32bitSuperclasses[] = {
4785  &X86::LOW32_ADDR_ACCESS_RBPRegClass,
4786  &X86::LOW32_ADDR_ACCESSRegClass,
4787  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass,
4788  nullptr
4789};
4790
4791static const TargetRegisterClass *const RFP64Superclasses[] = {
4792  &X86::RFP32RegClass,
4793  nullptr
4794};
4795
4796static const TargetRegisterClass *const FR64XSuperclasses[] = {
4797  &X86::FR32XRegClass,
4798  nullptr
4799};
4800
4801static const TargetRegisterClass *const FR64Superclasses[] = {
4802  &X86::FR32XRegClass,
4803  &X86::FR32RegClass,
4804  &X86::FR64XRegClass,
4805  nullptr
4806};
4807
4808static const TargetRegisterClass *const GR64_with_sub_8bitSuperclasses[] = {
4809  &X86::GR64RegClass,
4810  nullptr
4811};
4812
4813static const TargetRegisterClass *const GR64_NOSPSuperclasses[] = {
4814  &X86::GR64RegClass,
4815  &X86::GR64_with_sub_8bitRegClass,
4816  nullptr
4817};
4818
4819static const TargetRegisterClass *const GR64_NOREXSuperclasses[] = {
4820  &X86::GR64RegClass,
4821  nullptr
4822};
4823
4824static const TargetRegisterClass *const GR64_TCSuperclasses[] = {
4825  &X86::GR64RegClass,
4826  nullptr
4827};
4828
4829static const TargetRegisterClass *const GR64_NOSP_and_GR64_TCSuperclasses[] = {
4830  &X86::GR64RegClass,
4831  &X86::GR64_with_sub_8bitRegClass,
4832  &X86::GR64_NOSPRegClass,
4833  &X86::GR64_TCRegClass,
4834  nullptr
4835};
4836
4837static const TargetRegisterClass *const GR64_TCW64Superclasses[] = {
4838  &X86::GR64RegClass,
4839  nullptr
4840};
4841
4842static const TargetRegisterClass *const GR64_with_sub_16bit_in_GR16_NOREXSuperclasses[] = {
4843  &X86::GR64RegClass,
4844  &X86::GR64_with_sub_8bitRegClass,
4845  &X86::GR64_NOREXRegClass,
4846  nullptr
4847};
4848
4849static const TargetRegisterClass *const VK64Superclasses[] = {
4850  &X86::VK1RegClass,
4851  &X86::VK16RegClass,
4852  &X86::VK2RegClass,
4853  &X86::VK4RegClass,
4854  &X86::VK8RegClass,
4855  &X86::VK32RegClass,
4856  nullptr
4857};
4858
4859static const TargetRegisterClass *const GR64_NOREX_NOSPSuperclasses[] = {
4860  &X86::GR64RegClass,
4861  &X86::GR64_with_sub_8bitRegClass,
4862  &X86::GR64_NOSPRegClass,
4863  &X86::GR64_NOREXRegClass,
4864  &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
4865  nullptr
4866};
4867
4868static const TargetRegisterClass *const GR64_NOSP_and_GR64_TCW64Superclasses[] = {
4869  &X86::GR64RegClass,
4870  &X86::GR64_with_sub_8bitRegClass,
4871  &X86::GR64_NOSPRegClass,
4872  &X86::GR64_TCW64RegClass,
4873  nullptr
4874};
4875
4876static const TargetRegisterClass *const GR64_TC_and_GR64_TCW64Superclasses[] = {
4877  &X86::GR64RegClass,
4878  &X86::GR64_TCRegClass,
4879  &X86::GR64_TCW64RegClass,
4880  nullptr
4881};
4882
4883static const TargetRegisterClass *const VK64WMSuperclasses[] = {
4884  &X86::VK1RegClass,
4885  &X86::VK16RegClass,
4886  &X86::VK2RegClass,
4887  &X86::VK4RegClass,
4888  &X86::VK8RegClass,
4889  &X86::VK16WMRegClass,
4890  &X86::VK1WMRegClass,
4891  &X86::VK2WMRegClass,
4892  &X86::VK4WMRegClass,
4893  &X86::VK8WMRegClass,
4894  &X86::VK32RegClass,
4895  &X86::VK32WMRegClass,
4896  &X86::VK64RegClass,
4897  nullptr
4898};
4899
4900static const TargetRegisterClass *const GR64_NOREX_and_GR64_TCSuperclasses[] = {
4901  &X86::GR64RegClass,
4902  &X86::GR64_NOREXRegClass,
4903  &X86::GR64_TCRegClass,
4904  nullptr
4905};
4906
4907static const TargetRegisterClass *const GR64_TC_and_GR64_NOSP_and_GR64_TCW64Superclasses[] = {
4908  &X86::GR64RegClass,
4909  &X86::GR64_with_sub_8bitRegClass,
4910  &X86::GR64_NOSPRegClass,
4911  &X86::GR64_TCRegClass,
4912  &X86::GR64_NOSP_and_GR64_TCRegClass,
4913  &X86::GR64_TCW64RegClass,
4914  &X86::GR64_NOSP_and_GR64_TCW64RegClass,
4915  &X86::GR64_TC_and_GR64_TCW64RegClass,
4916  nullptr
4917};
4918
4919static const TargetRegisterClass *const GR64_NOREX_NOSP_and_GR64_TCSuperclasses[] = {
4920  &X86::GR64RegClass,
4921  &X86::GR64_with_sub_8bitRegClass,
4922  &X86::GR64_NOSPRegClass,
4923  &X86::GR64_NOREXRegClass,
4924  &X86::GR64_TCRegClass,
4925  &X86::GR64_NOSP_and_GR64_TCRegClass,
4926  &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
4927  &X86::GR64_NOREX_NOSPRegClass,
4928  &X86::GR64_NOREX_and_GR64_TCRegClass,
4929  nullptr
4930};
4931
4932static const TargetRegisterClass *const GR64_ABCDSuperclasses[] = {
4933  &X86::GR64RegClass,
4934  &X86::GR64_with_sub_8bitRegClass,
4935  &X86::GR64_NOSPRegClass,
4936  &X86::GR64_NOREXRegClass,
4937  &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
4938  &X86::GR64_NOREX_NOSPRegClass,
4939  nullptr
4940};
4941
4942static const TargetRegisterClass *const GR64_NOREX_and_GR64_TCW64Superclasses[] = {
4943  &X86::GR64RegClass,
4944  &X86::GR64_NOREXRegClass,
4945  &X86::GR64_TCRegClass,
4946  &X86::GR64_TCW64RegClass,
4947  &X86::GR64_TC_and_GR64_TCW64RegClass,
4948  &X86::GR64_NOREX_and_GR64_TCRegClass,
4949  nullptr
4950};
4951
4952static const TargetRegisterClass *const GR64_with_sub_32bit_in_GR32_TCSuperclasses[] = {
4953  &X86::GR64RegClass,
4954  &X86::GR64_with_sub_8bitRegClass,
4955  &X86::GR64_NOSPRegClass,
4956  &X86::GR64_NOREXRegClass,
4957  &X86::GR64_TCRegClass,
4958  &X86::GR64_NOSP_and_GR64_TCRegClass,
4959  &X86::GR64_TCW64RegClass,
4960  &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
4961  &X86::GR64_NOREX_NOSPRegClass,
4962  &X86::GR64_NOSP_and_GR64_TCW64RegClass,
4963  &X86::GR64_TC_and_GR64_TCW64RegClass,
4964  &X86::GR64_NOREX_and_GR64_TCRegClass,
4965  &X86::GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClass,
4966  &X86::GR64_NOREX_NOSP_and_GR64_TCRegClass,
4967  &X86::GR64_ABCDRegClass,
4968  &X86::GR64_NOREX_and_GR64_TCW64RegClass,
4969  nullptr
4970};
4971
4972static const TargetRegisterClass *const GR64_ADSuperclasses[] = {
4973  &X86::GR64RegClass,
4974  &X86::GR64_with_sub_8bitRegClass,
4975  &X86::GR64_NOSPRegClass,
4976  &X86::GR64_NOREXRegClass,
4977  &X86::GR64_TCRegClass,
4978  &X86::GR64_NOSP_and_GR64_TCRegClass,
4979  &X86::GR64_TCW64RegClass,
4980  &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
4981  &X86::GR64_NOREX_NOSPRegClass,
4982  &X86::GR64_NOSP_and_GR64_TCW64RegClass,
4983  &X86::GR64_TC_and_GR64_TCW64RegClass,
4984  &X86::GR64_NOREX_and_GR64_TCRegClass,
4985  &X86::GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClass,
4986  &X86::GR64_NOREX_NOSP_and_GR64_TCRegClass,
4987  &X86::GR64_ABCDRegClass,
4988  &X86::GR64_NOREX_and_GR64_TCW64RegClass,
4989  &X86::GR64_with_sub_32bit_in_GR32_TCRegClass,
4990  nullptr
4991};
4992
4993static const TargetRegisterClass *const GR64_and_LOW32_ADDR_ACCESS_RBPSuperclasses[] = {
4994  &X86::LOW32_ADDR_ACCESS_RBPRegClass,
4995  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass,
4996  &X86::GR64RegClass,
4997  &X86::GR64_NOREXRegClass,
4998  nullptr
4999};
5000
5001static const TargetRegisterClass *const GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBPSuperclasses[] = {
5002  &X86::LOW32_ADDR_ACCESS_RBPRegClass,
5003  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
5004  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
5005  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass,
5006  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitRegClass,
5007  &X86::GR64RegClass,
5008  &X86::GR64_with_sub_8bitRegClass,
5009  &X86::GR64_NOSPRegClass,
5010  &X86::GR64_NOREXRegClass,
5011  &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
5012  &X86::GR64_NOREX_NOSPRegClass,
5013  &X86::GR64_and_LOW32_ADDR_ACCESS_RBPRegClass,
5014  nullptr
5015};
5016
5017static const TargetRegisterClass *const GR64_and_LOW32_ADDR_ACCESSSuperclasses[] = {
5018  &X86::LOW32_ADDR_ACCESS_RBPRegClass,
5019  &X86::LOW32_ADDR_ACCESSRegClass,
5020  &X86::LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass,
5021  &X86::LOW32_ADDR_ACCESS_with_sub_32bitRegClass,
5022  &X86::GR64RegClass,
5023  &X86::GR64_NOREXRegClass,
5024  &X86::GR64_TCRegClass,
5025  &X86::GR64_TCW64RegClass,
5026  &X86::GR64_TC_and_GR64_TCW64RegClass,
5027  &X86::GR64_NOREX_and_GR64_TCRegClass,
5028  &X86::GR64_NOREX_and_GR64_TCW64RegClass,
5029  &X86::GR64_and_LOW32_ADDR_ACCESS_RBPRegClass,
5030  nullptr
5031};
5032
5033static const TargetRegisterClass *const RFP80Superclasses[] = {
5034  &X86::RFP32RegClass,
5035  &X86::RFP64RegClass,
5036  nullptr
5037};
5038
5039static const TargetRegisterClass *const VR128XSuperclasses[] = {
5040  &X86::FR32XRegClass,
5041  &X86::FR64XRegClass,
5042  nullptr
5043};
5044
5045static const TargetRegisterClass *const VR128Superclasses[] = {
5046  &X86::FR32XRegClass,
5047  &X86::FR32RegClass,
5048  &X86::FR64XRegClass,
5049  &X86::FR64RegClass,
5050  &X86::VR128XRegClass,
5051  nullptr
5052};
5053
5054static const TargetRegisterClass *const VR128HSuperclasses[] = {
5055  &X86::FR32XRegClass,
5056  &X86::FR32RegClass,
5057  &X86::FR64XRegClass,
5058  &X86::FR64RegClass,
5059  &X86::VR128XRegClass,
5060  &X86::VR128RegClass,
5061  nullptr
5062};
5063
5064static const TargetRegisterClass *const VR128LSuperclasses[] = {
5065  &X86::FR32XRegClass,
5066  &X86::FR32RegClass,
5067  &X86::FR64XRegClass,
5068  &X86::FR64RegClass,
5069  &X86::VR128XRegClass,
5070  &X86::VR128RegClass,
5071  nullptr
5072};
5073
5074static const TargetRegisterClass *const VR256Superclasses[] = {
5075  &X86::VR256XRegClass,
5076  nullptr
5077};
5078
5079static const TargetRegisterClass *const VR256HSuperclasses[] = {
5080  &X86::VR256XRegClass,
5081  &X86::VR256RegClass,
5082  nullptr
5083};
5084
5085static const TargetRegisterClass *const VR256LSuperclasses[] = {
5086  &X86::VR256XRegClass,
5087  &X86::VR256RegClass,
5088  nullptr
5089};
5090
5091static const TargetRegisterClass *const VR512_with_sub_xmm_in_FR32Superclasses[] = {
5092  &X86::VR512RegClass,
5093  nullptr
5094};
5095
5096static const TargetRegisterClass *const VR512_with_sub_xmm_in_VR128HSuperclasses[] = {
5097  &X86::VR512RegClass,
5098  &X86::VR512_with_sub_xmm_in_FR32RegClass,
5099  nullptr
5100};
5101
5102static const TargetRegisterClass *const VR512_with_sub_xmm_in_VR128LSuperclasses[] = {
5103  &X86::VR512RegClass,
5104  &X86::VR512_with_sub_xmm_in_FR32RegClass,
5105  nullptr
5106};
5107
5108
5109static inline unsigned GR8AltOrderSelect(const MachineFunction &MF) {
5110    return MF.getSubtarget<X86Subtarget>().is64Bit();
5111  }
5112
5113static ArrayRef<MCPhysReg> GR8GetRawAllocationOrder(const MachineFunction &MF) {
5114  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 };
5115  const MCRegisterClass &MCR = X86MCRegisterClasses[X86::GR8RegClassID];
5116  const ArrayRef<MCPhysReg> Order[] = {
5117    makeArrayRef(MCR.begin(), MCR.getNumRegs()),
5118    makeArrayRef(AltOrder1)
5119  };
5120  const unsigned Select = GR8AltOrderSelect(MF);
5121  assert(Select < 2);
5122  return Order[Select];
5123}
5124
5125static inline unsigned GR8_NOREXAltOrderSelect(const MachineFunction &MF) {
5126    return MF.getSubtarget<X86Subtarget>().is64Bit();
5127  }
5128
5129static ArrayRef<MCPhysReg> GR8_NOREXGetRawAllocationOrder(const MachineFunction &MF) {
5130  static const MCPhysReg AltOrder1[] = { X86::AL, X86::CL, X86::DL, X86::BL };
5131  const MCRegisterClass &MCR = X86MCRegisterClasses[X86::GR8_NOREXRegClassID];
5132  const ArrayRef<MCPhysReg> Order[] = {
5133    makeArrayRef(MCR.begin(), MCR.getNumRegs()),
5134    makeArrayRef(AltOrder1)
5135  };
5136  const unsigned Select = GR8_NOREXAltOrderSelect(MF);
5137  assert(Select < 2);
5138  return Order[Select];
5139}
5140
5141namespace X86 {   // Register class instances
5142  extern const TargetRegisterClass GR8RegClass = {
5143    &X86MCRegisterClasses[GR8RegClassID],
5144    GR8SubClassMask,
5145    SuperRegIdxSeqs + 2,
5146    LaneBitmask(0x00000001),
5147    0,
5148    false, /* HasDisjunctSubRegs */
5149    false, /* CoveredBySubRegs */
5150    NullRegClasses,
5151    GR8GetRawAllocationOrder
5152  };
5153
5154  extern const TargetRegisterClass GRH8RegClass = {
5155    &X86MCRegisterClasses[GRH8RegClassID],
5156    GRH8SubClassMask,
5157    SuperRegIdxSeqs + 1,
5158    LaneBitmask(0x00000001),
5159    0,
5160    false, /* HasDisjunctSubRegs */
5161    false, /* CoveredBySubRegs */
5162    NullRegClasses,
5163    nullptr
5164  };
5165
5166  extern const TargetRegisterClass GR8_NOREXRegClass = {
5167    &X86MCRegisterClasses[GR8_NOREXRegClassID],
5168    GR8_NOREXSubClassMask,
5169    SuperRegIdxSeqs + 2,
5170    LaneBitmask(0x00000001),
5171    0,
5172    false, /* HasDisjunctSubRegs */
5173    false, /* CoveredBySubRegs */
5174    GR8_NOREXSuperclasses,
5175    GR8_NOREXGetRawAllocationOrder
5176  };
5177
5178  extern const TargetRegisterClass GR8_ABCD_HRegClass = {
5179    &X86MCRegisterClasses[GR8_ABCD_HRegClassID],
5180    GR8_ABCD_HSubClassMask,
5181    SuperRegIdxSeqs + 3,
5182    LaneBitmask(0x00000001),
5183    0,
5184    false, /* HasDisjunctSubRegs */
5185    false, /* CoveredBySubRegs */
5186    GR8_ABCD_HSuperclasses,
5187    nullptr
5188  };
5189
5190  extern const TargetRegisterClass GR8_ABCD_LRegClass = {
5191    &X86MCRegisterClasses[GR8_ABCD_LRegClassID],
5192    GR8_ABCD_LSubClassMask,
5193    SuperRegIdxSeqs + 0,
5194    LaneBitmask(0x00000001),
5195    0,
5196    false, /* HasDisjunctSubRegs */
5197    false, /* CoveredBySubRegs */
5198    GR8_ABCD_LSuperclasses,
5199    nullptr
5200  };
5201
5202  extern const TargetRegisterClass GRH16RegClass = {
5203    &X86MCRegisterClasses[GRH16RegClassID],
5204    GRH16SubClassMask,
5205    SuperRegIdxSeqs + 1,
5206    LaneBitmask(0x00000001),
5207    0,
5208    false, /* HasDisjunctSubRegs */
5209    false, /* CoveredBySubRegs */
5210    NullRegClasses,
5211    nullptr
5212  };
5213
5214  extern const TargetRegisterClass GR16RegClass = {
5215    &X86MCRegisterClasses[GR16RegClassID],
5216    GR16SubClassMask,
5217    SuperRegIdxSeqs + 5,
5218    LaneBitmask(0x00000003),
5219    0,
5220    true, /* HasDisjunctSubRegs */
5221    true, /* CoveredBySubRegs */
5222    NullRegClasses,
5223    nullptr
5224  };
5225
5226  extern const TargetRegisterClass GR16_NOREXRegClass = {
5227    &X86MCRegisterClasses[GR16_NOREXRegClassID],
5228    GR16_NOREXSubClassMask,
5229    SuperRegIdxSeqs + 5,
5230    LaneBitmask(0x00000003),
5231    0,
5232    true, /* HasDisjunctSubRegs */
5233    true, /* CoveredBySubRegs */
5234    GR16_NOREXSuperclasses,
5235    nullptr
5236  };
5237
5238  extern const TargetRegisterClass VK1RegClass = {
5239    &X86MCRegisterClasses[VK1RegClassID],
5240    VK1SubClassMask,
5241    SuperRegIdxSeqs + 1,
5242    LaneBitmask(0x00000001),
5243    0,
5244    false, /* HasDisjunctSubRegs */
5245    false, /* CoveredBySubRegs */
5246    VK1Superclasses,
5247    nullptr
5248  };
5249
5250  extern const TargetRegisterClass VK16RegClass = {
5251    &X86MCRegisterClasses[VK16RegClassID],
5252    VK16SubClassMask,
5253    SuperRegIdxSeqs + 1,
5254    LaneBitmask(0x00000001),
5255    0,
5256    false, /* HasDisjunctSubRegs */
5257    false, /* CoveredBySubRegs */
5258    VK16Superclasses,
5259    nullptr
5260  };
5261
5262  extern const TargetRegisterClass VK2RegClass = {
5263    &X86MCRegisterClasses[VK2RegClassID],
5264    VK2SubClassMask,
5265    SuperRegIdxSeqs + 1,
5266    LaneBitmask(0x00000001),
5267    0,
5268    false, /* HasDisjunctSubRegs */
5269    false, /* CoveredBySubRegs */
5270    VK2Superclasses,
5271    nullptr
5272  };
5273
5274  extern const TargetRegisterClass VK4RegClass = {
5275    &X86MCRegisterClasses[VK4RegClassID],
5276    VK4SubClassMask,
5277    SuperRegIdxSeqs + 1,
5278    LaneBitmask(0x00000001),
5279    0,
5280    false, /* HasDisjunctSubRegs */
5281    false, /* CoveredBySubRegs */
5282    VK4Superclasses,
5283    nullptr
5284  };
5285
5286  extern const TargetRegisterClass VK8RegClass = {
5287    &X86MCRegisterClasses[VK8RegClassID],
5288    VK8SubClassMask,
5289    SuperRegIdxSeqs + 1,
5290    LaneBitmask(0x00000001),
5291    0,
5292    false, /* HasDisjunctSubRegs */
5293    false, /* CoveredBySubRegs */
5294    VK8Superclasses,
5295    nullptr
5296  };
5297
5298  extern const TargetRegisterClass VK16WMRegClass = {
5299    &X86MCRegisterClasses[VK16WMRegClassID],
5300    VK16WMSubClassMask,
5301    SuperRegIdxSeqs + 1,
5302    LaneBitmask(0x00000001),
5303    0,
5304    false, /* HasDisjunctSubRegs */
5305    false, /* CoveredBySubRegs */
5306    VK16WMSuperclasses,
5307    nullptr
5308  };
5309
5310  extern const TargetRegisterClass VK1WMRegClass = {
5311    &X86MCRegisterClasses[VK1WMRegClassID],
5312    VK1WMSubClassMask,
5313    SuperRegIdxSeqs + 1,
5314    LaneBitmask(0x00000001),
5315    0,
5316    false, /* HasDisjunctSubRegs */
5317    false, /* CoveredBySubRegs */
5318    VK1WMSuperclasses,
5319    nullptr
5320  };
5321
5322  extern const TargetRegisterClass VK2WMRegClass = {
5323    &X86MCRegisterClasses[VK2WMRegClassID],
5324    VK2WMSubClassMask,
5325    SuperRegIdxSeqs + 1,
5326    LaneBitmask(0x00000001),
5327    0,
5328    false, /* HasDisjunctSubRegs */
5329    false, /* CoveredBySubRegs */
5330    VK2WMSuperclasses,
5331    nullptr
5332  };
5333
5334  extern const TargetRegisterClass VK4WMRegClass = {
5335    &X86MCRegisterClasses[VK4WMRegClassID],
5336    VK4WMSubClassMask,
5337    SuperRegIdxSeqs + 1,
5338    LaneBitmask(0x00000001),
5339    0,
5340    false, /* HasDisjunctSubRegs */
5341    false, /* CoveredBySubRegs */
5342    VK4WMSuperclasses,
5343    nullptr
5344  };
5345
5346  extern const TargetRegisterClass VK8WMRegClass = {
5347    &X86MCRegisterClasses[VK8WMRegClassID],
5348    VK8WMSubClassMask,
5349    SuperRegIdxSeqs + 1,
5350    LaneBitmask(0x00000001),
5351    0,
5352    false, /* HasDisjunctSubRegs */
5353    false, /* CoveredBySubRegs */
5354    VK8WMSuperclasses,
5355    nullptr
5356  };
5357
5358  extern const TargetRegisterClass SEGMENT_REGRegClass = {
5359    &X86MCRegisterClasses[SEGMENT_REGRegClassID],
5360    SEGMENT_REGSubClassMask,
5361    SuperRegIdxSeqs + 1,
5362    LaneBitmask(0x00000001),
5363    0,
5364    false, /* HasDisjunctSubRegs */
5365    false, /* CoveredBySubRegs */
5366    NullRegClasses,
5367    nullptr
5368  };
5369
5370  extern const TargetRegisterClass GR16_ABCDRegClass = {
5371    &X86MCRegisterClasses[GR16_ABCDRegClassID],
5372    GR16_ABCDSubClassMask,
5373    SuperRegIdxSeqs + 5,
5374    LaneBitmask(0x00000003),
5375    0,
5376    true, /* HasDisjunctSubRegs */
5377    true, /* CoveredBySubRegs */
5378    GR16_ABCDSuperclasses,
5379    nullptr
5380  };
5381
5382  extern const TargetRegisterClass FPCCRRegClass = {
5383    &X86MCRegisterClasses[FPCCRRegClassID],
5384    FPCCRSubClassMask,
5385    SuperRegIdxSeqs + 1,
5386    LaneBitmask(0x00000001),
5387    0,
5388    false, /* HasDisjunctSubRegs */
5389    false, /* CoveredBySubRegs */
5390    NullRegClasses,
5391    nullptr
5392  };
5393
5394  extern const TargetRegisterClass FR32XRegClass = {
5395    &X86MCRegisterClasses[FR32XRegClassID],
5396    FR32XSubClassMask,
5397    SuperRegIdxSeqs + 9,
5398    LaneBitmask(0x00000001),
5399    0,
5400    false, /* HasDisjunctSubRegs */
5401    false, /* CoveredBySubRegs */
5402    NullRegClasses,
5403    nullptr
5404  };
5405
5406  extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBPRegClass = {
5407    &X86MCRegisterClasses[LOW32_ADDR_ACCESS_RBPRegClassID],
5408    LOW32_ADDR_ACCESS_RBPSubClassMask,
5409    SuperRegIdxSeqs + 7,
5410    LaneBitmask(0x0000000F),
5411    0,
5412    true, /* HasDisjunctSubRegs */
5413    false, /* CoveredBySubRegs */
5414    NullRegClasses,
5415    nullptr
5416  };
5417
5418  extern const TargetRegisterClass LOW32_ADDR_ACCESSRegClass = {
5419    &X86MCRegisterClasses[LOW32_ADDR_ACCESSRegClassID],
5420    LOW32_ADDR_ACCESSSubClassMask,
5421    SuperRegIdxSeqs + 7,
5422    LaneBitmask(0x0000000F),
5423    0,
5424    true, /* HasDisjunctSubRegs */
5425    false, /* CoveredBySubRegs */
5426    LOW32_ADDR_ACCESSSuperclasses,
5427    nullptr
5428  };
5429
5430  extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass = {
5431    &X86MCRegisterClasses[LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClassID],
5432    LOW32_ADDR_ACCESS_RBP_with_sub_8bitSubClassMask,
5433    SuperRegIdxSeqs + 7,
5434    LaneBitmask(0x0000000F),
5435    0,
5436    true, /* HasDisjunctSubRegs */
5437    false, /* CoveredBySubRegs */
5438    LOW32_ADDR_ACCESS_RBP_with_sub_8bitSuperclasses,
5439    nullptr
5440  };
5441
5442  extern const TargetRegisterClass DEBUG_REGRegClass = {
5443    &X86MCRegisterClasses[DEBUG_REGRegClassID],
5444    DEBUG_REGSubClassMask,
5445    SuperRegIdxSeqs + 1,
5446    LaneBitmask(0x00000001),
5447    0,
5448    false, /* HasDisjunctSubRegs */
5449    false, /* CoveredBySubRegs */
5450    NullRegClasses,
5451    nullptr
5452  };
5453
5454  extern const TargetRegisterClass FR32RegClass = {
5455    &X86MCRegisterClasses[FR32RegClassID],
5456    FR32SubClassMask,
5457    SuperRegIdxSeqs + 9,
5458    LaneBitmask(0x00000001),
5459    0,
5460    false, /* HasDisjunctSubRegs */
5461    false, /* CoveredBySubRegs */
5462    FR32Superclasses,
5463    nullptr
5464  };
5465
5466  extern const TargetRegisterClass GR32RegClass = {
5467    &X86MCRegisterClasses[GR32RegClassID],
5468    GR32SubClassMask,
5469    SuperRegIdxSeqs + 7,
5470    LaneBitmask(0x00000007),
5471    0,
5472    true, /* HasDisjunctSubRegs */
5473    true, /* CoveredBySubRegs */
5474    GR32Superclasses,
5475    nullptr
5476  };
5477
5478  extern const TargetRegisterClass GR32_NOSPRegClass = {
5479    &X86MCRegisterClasses[GR32_NOSPRegClassID],
5480    GR32_NOSPSubClassMask,
5481    SuperRegIdxSeqs + 7,
5482    LaneBitmask(0x00000007),
5483    0,
5484    true, /* HasDisjunctSubRegs */
5485    true, /* CoveredBySubRegs */
5486    GR32_NOSPSuperclasses,
5487    nullptr
5488  };
5489
5490  extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass = {
5491    &X86MCRegisterClasses[LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClassID],
5492    LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXSubClassMask,
5493    SuperRegIdxSeqs + 7,
5494    LaneBitmask(0x0000000F),
5495    0,
5496    true, /* HasDisjunctSubRegs */
5497    false, /* CoveredBySubRegs */
5498    LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXSuperclasses,
5499    nullptr
5500  };
5501
5502  extern const TargetRegisterClass GR32_NOREXRegClass = {
5503    &X86MCRegisterClasses[GR32_NOREXRegClassID],
5504    GR32_NOREXSubClassMask,
5505    SuperRegIdxSeqs + 7,
5506    LaneBitmask(0x00000007),
5507    0,
5508    true, /* HasDisjunctSubRegs */
5509    true, /* CoveredBySubRegs */
5510    GR32_NOREXSuperclasses,
5511    nullptr
5512  };
5513
5514  extern const TargetRegisterClass VK32RegClass = {
5515    &X86MCRegisterClasses[VK32RegClassID],
5516    VK32SubClassMask,
5517    SuperRegIdxSeqs + 1,
5518    LaneBitmask(0x00000001),
5519    0,
5520    false, /* HasDisjunctSubRegs */
5521    false, /* CoveredBySubRegs */
5522    VK32Superclasses,
5523    nullptr
5524  };
5525
5526  extern const TargetRegisterClass GR32_NOREX_NOSPRegClass = {
5527    &X86MCRegisterClasses[GR32_NOREX_NOSPRegClassID],
5528    GR32_NOREX_NOSPSubClassMask,
5529    SuperRegIdxSeqs + 7,
5530    LaneBitmask(0x00000007),
5531    0,
5532    true, /* HasDisjunctSubRegs */
5533    true, /* CoveredBySubRegs */
5534    GR32_NOREX_NOSPSuperclasses,
5535    nullptr
5536  };
5537
5538  extern const TargetRegisterClass RFP32RegClass = {
5539    &X86MCRegisterClasses[RFP32RegClassID],
5540    RFP32SubClassMask,
5541    SuperRegIdxSeqs + 1,
5542    LaneBitmask(0x00000001),
5543    0,
5544    false, /* HasDisjunctSubRegs */
5545    false, /* CoveredBySubRegs */
5546    NullRegClasses,
5547    nullptr
5548  };
5549
5550  extern const TargetRegisterClass VK32WMRegClass = {
5551    &X86MCRegisterClasses[VK32WMRegClassID],
5552    VK32WMSubClassMask,
5553    SuperRegIdxSeqs + 1,
5554    LaneBitmask(0x00000001),
5555    0,
5556    false, /* HasDisjunctSubRegs */
5557    false, /* CoveredBySubRegs */
5558    VK32WMSuperclasses,
5559    nullptr
5560  };
5561
5562  extern const TargetRegisterClass GR32_ABCDRegClass = {
5563    &X86MCRegisterClasses[GR32_ABCDRegClassID],
5564    GR32_ABCDSubClassMask,
5565    SuperRegIdxSeqs + 7,
5566    LaneBitmask(0x00000007),
5567    0,
5568    true, /* HasDisjunctSubRegs */
5569    true, /* CoveredBySubRegs */
5570    GR32_ABCDSuperclasses,
5571    nullptr
5572  };
5573
5574  extern const TargetRegisterClass GR32_TCRegClass = {
5575    &X86MCRegisterClasses[GR32_TCRegClassID],
5576    GR32_TCSubClassMask,
5577    SuperRegIdxSeqs + 7,
5578    LaneBitmask(0x00000007),
5579    0,
5580    true, /* HasDisjunctSubRegs */
5581    true, /* CoveredBySubRegs */
5582    GR32_TCSuperclasses,
5583    nullptr
5584  };
5585
5586  extern const TargetRegisterClass GR32_ADRegClass = {
5587    &X86MCRegisterClasses[GR32_ADRegClassID],
5588    GR32_ADSubClassMask,
5589    SuperRegIdxSeqs + 7,
5590    LaneBitmask(0x00000007),
5591    0,
5592    true, /* HasDisjunctSubRegs */
5593    true, /* CoveredBySubRegs */
5594    GR32_ADSuperclasses,
5595    nullptr
5596  };
5597
5598  extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass = {
5599    &X86MCRegisterClasses[LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClassID],
5600    LOW32_ADDR_ACCESS_RBP_with_sub_32bitSubClassMask,
5601    SuperRegIdxSeqs + 1,
5602    LaneBitmask(0x0000000F),
5603    0,
5604    true, /* HasDisjunctSubRegs */
5605    false, /* CoveredBySubRegs */
5606    LOW32_ADDR_ACCESS_RBP_with_sub_32bitSuperclasses,
5607    nullptr
5608  };
5609
5610  extern const TargetRegisterClass CCRRegClass = {
5611    &X86MCRegisterClasses[CCRRegClassID],
5612    CCRSubClassMask,
5613    SuperRegIdxSeqs + 1,
5614    LaneBitmask(0x00000001),
5615    0,
5616    false, /* HasDisjunctSubRegs */
5617    false, /* CoveredBySubRegs */
5618    NullRegClasses,
5619    nullptr
5620  };
5621
5622  extern const TargetRegisterClass DFCCRRegClass = {
5623    &X86MCRegisterClasses[DFCCRRegClassID],
5624    DFCCRSubClassMask,
5625    SuperRegIdxSeqs + 1,
5626    LaneBitmask(0x00000001),
5627    0,
5628    false, /* HasDisjunctSubRegs */
5629    false, /* CoveredBySubRegs */
5630    NullRegClasses,
5631    nullptr
5632  };
5633
5634  extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitRegClass = {
5635    &X86MCRegisterClasses[LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitRegClassID],
5636    LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitSubClassMask,
5637    SuperRegIdxSeqs + 1,
5638    LaneBitmask(0x0000000F),
5639    0,
5640    true, /* HasDisjunctSubRegs */
5641    false, /* CoveredBySubRegs */
5642    LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitSuperclasses,
5643    nullptr
5644  };
5645
5646  extern const TargetRegisterClass LOW32_ADDR_ACCESS_with_sub_32bitRegClass = {
5647    &X86MCRegisterClasses[LOW32_ADDR_ACCESS_with_sub_32bitRegClassID],
5648    LOW32_ADDR_ACCESS_with_sub_32bitSubClassMask,
5649    SuperRegIdxSeqs + 1,
5650    LaneBitmask(0x0000000F),
5651    0,
5652    true, /* HasDisjunctSubRegs */
5653    false, /* CoveredBySubRegs */
5654    LOW32_ADDR_ACCESS_with_sub_32bitSuperclasses,
5655    nullptr
5656  };
5657
5658  extern const TargetRegisterClass RFP64RegClass = {
5659    &X86MCRegisterClasses[RFP64RegClassID],
5660    RFP64SubClassMask,
5661    SuperRegIdxSeqs + 1,
5662    LaneBitmask(0x00000001),
5663    0,
5664    false, /* HasDisjunctSubRegs */
5665    false, /* CoveredBySubRegs */
5666    RFP64Superclasses,
5667    nullptr
5668  };
5669
5670  extern const TargetRegisterClass FR64XRegClass = {
5671    &X86MCRegisterClasses[FR64XRegClassID],
5672    FR64XSubClassMask,
5673    SuperRegIdxSeqs + 9,
5674    LaneBitmask(0x00000001),
5675    0,
5676    false, /* HasDisjunctSubRegs */
5677    false, /* CoveredBySubRegs */
5678    FR64XSuperclasses,
5679    nullptr
5680  };
5681
5682  extern const TargetRegisterClass GR64RegClass = {
5683    &X86MCRegisterClasses[GR64RegClassID],
5684    GR64SubClassMask,
5685    SuperRegIdxSeqs + 1,
5686    LaneBitmask(0x0000000F),
5687    0,
5688    true, /* HasDisjunctSubRegs */
5689    false, /* CoveredBySubRegs */
5690    NullRegClasses,
5691    nullptr
5692  };
5693
5694  extern const TargetRegisterClass CONTROL_REGRegClass = {
5695    &X86MCRegisterClasses[CONTROL_REGRegClassID],
5696    CONTROL_REGSubClassMask,
5697    SuperRegIdxSeqs + 1,
5698    LaneBitmask(0x00000001),
5699    0,
5700    false, /* HasDisjunctSubRegs */
5701    false, /* CoveredBySubRegs */
5702    NullRegClasses,
5703    nullptr
5704  };
5705
5706  extern const TargetRegisterClass FR64RegClass = {
5707    &X86MCRegisterClasses[FR64RegClassID],
5708    FR64SubClassMask,
5709    SuperRegIdxSeqs + 9,
5710    LaneBitmask(0x00000001),
5711    0,
5712    false, /* HasDisjunctSubRegs */
5713    false, /* CoveredBySubRegs */
5714    FR64Superclasses,
5715    nullptr
5716  };
5717
5718  extern const TargetRegisterClass GR64_with_sub_8bitRegClass = {
5719    &X86MCRegisterClasses[GR64_with_sub_8bitRegClassID],
5720    GR64_with_sub_8bitSubClassMask,
5721    SuperRegIdxSeqs + 1,
5722    LaneBitmask(0x0000000F),
5723    0,
5724    true, /* HasDisjunctSubRegs */
5725    false, /* CoveredBySubRegs */
5726    GR64_with_sub_8bitSuperclasses,
5727    nullptr
5728  };
5729
5730  extern const TargetRegisterClass GR64_NOSPRegClass = {
5731    &X86MCRegisterClasses[GR64_NOSPRegClassID],
5732    GR64_NOSPSubClassMask,
5733    SuperRegIdxSeqs + 1,
5734    LaneBitmask(0x0000000F),
5735    0,
5736    true, /* HasDisjunctSubRegs */
5737    false, /* CoveredBySubRegs */
5738    GR64_NOSPSuperclasses,
5739    nullptr
5740  };
5741
5742  extern const TargetRegisterClass GR64_NOREXRegClass = {
5743    &X86MCRegisterClasses[GR64_NOREXRegClassID],
5744    GR64_NOREXSubClassMask,
5745    SuperRegIdxSeqs + 1,
5746    LaneBitmask(0x0000000F),
5747    0,
5748    true, /* HasDisjunctSubRegs */
5749    false, /* CoveredBySubRegs */
5750    GR64_NOREXSuperclasses,
5751    nullptr
5752  };
5753
5754  extern const TargetRegisterClass GR64_TCRegClass = {
5755    &X86MCRegisterClasses[GR64_TCRegClassID],
5756    GR64_TCSubClassMask,
5757    SuperRegIdxSeqs + 1,
5758    LaneBitmask(0x0000000F),
5759    0,
5760    true, /* HasDisjunctSubRegs */
5761    false, /* CoveredBySubRegs */
5762    GR64_TCSuperclasses,
5763    nullptr
5764  };
5765
5766  extern const TargetRegisterClass GR64_NOSP_and_GR64_TCRegClass = {
5767    &X86MCRegisterClasses[GR64_NOSP_and_GR64_TCRegClassID],
5768    GR64_NOSP_and_GR64_TCSubClassMask,
5769    SuperRegIdxSeqs + 1,
5770    LaneBitmask(0x0000000F),
5771    0,
5772    true, /* HasDisjunctSubRegs */
5773    false, /* CoveredBySubRegs */
5774    GR64_NOSP_and_GR64_TCSuperclasses,
5775    nullptr
5776  };
5777
5778  extern const TargetRegisterClass GR64_TCW64RegClass = {
5779    &X86MCRegisterClasses[GR64_TCW64RegClassID],
5780    GR64_TCW64SubClassMask,
5781    SuperRegIdxSeqs + 1,
5782    LaneBitmask(0x0000000F),
5783    0,
5784    true, /* HasDisjunctSubRegs */
5785    false, /* CoveredBySubRegs */
5786    GR64_TCW64Superclasses,
5787    nullptr
5788  };
5789
5790  extern const TargetRegisterClass GR64_with_sub_16bit_in_GR16_NOREXRegClass = {
5791    &X86MCRegisterClasses[GR64_with_sub_16bit_in_GR16_NOREXRegClassID],
5792    GR64_with_sub_16bit_in_GR16_NOREXSubClassMask,
5793    SuperRegIdxSeqs + 1,
5794    LaneBitmask(0x0000000F),
5795    0,
5796    true, /* HasDisjunctSubRegs */
5797    false, /* CoveredBySubRegs */
5798    GR64_with_sub_16bit_in_GR16_NOREXSuperclasses,
5799    nullptr
5800  };
5801
5802  extern const TargetRegisterClass VK64RegClass = {
5803    &X86MCRegisterClasses[VK64RegClassID],
5804    VK64SubClassMask,
5805    SuperRegIdxSeqs + 1,
5806    LaneBitmask(0x00000001),
5807    0,
5808    false, /* HasDisjunctSubRegs */
5809    false, /* CoveredBySubRegs */
5810    VK64Superclasses,
5811    nullptr
5812  };
5813
5814  extern const TargetRegisterClass VR64RegClass = {
5815    &X86MCRegisterClasses[VR64RegClassID],
5816    VR64SubClassMask,
5817    SuperRegIdxSeqs + 1,
5818    LaneBitmask(0x00000001),
5819    0,
5820    false, /* HasDisjunctSubRegs */
5821    false, /* CoveredBySubRegs */
5822    NullRegClasses,
5823    nullptr
5824  };
5825
5826  extern const TargetRegisterClass GR64_NOREX_NOSPRegClass = {
5827    &X86MCRegisterClasses[GR64_NOREX_NOSPRegClassID],
5828    GR64_NOREX_NOSPSubClassMask,
5829    SuperRegIdxSeqs + 1,
5830    LaneBitmask(0x0000000F),
5831    0,
5832    true, /* HasDisjunctSubRegs */
5833    false, /* CoveredBySubRegs */
5834    GR64_NOREX_NOSPSuperclasses,
5835    nullptr
5836  };
5837
5838  extern const TargetRegisterClass GR64_NOSP_and_GR64_TCW64RegClass = {
5839    &X86MCRegisterClasses[GR64_NOSP_and_GR64_TCW64RegClassID],
5840    GR64_NOSP_and_GR64_TCW64SubClassMask,
5841    SuperRegIdxSeqs + 1,
5842    LaneBitmask(0x0000000F),
5843    0,
5844    true, /* HasDisjunctSubRegs */
5845    false, /* CoveredBySubRegs */
5846    GR64_NOSP_and_GR64_TCW64Superclasses,
5847    nullptr
5848  };
5849
5850  extern const TargetRegisterClass GR64_TC_and_GR64_TCW64RegClass = {
5851    &X86MCRegisterClasses[GR64_TC_and_GR64_TCW64RegClassID],
5852    GR64_TC_and_GR64_TCW64SubClassMask,
5853    SuperRegIdxSeqs + 1,
5854    LaneBitmask(0x0000000F),
5855    0,
5856    true, /* HasDisjunctSubRegs */
5857    false, /* CoveredBySubRegs */
5858    GR64_TC_and_GR64_TCW64Superclasses,
5859    nullptr
5860  };
5861
5862  extern const TargetRegisterClass VK64WMRegClass = {
5863    &X86MCRegisterClasses[VK64WMRegClassID],
5864    VK64WMSubClassMask,
5865    SuperRegIdxSeqs + 1,
5866    LaneBitmask(0x00000001),
5867    0,
5868    false, /* HasDisjunctSubRegs */
5869    false, /* CoveredBySubRegs */
5870    VK64WMSuperclasses,
5871    nullptr
5872  };
5873
5874  extern const TargetRegisterClass GR64_NOREX_and_GR64_TCRegClass = {
5875    &X86MCRegisterClasses[GR64_NOREX_and_GR64_TCRegClassID],
5876    GR64_NOREX_and_GR64_TCSubClassMask,
5877    SuperRegIdxSeqs + 1,
5878    LaneBitmask(0x0000000F),
5879    0,
5880    true, /* HasDisjunctSubRegs */
5881    false, /* CoveredBySubRegs */
5882    GR64_NOREX_and_GR64_TCSuperclasses,
5883    nullptr
5884  };
5885
5886  extern const TargetRegisterClass GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClass = {
5887    &X86MCRegisterClasses[GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClassID],
5888    GR64_TC_and_GR64_NOSP_and_GR64_TCW64SubClassMask,
5889    SuperRegIdxSeqs + 1,
5890    LaneBitmask(0x0000000F),
5891    0,
5892    true, /* HasDisjunctSubRegs */
5893    false, /* CoveredBySubRegs */
5894    GR64_TC_and_GR64_NOSP_and_GR64_TCW64Superclasses,
5895    nullptr
5896  };
5897
5898  extern const TargetRegisterClass GR64_NOREX_NOSP_and_GR64_TCRegClass = {
5899    &X86MCRegisterClasses[GR64_NOREX_NOSP_and_GR64_TCRegClassID],
5900    GR64_NOREX_NOSP_and_GR64_TCSubClassMask,
5901    SuperRegIdxSeqs + 1,
5902    LaneBitmask(0x0000000F),
5903    0,
5904    true, /* HasDisjunctSubRegs */
5905    false, /* CoveredBySubRegs */
5906    GR64_NOREX_NOSP_and_GR64_TCSuperclasses,
5907    nullptr
5908  };
5909
5910  extern const TargetRegisterClass GR64_ABCDRegClass = {
5911    &X86MCRegisterClasses[GR64_ABCDRegClassID],
5912    GR64_ABCDSubClassMask,
5913    SuperRegIdxSeqs + 1,
5914    LaneBitmask(0x0000000F),
5915    0,
5916    true, /* HasDisjunctSubRegs */
5917    false, /* CoveredBySubRegs */
5918    GR64_ABCDSuperclasses,
5919    nullptr
5920  };
5921
5922  extern const TargetRegisterClass GR64_NOREX_and_GR64_TCW64RegClass = {
5923    &X86MCRegisterClasses[GR64_NOREX_and_GR64_TCW64RegClassID],
5924    GR64_NOREX_and_GR64_TCW64SubClassMask,
5925    SuperRegIdxSeqs + 1,
5926    LaneBitmask(0x0000000F),
5927    0,
5928    true, /* HasDisjunctSubRegs */
5929    false, /* CoveredBySubRegs */
5930    GR64_NOREX_and_GR64_TCW64Superclasses,
5931    nullptr
5932  };
5933
5934  extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_TCRegClass = {
5935    &X86MCRegisterClasses[GR64_with_sub_32bit_in_GR32_TCRegClassID],
5936    GR64_with_sub_32bit_in_GR32_TCSubClassMask,
5937    SuperRegIdxSeqs + 1,
5938    LaneBitmask(0x0000000F),
5939    0,
5940    true, /* HasDisjunctSubRegs */
5941    false, /* CoveredBySubRegs */
5942    GR64_with_sub_32bit_in_GR32_TCSuperclasses,
5943    nullptr
5944  };
5945
5946  extern const TargetRegisterClass GR64_ADRegClass = {
5947    &X86MCRegisterClasses[GR64_ADRegClassID],
5948    GR64_ADSubClassMask,
5949    SuperRegIdxSeqs + 1,
5950    LaneBitmask(0x0000000F),
5951    0,
5952    true, /* HasDisjunctSubRegs */
5953    false, /* CoveredBySubRegs */
5954    GR64_ADSuperclasses,
5955    nullptr
5956  };
5957
5958  extern const TargetRegisterClass GR64_and_LOW32_ADDR_ACCESS_RBPRegClass = {
5959    &X86MCRegisterClasses[GR64_and_LOW32_ADDR_ACCESS_RBPRegClassID],
5960    GR64_and_LOW32_ADDR_ACCESS_RBPSubClassMask,
5961    SuperRegIdxSeqs + 1,
5962    LaneBitmask(0x0000000F),
5963    0,
5964    true, /* HasDisjunctSubRegs */
5965    false, /* CoveredBySubRegs */
5966    GR64_and_LOW32_ADDR_ACCESS_RBPSuperclasses,
5967    nullptr
5968  };
5969
5970  extern const TargetRegisterClass GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBPRegClass = {
5971    &X86MCRegisterClasses[GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBPRegClassID],
5972    GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBPSubClassMask,
5973    SuperRegIdxSeqs + 1,
5974    LaneBitmask(0x0000000F),
5975    0,
5976    true, /* HasDisjunctSubRegs */
5977    false, /* CoveredBySubRegs */
5978    GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBPSuperclasses,
5979    nullptr
5980  };
5981
5982  extern const TargetRegisterClass GR64_and_LOW32_ADDR_ACCESSRegClass = {
5983    &X86MCRegisterClasses[GR64_and_LOW32_ADDR_ACCESSRegClassID],
5984    GR64_and_LOW32_ADDR_ACCESSSubClassMask,
5985    SuperRegIdxSeqs + 1,
5986    LaneBitmask(0x0000000F),
5987    0,
5988    true, /* HasDisjunctSubRegs */
5989    false, /* CoveredBySubRegs */
5990    GR64_and_LOW32_ADDR_ACCESSSuperclasses,
5991    nullptr
5992  };
5993
5994  extern const TargetRegisterClass RSTRegClass = {
5995    &X86MCRegisterClasses[RSTRegClassID],
5996    RSTSubClassMask,
5997    SuperRegIdxSeqs + 1,
5998    LaneBitmask(0x00000001),
5999    0,
6000    false, /* HasDisjunctSubRegs */
6001    false, /* CoveredBySubRegs */
6002    NullRegClasses,
6003    nullptr
6004  };
6005
6006  extern const TargetRegisterClass RFP80RegClass = {
6007    &X86MCRegisterClasses[RFP80RegClassID],
6008    RFP80SubClassMask,
6009    SuperRegIdxSeqs + 1,
6010    LaneBitmask(0x00000001),
6011    0,
6012    false, /* HasDisjunctSubRegs */
6013    false, /* CoveredBySubRegs */
6014    RFP80Superclasses,
6015    nullptr
6016  };
6017
6018  extern const TargetRegisterClass VR128XRegClass = {
6019    &X86MCRegisterClasses[VR128XRegClassID],
6020    VR128XSubClassMask,
6021    SuperRegIdxSeqs + 9,
6022    LaneBitmask(0x00000001),
6023    0,
6024    false, /* HasDisjunctSubRegs */
6025    false, /* CoveredBySubRegs */
6026    VR128XSuperclasses,
6027    nullptr
6028  };
6029
6030  extern const TargetRegisterClass VR128RegClass = {
6031    &X86MCRegisterClasses[VR128RegClassID],
6032    VR128SubClassMask,
6033    SuperRegIdxSeqs + 9,
6034    LaneBitmask(0x00000001),
6035    0,
6036    false, /* HasDisjunctSubRegs */
6037    false, /* CoveredBySubRegs */
6038    VR128Superclasses,
6039    nullptr
6040  };
6041
6042  extern const TargetRegisterClass VR128HRegClass = {
6043    &X86MCRegisterClasses[VR128HRegClassID],
6044    VR128HSubClassMask,
6045    SuperRegIdxSeqs + 9,
6046    LaneBitmask(0x00000001),
6047    0,
6048    false, /* HasDisjunctSubRegs */
6049    false, /* CoveredBySubRegs */
6050    VR128HSuperclasses,
6051    nullptr
6052  };
6053
6054  extern const TargetRegisterClass VR128LRegClass = {
6055    &X86MCRegisterClasses[VR128LRegClassID],
6056    VR128LSubClassMask,
6057    SuperRegIdxSeqs + 9,
6058    LaneBitmask(0x00000001),
6059    0,
6060    false, /* HasDisjunctSubRegs */
6061    false, /* CoveredBySubRegs */
6062    VR128LSuperclasses,
6063    nullptr
6064  };
6065
6066  extern const TargetRegisterClass BNDRRegClass = {
6067    &X86MCRegisterClasses[BNDRRegClassID],
6068    BNDRSubClassMask,
6069    SuperRegIdxSeqs + 1,
6070    LaneBitmask(0x00000001),
6071    0,
6072    false, /* HasDisjunctSubRegs */
6073    false, /* CoveredBySubRegs */
6074    NullRegClasses,
6075    nullptr
6076  };
6077
6078  extern const TargetRegisterClass VR256XRegClass = {
6079    &X86MCRegisterClasses[VR256XRegClassID],
6080    VR256XSubClassMask,
6081    SuperRegIdxSeqs + 11,
6082    LaneBitmask(0x00000010),
6083    0,
6084    false, /* HasDisjunctSubRegs */
6085    false, /* CoveredBySubRegs */
6086    NullRegClasses,
6087    nullptr
6088  };
6089
6090  extern const TargetRegisterClass VR256RegClass = {
6091    &X86MCRegisterClasses[VR256RegClassID],
6092    VR256SubClassMask,
6093    SuperRegIdxSeqs + 11,
6094    LaneBitmask(0x00000010),
6095    0,
6096    false, /* HasDisjunctSubRegs */
6097    false, /* CoveredBySubRegs */
6098    VR256Superclasses,
6099    nullptr
6100  };
6101
6102  extern const TargetRegisterClass VR256HRegClass = {
6103    &X86MCRegisterClasses[VR256HRegClassID],
6104    VR256HSubClassMask,
6105    SuperRegIdxSeqs + 11,
6106    LaneBitmask(0x00000010),
6107    0,
6108    false, /* HasDisjunctSubRegs */
6109    false, /* CoveredBySubRegs */
6110    VR256HSuperclasses,
6111    nullptr
6112  };
6113
6114  extern const TargetRegisterClass VR256LRegClass = {
6115    &X86MCRegisterClasses[VR256LRegClassID],
6116    VR256LSubClassMask,
6117    SuperRegIdxSeqs + 11,
6118    LaneBitmask(0x00000010),
6119    0,
6120    false, /* HasDisjunctSubRegs */
6121    false, /* CoveredBySubRegs */
6122    VR256LSuperclasses,
6123    nullptr
6124  };
6125
6126  extern const TargetRegisterClass VR512RegClass = {
6127    &X86MCRegisterClasses[VR512RegClassID],
6128    VR512SubClassMask,
6129    SuperRegIdxSeqs + 1,
6130    LaneBitmask(0x00000010),
6131    0,
6132    false, /* HasDisjunctSubRegs */
6133    false, /* CoveredBySubRegs */
6134    NullRegClasses,
6135    nullptr
6136  };
6137
6138  extern const TargetRegisterClass VR512_with_sub_xmm_in_FR32RegClass = {
6139    &X86MCRegisterClasses[VR512_with_sub_xmm_in_FR32RegClassID],
6140    VR512_with_sub_xmm_in_FR32SubClassMask,
6141    SuperRegIdxSeqs + 1,
6142    LaneBitmask(0x00000010),
6143    0,
6144    false, /* HasDisjunctSubRegs */
6145    false, /* CoveredBySubRegs */
6146    VR512_with_sub_xmm_in_FR32Superclasses,
6147    nullptr
6148  };
6149
6150  extern const TargetRegisterClass VR512_with_sub_xmm_in_VR128HRegClass = {
6151    &X86MCRegisterClasses[VR512_with_sub_xmm_in_VR128HRegClassID],
6152    VR512_with_sub_xmm_in_VR128HSubClassMask,
6153    SuperRegIdxSeqs + 1,
6154    LaneBitmask(0x00000010),
6155    0,
6156    false, /* HasDisjunctSubRegs */
6157    false, /* CoveredBySubRegs */
6158    VR512_with_sub_xmm_in_VR128HSuperclasses,
6159    nullptr
6160  };
6161
6162  extern const TargetRegisterClass VR512_with_sub_xmm_in_VR128LRegClass = {
6163    &X86MCRegisterClasses[VR512_with_sub_xmm_in_VR128LRegClassID],
6164    VR512_with_sub_xmm_in_VR128LSubClassMask,
6165    SuperRegIdxSeqs + 1,
6166    LaneBitmask(0x00000010),
6167    0,
6168    false, /* HasDisjunctSubRegs */
6169    false, /* CoveredBySubRegs */
6170    VR512_with_sub_xmm_in_VR128LSuperclasses,
6171    nullptr
6172  };
6173
6174} // end namespace X86
6175
6176namespace {
6177  const TargetRegisterClass* const RegisterClasses[] = {
6178    &X86::GR8RegClass,
6179    &X86::GRH8RegClass,
6180    &X86::GR8_NOREXRegClass,
6181    &X86::GR8_ABCD_HRegClass,
6182    &X86::GR8_ABCD_LRegClass,
6183    &X86::GRH16RegClass,
6184    &X86::GR16RegClass,
6185    &X86::GR16_NOREXRegClass,
6186    &X86::VK1RegClass,
6187    &X86::VK16RegClass,
6188    &X86::VK2RegClass,
6189    &X86::VK4RegClass,
6190    &X86::VK8RegClass,
6191    &X86::VK16WMRegClass,
6192    &X86::VK1WMRegClass,
6193    &X86::VK2WMRegClass,
6194    &X86::VK4WMRegClass,
6195    &X86::VK8WMRegClass,
6196    &X86::SEGMENT_REGRegClass,
6197    &X86::GR16_ABCDRegClass,
6198    &X86::FPCCRRegClass,
6199    &X86::FR32XRegClass,
6200    &X86::LOW32_ADDR_ACCESS_RBPRegClass,
6201    &X86::LOW32_ADDR_ACCESSRegClass,
6202    &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass,
6203    &X86::DEBUG_REGRegClass,
6204    &X86::FR32RegClass,
6205    &X86::GR32RegClass,
6206    &X86::GR32_NOSPRegClass,
6207    &X86::LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass,
6208    &X86::GR32_NOREXRegClass,
6209    &X86::VK32RegClass,
6210    &X86::GR32_NOREX_NOSPRegClass,
6211    &X86::RFP32RegClass,
6212    &X86::VK32WMRegClass,
6213    &X86::GR32_ABCDRegClass,
6214    &X86::GR32_TCRegClass,
6215    &X86::GR32_ADRegClass,
6216    &X86::LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass,
6217    &X86::CCRRegClass,
6218    &X86::DFCCRRegClass,
6219    &X86::LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitRegClass,
6220    &X86::LOW32_ADDR_ACCESS_with_sub_32bitRegClass,
6221    &X86::RFP64RegClass,
6222    &X86::FR64XRegClass,
6223    &X86::GR64RegClass,
6224    &X86::CONTROL_REGRegClass,
6225    &X86::FR64RegClass,
6226    &X86::GR64_with_sub_8bitRegClass,
6227    &X86::GR64_NOSPRegClass,
6228    &X86::GR64_NOREXRegClass,
6229    &X86::GR64_TCRegClass,
6230    &X86::GR64_NOSP_and_GR64_TCRegClass,
6231    &X86::GR64_TCW64RegClass,
6232    &X86::GR64_with_sub_16bit_in_GR16_NOREXRegClass,
6233    &X86::VK64RegClass,
6234    &X86::VR64RegClass,
6235    &X86::GR64_NOREX_NOSPRegClass,
6236    &X86::GR64_NOSP_and_GR64_TCW64RegClass,
6237    &X86::GR64_TC_and_GR64_TCW64RegClass,
6238    &X86::VK64WMRegClass,
6239    &X86::GR64_NOREX_and_GR64_TCRegClass,
6240    &X86::GR64_TC_and_GR64_NOSP_and_GR64_TCW64RegClass,
6241    &X86::GR64_NOREX_NOSP_and_GR64_TCRegClass,
6242    &X86::GR64_ABCDRegClass,
6243    &X86::GR64_NOREX_and_GR64_TCW64RegClass,
6244    &X86::GR64_with_sub_32bit_in_GR32_TCRegClass,
6245    &X86::GR64_ADRegClass,
6246    &X86::GR64_and_LOW32_ADDR_ACCESS_RBPRegClass,
6247    &X86::GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBPRegClass,
6248    &X86::GR64_and_LOW32_ADDR_ACCESSRegClass,
6249    &X86::RSTRegClass,
6250    &X86::RFP80RegClass,
6251    &X86::VR128XRegClass,
6252    &X86::VR128RegClass,
6253    &X86::VR128HRegClass,
6254    &X86::VR128LRegClass,
6255    &X86::BNDRRegClass,
6256    &X86::VR256XRegClass,
6257    &X86::VR256RegClass,
6258    &X86::VR256HRegClass,
6259    &X86::VR256LRegClass,
6260    &X86::VR512RegClass,
6261    &X86::VR512_with_sub_xmm_in_FR32RegClass,
6262    &X86::VR512_with_sub_xmm_in_VR128HRegClass,
6263    &X86::VR512_with_sub_xmm_in_VR128LRegClass,
6264  };
6265} // end anonymous namespace
6266
6267static const TargetRegisterInfoDesc X86RegInfoDesc[] = { // Extra Descriptors
6268  { 0, false },
6269  { 0, true },
6270  { 0, true },
6271  { 0, true },
6272  { 0, true },
6273  { 0, true },
6274  { 0, true },
6275  { 0, false },
6276  { 1, true },
6277  { 0, true },
6278  { 0, true },
6279  { 0, true },
6280  { 0, true },
6281  { 0, true },
6282  { 0, false },
6283  { 0, true },
6284  { 0, true },
6285  { 0, false },
6286  { 1, true },
6287  { 0, true },
6288  { 0, true },
6289  { 0, true },
6290  { 0, true },
6291  { 0, true },
6292  { 0, true },
6293  { 0, true },
6294  { 0, true },
6295  { 0, true },
6296  { 0, false },
6297  { 0, false },
6298  { 0, false },
6299  { 0, true },
6300  { 0, true },
6301  { 0, true },
6302  { 0, false },
6303  { 0, true },
6304  { 0, true },
6305  { 0, false },
6306  { 0, false },
6307  { 0, false },
6308  { 0, false },
6309  { 0, false },
6310  { 0, false },
6311  { 0, false },
6312  { 0, false },
6313  { 0, false },
6314  { 0, false },
6315  { 0, true },
6316  { 0, true },
6317  { 0, true },
6318  { 0, true },
6319  { 0, true },
6320  { 0, true },
6321  { 1, true },
6322  { 0, false },
6323  { 0, true },
6324  { 0, true },
6325  { 0, true },
6326  { 0, false },
6327  { 1, true },
6328  { 0, true },
6329  { 0, false },
6330  { 1, true },
6331  { 0, true },
6332  { 0, false },
6333  { 0, true },
6334  { 0, true },
6335  { 0, true },
6336  { 0, true },
6337  { 0, true },
6338  { 0, true },
6339  { 0, true },
6340  { 0, true },
6341  { 0, true },
6342  { 0, true },
6343  { 0, true },
6344  { 0, true },
6345  { 0, true },
6346  { 0, true },
6347  { 0, true },
6348  { 0, true },
6349  { 0, true },
6350  { 0, true },
6351  { 0, true },
6352  { 0, true },
6353  { 0, true },
6354  { 0, true },
6355  { 0, true },
6356  { 0, true },
6357  { 0, true },
6358  { 0, true },
6359  { 0, true },
6360  { 0, true },
6361  { 0, true },
6362  { 0, true },
6363  { 0, true },
6364  { 0, true },
6365  { 0, true },
6366  { 0, true },
6367  { 0, true },
6368  { 0, true },
6369  { 0, true },
6370  { 0, true },
6371  { 0, true },
6372  { 0, true },
6373  { 0, true },
6374  { 0, true },
6375  { 0, true },
6376  { 0, false },
6377  { 0, true },
6378  { 0, true },
6379  { 0, true },
6380  { 0, true },
6381  { 0, true },
6382  { 0, true },
6383  { 0, true },
6384  { 0, true },
6385  { 0, true },
6386  { 0, true },
6387  { 0, true },
6388  { 0, true },
6389  { 0, true },
6390  { 0, true },
6391  { 0, true },
6392  { 0, true },
6393  { 1, true },
6394  { 1, true },
6395  { 1, true },
6396  { 1, true },
6397  { 1, true },
6398  { 1, true },
6399  { 1, true },
6400  { 1, true },
6401  { 0, false },
6402  { 0, false },
6403  { 0, false },
6404  { 0, false },
6405  { 0, false },
6406  { 0, false },
6407  { 0, false },
6408  { 0, false },
6409  { 0, true },
6410  { 0, true },
6411  { 0, true },
6412  { 0, true },
6413  { 0, true },
6414  { 0, true },
6415  { 0, true },
6416  { 0, true },
6417  { 1, true },
6418  { 1, true },
6419  { 1, true },
6420  { 1, true },
6421  { 1, true },
6422  { 1, true },
6423  { 1, true },
6424  { 1, true },
6425  { 1, true },
6426  { 1, true },
6427  { 1, true },
6428  { 1, true },
6429  { 1, true },
6430  { 1, true },
6431  { 1, true },
6432  { 1, true },
6433  { 1, true },
6434  { 1, true },
6435  { 1, true },
6436  { 1, true },
6437  { 1, true },
6438  { 1, true },
6439  { 1, true },
6440  { 1, true },
6441  { 0, true },
6442  { 0, true },
6443  { 0, true },
6444  { 0, true },
6445  { 0, true },
6446  { 0, true },
6447  { 0, true },
6448  { 0, true },
6449  { 0, true },
6450  { 0, true },
6451  { 0, true },
6452  { 0, true },
6453  { 0, true },
6454  { 0, true },
6455  { 0, true },
6456  { 0, true },
6457  { 0, true },
6458  { 0, true },
6459  { 0, true },
6460  { 0, true },
6461  { 0, true },
6462  { 0, true },
6463  { 0, true },
6464  { 0, true },
6465  { 0, true },
6466  { 0, true },
6467  { 0, true },
6468  { 0, true },
6469  { 0, true },
6470  { 0, true },
6471  { 0, true },
6472  { 0, true },
6473  { 0, true },
6474  { 0, true },
6475  { 0, true },
6476  { 0, true },
6477  { 0, true },
6478  { 0, true },
6479  { 0, true },
6480  { 0, true },
6481  { 0, true },
6482  { 0, true },
6483  { 0, true },
6484  { 0, true },
6485  { 0, true },
6486  { 0, true },
6487  { 0, true },
6488  { 0, true },
6489  { 0, true },
6490  { 0, true },
6491  { 0, true },
6492  { 0, true },
6493  { 0, true },
6494  { 0, true },
6495  { 0, true },
6496  { 0, true },
6497  { 0, true },
6498  { 0, true },
6499  { 0, true },
6500  { 0, true },
6501  { 0, true },
6502  { 0, true },
6503  { 0, true },
6504  { 0, true },
6505  { 1, true },
6506  { 1, true },
6507  { 1, true },
6508  { 1, true },
6509  { 1, true },
6510  { 1, true },
6511  { 1, true },
6512  { 1, true },
6513  { 0, false },
6514  { 0, false },
6515  { 0, false },
6516  { 0, false },
6517  { 0, false },
6518  { 0, false },
6519  { 0, false },
6520  { 0, false },
6521  { 1, true },
6522  { 1, true },
6523  { 1, true },
6524  { 1, true },
6525  { 1, true },
6526  { 1, true },
6527  { 1, true },
6528  { 1, true },
6529  { 1, true },
6530  { 1, true },
6531  { 1, true },
6532  { 1, true },
6533  { 1, true },
6534  { 1, true },
6535  { 1, true },
6536  { 1, true },
6537  { 0, false },
6538  { 0, false },
6539  { 0, false },
6540  { 0, false },
6541  { 0, false },
6542  { 0, false },
6543  { 0, false },
6544  { 0, false },
6545};
6546unsigned X86GenRegisterInfo::composeSubRegIndicesImpl(unsigned IdxA, unsigned IdxB) const {
6547  static const uint8_t Rows[1][8] = {
6548    { 1, 2, 3, 4, 5, 0, 7, 0, },
6549  };
6550
6551  --IdxA; assert(IdxA < 8);
6552  --IdxB; assert(IdxB < 8);
6553  return Rows[0][IdxB];
6554}
6555
6556  struct MaskRolOp {
6557    LaneBitmask Mask;
6558    uint8_t  RotateLeft;
6559  };
6560  static const MaskRolOp LaneMaskComposeSequences[] = {
6561    { LaneBitmask(0xFFFFFFFF),  0 }, { LaneBitmask::getNone(), 0 },   // Sequence 0
6562    { LaneBitmask(0xFFFFFFFF),  1 }, { LaneBitmask::getNone(), 0 },   // Sequence 2
6563    { LaneBitmask(0xFFFFFFFF),  2 }, { LaneBitmask::getNone(), 0 },   // Sequence 4
6564    { LaneBitmask(0xFFFFFFFF),  3 }, { LaneBitmask::getNone(), 0 },   // Sequence 6
6565    { LaneBitmask(0xFFFFFFFF),  4 }, { LaneBitmask::getNone(), 0 }  // Sequence 8
6566  };
6567  static const MaskRolOp *const CompositeSequences[] = {
6568    &LaneMaskComposeSequences[0], // to sub_8bit
6569    &LaneMaskComposeSequences[2], // to sub_8bit_hi
6570    &LaneMaskComposeSequences[4], // to sub_8bit_hi_phony
6571    &LaneMaskComposeSequences[0], // to sub_16bit
6572    &LaneMaskComposeSequences[6], // to sub_16bit_hi
6573    &LaneMaskComposeSequences[0], // to sub_32bit
6574    &LaneMaskComposeSequences[8], // to sub_xmm
6575    &LaneMaskComposeSequences[0] // to sub_ymm
6576  };
6577
6578LaneBitmask X86GenRegisterInfo::composeSubRegIndexLaneMaskImpl(unsigned IdxA, LaneBitmask LaneMask) const {
6579  --IdxA; assert(IdxA < 8 && "Subregister index out of bounds");
6580  LaneBitmask Result;
6581  for (const MaskRolOp *Ops = CompositeSequences[IdxA]; Ops->Mask.any(); ++Ops) {
6582    LaneBitmask::Type M = LaneMask.getAsInteger() & Ops->Mask.getAsInteger();
6583    if (unsigned S = Ops->RotateLeft)
6584      Result |= LaneBitmask((M << S) | (M >> (LaneBitmask::BitWidth - S)));
6585    else
6586      Result |= LaneBitmask(M);
6587  }
6588  return Result;
6589}
6590
6591LaneBitmask X86GenRegisterInfo::reverseComposeSubRegIndexLaneMaskImpl(unsigned IdxA,  LaneBitmask LaneMask) const {
6592  LaneMask &= getSubRegIndexLaneMask(IdxA);
6593  --IdxA; assert(IdxA < 8 && "Subregister index out of bounds");
6594  LaneBitmask Result;
6595  for (const MaskRolOp *Ops = CompositeSequences[IdxA]; Ops->Mask.any(); ++Ops) {
6596    LaneBitmask::Type M = LaneMask.getAsInteger();
6597    if (unsigned S = Ops->RotateLeft)
6598      Result |= LaneBitmask((M >> S) | (M << (LaneBitmask::BitWidth - S)));
6599    else
6600      Result |= LaneBitmask(M);
6601  }
6602  return Result;
6603}
6604
6605const TargetRegisterClass *X86GenRegisterInfo::getSubClassWithSubReg(const TargetRegisterClass *RC, unsigned Idx) const {
6606  static const uint8_t Table[86][8] = {
6607    {	// GR8
6608      0,	// sub_8bit
6609      0,	// sub_8bit_hi
6610      0,	// sub_8bit_hi_phony
6611      0,	// sub_16bit
6612      0,	// sub_16bit_hi
6613      0,	// sub_32bit
6614      0,	// sub_xmm
6615      0,	// sub_ymm
6616    },
6617    {	// GRH8
6618      0,	// sub_8bit
6619      0,	// sub_8bit_hi
6620      0,	// sub_8bit_hi_phony
6621      0,	// sub_16bit
6622      0,	// sub_16bit_hi
6623      0,	// sub_32bit
6624      0,	// sub_xmm
6625      0,	// sub_ymm
6626    },
6627    {	// GR8_NOREX
6628      0,	// sub_8bit
6629      0,	// sub_8bit_hi
6630      0,	// sub_8bit_hi_phony
6631      0,	// sub_16bit
6632      0,	// sub_16bit_hi
6633      0,	// sub_32bit
6634      0,	// sub_xmm
6635      0,	// sub_ymm
6636    },
6637    {	// GR8_ABCD_H
6638      0,	// sub_8bit
6639      0,	// sub_8bit_hi
6640      0,	// sub_8bit_hi_phony
6641      0,	// sub_16bit
6642      0,	// sub_16bit_hi
6643      0,	// sub_32bit
6644      0,	// sub_xmm
6645      0,	// sub_ymm
6646    },
6647    {	// GR8_ABCD_L
6648      0,	// sub_8bit
6649      0,	// sub_8bit_hi
6650      0,	// sub_8bit_hi_phony
6651      0,	// sub_16bit
6652      0,	// sub_16bit_hi
6653      0,	// sub_32bit
6654      0,	// sub_xmm
6655      0,	// sub_ymm
6656    },
6657    {	// GRH16
6658      0,	// sub_8bit
6659      0,	// sub_8bit_hi
6660      0,	// sub_8bit_hi_phony
6661      0,	// sub_16bit
6662      0,	// sub_16bit_hi
6663      0,	// sub_32bit
6664      0,	// sub_xmm
6665      0,	// sub_ymm
6666    },
6667    {	// GR16
6668      7,	// sub_8bit -> GR16
6669      20,	// sub_8bit_hi -> GR16_ABCD
6670      0,	// sub_8bit_hi_phony
6671      0,	// sub_16bit
6672      0,	// sub_16bit_hi
6673      0,	// sub_32bit
6674      0,	// sub_xmm
6675      0,	// sub_ymm
6676    },
6677    {	// GR16_NOREX
6678      8,	// sub_8bit -> GR16_NOREX
6679      20,	// sub_8bit_hi -> GR16_ABCD
6680      0,	// sub_8bit_hi_phony
6681      0,	// sub_16bit
6682      0,	// sub_16bit_hi
6683      0,	// sub_32bit
6684      0,	// sub_xmm
6685      0,	// sub_ymm
6686    },
6687    {	// VK1
6688      0,	// sub_8bit
6689      0,	// sub_8bit_hi
6690      0,	// sub_8bit_hi_phony
6691      0,	// sub_16bit
6692      0,	// sub_16bit_hi
6693      0,	// sub_32bit
6694      0,	// sub_xmm
6695      0,	// sub_ymm
6696    },
6697    {	// VK16
6698      0,	// sub_8bit
6699      0,	// sub_8bit_hi
6700      0,	// sub_8bit_hi_phony
6701      0,	// sub_16bit
6702      0,	// sub_16bit_hi
6703      0,	// sub_32bit
6704      0,	// sub_xmm
6705      0,	// sub_ymm
6706    },
6707    {	// VK2
6708      0,	// sub_8bit
6709      0,	// sub_8bit_hi
6710      0,	// sub_8bit_hi_phony
6711      0,	// sub_16bit
6712      0,	// sub_16bit_hi
6713      0,	// sub_32bit
6714      0,	// sub_xmm
6715      0,	// sub_ymm
6716    },
6717    {	// VK4
6718      0,	// sub_8bit
6719      0,	// sub_8bit_hi
6720      0,	// sub_8bit_hi_phony
6721      0,	// sub_16bit
6722      0,	// sub_16bit_hi
6723      0,	// sub_32bit
6724      0,	// sub_xmm
6725      0,	// sub_ymm
6726    },
6727    {	// VK8
6728      0,	// sub_8bit
6729      0,	// sub_8bit_hi
6730      0,	// sub_8bit_hi_phony
6731      0,	// sub_16bit
6732      0,	// sub_16bit_hi
6733      0,	// sub_32bit
6734      0,	// sub_xmm
6735      0,	// sub_ymm
6736    },
6737    {	// VK16WM
6738      0,	// sub_8bit
6739      0,	// sub_8bit_hi
6740      0,	// sub_8bit_hi_phony
6741      0,	// sub_16bit
6742      0,	// sub_16bit_hi
6743      0,	// sub_32bit
6744      0,	// sub_xmm
6745      0,	// sub_ymm
6746    },
6747    {	// VK1WM
6748      0,	// sub_8bit
6749      0,	// sub_8bit_hi
6750      0,	// sub_8bit_hi_phony
6751      0,	// sub_16bit
6752      0,	// sub_16bit_hi
6753      0,	// sub_32bit
6754      0,	// sub_xmm
6755      0,	// sub_ymm
6756    },
6757    {	// VK2WM
6758      0,	// sub_8bit
6759      0,	// sub_8bit_hi
6760      0,	// sub_8bit_hi_phony
6761      0,	// sub_16bit
6762      0,	// sub_16bit_hi
6763      0,	// sub_32bit
6764      0,	// sub_xmm
6765      0,	// sub_ymm
6766    },
6767    {	// VK4WM
6768      0,	// sub_8bit
6769      0,	// sub_8bit_hi
6770      0,	// sub_8bit_hi_phony
6771      0,	// sub_16bit
6772      0,	// sub_16bit_hi
6773      0,	// sub_32bit
6774      0,	// sub_xmm
6775      0,	// sub_ymm
6776    },
6777    {	// VK8WM
6778      0,	// sub_8bit
6779      0,	// sub_8bit_hi
6780      0,	// sub_8bit_hi_phony
6781      0,	// sub_16bit
6782      0,	// sub_16bit_hi
6783      0,	// sub_32bit
6784      0,	// sub_xmm
6785      0,	// sub_ymm
6786    },
6787    {	// SEGMENT_REG
6788      0,	// sub_8bit
6789      0,	// sub_8bit_hi
6790      0,	// sub_8bit_hi_phony
6791      0,	// sub_16bit
6792      0,	// sub_16bit_hi
6793      0,	// sub_32bit
6794      0,	// sub_xmm
6795      0,	// sub_ymm
6796    },
6797    {	// GR16_ABCD
6798      20,	// sub_8bit -> GR16_ABCD
6799      20,	// sub_8bit_hi -> GR16_ABCD
6800      0,	// sub_8bit_hi_phony
6801      0,	// sub_16bit
6802      0,	// sub_16bit_hi
6803      0,	// sub_32bit
6804      0,	// sub_xmm
6805      0,	// sub_ymm
6806    },
6807    {	// FPCCR
6808      0,	// sub_8bit
6809      0,	// sub_8bit_hi
6810      0,	// sub_8bit_hi_phony
6811      0,	// sub_16bit
6812      0,	// sub_16bit_hi
6813      0,	// sub_32bit
6814      0,	// sub_xmm
6815      0,	// sub_ymm
6816    },
6817    {	// FR32X
6818      0,	// sub_8bit
6819      0,	// sub_8bit_hi
6820      0,	// sub_8bit_hi_phony
6821      0,	// sub_16bit
6822      0,	// sub_16bit_hi
6823      0,	// sub_32bit
6824      0,	// sub_xmm
6825      0,	// sub_ymm
6826    },
6827    {	// LOW32_ADDR_ACCESS_RBP
6828      25,	// sub_8bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit
6829      36,	// sub_8bit_hi -> GR32_ABCD
6830      0,	// sub_8bit_hi_phony
6831      23,	// sub_16bit -> LOW32_ADDR_ACCESS_RBP
6832      0,	// sub_16bit_hi
6833      39,	// sub_32bit -> LOW32_ADDR_ACCESS_RBP_with_sub_32bit
6834      0,	// sub_xmm
6835      0,	// sub_ymm
6836    },
6837    {	// LOW32_ADDR_ACCESS
6838      28,	// sub_8bit -> GR32
6839      36,	// sub_8bit_hi -> GR32_ABCD
6840      0,	// sub_8bit_hi_phony
6841      24,	// sub_16bit -> LOW32_ADDR_ACCESS
6842      0,	// sub_16bit_hi
6843      43,	// sub_32bit -> LOW32_ADDR_ACCESS_with_sub_32bit
6844      0,	// sub_xmm
6845      0,	// sub_ymm
6846    },
6847    {	// LOW32_ADDR_ACCESS_RBP_with_sub_8bit
6848      25,	// sub_8bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit
6849      36,	// sub_8bit_hi -> GR32_ABCD
6850      0,	// sub_8bit_hi_phony
6851      25,	// sub_16bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit
6852      0,	// sub_16bit_hi
6853      42,	// sub_32bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
6854      0,	// sub_xmm
6855      0,	// sub_ymm
6856    },
6857    {	// DEBUG_REG
6858      0,	// sub_8bit
6859      0,	// sub_8bit_hi
6860      0,	// sub_8bit_hi_phony
6861      0,	// sub_16bit
6862      0,	// sub_16bit_hi
6863      0,	// sub_32bit
6864      0,	// sub_xmm
6865      0,	// sub_ymm
6866    },
6867    {	// FR32
6868      0,	// sub_8bit
6869      0,	// sub_8bit_hi
6870      0,	// sub_8bit_hi_phony
6871      0,	// sub_16bit
6872      0,	// sub_16bit_hi
6873      0,	// sub_32bit
6874      0,	// sub_xmm
6875      0,	// sub_ymm
6876    },
6877    {	// GR32
6878      28,	// sub_8bit -> GR32
6879      36,	// sub_8bit_hi -> GR32_ABCD
6880      0,	// sub_8bit_hi_phony
6881      28,	// sub_16bit -> GR32
6882      0,	// sub_16bit_hi
6883      0,	// sub_32bit
6884      0,	// sub_xmm
6885      0,	// sub_ymm
6886    },
6887    {	// GR32_NOSP
6888      29,	// sub_8bit -> GR32_NOSP
6889      36,	// sub_8bit_hi -> GR32_ABCD
6890      0,	// sub_8bit_hi_phony
6891      29,	// sub_16bit -> GR32_NOSP
6892      0,	// sub_16bit_hi
6893      0,	// sub_32bit
6894      0,	// sub_xmm
6895      0,	// sub_ymm
6896    },
6897    {	// LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX
6898      30,	// sub_8bit -> LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX
6899      36,	// sub_8bit_hi -> GR32_ABCD
6900      0,	// sub_8bit_hi_phony
6901      30,	// sub_16bit -> LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX
6902      0,	// sub_16bit_hi
6903      42,	// sub_32bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
6904      0,	// sub_xmm
6905      0,	// sub_ymm
6906    },
6907    {	// GR32_NOREX
6908      31,	// sub_8bit -> GR32_NOREX
6909      36,	// sub_8bit_hi -> GR32_ABCD
6910      0,	// sub_8bit_hi_phony
6911      31,	// sub_16bit -> GR32_NOREX
6912      0,	// sub_16bit_hi
6913      0,	// sub_32bit
6914      0,	// sub_xmm
6915      0,	// sub_ymm
6916    },
6917    {	// VK32
6918      0,	// sub_8bit
6919      0,	// sub_8bit_hi
6920      0,	// sub_8bit_hi_phony
6921      0,	// sub_16bit
6922      0,	// sub_16bit_hi
6923      0,	// sub_32bit
6924      0,	// sub_xmm
6925      0,	// sub_ymm
6926    },
6927    {	// GR32_NOREX_NOSP
6928      33,	// sub_8bit -> GR32_NOREX_NOSP
6929      36,	// sub_8bit_hi -> GR32_ABCD
6930      0,	// sub_8bit_hi_phony
6931      33,	// sub_16bit -> GR32_NOREX_NOSP
6932      0,	// sub_16bit_hi
6933      0,	// sub_32bit
6934      0,	// sub_xmm
6935      0,	// sub_ymm
6936    },
6937    {	// RFP32
6938      0,	// sub_8bit
6939      0,	// sub_8bit_hi
6940      0,	// sub_8bit_hi_phony
6941      0,	// sub_16bit
6942      0,	// sub_16bit_hi
6943      0,	// sub_32bit
6944      0,	// sub_xmm
6945      0,	// sub_ymm
6946    },
6947    {	// VK32WM
6948      0,	// sub_8bit
6949      0,	// sub_8bit_hi
6950      0,	// sub_8bit_hi_phony
6951      0,	// sub_16bit
6952      0,	// sub_16bit_hi
6953      0,	// sub_32bit
6954      0,	// sub_xmm
6955      0,	// sub_ymm
6956    },
6957    {	// GR32_ABCD
6958      36,	// sub_8bit -> GR32_ABCD
6959      36,	// sub_8bit_hi -> GR32_ABCD
6960      0,	// sub_8bit_hi_phony
6961      36,	// sub_16bit -> GR32_ABCD
6962      0,	// sub_16bit_hi
6963      0,	// sub_32bit
6964      0,	// sub_xmm
6965      0,	// sub_ymm
6966    },
6967    {	// GR32_TC
6968      37,	// sub_8bit -> GR32_TC
6969      37,	// sub_8bit_hi -> GR32_TC
6970      0,	// sub_8bit_hi_phony
6971      37,	// sub_16bit -> GR32_TC
6972      0,	// sub_16bit_hi
6973      0,	// sub_32bit
6974      0,	// sub_xmm
6975      0,	// sub_ymm
6976    },
6977    {	// GR32_AD
6978      38,	// sub_8bit -> GR32_AD
6979      38,	// sub_8bit_hi -> GR32_AD
6980      0,	// sub_8bit_hi_phony
6981      38,	// sub_16bit -> GR32_AD
6982      0,	// sub_16bit_hi
6983      0,	// sub_32bit
6984      0,	// sub_xmm
6985      0,	// sub_ymm
6986    },
6987    {	// LOW32_ADDR_ACCESS_RBP_with_sub_32bit
6988      42,	// sub_8bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
6989      0,	// sub_8bit_hi
6990      0,	// sub_8bit_hi_phony
6991      39,	// sub_16bit -> LOW32_ADDR_ACCESS_RBP_with_sub_32bit
6992      0,	// sub_16bit_hi
6993      39,	// sub_32bit -> LOW32_ADDR_ACCESS_RBP_with_sub_32bit
6994      0,	// sub_xmm
6995      0,	// sub_ymm
6996    },
6997    {	// CCR
6998      0,	// sub_8bit
6999      0,	// sub_8bit_hi
7000      0,	// sub_8bit_hi_phony
7001      0,	// sub_16bit
7002      0,	// sub_16bit_hi
7003      0,	// sub_32bit
7004      0,	// sub_xmm
7005      0,	// sub_ymm
7006    },
7007    {	// DFCCR
7008      0,	// sub_8bit
7009      0,	// sub_8bit_hi
7010      0,	// sub_8bit_hi_phony
7011      0,	// sub_16bit
7012      0,	// sub_16bit_hi
7013      0,	// sub_32bit
7014      0,	// sub_xmm
7015      0,	// sub_ymm
7016    },
7017    {	// LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
7018      42,	// sub_8bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
7019      0,	// sub_8bit_hi
7020      0,	// sub_8bit_hi_phony
7021      42,	// sub_16bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
7022      0,	// sub_16bit_hi
7023      42,	// sub_32bit -> LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
7024      0,	// sub_xmm
7025      0,	// sub_ymm
7026    },
7027    {	// LOW32_ADDR_ACCESS_with_sub_32bit
7028      0,	// sub_8bit
7029      0,	// sub_8bit_hi
7030      0,	// sub_8bit_hi_phony
7031      43,	// sub_16bit -> LOW32_ADDR_ACCESS_with_sub_32bit
7032      0,	// sub_16bit_hi
7033      43,	// sub_32bit -> LOW32_ADDR_ACCESS_with_sub_32bit
7034      0,	// sub_xmm
7035      0,	// sub_ymm
7036    },
7037    {	// RFP64
7038      0,	// sub_8bit
7039      0,	// sub_8bit_hi
7040      0,	// sub_8bit_hi_phony
7041      0,	// sub_16bit
7042      0,	// sub_16bit_hi
7043      0,	// sub_32bit
7044      0,	// sub_xmm
7045      0,	// sub_ymm
7046    },
7047    {	// FR64X
7048      0,	// sub_8bit
7049      0,	// sub_8bit_hi
7050      0,	// sub_8bit_hi_phony
7051      0,	// sub_16bit
7052      0,	// sub_16bit_hi
7053      0,	// sub_32bit
7054      0,	// sub_xmm
7055      0,	// sub_ymm
7056    },
7057    {	// GR64
7058      49,	// sub_8bit -> GR64_with_sub_8bit
7059      65,	// sub_8bit_hi -> GR64_ABCD
7060      0,	// sub_8bit_hi_phony
7061      46,	// sub_16bit -> GR64
7062      0,	// sub_16bit_hi
7063      46,	// sub_32bit -> GR64
7064      0,	// sub_xmm
7065      0,	// sub_ymm
7066    },
7067    {	// CONTROL_REG
7068      0,	// sub_8bit
7069      0,	// sub_8bit_hi
7070      0,	// sub_8bit_hi_phony
7071      0,	// sub_16bit
7072      0,	// sub_16bit_hi
7073      0,	// sub_32bit
7074      0,	// sub_xmm
7075      0,	// sub_ymm
7076    },
7077    {	// FR64
7078      0,	// sub_8bit
7079      0,	// sub_8bit_hi
7080      0,	// sub_8bit_hi_phony
7081      0,	// sub_16bit
7082      0,	// sub_16bit_hi
7083      0,	// sub_32bit
7084      0,	// sub_xmm
7085      0,	// sub_ymm
7086    },
7087    {	// GR64_with_sub_8bit
7088      49,	// sub_8bit -> GR64_with_sub_8bit
7089      65,	// sub_8bit_hi -> GR64_ABCD
7090      0,	// sub_8bit_hi_phony
7091      49,	// sub_16bit -> GR64_with_sub_8bit
7092      0,	// sub_16bit_hi
7093      49,	// sub_32bit -> GR64_with_sub_8bit
7094      0,	// sub_xmm
7095      0,	// sub_ymm
7096    },
7097    {	// GR64_NOSP
7098      50,	// sub_8bit -> GR64_NOSP
7099      65,	// sub_8bit_hi -> GR64_ABCD
7100      0,	// sub_8bit_hi_phony
7101      50,	// sub_16bit -> GR64_NOSP
7102      0,	// sub_16bit_hi
7103      50,	// sub_32bit -> GR64_NOSP
7104      0,	// sub_xmm
7105      0,	// sub_ymm
7106    },
7107    {	// GR64_NOREX
7108      55,	// sub_8bit -> GR64_with_sub_16bit_in_GR16_NOREX
7109      65,	// sub_8bit_hi -> GR64_ABCD
7110      0,	// sub_8bit_hi_phony
7111      51,	// sub_16bit -> GR64_NOREX
7112      0,	// sub_16bit_hi
7113      51,	// sub_32bit -> GR64_NOREX
7114      0,	// sub_xmm
7115      0,	// sub_ymm
7116    },
7117    {	// GR64_TC
7118      53,	// sub_8bit -> GR64_NOSP_and_GR64_TC
7119      67,	// sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
7120      0,	// sub_8bit_hi_phony
7121      52,	// sub_16bit -> GR64_TC
7122      0,	// sub_16bit_hi
7123      52,	// sub_32bit -> GR64_TC
7124      0,	// sub_xmm
7125      0,	// sub_ymm
7126    },
7127    {	// GR64_NOSP_and_GR64_TC
7128      53,	// sub_8bit -> GR64_NOSP_and_GR64_TC
7129      67,	// sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
7130      0,	// sub_8bit_hi_phony
7131      53,	// sub_16bit -> GR64_NOSP_and_GR64_TC
7132      0,	// sub_16bit_hi
7133      53,	// sub_32bit -> GR64_NOSP_and_GR64_TC
7134      0,	// sub_xmm
7135      0,	// sub_ymm
7136    },
7137    {	// GR64_TCW64
7138      59,	// sub_8bit -> GR64_NOSP_and_GR64_TCW64
7139      67,	// sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
7140      0,	// sub_8bit_hi_phony
7141      54,	// sub_16bit -> GR64_TCW64
7142      0,	// sub_16bit_hi
7143      54,	// sub_32bit -> GR64_TCW64
7144      0,	// sub_xmm
7145      0,	// sub_ymm
7146    },
7147    {	// GR64_with_sub_16bit_in_GR16_NOREX
7148      55,	// sub_8bit -> GR64_with_sub_16bit_in_GR16_NOREX
7149      65,	// sub_8bit_hi -> GR64_ABCD
7150      0,	// sub_8bit_hi_phony
7151      55,	// sub_16bit -> GR64_with_sub_16bit_in_GR16_NOREX
7152      0,	// sub_16bit_hi
7153      55,	// sub_32bit -> GR64_with_sub_16bit_in_GR16_NOREX
7154      0,	// sub_xmm
7155      0,	// sub_ymm
7156    },
7157    {	// VK64
7158      0,	// sub_8bit
7159      0,	// sub_8bit_hi
7160      0,	// sub_8bit_hi_phony
7161      0,	// sub_16bit
7162      0,	// sub_16bit_hi
7163      0,	// sub_32bit
7164      0,	// sub_xmm
7165      0,	// sub_ymm
7166    },
7167    {	// VR64
7168      0,	// sub_8bit
7169      0,	// sub_8bit_hi
7170      0,	// sub_8bit_hi_phony
7171      0,	// sub_16bit
7172      0,	// sub_16bit_hi
7173      0,	// sub_32bit
7174      0,	// sub_xmm
7175      0,	// sub_ymm
7176    },
7177    {	// GR64_NOREX_NOSP
7178      58,	// sub_8bit -> GR64_NOREX_NOSP
7179      65,	// sub_8bit_hi -> GR64_ABCD
7180      0,	// sub_8bit_hi_phony
7181      58,	// sub_16bit -> GR64_NOREX_NOSP
7182      0,	// sub_16bit_hi
7183      58,	// sub_32bit -> GR64_NOREX_NOSP
7184      0,	// sub_xmm
7185      0,	// sub_ymm
7186    },
7187    {	// GR64_NOSP_and_GR64_TCW64
7188      59,	// sub_8bit -> GR64_NOSP_and_GR64_TCW64
7189      67,	// sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
7190      0,	// sub_8bit_hi_phony
7191      59,	// sub_16bit -> GR64_NOSP_and_GR64_TCW64
7192      0,	// sub_16bit_hi
7193      59,	// sub_32bit -> GR64_NOSP_and_GR64_TCW64
7194      0,	// sub_xmm
7195      0,	// sub_ymm
7196    },
7197    {	// GR64_TC_and_GR64_TCW64
7198      63,	// sub_8bit -> GR64_TC_and_GR64_NOSP_and_GR64_TCW64
7199      67,	// sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
7200      0,	// sub_8bit_hi_phony
7201      60,	// sub_16bit -> GR64_TC_and_GR64_TCW64
7202      0,	// sub_16bit_hi
7203      60,	// sub_32bit -> GR64_TC_and_GR64_TCW64
7204      0,	// sub_xmm
7205      0,	// sub_ymm
7206    },
7207    {	// VK64WM
7208      0,	// sub_8bit
7209      0,	// sub_8bit_hi
7210      0,	// sub_8bit_hi_phony
7211      0,	// sub_16bit
7212      0,	// sub_16bit_hi
7213      0,	// sub_32bit
7214      0,	// sub_xmm
7215      0,	// sub_ymm
7216    },
7217    {	// GR64_NOREX_and_GR64_TC
7218      64,	// sub_8bit -> GR64_NOREX_NOSP_and_GR64_TC
7219      67,	// sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
7220      0,	// sub_8bit_hi_phony
7221      62,	// sub_16bit -> GR64_NOREX_and_GR64_TC
7222      0,	// sub_16bit_hi
7223      62,	// sub_32bit -> GR64_NOREX_and_GR64_TC
7224      0,	// sub_xmm
7225      0,	// sub_ymm
7226    },
7227    {	// GR64_TC_and_GR64_NOSP_and_GR64_TCW64
7228      63,	// sub_8bit -> GR64_TC_and_GR64_NOSP_and_GR64_TCW64
7229      67,	// sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
7230      0,	// sub_8bit_hi_phony
7231      63,	// sub_16bit -> GR64_TC_and_GR64_NOSP_and_GR64_TCW64
7232      0,	// sub_16bit_hi
7233      63,	// sub_32bit -> GR64_TC_and_GR64_NOSP_and_GR64_TCW64
7234      0,	// sub_xmm
7235      0,	// sub_ymm
7236    },
7237    {	// GR64_NOREX_NOSP_and_GR64_TC
7238      64,	// sub_8bit -> GR64_NOREX_NOSP_and_GR64_TC
7239      67,	// sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
7240      0,	// sub_8bit_hi_phony
7241      64,	// sub_16bit -> GR64_NOREX_NOSP_and_GR64_TC
7242      0,	// sub_16bit_hi
7243      64,	// sub_32bit -> GR64_NOREX_NOSP_and_GR64_TC
7244      0,	// sub_xmm
7245      0,	// sub_ymm
7246    },
7247    {	// GR64_ABCD
7248      65,	// sub_8bit -> GR64_ABCD
7249      65,	// sub_8bit_hi -> GR64_ABCD
7250      0,	// sub_8bit_hi_phony
7251      65,	// sub_16bit -> GR64_ABCD
7252      0,	// sub_16bit_hi
7253      65,	// sub_32bit -> GR64_ABCD
7254      0,	// sub_xmm
7255      0,	// sub_ymm
7256    },
7257    {	// GR64_NOREX_and_GR64_TCW64
7258      67,	// sub_8bit -> GR64_with_sub_32bit_in_GR32_TC
7259      67,	// sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
7260      0,	// sub_8bit_hi_phony
7261      66,	// sub_16bit -> GR64_NOREX_and_GR64_TCW64
7262      0,	// sub_16bit_hi
7263      66,	// sub_32bit -> GR64_NOREX_and_GR64_TCW64
7264      0,	// sub_xmm
7265      0,	// sub_ymm
7266    },
7267    {	// GR64_with_sub_32bit_in_GR32_TC
7268      67,	// sub_8bit -> GR64_with_sub_32bit_in_GR32_TC
7269      67,	// sub_8bit_hi -> GR64_with_sub_32bit_in_GR32_TC
7270      0,	// sub_8bit_hi_phony
7271      67,	// sub_16bit -> GR64_with_sub_32bit_in_GR32_TC
7272      0,	// sub_16bit_hi
7273      67,	// sub_32bit -> GR64_with_sub_32bit_in_GR32_TC
7274      0,	// sub_xmm
7275      0,	// sub_ymm
7276    },
7277    {	// GR64_AD
7278      68,	// sub_8bit -> GR64_AD
7279      68,	// sub_8bit_hi -> GR64_AD
7280      0,	// sub_8bit_hi_phony
7281      68,	// sub_16bit -> GR64_AD
7282      0,	// sub_16bit_hi
7283      68,	// sub_32bit -> GR64_AD
7284      0,	// sub_xmm
7285      0,	// sub_ymm
7286    },
7287    {	// GR64_and_LOW32_ADDR_ACCESS_RBP
7288      70,	// sub_8bit -> GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBP
7289      0,	// sub_8bit_hi
7290      0,	// sub_8bit_hi_phony
7291      69,	// sub_16bit -> GR64_and_LOW32_ADDR_ACCESS_RBP
7292      0,	// sub_16bit_hi
7293      69,	// sub_32bit -> GR64_and_LOW32_ADDR_ACCESS_RBP
7294      0,	// sub_xmm
7295      0,	// sub_ymm
7296    },
7297    {	// GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBP
7298      70,	// sub_8bit -> GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBP
7299      0,	// sub_8bit_hi
7300      0,	// sub_8bit_hi_phony
7301      70,	// sub_16bit -> GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBP
7302      0,	// sub_16bit_hi
7303      70,	// sub_32bit -> GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBP
7304      0,	// sub_xmm
7305      0,	// sub_ymm
7306    },
7307    {	// GR64_and_LOW32_ADDR_ACCESS
7308      0,	// sub_8bit
7309      0,	// sub_8bit_hi
7310      0,	// sub_8bit_hi_phony
7311      71,	// sub_16bit -> GR64_and_LOW32_ADDR_ACCESS
7312      0,	// sub_16bit_hi
7313      71,	// sub_32bit -> GR64_and_LOW32_ADDR_ACCESS
7314      0,	// sub_xmm
7315      0,	// sub_ymm
7316    },
7317    {	// RST
7318      0,	// sub_8bit
7319      0,	// sub_8bit_hi
7320      0,	// sub_8bit_hi_phony
7321      0,	// sub_16bit
7322      0,	// sub_16bit_hi
7323      0,	// sub_32bit
7324      0,	// sub_xmm
7325      0,	// sub_ymm
7326    },
7327    {	// RFP80
7328      0,	// sub_8bit
7329      0,	// sub_8bit_hi
7330      0,	// sub_8bit_hi_phony
7331      0,	// sub_16bit
7332      0,	// sub_16bit_hi
7333      0,	// sub_32bit
7334      0,	// sub_xmm
7335      0,	// sub_ymm
7336    },
7337    {	// VR128X
7338      0,	// sub_8bit
7339      0,	// sub_8bit_hi
7340      0,	// sub_8bit_hi_phony
7341      0,	// sub_16bit
7342      0,	// sub_16bit_hi
7343      0,	// sub_32bit
7344      0,	// sub_xmm
7345      0,	// sub_ymm
7346    },
7347    {	// VR128
7348      0,	// sub_8bit
7349      0,	// sub_8bit_hi
7350      0,	// sub_8bit_hi_phony
7351      0,	// sub_16bit
7352      0,	// sub_16bit_hi
7353      0,	// sub_32bit
7354      0,	// sub_xmm
7355      0,	// sub_ymm
7356    },
7357    {	// VR128H
7358      0,	// sub_8bit
7359      0,	// sub_8bit_hi
7360      0,	// sub_8bit_hi_phony
7361      0,	// sub_16bit
7362      0,	// sub_16bit_hi
7363      0,	// sub_32bit
7364      0,	// sub_xmm
7365      0,	// sub_ymm
7366    },
7367    {	// VR128L
7368      0,	// sub_8bit
7369      0,	// sub_8bit_hi
7370      0,	// sub_8bit_hi_phony
7371      0,	// sub_16bit
7372      0,	// sub_16bit_hi
7373      0,	// sub_32bit
7374      0,	// sub_xmm
7375      0,	// sub_ymm
7376    },
7377    {	// BNDR
7378      0,	// sub_8bit
7379      0,	// sub_8bit_hi
7380      0,	// sub_8bit_hi_phony
7381      0,	// sub_16bit
7382      0,	// sub_16bit_hi
7383      0,	// sub_32bit
7384      0,	// sub_xmm
7385      0,	// sub_ymm
7386    },
7387    {	// VR256X
7388      0,	// sub_8bit
7389      0,	// sub_8bit_hi
7390      0,	// sub_8bit_hi_phony
7391      0,	// sub_16bit
7392      0,	// sub_16bit_hi
7393      0,	// sub_32bit
7394      79,	// sub_xmm -> VR256X
7395      0,	// sub_ymm
7396    },
7397    {	// VR256
7398      0,	// sub_8bit
7399      0,	// sub_8bit_hi
7400      0,	// sub_8bit_hi_phony
7401      0,	// sub_16bit
7402      0,	// sub_16bit_hi
7403      0,	// sub_32bit
7404      80,	// sub_xmm -> VR256
7405      0,	// sub_ymm
7406    },
7407    {	// VR256H
7408      0,	// sub_8bit
7409      0,	// sub_8bit_hi
7410      0,	// sub_8bit_hi_phony
7411      0,	// sub_16bit
7412      0,	// sub_16bit_hi
7413      0,	// sub_32bit
7414      81,	// sub_xmm -> VR256H
7415      0,	// sub_ymm
7416    },
7417    {	// VR256L
7418      0,	// sub_8bit
7419      0,	// sub_8bit_hi
7420      0,	// sub_8bit_hi_phony
7421      0,	// sub_16bit
7422      0,	// sub_16bit_hi
7423      0,	// sub_32bit
7424      82,	// sub_xmm -> VR256L
7425      0,	// sub_ymm
7426    },
7427    {	// VR512
7428      0,	// sub_8bit
7429      0,	// sub_8bit_hi
7430      0,	// sub_8bit_hi_phony
7431      0,	// sub_16bit
7432      0,	// sub_16bit_hi
7433      0,	// sub_32bit
7434      83,	// sub_xmm -> VR512
7435      83,	// sub_ymm -> VR512
7436    },
7437    {	// VR512_with_sub_xmm_in_FR32
7438      0,	// sub_8bit
7439      0,	// sub_8bit_hi
7440      0,	// sub_8bit_hi_phony
7441      0,	// sub_16bit
7442      0,	// sub_16bit_hi
7443      0,	// sub_32bit
7444      84,	// sub_xmm -> VR512_with_sub_xmm_in_FR32
7445      84,	// sub_ymm -> VR512_with_sub_xmm_in_FR32
7446    },
7447    {	// VR512_with_sub_xmm_in_VR128H
7448      0,	// sub_8bit
7449      0,	// sub_8bit_hi
7450      0,	// sub_8bit_hi_phony
7451      0,	// sub_16bit
7452      0,	// sub_16bit_hi
7453      0,	// sub_32bit
7454      85,	// sub_xmm -> VR512_with_sub_xmm_in_VR128H
7455      85,	// sub_ymm -> VR512_with_sub_xmm_in_VR128H
7456    },
7457    {	// VR512_with_sub_xmm_in_VR128L
7458      0,	// sub_8bit
7459      0,	// sub_8bit_hi
7460      0,	// sub_8bit_hi_phony
7461      0,	// sub_16bit
7462      0,	// sub_16bit_hi
7463      0,	// sub_32bit
7464      86,	// sub_xmm -> VR512_with_sub_xmm_in_VR128L
7465      86,	// sub_ymm -> VR512_with_sub_xmm_in_VR128L
7466    },
7467  };
7468  assert(RC && "Missing regclass");
7469  if (!Idx) return RC;
7470  --Idx;
7471  assert(Idx < 8 && "Bad subreg");
7472  unsigned TV = Table[RC->getID()][Idx];
7473  return TV ? getRegClass(TV - 1) : nullptr;
7474}
7475
7476/// Get the weight in units of pressure for this register class.
7477const RegClassWeight &X86GenRegisterInfo::
7478getRegClassWeight(const TargetRegisterClass *RC) const {
7479  static const RegClassWeight RCWeightTable[] = {
7480    {1, 20},  	// GR8
7481    {0, 0},  	// GRH8
7482    {1, 8},  	// GR8_NOREX
7483    {1, 4},  	// GR8_ABCD_H
7484    {1, 4},  	// GR8_ABCD_L
7485    {0, 0},  	// GRH16
7486    {2, 32},  	// GR16
7487    {2, 16},  	// GR16_NOREX
7488    {1, 8},  	// VK1
7489    {1, 8},  	// VK16
7490    {1, 8},  	// VK2
7491    {1, 8},  	// VK4
7492    {1, 8},  	// VK8
7493    {1, 7},  	// VK16WM
7494    {1, 7},  	// VK1WM
7495    {1, 7},  	// VK2WM
7496    {1, 7},  	// VK4WM
7497    {1, 7},  	// VK8WM
7498    {1, 6},  	// SEGMENT_REG
7499    {2, 8},  	// GR16_ABCD
7500    {0, 0},  	// FPCCR
7501    {1, 32},  	// FR32X
7502    {2, 34},  	// LOW32_ADDR_ACCESS_RBP
7503    {2, 34},  	// LOW32_ADDR_ACCESS
7504    {2, 32},  	// LOW32_ADDR_ACCESS_RBP_with_sub_8bit
7505    {1, 16},  	// DEBUG_REG
7506    {1, 16},  	// FR32
7507    {2, 32},  	// GR32
7508    {2, 30},  	// GR32_NOSP
7509    {2, 16},  	// LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX
7510    {2, 16},  	// GR32_NOREX
7511    {1, 8},  	// VK32
7512    {2, 14},  	// GR32_NOREX_NOSP
7513    {1, 7},  	// RFP32
7514    {1, 7},  	// VK32WM
7515    {2, 8},  	// GR32_ABCD
7516    {2, 6},  	// GR32_TC
7517    {2, 4},  	// GR32_AD
7518    {2, 4},  	// LOW32_ADDR_ACCESS_RBP_with_sub_32bit
7519    {0, 0},  	// CCR
7520    {0, 0},  	// DFCCR
7521    {2, 2},  	// LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bit
7522    {2, 2},  	// LOW32_ADDR_ACCESS_with_sub_32bit
7523    {1, 7},  	// RFP64
7524    {1, 32},  	// FR64X
7525    {2, 34},  	// GR64
7526    {1, 16},  	// CONTROL_REG
7527    {1, 16},  	// FR64
7528    {2, 32},  	// GR64_with_sub_8bit
7529    {2, 30},  	// GR64_NOSP
7530    {2, 18},  	// GR64_NOREX
7531    {2, 18},  	// GR64_TC
7532    {2, 16},  	// GR64_NOSP_and_GR64_TC
7533    {2, 16},  	// GR64_TCW64
7534    {2, 16},  	// GR64_with_sub_16bit_in_GR16_NOREX
7535    {1, 8},  	// VK64
7536    {1, 8},  	// VR64
7537    {2, 14},  	// GR64_NOREX_NOSP
7538    {2, 14},  	// GR64_NOSP_and_GR64_TCW64
7539    {2, 14},  	// GR64_TC_and_GR64_TCW64
7540    {1, 7},  	// VK64WM
7541    {2, 12},  	// GR64_NOREX_and_GR64_TC
7542    {2, 12},  	// GR64_TC_and_GR64_NOSP_and_GR64_TCW64
7543    {2, 10},  	// GR64_NOREX_NOSP_and_GR64_TC
7544    {2, 8},  	// GR64_ABCD
7545    {2, 8},  	// GR64_NOREX_and_GR64_TCW64
7546    {2, 6},  	// GR64_with_sub_32bit_in_GR32_TC
7547    {2, 4},  	// GR64_AD
7548    {2, 4},  	// GR64_and_LOW32_ADDR_ACCESS_RBP
7549    {2, 2},  	// GR64_NOREX_NOSP_and_LOW32_ADDR_ACCESS_RBP
7550    {2, 2},  	// GR64_and_LOW32_ADDR_ACCESS
7551    {0, 0},  	// RST
7552    {1, 7},  	// RFP80
7553    {1, 32},  	// VR128X
7554    {1, 16},  	// VR128
7555    {1, 8},  	// VR128H
7556    {1, 8},  	// VR128L
7557    {1, 4},  	// BNDR
7558    {1, 32},  	// VR256X
7559    {1, 16},  	// VR256
7560    {1, 8},  	// VR256H
7561    {1, 8},  	// VR256L
7562    {1, 32},  	// VR512
7563    {1, 16},  	// VR512_with_sub_xmm_in_FR32
7564    {1, 8},  	// VR512_with_sub_xmm_in_VR128H
7565    {1, 8},  	// VR512_with_sub_xmm_in_VR128L
7566  };
7567  return RCWeightTable[RC->getID()];
7568}
7569
7570/// Get the weight in units of pressure for this register unit.
7571unsigned X86GenRegisterInfo::
7572getRegUnitWeight(unsigned RegUnit) const {
7573  assert(RegUnit < 162 && "invalid register unit");
7574  // All register units have unit weight.
7575  return 1;
7576}
7577
7578
7579// Get the number of dimensions of register pressure.
7580unsigned X86GenRegisterInfo::getNumRegPressureSets() const {
7581  return 30;
7582}
7583
7584// Get the name of this register unit pressure set.
7585const char *X86GenRegisterInfo::
7586getRegPressureSetName(unsigned Idx) const {
7587  static const char *const PressureNameTable[] = {
7588    "GR8_ABCD_H",
7589    "GR8_ABCD_L",
7590    "LOW32_ADDR_ACCESS_with_sub_32bit",
7591    "BNDR",
7592    "SEGMENT_REG",
7593    "RFP32",
7594    "VK1",
7595    "VR64",
7596    "VR128H",
7597    "VR128L",
7598    "GR32_TC",
7599    "LOW32_ADDR_ACCESS_with_sub_32bit+GR64_NOREX_and_GR64_TCW64",
7600    "GR64_NOREX_and_GR64_TC",
7601    "LOW32_ADDR_ACCESS_with_sub_32bit+GR64_NOREX_and_GR64_TC",
7602    "DEBUG_REG",
7603    "FR32",
7604    "CONTROL_REG",
7605    "GR64_NOREX",
7606    "GR64_TCW64",
7607    "LOW32_ADDR_ACCESS_with_sub_32bit+GR64_TCW64",
7608    "GR64_TC",
7609    "LOW32_ADDR_ACCESS_with_sub_32bit+GR64_TC",
7610    "GR64_TC+GR64_TCW64",
7611    "GR8",
7612    "GR8+GR64_NOREX",
7613    "GR8+GR64_TCW64",
7614    "GR64_NOREX+GR64_TC",
7615    "GR8+GR64_TC",
7616    "FR32X",
7617    "GR16",
7618  };
7619  return PressureNameTable[Idx];
7620}
7621
7622// Get the register unit pressure limit for this dimension.
7623// This limit must be adjusted dynamically for reserved registers.
7624unsigned X86GenRegisterInfo::
7625getRegPressureSetLimit(const MachineFunction &MF, unsigned Idx) const {
7626  static const uint8_t PressureLimitTable[] = {
7627    4,  	// 0: GR8_ABCD_H
7628    4,  	// 1: GR8_ABCD_L
7629    4,  	// 2: LOW32_ADDR_ACCESS_with_sub_32bit
7630    4,  	// 3: BNDR
7631    6,  	// 4: SEGMENT_REG
7632    7,  	// 5: RFP32
7633    8,  	// 6: VK1
7634    8,  	// 7: VR64
7635    8,  	// 8: VR128H
7636    8,  	// 9: VR128L
7637    10,  	// 10: GR32_TC
7638    10,  	// 11: LOW32_ADDR_ACCESS_with_sub_32bit+GR64_NOREX_and_GR64_TCW64
7639    14,  	// 12: GR64_NOREX_and_GR64_TC
7640    14,  	// 13: LOW32_ADDR_ACCESS_with_sub_32bit+GR64_NOREX_and_GR64_TC
7641    16,  	// 14: DEBUG_REG
7642    16,  	// 15: FR32
7643    16,  	// 16: CONTROL_REG
7644    18,  	// 17: GR64_NOREX
7645    18,  	// 18: GR64_TCW64
7646    18,  	// 19: LOW32_ADDR_ACCESS_with_sub_32bit+GR64_TCW64
7647    20,  	// 20: GR64_TC
7648    20,  	// 21: LOW32_ADDR_ACCESS_with_sub_32bit+GR64_TC
7649    20,  	// 22: GR64_TC+GR64_TCW64
7650    23,  	// 23: GR8
7651    26,  	// 24: GR8+GR64_NOREX
7652    26,  	// 25: GR8+GR64_TCW64
7653    26,  	// 26: GR64_NOREX+GR64_TC
7654    27,  	// 27: GR8+GR64_TC
7655    32,  	// 28: FR32X
7656    34,  	// 29: GR16
7657  };
7658  return PressureLimitTable[Idx];
7659}
7660
7661/// Table of pressure sets per register class or unit.
7662static const int RCSetsTable[] = {
7663  /* 0 */ 3, -1,
7664  /* 2 */ 4, -1,
7665  /* 4 */ 5, -1,
7666  /* 6 */ 6, -1,
7667  /* 8 */ 7, -1,
7668  /* 10 */ 14, -1,
7669  /* 12 */ 16, -1,
7670  /* 14 */ 8, 15, 28, -1,
7671  /* 18 */ 9, 15, 28, -1,
7672  /* 22 */ 17, 24, 26, 29, -1,
7673  /* 27 */ 2, 11, 13, 17, 19, 21, 23, 24, 26, 29, -1,
7674  /* 38 */ 18, 19, 22, 25, 26, 29, -1,
7675  /* 45 */ 23, 24, 25, 27, 29, -1,
7676  /* 51 */ 20, 21, 22, 26, 27, 29, -1,
7677  /* 58 */ 12, 13, 17, 20, 21, 22, 24, 26, 27, 29, -1,
7678  /* 69 */ 18, 19, 20, 21, 22, 25, 26, 27, 29, -1,
7679  /* 79 */ 17, 23, 24, 25, 26, 27, 29, -1,
7680  /* 87 */ 0, 10, 12, 17, 18, 20, 23, 24, 25, 26, 27, 29, -1,
7681  /* 100 */ 1, 10, 12, 17, 18, 20, 23, 24, 25, 26, 27, 29, -1,
7682  /* 113 */ 2, 11, 13, 17, 19, 21, 23, 24, 25, 26, 27, 29, -1,
7683  /* 126 */ 18, 19, 22, 23, 24, 25, 26, 27, 29, -1,
7684  /* 136 */ 12, 13, 17, 20, 21, 22, 23, 24, 25, 26, 27, 29, -1,
7685  /* 149 */ 0, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, -1,
7686  /* 167 */ 1, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, -1,
7687  /* 185 */ 2, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, -1,
7688};
7689
7690/// Get the dimensions of register pressure impacted by this register class.
7691/// Returns a -1 terminated array of pressure set IDs
7692const int* X86GenRegisterInfo::
7693getRegClassPressureSets(const TargetRegisterClass *RC) const {
7694  static const uint8_t RCSetStartTable[] = {
7695    45,1,88,87,100,1,25,22,6,6,6,6,6,6,6,6,6,6,2,88,1,16,25,25,25,10,15,25,25,22,22,6,22,4,6,88,150,150,27,1,1,27,185,4,16,25,12,15,25,25,22,51,51,38,22,6,8,22,38,69,6,58,69,58,88,150,150,150,27,27,185,1,4,16,15,14,18,0,16,15,14,18,16,15,14,18,};
7696  return &RCSetsTable[RCSetStartTable[RC->getID()]];
7697}
7698
7699/// Get the dimensions of register pressure impacted by this register unit.
7700/// Returns a -1 terminated array of pressure set IDs
7701const int* X86GenRegisterInfo::
7702getRegUnitPressureSets(unsigned RegUnit) const {
7703  assert(RegUnit < 162 && "invalid register unit");
7704  static const uint8_t RUSetStartTable[] = {
7705    149,167,87,100,113,1,149,167,2,1,149,136,1,167,2,1,1,1,1,1,1,1,185,1,1,2,136,1,1,79,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,155,1,1,155,1,1,126,1,1,155,1,1,45,1,1,45,1,1,45,1,1,45,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,};
7706  return &RCSetsTable[RUSetStartTable[RegUnit]];
7707}
7708
7709extern const MCRegisterDesc X86RegDesc[];
7710extern const MCPhysReg X86RegDiffLists[];
7711extern const LaneBitmask X86LaneMaskLists[];
7712extern const char X86RegStrings[];
7713extern const char X86RegClassStrings[];
7714extern const MCPhysReg X86RegUnitRoots[][2];
7715extern const uint16_t X86SubRegIdxLists[];
7716extern const MCRegisterInfo::SubRegCoveredBits X86SubRegIdxRanges[];
7717extern const uint16_t X86RegEncodingTable[];
7718// X86 Dwarf<->LLVM register mappings.
7719extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour0Dwarf2L[];
7720extern const unsigned X86DwarfFlavour0Dwarf2LSize;
7721
7722extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour1Dwarf2L[];
7723extern const unsigned X86DwarfFlavour1Dwarf2LSize;
7724
7725extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour2Dwarf2L[];
7726extern const unsigned X86DwarfFlavour2Dwarf2LSize;
7727
7728extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour0Dwarf2L[];
7729extern const unsigned X86EHFlavour0Dwarf2LSize;
7730
7731extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour1Dwarf2L[];
7732extern const unsigned X86EHFlavour1Dwarf2LSize;
7733
7734extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour2Dwarf2L[];
7735extern const unsigned X86EHFlavour2Dwarf2LSize;
7736
7737extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour0L2Dwarf[];
7738extern const unsigned X86DwarfFlavour0L2DwarfSize;
7739
7740extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour1L2Dwarf[];
7741extern const unsigned X86DwarfFlavour1L2DwarfSize;
7742
7743extern const MCRegisterInfo::DwarfLLVMRegPair X86DwarfFlavour2L2Dwarf[];
7744extern const unsigned X86DwarfFlavour2L2DwarfSize;
7745
7746extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour0L2Dwarf[];
7747extern const unsigned X86EHFlavour0L2DwarfSize;
7748
7749extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour1L2Dwarf[];
7750extern const unsigned X86EHFlavour1L2DwarfSize;
7751
7752extern const MCRegisterInfo::DwarfLLVMRegPair X86EHFlavour2L2Dwarf[];
7753extern const unsigned X86EHFlavour2L2DwarfSize;
7754
7755X86GenRegisterInfo::
7756X86GenRegisterInfo(unsigned RA, unsigned DwarfFlavour, unsigned EHFlavour,
7757      unsigned PC, unsigned HwMode)
7758  : TargetRegisterInfo(X86RegInfoDesc, RegisterClasses, RegisterClasses+86,
7759             SubRegIndexNameTable, SubRegIndexLaneMaskTable,
7760             LaneBitmask(0xFFFFFFE0), RegClassInfos, HwMode) {
7761  InitMCRegisterInfo(X86RegDesc, 277, RA, PC,
7762                     X86MCRegisterClasses, 86,
7763                     X86RegUnitRoots,
7764                     162,
7765                     X86RegDiffLists,
7766                     X86LaneMaskLists,
7767                     X86RegStrings,
7768                     X86RegClassStrings,
7769                     X86SubRegIdxLists,
7770                     9,
7771                     X86SubRegIdxRanges,
7772                     X86RegEncodingTable);
7773
7774  switch (DwarfFlavour) {
7775  default:
7776    llvm_unreachable("Unknown DWARF flavour");
7777  case 0:
7778    mapDwarfRegsToLLVMRegs(X86DwarfFlavour0Dwarf2L, X86DwarfFlavour0Dwarf2LSize, false);
7779    break;
7780  case 1:
7781    mapDwarfRegsToLLVMRegs(X86DwarfFlavour1Dwarf2L, X86DwarfFlavour1Dwarf2LSize, false);
7782    break;
7783  case 2:
7784    mapDwarfRegsToLLVMRegs(X86DwarfFlavour2Dwarf2L, X86DwarfFlavour2Dwarf2LSize, false);
7785    break;
7786  }
7787  switch (EHFlavour) {
7788  default:
7789    llvm_unreachable("Unknown DWARF flavour");
7790  case 0:
7791    mapDwarfRegsToLLVMRegs(X86EHFlavour0Dwarf2L, X86EHFlavour0Dwarf2LSize, true);
7792    break;
7793  case 1:
7794    mapDwarfRegsToLLVMRegs(X86EHFlavour1Dwarf2L, X86EHFlavour1Dwarf2LSize, true);
7795    break;
7796  case 2:
7797    mapDwarfRegsToLLVMRegs(X86EHFlavour2Dwarf2L, X86EHFlavour2Dwarf2LSize, true);
7798    break;
7799  }
7800  switch (DwarfFlavour) {
7801  default:
7802    llvm_unreachable("Unknown DWARF flavour");
7803  case 0:
7804    mapLLVMRegsToDwarfRegs(X86DwarfFlavour0L2Dwarf, X86DwarfFlavour0L2DwarfSize, false);
7805    break;
7806  case 1:
7807    mapLLVMRegsToDwarfRegs(X86DwarfFlavour1L2Dwarf, X86DwarfFlavour1L2DwarfSize, false);
7808    break;
7809  case 2:
7810    mapLLVMRegsToDwarfRegs(X86DwarfFlavour2L2Dwarf, X86DwarfFlavour2L2DwarfSize, false);
7811    break;
7812  }
7813  switch (EHFlavour) {
7814  default:
7815    llvm_unreachable("Unknown DWARF flavour");
7816  case 0:
7817    mapLLVMRegsToDwarfRegs(X86EHFlavour0L2Dwarf, X86EHFlavour0L2DwarfSize, true);
7818    break;
7819  case 1:
7820    mapLLVMRegsToDwarfRegs(X86EHFlavour1L2Dwarf, X86EHFlavour1L2DwarfSize, true);
7821    break;
7822  case 2:
7823    mapLLVMRegsToDwarfRegs(X86EHFlavour2L2Dwarf, X86EHFlavour2L2DwarfSize, true);
7824    break;
7825  }
7826}
7827
7828static const MCPhysReg CSR_32_SaveList[] = { X86::ESI, X86::EDI, X86::EBX, X86::EBP, 0 };
7829static const uint32_t CSR_32_RegMask[] = { 0x058703f0, 0x0e0012c1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
7830static const MCPhysReg CSR_32EHRet_SaveList[] = { X86::EAX, X86::EDX, X86::ESI, X86::EDI, X86::EBX, X86::EBP, 0 };
7831static const uint32_t CSR_32EHRet_RegMask[] = { 0x0def83fe, 0x0e0016e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
7832static const MCPhysReg CSR_32_AllRegs_SaveList[] = { X86::EAX, X86::EBX, X86::ECX, X86::EDX, X86::EBP, X86::ESI, X86::EDI, 0 };
7833static const uint32_t CSR_32_AllRegs_RegMask[] = { 0x0fefaffe, 0x0e0017e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
7834static 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 };
7835static const uint32_t CSR_32_AllRegs_AVX_RegMask[] = { 0x0fefaffe, 0x0e0017e1, 0x00000000, 0x00000000, 0x001fe000, 0x001fe000, 0x00000000, 0x00000000, 0x00000000, };
7836static 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 };
7837static const uint32_t CSR_32_AllRegs_AVX512_RegMask[] = { 0x0fefaffe, 0x0e0017e1, 0x00000000, 0x001fe000, 0x001fe000, 0x001fe000, 0x001fe000, 0x00000000, 0x00000000, };
7838static 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 };
7839static const uint32_t CSR_32_AllRegs_SSE_RegMask[] = { 0x0fefaffe, 0x0e0017e1, 0x00000000, 0x00000000, 0x001fe000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
7840static 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 };
7841static const uint32_t CSR_32_RegCall_RegMask[] = { 0x058703f0, 0x7e0032c3, 0x00000000, 0x00000000, 0x001e0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
7842static const MCPhysReg CSR_32_RegCall_NoSSE_SaveList[] = { X86::ESI, X86::EDI, X86::EBX, X86::EBP, X86::ESP, 0 };
7843static const uint32_t CSR_32_RegCall_NoSSE_RegMask[] = { 0x058703f0, 0x7e0032c3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
7844static const MCPhysReg CSR_64_SaveList[] = { X86::RBX, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, 0 };
7845static const uint32_t CSR_64_RegMask[] = { 0x018003f0, 0x000300c0, 0x00000000, 0x00000000, 0x0000001e, 0x00000000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
7846static const MCPhysReg CSR_64EHRet_SaveList[] = { X86::RAX, X86::RDX, X86::RBX, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, 0 };
7847static const uint32_t CSR_64EHRet_RegMask[] = { 0x09e883fe, 0x001384e0, 0x00000000, 0x00000000, 0x0000001e, 0x00000000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
7848static 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 };
7849static const uint32_t CSR_64_AllRegs_RegMask[] = { 0x0fefaffe, 0x0e9f97e1, 0x00000000, 0xe0000000, 0x1fffe01f, 0x00000000, 0x00000000, 0xffffe000, 0x001fffff, };
7850static 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 };
7851static const uint32_t CSR_64_AllRegs_AVX_RegMask[] = { 0x0fefaffe, 0x0e9f97e1, 0x00000000, 0xe0000000, 0x1fffe01f, 0x1fffe000, 0x00000000, 0xffffe000, 0x001fffff, };
7852static 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 };
7853static const uint32_t CSR_64_AllRegs_AVX512_RegMask[] = { 0x0fefaffe, 0x0e9f97e1, 0x00000000, 0xe01fe000, 0xffffe01f, 0xffffffff, 0xffffffff, 0xffffffff, 0x001fffff, };
7854static 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 };
7855static const uint32_t CSR_64_AllRegs_NoSSE_RegMask[] = { 0x0fefaffe, 0x0e9f97e1, 0x00000000, 0xe0000000, 0x0000001f, 0x00000000, 0x00000000, 0xffffe000, 0x001fffff, };
7856static const MCPhysReg CSR_64_CXX_TLS_Darwin_PE_SaveList[] = { X86::RBP, 0 };
7857static const uint32_t CSR_64_CXX_TLS_Darwin_PE_RegMask[] = { 0x008001c0, 0x00010040, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
7858static 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 };
7859static const uint32_t CSR_64_CXX_TLS_Darwin_ViaCopy_RegMask[] = { 0x0b28ae30, 0x0e961581, 0x00000000, 0xe0000000, 0x0000001f, 0x00000000, 0x00000000, 0xffffe000, 0x001fffff, };
7860static const MCPhysReg CSR_64_HHVM_SaveList[] = { X86::R12, 0 };
7861static const uint32_t CSR_64_HHVM_RegMask[] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x02020000, 0x00020202, };
7862static 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 };
7863static const uint32_t CSR_64_Intel_OCL_BI_RegMask[] = { 0x018003f0, 0x000300c0, 0x00000000, 0x00000000, 0x1fe0001e, 0x00000000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
7864static 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 };
7865static const uint32_t CSR_64_Intel_OCL_BI_AVX_RegMask[] = { 0x018003f0, 0x000300c0, 0x00000000, 0x00000000, 0x1fe0001e, 0x1fe00000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
7866static 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 };
7867static const uint32_t CSR_64_Intel_OCL_BI_AVX512_RegMask[] = { 0x05070230, 0x0e8a1281, 0x00000000, 0x001e0000, 0xe0000018, 0xe0001fff, 0xe0001fff, 0x18181fff, 0x00181818, };
7868static 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 };
7869static const uint32_t CSR_64_MostRegs_RegMask[] = { 0x0fafaff0, 0x0e9f17c1, 0x00000000, 0xe0000000, 0x1fffe01f, 0x00000000, 0x00000000, 0xffffe000, 0x001fffff, };
7870static 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 };
7871static const uint32_t CSR_64_RT_AllRegs_RegMask[] = { 0x0fefaffe, 0x7f9fb7e3, 0x00000000, 0xe0000000, 0x1fffe01e, 0x00000000, 0x00000000, 0xfefee000, 0x001efefe, };
7872static 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 };
7873static const uint32_t CSR_64_RT_AllRegs_AVX_RegMask[] = { 0x0fefaffe, 0x7f9fb7e3, 0x00000000, 0xe0000000, 0x1fffe01e, 0x1fffe000, 0x00000000, 0xfefee000, 0x001efefe, };
7874static 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 };
7875static const uint32_t CSR_64_RT_MostRegs_RegMask[] = { 0x0fefaffe, 0x7f9fb7e3, 0x00000000, 0xe0000000, 0x0000001e, 0x00000000, 0x00000000, 0xfefee000, 0x001efefe, };
7876static const MCPhysReg CSR_64_SwiftError_SaveList[] = { X86::RBX, X86::R13, X86::R14, X86::R15, X86::RBP, 0 };
7877static const uint32_t CSR_64_SwiftError_RegMask[] = { 0x018003f0, 0x000300c0, 0x00000000, 0x00000000, 0x0000001c, 0x00000000, 0x00000000, 0x1c1c0000, 0x001c1c1c, };
7878static 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 };
7879static const uint32_t CSR_64_TLS_Darwin_RegMask[] = { 0x0ba8aff0, 0x0e9715c1, 0x00000000, 0xe0000000, 0x0000001f, 0x00000000, 0x00000000, 0xffffe000, 0x001fffff, };
7880static const MCPhysReg CSR_NoRegs_SaveList[] = { 0 };
7881static const uint32_t CSR_NoRegs_RegMask[] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
7882static 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 };
7883static const uint32_t CSR_SysV64_RegCall_RegMask[] = { 0x018003f0, 0x710320c2, 0x00000000, 0x00000000, 0x1fe0001e, 0x00000000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
7884static const MCPhysReg CSR_SysV64_RegCall_NoSSE_SaveList[] = { X86::RBX, X86::RBP, X86::RSP, X86::R12, X86::R13, X86::R14, X86::R15, 0 };
7885static const uint32_t CSR_SysV64_RegCall_NoSSE_RegMask[] = { 0x018003f0, 0x710320c2, 0x00000000, 0x00000000, 0x0000001e, 0x00000000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
7886static 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 };
7887static const uint32_t CSR_Win64_RegMask[] = { 0x058703f0, 0x0e8b12c1, 0x00000000, 0x00000000, 0x1ff8001e, 0x00000000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
7888static 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 };
7889static const uint32_t CSR_Win64_Intel_OCL_BI_AVX_RegMask[] = { 0x058703f0, 0x0e8b12c1, 0x00000000, 0x00000000, 0x1ff8001e, 0x1ff80000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
7890static 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 };
7891static const uint32_t CSR_Win64_Intel_OCL_BI_AVX512_RegMask[] = { 0x058703f0, 0x0e8b12c1, 0x00000000, 0x001e0000, 0xfff8001e, 0xfff80007, 0xfff80007, 0x1e1e0007, 0x001e1e1e, };
7892static const MCPhysReg CSR_Win64_NoSSE_SaveList[] = { X86::RBX, X86::RBP, X86::RDI, X86::RSI, X86::R12, X86::R13, X86::R14, X86::R15, 0 };
7893static const uint32_t CSR_Win64_NoSSE_RegMask[] = { 0x058703f0, 0x0e8b12c1, 0x00000000, 0x00000000, 0x0000001e, 0x00000000, 0x00000000, 0x1e1e0000, 0x001e1e1e, };
7894static 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 };
7895static const uint32_t CSR_Win64_RegCall_RegMask[] = { 0x018003f0, 0x710320c2, 0x00000000, 0x80000000, 0x1fe0001f, 0x00000000, 0x00000000, 0x9f9f8000, 0x001f9f9f, };
7896static 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 };
7897static const uint32_t CSR_Win64_RegCall_NoSSE_RegMask[] = { 0x018003f0, 0x710320c2, 0x00000000, 0x80000000, 0x0000001f, 0x00000000, 0x00000000, 0x9f9f8000, 0x001f9f9f, };
7898static 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 };
7899static const uint32_t CSR_Win64_SwiftError_RegMask[] = { 0x058703f0, 0x0e8b12c1, 0x00000000, 0x00000000, 0x1ff8001c, 0x00000000, 0x00000000, 0x1c1c0000, 0x001c1c1c, };
7900
7901
7902ArrayRef<const uint32_t *> X86GenRegisterInfo::getRegMasks() const {
7903  static const uint32_t *const Masks[] = {
7904    CSR_32_RegMask,
7905    CSR_32EHRet_RegMask,
7906    CSR_32_AllRegs_RegMask,
7907    CSR_32_AllRegs_AVX_RegMask,
7908    CSR_32_AllRegs_AVX512_RegMask,
7909    CSR_32_AllRegs_SSE_RegMask,
7910    CSR_32_RegCall_RegMask,
7911    CSR_32_RegCall_NoSSE_RegMask,
7912    CSR_64_RegMask,
7913    CSR_64EHRet_RegMask,
7914    CSR_64_AllRegs_RegMask,
7915    CSR_64_AllRegs_AVX_RegMask,
7916    CSR_64_AllRegs_AVX512_RegMask,
7917    CSR_64_AllRegs_NoSSE_RegMask,
7918    CSR_64_CXX_TLS_Darwin_PE_RegMask,
7919    CSR_64_CXX_TLS_Darwin_ViaCopy_RegMask,
7920    CSR_64_HHVM_RegMask,
7921    CSR_64_Intel_OCL_BI_RegMask,
7922    CSR_64_Intel_OCL_BI_AVX_RegMask,
7923    CSR_64_Intel_OCL_BI_AVX512_RegMask,
7924    CSR_64_MostRegs_RegMask,
7925    CSR_64_RT_AllRegs_RegMask,
7926    CSR_64_RT_AllRegs_AVX_RegMask,
7927    CSR_64_RT_MostRegs_RegMask,
7928    CSR_64_SwiftError_RegMask,
7929    CSR_64_TLS_Darwin_RegMask,
7930    CSR_NoRegs_RegMask,
7931    CSR_SysV64_RegCall_RegMask,
7932    CSR_SysV64_RegCall_NoSSE_RegMask,
7933    CSR_Win64_RegMask,
7934    CSR_Win64_Intel_OCL_BI_AVX_RegMask,
7935    CSR_Win64_Intel_OCL_BI_AVX512_RegMask,
7936    CSR_Win64_NoSSE_RegMask,
7937    CSR_Win64_RegCall_RegMask,
7938    CSR_Win64_RegCall_NoSSE_RegMask,
7939    CSR_Win64_SwiftError_RegMask,
7940  };
7941  return makeArrayRef(Masks);
7942}
7943
7944ArrayRef<const char *> X86GenRegisterInfo::getRegMaskNames() const {
7945  static const char *const Names[] = {
7946    "CSR_32",
7947    "CSR_32EHRet",
7948    "CSR_32_AllRegs",
7949    "CSR_32_AllRegs_AVX",
7950    "CSR_32_AllRegs_AVX512",
7951    "CSR_32_AllRegs_SSE",
7952    "CSR_32_RegCall",
7953    "CSR_32_RegCall_NoSSE",
7954    "CSR_64",
7955    "CSR_64EHRet",
7956    "CSR_64_AllRegs",
7957    "CSR_64_AllRegs_AVX",
7958    "CSR_64_AllRegs_AVX512",
7959    "CSR_64_AllRegs_NoSSE",
7960    "CSR_64_CXX_TLS_Darwin_PE",
7961    "CSR_64_CXX_TLS_Darwin_ViaCopy",
7962    "CSR_64_HHVM",
7963    "CSR_64_Intel_OCL_BI",
7964    "CSR_64_Intel_OCL_BI_AVX",
7965    "CSR_64_Intel_OCL_BI_AVX512",
7966    "CSR_64_MostRegs",
7967    "CSR_64_RT_AllRegs",
7968    "CSR_64_RT_AllRegs_AVX",
7969    "CSR_64_RT_MostRegs",
7970    "CSR_64_SwiftError",
7971    "CSR_64_TLS_Darwin",
7972    "CSR_NoRegs",
7973    "CSR_SysV64_RegCall",
7974    "CSR_SysV64_RegCall_NoSSE",
7975    "CSR_Win64",
7976    "CSR_Win64_Intel_OCL_BI_AVX",
7977    "CSR_Win64_Intel_OCL_BI_AVX512",
7978    "CSR_Win64_NoSSE",
7979    "CSR_Win64_RegCall",
7980    "CSR_Win64_RegCall_NoSSE",
7981    "CSR_Win64_SwiftError",
7982  };
7983  return makeArrayRef(Names);
7984}
7985
7986const X86FrameLowering *
7987X86GenRegisterInfo::getFrameLowering(const MachineFunction &MF) {
7988  return static_cast<const X86FrameLowering *>(
7989      MF.getSubtarget().getFrameLowering());
7990}
7991
7992} // end namespace llvm
7993
7994#endif // GET_REGINFO_TARGET_DESC
7995
7996