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