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