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
162// Register classes...
163
164#ifdef __GNUC__
165#pragma GCC diagnostic push
166#pragma GCC diagnostic ignored "-Woverlength-strings"
167#endif
168extern const char LanaiRegClassStrings[] = {
169 /* 0 */ "GPR_with_sub_32\000"
170 /* 16 */ "CCR\000"
171 /* 20 */ "GPR\000"
172};
173#ifdef __GNUC__
174#pragma GCC diagnostic pop
175#endif
176
177using LanaiRegisterClassStorage = MCRegisterClassStorage<3, 47, 11, 4, 2, 1>;
178extern const MCRegisterClassStorage<3, 47, 11, 4, 2, 1> LanaiMCRegisterClassStorage = {
179 .Classes: {
180 {
181 offsetof(LanaiRegisterClassStorage, Regs[0]) - 0 * sizeof(MCRegisterClass),
182 offsetof(LanaiRegisterClassStorage, BitSets[0]) - 0 * sizeof(MCRegisterClass),
183 .NameIdx: 20,
184 .RegSizeInBits: 32,
185 .RegsSize: 39,
186 .RegSetBegin: 1, /* MinRegVal */
187 .RegSetSize: 40, /* RegSetSize */
188 .ID: Lanai::GPRRegClassID,
189 .CopyCost: 1, /* CopyCost */
190 .Allocatable: true, /* Allocatable */
191 .BaseClass: false,
192 offsetof(LanaiRegisterClassStorage, SubClassMasks[0]) - 0 * sizeof(MCRegisterClass),
193 offsetof(LanaiRegisterClassStorage, SuperRegIdxSeqs[0]) - 0 * sizeof(MCRegisterClass),
194 .LaneMask: LaneBitmask(0x0000000000000001),
195 .AllocationPriority: 0,
196 .GlobalPriority: false,
197 .TSFlags: 0x00, /* TSFlags */
198 .SpillStackID: 0, /* SpillStackID */
199 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
200 .CoveredBySubRegs: false, /* CoveredBySubRegs */
201 offsetof(LanaiRegisterClassStorage, SuperClasses[0]) - 0 * sizeof(MCRegisterClass),
202 .SuperClassesSize: 0
203 },
204 {
205 offsetof(LanaiRegisterClassStorage, Regs[39]) - 1 * sizeof(MCRegisterClass),
206 offsetof(LanaiRegisterClassStorage, BitSets[5]) - 1 * sizeof(MCRegisterClass),
207 .NameIdx: 0,
208 .RegSizeInBits: 32,
209 .RegsSize: 7,
210 .RegSetBegin: 1, /* MinRegVal */
211 .RegSetSize: 40, /* RegSetSize */
212 .ID: Lanai::GPR_with_sub_32RegClassID,
213 .CopyCost: 1, /* CopyCost */
214 .Allocatable: true, /* Allocatable */
215 .BaseClass: false,
216 offsetof(LanaiRegisterClassStorage, SubClassMasks[2]) - 1 * sizeof(MCRegisterClass),
217 offsetof(LanaiRegisterClassStorage, SuperRegIdxSeqs[1]) - 1 * sizeof(MCRegisterClass),
218 .LaneMask: LaneBitmask(0x0000000000000001),
219 .AllocationPriority: 0,
220 .GlobalPriority: false,
221 .TSFlags: 0x00, /* TSFlags */
222 .SpillStackID: 0, /* SpillStackID */
223 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
224 .CoveredBySubRegs: false, /* CoveredBySubRegs */
225 offsetof(LanaiRegisterClassStorage, SuperClasses[0]) - 1 * sizeof(MCRegisterClass),
226 .SuperClassesSize: 1
227 },
228 {
229 offsetof(LanaiRegisterClassStorage, Regs[46]) - 2 * sizeof(MCRegisterClass),
230 offsetof(LanaiRegisterClassStorage, BitSets[10]) - 2 * sizeof(MCRegisterClass),
231 .NameIdx: 16,
232 .RegSizeInBits: 32,
233 .RegsSize: 1,
234 .RegSetBegin: 6, /* MinRegVal */
235 .RegSetSize: 1, /* RegSetSize */
236 .ID: Lanai::CCRRegClassID,
237 .CopyCost: 255, /* CopyCost */
238 .Allocatable: false, /* Allocatable */
239 .BaseClass: false,
240 offsetof(LanaiRegisterClassStorage, SubClassMasks[3]) - 2 * sizeof(MCRegisterClass),
241 offsetof(LanaiRegisterClassStorage, SuperRegIdxSeqs[1]) - 2 * sizeof(MCRegisterClass),
242 .LaneMask: LaneBitmask(0x0000000000000001),
243 .AllocationPriority: 0,
244 .GlobalPriority: false,
245 .TSFlags: 0x00, /* TSFlags */
246 .SpillStackID: 0, /* SpillStackID */
247 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
248 .CoveredBySubRegs: false, /* CoveredBySubRegs */
249 offsetof(LanaiRegisterClassStorage, SuperClasses[1]) - 2 * sizeof(MCRegisterClass),
250 .SuperClassesSize: 0
251 },
252 },
253 .Regs: {
254 /* 0 */ 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,
255 /* 39 */ Lanai::RCA, Lanai::RR1, Lanai::RR2, Lanai::RV, Lanai::FP, Lanai::SP, Lanai::PC,
256 /* 46 */ Lanai::SR,
257 },
258 .BitSets: {
259 /* 0 */ 0xdf, 0xff, 0xff, 0xff, 0xff,
260 /* 5 */ 0x1f, 0x00, 0x00, 0x00, 0xc0,
261 /* 10 */ 0x01,
262 },
263 .SubClassMasks: {
264 // 0 GPR
265 0x00000003,
266 0x00000002, // sub_32
267 // 2 GPR_with_sub_32
268 0x00000002,
269 // 3 CCR
270 0x00000004,
271 },
272 .SuperRegIdxSeqs: {
273 /* 0 */ 1, 0,
274 },
275 .SuperClasses: {
276 /* 0 GPR */
277 /* 0 GPR_with_sub_32 */ Lanai::GPRRegClassID,
278 /* 1 CCR */
279 }
280};
281
282const MCRegisterClass &getLanaiMCRegisterClass(unsigned RC) {
283 return LanaiMCRegisterClassStorage.Classes[RC];
284}
285
286// Lanai Dwarf<->LLVM register mappings.
287extern const MCRegisterInfo::DwarfLLVMRegPair LanaiDwarfFlavour0Dwarf2L[] = {
288 { .FromReg: 0U, .ToReg: Lanai::R0 },
289 { .FromReg: 1U, .ToReg: Lanai::R1 },
290 { .FromReg: 2U, .ToReg: Lanai::R2 },
291 { .FromReg: 3U, .ToReg: Lanai::R3 },
292 { .FromReg: 4U, .ToReg: Lanai::R4 },
293 { .FromReg: 5U, .ToReg: Lanai::R5 },
294 { .FromReg: 6U, .ToReg: Lanai::R6 },
295 { .FromReg: 7U, .ToReg: Lanai::R7 },
296 { .FromReg: 8U, .ToReg: Lanai::R8 },
297 { .FromReg: 9U, .ToReg: Lanai::R9 },
298 { .FromReg: 10U, .ToReg: Lanai::R10 },
299 { .FromReg: 11U, .ToReg: Lanai::R11 },
300 { .FromReg: 12U, .ToReg: Lanai::R12 },
301 { .FromReg: 13U, .ToReg: Lanai::R13 },
302 { .FromReg: 14U, .ToReg: Lanai::R14 },
303 { .FromReg: 15U, .ToReg: Lanai::R15 },
304 { .FromReg: 16U, .ToReg: Lanai::R16 },
305 { .FromReg: 17U, .ToReg: Lanai::R17 },
306 { .FromReg: 18U, .ToReg: Lanai::R18 },
307 { .FromReg: 19U, .ToReg: Lanai::R19 },
308 { .FromReg: 20U, .ToReg: Lanai::R20 },
309 { .FromReg: 21U, .ToReg: Lanai::R21 },
310 { .FromReg: 22U, .ToReg: Lanai::R22 },
311 { .FromReg: 23U, .ToReg: Lanai::R23 },
312 { .FromReg: 24U, .ToReg: Lanai::R24 },
313 { .FromReg: 25U, .ToReg: Lanai::R25 },
314 { .FromReg: 26U, .ToReg: Lanai::R26 },
315 { .FromReg: 27U, .ToReg: Lanai::R27 },
316 { .FromReg: 28U, .ToReg: Lanai::R28 },
317 { .FromReg: 29U, .ToReg: Lanai::R29 },
318 { .FromReg: 30U, .ToReg: Lanai::R30 },
319 { .FromReg: 31U, .ToReg: Lanai::R31 },
320};
321extern const unsigned LanaiDwarfFlavour0Dwarf2LSize = std::size(LanaiDwarfFlavour0Dwarf2L);
322
323extern const MCRegisterInfo::DwarfLLVMRegPair LanaiEHFlavour0Dwarf2L[] = {
324 { .FromReg: 0U, .ToReg: Lanai::R0 },
325 { .FromReg: 1U, .ToReg: Lanai::R1 },
326 { .FromReg: 2U, .ToReg: Lanai::R2 },
327 { .FromReg: 3U, .ToReg: Lanai::R3 },
328 { .FromReg: 4U, .ToReg: Lanai::R4 },
329 { .FromReg: 5U, .ToReg: Lanai::R5 },
330 { .FromReg: 6U, .ToReg: Lanai::R6 },
331 { .FromReg: 7U, .ToReg: Lanai::R7 },
332 { .FromReg: 8U, .ToReg: Lanai::R8 },
333 { .FromReg: 9U, .ToReg: Lanai::R9 },
334 { .FromReg: 10U, .ToReg: Lanai::R10 },
335 { .FromReg: 11U, .ToReg: Lanai::R11 },
336 { .FromReg: 12U, .ToReg: Lanai::R12 },
337 { .FromReg: 13U, .ToReg: Lanai::R13 },
338 { .FromReg: 14U, .ToReg: Lanai::R14 },
339 { .FromReg: 15U, .ToReg: Lanai::R15 },
340 { .FromReg: 16U, .ToReg: Lanai::R16 },
341 { .FromReg: 17U, .ToReg: Lanai::R17 },
342 { .FromReg: 18U, .ToReg: Lanai::R18 },
343 { .FromReg: 19U, .ToReg: Lanai::R19 },
344 { .FromReg: 20U, .ToReg: Lanai::R20 },
345 { .FromReg: 21U, .ToReg: Lanai::R21 },
346 { .FromReg: 22U, .ToReg: Lanai::R22 },
347 { .FromReg: 23U, .ToReg: Lanai::R23 },
348 { .FromReg: 24U, .ToReg: Lanai::R24 },
349 { .FromReg: 25U, .ToReg: Lanai::R25 },
350 { .FromReg: 26U, .ToReg: Lanai::R26 },
351 { .FromReg: 27U, .ToReg: Lanai::R27 },
352 { .FromReg: 28U, .ToReg: Lanai::R28 },
353 { .FromReg: 29U, .ToReg: Lanai::R29 },
354 { .FromReg: 30U, .ToReg: Lanai::R30 },
355 { .FromReg: 31U, .ToReg: Lanai::R31 },
356};
357extern const unsigned LanaiEHFlavour0Dwarf2LSize = std::size(LanaiEHFlavour0Dwarf2L);
358
359extern const MCRegisterInfo::DwarfLLVMRegPair LanaiDwarfFlavour0L2Dwarf[] = {
360 { .FromReg: Lanai::FP, .ToReg: 5U },
361 { .FromReg: Lanai::PC, .ToReg: 2U },
362 { .FromReg: Lanai::RCA, .ToReg: 15U },
363 { .FromReg: Lanai::RV, .ToReg: 8U },
364 { .FromReg: Lanai::SP, .ToReg: 4U },
365 { .FromReg: Lanai::R0, .ToReg: 0U },
366 { .FromReg: Lanai::R1, .ToReg: 1U },
367 { .FromReg: Lanai::R2, .ToReg: 2U },
368 { .FromReg: Lanai::R3, .ToReg: 3U },
369 { .FromReg: Lanai::R4, .ToReg: 4U },
370 { .FromReg: Lanai::R5, .ToReg: 5U },
371 { .FromReg: Lanai::R6, .ToReg: 6U },
372 { .FromReg: Lanai::R7, .ToReg: 7U },
373 { .FromReg: Lanai::R8, .ToReg: 8U },
374 { .FromReg: Lanai::R9, .ToReg: 9U },
375 { .FromReg: Lanai::R10, .ToReg: 10U },
376 { .FromReg: Lanai::R11, .ToReg: 11U },
377 { .FromReg: Lanai::R12, .ToReg: 12U },
378 { .FromReg: Lanai::R13, .ToReg: 13U },
379 { .FromReg: Lanai::R14, .ToReg: 14U },
380 { .FromReg: Lanai::R15, .ToReg: 15U },
381 { .FromReg: Lanai::R16, .ToReg: 16U },
382 { .FromReg: Lanai::R17, .ToReg: 17U },
383 { .FromReg: Lanai::R18, .ToReg: 18U },
384 { .FromReg: Lanai::R19, .ToReg: 19U },
385 { .FromReg: Lanai::R20, .ToReg: 20U },
386 { .FromReg: Lanai::R21, .ToReg: 21U },
387 { .FromReg: Lanai::R22, .ToReg: 22U },
388 { .FromReg: Lanai::R23, .ToReg: 23U },
389 { .FromReg: Lanai::R24, .ToReg: 24U },
390 { .FromReg: Lanai::R25, .ToReg: 25U },
391 { .FromReg: Lanai::R26, .ToReg: 26U },
392 { .FromReg: Lanai::R27, .ToReg: 27U },
393 { .FromReg: Lanai::R28, .ToReg: 28U },
394 { .FromReg: Lanai::R29, .ToReg: 29U },
395 { .FromReg: Lanai::R30, .ToReg: 30U },
396 { .FromReg: Lanai::R31, .ToReg: 31U },
397 { .FromReg: Lanai::RR1, .ToReg: 10U },
398 { .FromReg: Lanai::RR2, .ToReg: 11U },
399};
400extern const unsigned LanaiDwarfFlavour0L2DwarfSize = std::size(LanaiDwarfFlavour0L2Dwarf);
401
402extern const MCRegisterInfo::DwarfLLVMRegPair LanaiEHFlavour0L2Dwarf[] = {
403 { .FromReg: Lanai::FP, .ToReg: 5U },
404 { .FromReg: Lanai::PC, .ToReg: 2U },
405 { .FromReg: Lanai::RCA, .ToReg: 15U },
406 { .FromReg: Lanai::RV, .ToReg: 8U },
407 { .FromReg: Lanai::SP, .ToReg: 4U },
408 { .FromReg: Lanai::R0, .ToReg: 0U },
409 { .FromReg: Lanai::R1, .ToReg: 1U },
410 { .FromReg: Lanai::R2, .ToReg: 2U },
411 { .FromReg: Lanai::R3, .ToReg: 3U },
412 { .FromReg: Lanai::R4, .ToReg: 4U },
413 { .FromReg: Lanai::R5, .ToReg: 5U },
414 { .FromReg: Lanai::R6, .ToReg: 6U },
415 { .FromReg: Lanai::R7, .ToReg: 7U },
416 { .FromReg: Lanai::R8, .ToReg: 8U },
417 { .FromReg: Lanai::R9, .ToReg: 9U },
418 { .FromReg: Lanai::R10, .ToReg: 10U },
419 { .FromReg: Lanai::R11, .ToReg: 11U },
420 { .FromReg: Lanai::R12, .ToReg: 12U },
421 { .FromReg: Lanai::R13, .ToReg: 13U },
422 { .FromReg: Lanai::R14, .ToReg: 14U },
423 { .FromReg: Lanai::R15, .ToReg: 15U },
424 { .FromReg: Lanai::R16, .ToReg: 16U },
425 { .FromReg: Lanai::R17, .ToReg: 17U },
426 { .FromReg: Lanai::R18, .ToReg: 18U },
427 { .FromReg: Lanai::R19, .ToReg: 19U },
428 { .FromReg: Lanai::R20, .ToReg: 20U },
429 { .FromReg: Lanai::R21, .ToReg: 21U },
430 { .FromReg: Lanai::R22, .ToReg: 22U },
431 { .FromReg: Lanai::R23, .ToReg: 23U },
432 { .FromReg: Lanai::R24, .ToReg: 24U },
433 { .FromReg: Lanai::R25, .ToReg: 25U },
434 { .FromReg: Lanai::R26, .ToReg: 26U },
435 { .FromReg: Lanai::R27, .ToReg: 27U },
436 { .FromReg: Lanai::R28, .ToReg: 28U },
437 { .FromReg: Lanai::R29, .ToReg: 29U },
438 { .FromReg: Lanai::R30, .ToReg: 30U },
439 { .FromReg: Lanai::R31, .ToReg: 31U },
440 { .FromReg: Lanai::RR1, .ToReg: 10U },
441 { .FromReg: Lanai::RR2, .ToReg: 11U },
442};
443extern const unsigned LanaiEHFlavour0L2DwarfSize = std::size(LanaiEHFlavour0L2Dwarf);
444
445extern const uint16_t LanaiRegEncodingTable[] = {
446 0,
447 0,
448 0,
449 0,
450 0,
451 0,
452 0,
453 0,
454 0,
455 0,
456 0,
457 0,
458 0,
459 0,
460 0,
461 0,
462 0,
463 0,
464 0,
465 0,
466 0,
467 0,
468 0,
469 0,
470 0,
471 0,
472 0,
473 0,
474 0,
475 0,
476 0,
477 0,
478 0,
479 0,
480 0,
481 0,
482 0,
483 0,
484 0,
485 0,
486 0,
487};
488static inline void InitLanaiMCRegisterInfo(MCRegisterInfo *RI, unsigned RA, unsigned DwarfFlavour = 0, unsigned EHFlavour = 0, unsigned PC = 0) {
489 RI->InitMCRegisterInfo(D: LanaiRegDesc, NR: 41, RA, PC, C: LanaiMCRegisterClassStorage.Classes, NC: 3, RURoots: LanaiRegUnitRoots, NRU: 33, DL: LanaiRegDiffLists, RUMS: LanaiLaneMaskLists, Strings: LanaiRegStrings, ClassStrings: LanaiRegClassStrings, SubIndices: LanaiSubRegIdxLists, NumIndices: 2,
490RET: LanaiRegEncodingTable, RUI: nullptr);
491
492 switch (DwarfFlavour) {
493 default:
494 llvm_unreachable("Unknown DWARF flavour");
495 case 0:
496 RI->mapDwarfRegsToLLVMRegs(Map: LanaiDwarfFlavour0Dwarf2L, Size: LanaiDwarfFlavour0Dwarf2LSize, isEH: false);
497 break;
498 }
499 switch (EHFlavour) {
500 default:
501 llvm_unreachable("Unknown DWARF flavour");
502 case 0:
503 RI->mapDwarfRegsToLLVMRegs(Map: LanaiEHFlavour0Dwarf2L, Size: LanaiEHFlavour0Dwarf2LSize, isEH: true);
504 break;
505 }
506 switch (DwarfFlavour) {
507 default:
508 llvm_unreachable("Unknown DWARF flavour");
509 case 0:
510 RI->mapLLVMRegsToDwarfRegs(Map: LanaiDwarfFlavour0L2Dwarf, Size: LanaiDwarfFlavour0L2DwarfSize, isEH: false);
511 break;
512 }
513 switch (EHFlavour) {
514 default:
515 llvm_unreachable("Unknown DWARF flavour");
516 case 0:
517 RI->mapLLVMRegsToDwarfRegs(Map: LanaiEHFlavour0L2Dwarf, Size: LanaiEHFlavour0L2DwarfSize, isEH: true);
518 break;
519 }
520}
521
522
523} // namespace llvm
524