1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* MC Register Information *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* *|
7\*===----------------------------------------------------------------------===*/
8
9namespace llvm {
10
11extern const int16_t LanaiRegDiffLists[] = {
12 /* 0 */ -22, 0,
13 /* 2 */ -19, 0,
14 /* 4 */ -11, 0,
15 /* 6 */ -7, 0,
16 /* 8 */ -6, 0,
17 /* 10 */ 6, 0,
18 /* 12 */ 7, 0,
19 /* 14 */ 11, 0,
20 /* 16 */ 19, 0,
21 /* 18 */ 22, 0,
22};
23
24extern const LaneBitmask LanaiLaneMaskLists[] = {
25 /* 0 */ LaneBitmask(0x0000000000000001),
26 /* 1 */ LaneBitmask(0xFFFFFFFFFFFFFFFF),
27};
28
29extern const uint16_t LanaiSubRegIdxLists[] = {
30 /* 0 */ 1,
31};
32
33
34#ifdef __GNUC__
35#pragma GCC diagnostic push
36#pragma GCC diagnostic ignored "-Woverlength-strings"
37#endif
38extern const char LanaiRegStrings[] = {
39 /* 0 */ "R10\000"
40 /* 4 */ "R20\000"
41 /* 8 */ "R30\000"
42 /* 12 */ "R0\000"
43 /* 15 */ "R11\000"
44 /* 19 */ "R21\000"
45 /* 23 */ "R31\000"
46 /* 27 */ "RR1\000"
47 /* 31 */ "R12\000"
48 /* 35 */ "R22\000"
49 /* 39 */ "RR2\000"
50 /* 43 */ "R13\000"
51 /* 47 */ "R23\000"
52 /* 51 */ "R3\000"
53 /* 54 */ "R14\000"
54 /* 58 */ "R24\000"
55 /* 62 */ "R4\000"
56 /* 65 */ "R15\000"
57 /* 69 */ "R25\000"
58 /* 73 */ "R5\000"
59 /* 76 */ "R16\000"
60 /* 80 */ "R26\000"
61 /* 84 */ "R6\000"
62 /* 87 */ "R17\000"
63 /* 91 */ "R27\000"
64 /* 95 */ "R7\000"
65 /* 98 */ "R18\000"
66 /* 102 */ "R28\000"
67 /* 106 */ "R8\000"
68 /* 109 */ "R19\000"
69 /* 113 */ "R29\000"
70 /* 117 */ "R9\000"
71 /* 120 */ "RCA\000"
72 /* 124 */ "PC\000"
73 /* 127 */ "FP\000"
74 /* 130 */ "SP\000"
75 /* 133 */ "SR\000"
76 /* 136 */ "RV\000"
77};
78#ifdef __GNUC__
79#pragma GCC diagnostic pop
80#endif
81
82extern const MCRegisterDesc LanaiRegDesc[] = { // Descriptors
83 { .Name: 3, .SubRegs: 0, .SuperRegs: 0, .SubRegIndices: 0, .RegUnits: 0, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
84 { .Name: 127, .SubRegs: 14, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4096, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
85 { .Name: 124, .SubRegs: 12, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4097, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
86 { .Name: 120, .SubRegs: 16, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4098, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
87 { .Name: 136, .SubRegs: 14, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4099, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
88 { .Name: 130, .SubRegs: 10, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4100, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
89 { .Name: 133, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4101, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
90 { .Name: 12, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4102, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
91 { .Name: 28, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4103, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
92 { .Name: 40, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 4097, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
93 { .Name: 51, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4104, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
94 { .Name: 62, .SubRegs: 1, .SuperRegs: 8, .SubRegIndices: 1, .RegUnits: 4100, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
95 { .Name: 73, .SubRegs: 1, .SuperRegs: 4, .SubRegIndices: 1, .RegUnits: 4096, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
96 { .Name: 84, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4105, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
97 { .Name: 95, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4106, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
98 { .Name: 106, .SubRegs: 1, .SuperRegs: 4, .SubRegIndices: 1, .RegUnits: 4099, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
99 { .Name: 117, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4107, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
100 { .Name: 0, .SubRegs: 1, .SuperRegs: 18, .SubRegIndices: 1, .RegUnits: 4108, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
101 { .Name: 15, .SubRegs: 1, .SuperRegs: 18, .SubRegIndices: 1, .RegUnits: 4109, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
102 { .Name: 31, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4110, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
103 { .Name: 43, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4111, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
104 { .Name: 54, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4112, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
105 { .Name: 65, .SubRegs: 1, .SuperRegs: 2, .SubRegIndices: 1, .RegUnits: 4098, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
106 { .Name: 76, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4113, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
107 { .Name: 87, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4114, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
108 { .Name: 98, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4115, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
109 { .Name: 109, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4116, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
110 { .Name: 4, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4117, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
111 { .Name: 19, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4118, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
112 { .Name: 35, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4119, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
113 { .Name: 47, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4120, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
114 { .Name: 58, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4121, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
115 { .Name: 69, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4122, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
116 { .Name: 80, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4123, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
117 { .Name: 91, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4124, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
118 { .Name: 102, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4125, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
119 { .Name: 113, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4126, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
120 { .Name: 8, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4127, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
121 { .Name: 23, .SubRegs: 1, .SuperRegs: 1, .SubRegIndices: 1, .RegUnits: 4128, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
122 { .Name: 27, .SubRegs: 0, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4108, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
123 { .Name: 39, .SubRegs: 0, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4109, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
124};
125
126extern const MCPhysReg LanaiRegUnitRoots[][2] = {
127 { Lanai::R5 },
128 { Lanai::R2 },
129 { Lanai::R15 },
130 { Lanai::R8 },
131 { Lanai::R4 },
132 { Lanai::SR },
133 { Lanai::R0 },
134 { Lanai::R1 },
135 { Lanai::R3 },
136 { Lanai::R6 },
137 { Lanai::R7 },
138 { Lanai::R9 },
139 { Lanai::R10 },
140 { Lanai::R11 },
141 { Lanai::R12 },
142 { Lanai::R13 },
143 { Lanai::R14 },
144 { Lanai::R16 },
145 { Lanai::R17 },
146 { Lanai::R18 },
147 { Lanai::R19 },
148 { Lanai::R20 },
149 { Lanai::R21 },
150 { Lanai::R22 },
151 { Lanai::R23 },
152 { Lanai::R24 },
153 { Lanai::R25 },
154 { Lanai::R26 },
155 { Lanai::R27 },
156 { Lanai::R28 },
157 { Lanai::R29 },
158 { Lanai::R30 },
159 { Lanai::R31 },
160};
161
162namespace {
163
164// Register classes...
165 // GPR Register Class...
166 const MCPhysReg GPR[] = {
167 Lanai::R3, Lanai::R9, Lanai::R12, Lanai::R13, Lanai::R14, Lanai::R16, Lanai::R17, Lanai::R20, Lanai::R21, Lanai::R22, Lanai::R23, Lanai::R24, Lanai::R25, Lanai::R26, Lanai::R27, Lanai::R28, Lanai::R29, Lanai::R30, Lanai::R31, Lanai::R6, Lanai::R7, Lanai::R18, Lanai::R19, Lanai::R15, Lanai::RCA, Lanai::R10, Lanai::RR1, Lanai::R11, Lanai::RR2, Lanai::R8, Lanai::RV, Lanai::R5, Lanai::FP, Lanai::R4, Lanai::SP, Lanai::R2, Lanai::PC, Lanai::R1, Lanai::R0,
168 };
169
170 // GPR Bit set.
171 const uint8_t GPRBits[] = {
172 0xbe, 0xff, 0xff, 0xff, 0xff, 0x01,
173 };
174
175 // GPR_with_sub_32 Register Class...
176 const MCPhysReg GPR_with_sub_32[] = {
177 Lanai::RCA, Lanai::RR1, Lanai::RR2, Lanai::RV, Lanai::FP, Lanai::SP, Lanai::PC,
178 };
179
180 // GPR_with_sub_32 Bit set.
181 const uint8_t GPR_with_sub_32Bits[] = {
182 0x3e, 0x00, 0x00, 0x00, 0x80, 0x01,
183 };
184
185 // CCR Register Class...
186 const MCPhysReg CCR[] = {
187 Lanai::SR,
188 };
189
190 // CCR Bit set.
191 const uint8_t CCRBits[] = {
192 0x40,
193 };
194
195} // namespace
196
197#ifdef __GNUC__
198#pragma GCC diagnostic push
199#pragma GCC diagnostic ignored "-Woverlength-strings"
200#endif
201extern const char LanaiRegClassStrings[] = {
202 /* 0 */ "GPR_with_sub_32\000"
203 /* 16 */ "CCR\000"
204 /* 20 */ "GPR\000"
205};
206#ifdef __GNUC__
207#pragma GCC diagnostic pop
208#endif
209
210extern const MCRegisterClass LanaiMCRegisterClasses[] = {
211 { .RegsBegin: GPR, .RegSet: GPRBits, .NameIdx: 20, .RegsSize: 39, .RegSetSize: sizeof(GPRBits), .ID: Lanai::GPRRegClassID, .RegSizeInBits: 32, .CopyCost: 1, .Allocatable: true, .BaseClass: false },
212 { .RegsBegin: GPR_with_sub_32, .RegSet: GPR_with_sub_32Bits, .NameIdx: 0, .RegsSize: 7, .RegSetSize: sizeof(GPR_with_sub_32Bits), .ID: Lanai::GPR_with_sub_32RegClassID, .RegSizeInBits: 32, .CopyCost: 1, .Allocatable: true, .BaseClass: false },
213 { .RegsBegin: CCR, .RegSet: CCRBits, .NameIdx: 16, .RegsSize: 1, .RegSetSize: sizeof(CCRBits), .ID: Lanai::CCRRegClassID, .RegSizeInBits: 32, .CopyCost: 255, .Allocatable: false, .BaseClass: false },
214};
215
216// Lanai Dwarf<->LLVM register mappings.
217extern const MCRegisterInfo::DwarfLLVMRegPair LanaiDwarfFlavour0Dwarf2L[] = {
218 { .FromReg: 0U, .ToReg: Lanai::R0 },
219 { .FromReg: 1U, .ToReg: Lanai::R1 },
220 { .FromReg: 2U, .ToReg: Lanai::R2 },
221 { .FromReg: 3U, .ToReg: Lanai::R3 },
222 { .FromReg: 4U, .ToReg: Lanai::R4 },
223 { .FromReg: 5U, .ToReg: Lanai::R5 },
224 { .FromReg: 6U, .ToReg: Lanai::R6 },
225 { .FromReg: 7U, .ToReg: Lanai::R7 },
226 { .FromReg: 8U, .ToReg: Lanai::R8 },
227 { .FromReg: 9U, .ToReg: Lanai::R9 },
228 { .FromReg: 10U, .ToReg: Lanai::R10 },
229 { .FromReg: 11U, .ToReg: Lanai::R11 },
230 { .FromReg: 12U, .ToReg: Lanai::R12 },
231 { .FromReg: 13U, .ToReg: Lanai::R13 },
232 { .FromReg: 14U, .ToReg: Lanai::R14 },
233 { .FromReg: 15U, .ToReg: Lanai::R15 },
234 { .FromReg: 16U, .ToReg: Lanai::R16 },
235 { .FromReg: 17U, .ToReg: Lanai::R17 },
236 { .FromReg: 18U, .ToReg: Lanai::R18 },
237 { .FromReg: 19U, .ToReg: Lanai::R19 },
238 { .FromReg: 20U, .ToReg: Lanai::R20 },
239 { .FromReg: 21U, .ToReg: Lanai::R21 },
240 { .FromReg: 22U, .ToReg: Lanai::R22 },
241 { .FromReg: 23U, .ToReg: Lanai::R23 },
242 { .FromReg: 24U, .ToReg: Lanai::R24 },
243 { .FromReg: 25U, .ToReg: Lanai::R25 },
244 { .FromReg: 26U, .ToReg: Lanai::R26 },
245 { .FromReg: 27U, .ToReg: Lanai::R27 },
246 { .FromReg: 28U, .ToReg: Lanai::R28 },
247 { .FromReg: 29U, .ToReg: Lanai::R29 },
248 { .FromReg: 30U, .ToReg: Lanai::R30 },
249 { .FromReg: 31U, .ToReg: Lanai::R31 },
250};
251extern const unsigned LanaiDwarfFlavour0Dwarf2LSize = std::size(LanaiDwarfFlavour0Dwarf2L);
252
253extern const MCRegisterInfo::DwarfLLVMRegPair LanaiEHFlavour0Dwarf2L[] = {
254 { .FromReg: 0U, .ToReg: Lanai::R0 },
255 { .FromReg: 1U, .ToReg: Lanai::R1 },
256 { .FromReg: 2U, .ToReg: Lanai::R2 },
257 { .FromReg: 3U, .ToReg: Lanai::R3 },
258 { .FromReg: 4U, .ToReg: Lanai::R4 },
259 { .FromReg: 5U, .ToReg: Lanai::R5 },
260 { .FromReg: 6U, .ToReg: Lanai::R6 },
261 { .FromReg: 7U, .ToReg: Lanai::R7 },
262 { .FromReg: 8U, .ToReg: Lanai::R8 },
263 { .FromReg: 9U, .ToReg: Lanai::R9 },
264 { .FromReg: 10U, .ToReg: Lanai::R10 },
265 { .FromReg: 11U, .ToReg: Lanai::R11 },
266 { .FromReg: 12U, .ToReg: Lanai::R12 },
267 { .FromReg: 13U, .ToReg: Lanai::R13 },
268 { .FromReg: 14U, .ToReg: Lanai::R14 },
269 { .FromReg: 15U, .ToReg: Lanai::R15 },
270 { .FromReg: 16U, .ToReg: Lanai::R16 },
271 { .FromReg: 17U, .ToReg: Lanai::R17 },
272 { .FromReg: 18U, .ToReg: Lanai::R18 },
273 { .FromReg: 19U, .ToReg: Lanai::R19 },
274 { .FromReg: 20U, .ToReg: Lanai::R20 },
275 { .FromReg: 21U, .ToReg: Lanai::R21 },
276 { .FromReg: 22U, .ToReg: Lanai::R22 },
277 { .FromReg: 23U, .ToReg: Lanai::R23 },
278 { .FromReg: 24U, .ToReg: Lanai::R24 },
279 { .FromReg: 25U, .ToReg: Lanai::R25 },
280 { .FromReg: 26U, .ToReg: Lanai::R26 },
281 { .FromReg: 27U, .ToReg: Lanai::R27 },
282 { .FromReg: 28U, .ToReg: Lanai::R28 },
283 { .FromReg: 29U, .ToReg: Lanai::R29 },
284 { .FromReg: 30U, .ToReg: Lanai::R30 },
285 { .FromReg: 31U, .ToReg: Lanai::R31 },
286};
287extern const unsigned LanaiEHFlavour0Dwarf2LSize = std::size(LanaiEHFlavour0Dwarf2L);
288
289extern const MCRegisterInfo::DwarfLLVMRegPair LanaiDwarfFlavour0L2Dwarf[] = {
290 { .FromReg: Lanai::FP, .ToReg: 5U },
291 { .FromReg: Lanai::PC, .ToReg: 2U },
292 { .FromReg: Lanai::RCA, .ToReg: 15U },
293 { .FromReg: Lanai::RV, .ToReg: 8U },
294 { .FromReg: Lanai::SP, .ToReg: 4U },
295 { .FromReg: Lanai::R0, .ToReg: 0U },
296 { .FromReg: Lanai::R1, .ToReg: 1U },
297 { .FromReg: Lanai::R2, .ToReg: 2U },
298 { .FromReg: Lanai::R3, .ToReg: 3U },
299 { .FromReg: Lanai::R4, .ToReg: 4U },
300 { .FromReg: Lanai::R5, .ToReg: 5U },
301 { .FromReg: Lanai::R6, .ToReg: 6U },
302 { .FromReg: Lanai::R7, .ToReg: 7U },
303 { .FromReg: Lanai::R8, .ToReg: 8U },
304 { .FromReg: Lanai::R9, .ToReg: 9U },
305 { .FromReg: Lanai::R10, .ToReg: 10U },
306 { .FromReg: Lanai::R11, .ToReg: 11U },
307 { .FromReg: Lanai::R12, .ToReg: 12U },
308 { .FromReg: Lanai::R13, .ToReg: 13U },
309 { .FromReg: Lanai::R14, .ToReg: 14U },
310 { .FromReg: Lanai::R15, .ToReg: 15U },
311 { .FromReg: Lanai::R16, .ToReg: 16U },
312 { .FromReg: Lanai::R17, .ToReg: 17U },
313 { .FromReg: Lanai::R18, .ToReg: 18U },
314 { .FromReg: Lanai::R19, .ToReg: 19U },
315 { .FromReg: Lanai::R20, .ToReg: 20U },
316 { .FromReg: Lanai::R21, .ToReg: 21U },
317 { .FromReg: Lanai::R22, .ToReg: 22U },
318 { .FromReg: Lanai::R23, .ToReg: 23U },
319 { .FromReg: Lanai::R24, .ToReg: 24U },
320 { .FromReg: Lanai::R25, .ToReg: 25U },
321 { .FromReg: Lanai::R26, .ToReg: 26U },
322 { .FromReg: Lanai::R27, .ToReg: 27U },
323 { .FromReg: Lanai::R28, .ToReg: 28U },
324 { .FromReg: Lanai::R29, .ToReg: 29U },
325 { .FromReg: Lanai::R30, .ToReg: 30U },
326 { .FromReg: Lanai::R31, .ToReg: 31U },
327 { .FromReg: Lanai::RR1, .ToReg: 10U },
328 { .FromReg: Lanai::RR2, .ToReg: 11U },
329};
330extern const unsigned LanaiDwarfFlavour0L2DwarfSize = std::size(LanaiDwarfFlavour0L2Dwarf);
331
332extern const MCRegisterInfo::DwarfLLVMRegPair LanaiEHFlavour0L2Dwarf[] = {
333 { .FromReg: Lanai::FP, .ToReg: 5U },
334 { .FromReg: Lanai::PC, .ToReg: 2U },
335 { .FromReg: Lanai::RCA, .ToReg: 15U },
336 { .FromReg: Lanai::RV, .ToReg: 8U },
337 { .FromReg: Lanai::SP, .ToReg: 4U },
338 { .FromReg: Lanai::R0, .ToReg: 0U },
339 { .FromReg: Lanai::R1, .ToReg: 1U },
340 { .FromReg: Lanai::R2, .ToReg: 2U },
341 { .FromReg: Lanai::R3, .ToReg: 3U },
342 { .FromReg: Lanai::R4, .ToReg: 4U },
343 { .FromReg: Lanai::R5, .ToReg: 5U },
344 { .FromReg: Lanai::R6, .ToReg: 6U },
345 { .FromReg: Lanai::R7, .ToReg: 7U },
346 { .FromReg: Lanai::R8, .ToReg: 8U },
347 { .FromReg: Lanai::R9, .ToReg: 9U },
348 { .FromReg: Lanai::R10, .ToReg: 10U },
349 { .FromReg: Lanai::R11, .ToReg: 11U },
350 { .FromReg: Lanai::R12, .ToReg: 12U },
351 { .FromReg: Lanai::R13, .ToReg: 13U },
352 { .FromReg: Lanai::R14, .ToReg: 14U },
353 { .FromReg: Lanai::R15, .ToReg: 15U },
354 { .FromReg: Lanai::R16, .ToReg: 16U },
355 { .FromReg: Lanai::R17, .ToReg: 17U },
356 { .FromReg: Lanai::R18, .ToReg: 18U },
357 { .FromReg: Lanai::R19, .ToReg: 19U },
358 { .FromReg: Lanai::R20, .ToReg: 20U },
359 { .FromReg: Lanai::R21, .ToReg: 21U },
360 { .FromReg: Lanai::R22, .ToReg: 22U },
361 { .FromReg: Lanai::R23, .ToReg: 23U },
362 { .FromReg: Lanai::R24, .ToReg: 24U },
363 { .FromReg: Lanai::R25, .ToReg: 25U },
364 { .FromReg: Lanai::R26, .ToReg: 26U },
365 { .FromReg: Lanai::R27, .ToReg: 27U },
366 { .FromReg: Lanai::R28, .ToReg: 28U },
367 { .FromReg: Lanai::R29, .ToReg: 29U },
368 { .FromReg: Lanai::R30, .ToReg: 30U },
369 { .FromReg: Lanai::R31, .ToReg: 31U },
370 { .FromReg: Lanai::RR1, .ToReg: 10U },
371 { .FromReg: Lanai::RR2, .ToReg: 11U },
372};
373extern const unsigned LanaiEHFlavour0L2DwarfSize = std::size(LanaiEHFlavour0L2Dwarf);
374
375extern const uint16_t LanaiRegEncodingTable[] = {
376 0,
377 0,
378 0,
379 0,
380 0,
381 0,
382 0,
383 0,
384 0,
385 0,
386 0,
387 0,
388 0,
389 0,
390 0,
391 0,
392 0,
393 0,
394 0,
395 0,
396 0,
397 0,
398 0,
399 0,
400 0,
401 0,
402 0,
403 0,
404 0,
405 0,
406 0,
407 0,
408 0,
409 0,
410 0,
411 0,
412 0,
413 0,
414 0,
415 0,
416 0,
417};
418static inline void InitLanaiMCRegisterInfo(MCRegisterInfo *RI, unsigned RA, unsigned DwarfFlavour = 0, unsigned EHFlavour = 0, unsigned PC = 0) {
419 RI->InitMCRegisterInfo(D: LanaiRegDesc, NR: 41, RA, PC, C: LanaiMCRegisterClasses, NC: 3, RURoots: LanaiRegUnitRoots, NRU: 33, DL: LanaiRegDiffLists, RUMS: LanaiLaneMaskLists, Strings: LanaiRegStrings, ClassStrings: LanaiRegClassStrings, SubIndices: LanaiSubRegIdxLists, NumIndices: 2,
420RET: LanaiRegEncodingTable, RUI: nullptr);
421
422 switch (DwarfFlavour) {
423 default:
424 llvm_unreachable("Unknown DWARF flavour");
425 case 0:
426 RI->mapDwarfRegsToLLVMRegs(Map: LanaiDwarfFlavour0Dwarf2L, Size: LanaiDwarfFlavour0Dwarf2LSize, isEH: false);
427 break;
428 }
429 switch (EHFlavour) {
430 default:
431 llvm_unreachable("Unknown DWARF flavour");
432 case 0:
433 RI->mapDwarfRegsToLLVMRegs(Map: LanaiEHFlavour0Dwarf2L, Size: LanaiEHFlavour0Dwarf2LSize, isEH: true);
434 break;
435 }
436 switch (DwarfFlavour) {
437 default:
438 llvm_unreachable("Unknown DWARF flavour");
439 case 0:
440 RI->mapLLVMRegsToDwarfRegs(Map: LanaiDwarfFlavour0L2Dwarf, Size: LanaiDwarfFlavour0L2DwarfSize, isEH: false);
441 break;
442 }
443 switch (EHFlavour) {
444 default:
445 llvm_unreachable("Unknown DWARF flavour");
446 case 0:
447 RI->mapLLVMRegsToDwarfRegs(Map: LanaiEHFlavour0L2Dwarf, Size: LanaiEHFlavour0L2DwarfSize, isEH: true);
448 break;
449 }
450}
451
452
453} // namespace llvm
454