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 { // Register classes...
163 // GPR Register Class...
164 const MCPhysReg GPR[] = {
165 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,
166 };
167
168 // GPR Bit set.
169 const uint8_t GPRBits[] = {
170 0xbe, 0xff, 0xff, 0xff, 0xff, 0x01,
171 };
172
173 // GPR_with_sub_32 Register Class...
174 const MCPhysReg GPR_with_sub_32[] = {
175 Lanai::RCA, Lanai::RR1, Lanai::RR2, Lanai::RV, Lanai::FP, Lanai::SP, Lanai::PC,
176 };
177
178 // GPR_with_sub_32 Bit set.
179 const uint8_t GPR_with_sub_32Bits[] = {
180 0x3e, 0x00, 0x00, 0x00, 0x80, 0x01,
181 };
182
183 // CCR Register Class...
184 const MCPhysReg CCR[] = {
185 Lanai::SR,
186 };
187
188 // CCR Bit set.
189 const uint8_t CCRBits[] = {
190 0x40,
191 };
192
193} // end anonymous namespace
194
195
196#ifdef __GNUC__
197#pragma GCC diagnostic push
198#pragma GCC diagnostic ignored "-Woverlength-strings"
199#endif
200extern const char LanaiRegClassStrings[] = {
201 /* 0 */ "GPR_with_sub_32\000"
202 /* 16 */ "CCR\000"
203 /* 20 */ "GPR\000"
204};
205#ifdef __GNUC__
206#pragma GCC diagnostic pop
207#endif
208
209extern const MCRegisterClass LanaiMCRegisterClasses[] = {
210 { .RegsBegin: GPR, .RegSet: GPRBits, .NameIdx: 20, .RegsSize: 39, .RegSetSize: sizeof(GPRBits), .ID: Lanai::GPRRegClassID, .RegSizeInBits: 32, .CopyCost: 1, .Allocatable: true, .BaseClass: false },
211 { .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 },
212 { .RegsBegin: CCR, .RegSet: CCRBits, .NameIdx: 16, .RegsSize: 1, .RegSetSize: sizeof(CCRBits), .ID: Lanai::CCRRegClassID, .RegSizeInBits: 32, .CopyCost: 255, .Allocatable: false, .BaseClass: false },
213};
214
215// Lanai Dwarf<->LLVM register mappings.
216extern const MCRegisterInfo::DwarfLLVMRegPair LanaiDwarfFlavour0Dwarf2L[] = {
217 { .FromReg: 0U, .ToReg: Lanai::R0 },
218 { .FromReg: 1U, .ToReg: Lanai::R1 },
219 { .FromReg: 2U, .ToReg: Lanai::R2 },
220 { .FromReg: 3U, .ToReg: Lanai::R3 },
221 { .FromReg: 4U, .ToReg: Lanai::R4 },
222 { .FromReg: 5U, .ToReg: Lanai::R5 },
223 { .FromReg: 6U, .ToReg: Lanai::R6 },
224 { .FromReg: 7U, .ToReg: Lanai::R7 },
225 { .FromReg: 8U, .ToReg: Lanai::R8 },
226 { .FromReg: 9U, .ToReg: Lanai::R9 },
227 { .FromReg: 10U, .ToReg: Lanai::R10 },
228 { .FromReg: 11U, .ToReg: Lanai::R11 },
229 { .FromReg: 12U, .ToReg: Lanai::R12 },
230 { .FromReg: 13U, .ToReg: Lanai::R13 },
231 { .FromReg: 14U, .ToReg: Lanai::R14 },
232 { .FromReg: 15U, .ToReg: Lanai::R15 },
233 { .FromReg: 16U, .ToReg: Lanai::R16 },
234 { .FromReg: 17U, .ToReg: Lanai::R17 },
235 { .FromReg: 18U, .ToReg: Lanai::R18 },
236 { .FromReg: 19U, .ToReg: Lanai::R19 },
237 { .FromReg: 20U, .ToReg: Lanai::R20 },
238 { .FromReg: 21U, .ToReg: Lanai::R21 },
239 { .FromReg: 22U, .ToReg: Lanai::R22 },
240 { .FromReg: 23U, .ToReg: Lanai::R23 },
241 { .FromReg: 24U, .ToReg: Lanai::R24 },
242 { .FromReg: 25U, .ToReg: Lanai::R25 },
243 { .FromReg: 26U, .ToReg: Lanai::R26 },
244 { .FromReg: 27U, .ToReg: Lanai::R27 },
245 { .FromReg: 28U, .ToReg: Lanai::R28 },
246 { .FromReg: 29U, .ToReg: Lanai::R29 },
247 { .FromReg: 30U, .ToReg: Lanai::R30 },
248 { .FromReg: 31U, .ToReg: Lanai::R31 },
249};
250extern const unsigned LanaiDwarfFlavour0Dwarf2LSize = std::size(LanaiDwarfFlavour0Dwarf2L);
251
252extern const MCRegisterInfo::DwarfLLVMRegPair LanaiEHFlavour0Dwarf2L[] = {
253 { .FromReg: 0U, .ToReg: Lanai::R0 },
254 { .FromReg: 1U, .ToReg: Lanai::R1 },
255 { .FromReg: 2U, .ToReg: Lanai::R2 },
256 { .FromReg: 3U, .ToReg: Lanai::R3 },
257 { .FromReg: 4U, .ToReg: Lanai::R4 },
258 { .FromReg: 5U, .ToReg: Lanai::R5 },
259 { .FromReg: 6U, .ToReg: Lanai::R6 },
260 { .FromReg: 7U, .ToReg: Lanai::R7 },
261 { .FromReg: 8U, .ToReg: Lanai::R8 },
262 { .FromReg: 9U, .ToReg: Lanai::R9 },
263 { .FromReg: 10U, .ToReg: Lanai::R10 },
264 { .FromReg: 11U, .ToReg: Lanai::R11 },
265 { .FromReg: 12U, .ToReg: Lanai::R12 },
266 { .FromReg: 13U, .ToReg: Lanai::R13 },
267 { .FromReg: 14U, .ToReg: Lanai::R14 },
268 { .FromReg: 15U, .ToReg: Lanai::R15 },
269 { .FromReg: 16U, .ToReg: Lanai::R16 },
270 { .FromReg: 17U, .ToReg: Lanai::R17 },
271 { .FromReg: 18U, .ToReg: Lanai::R18 },
272 { .FromReg: 19U, .ToReg: Lanai::R19 },
273 { .FromReg: 20U, .ToReg: Lanai::R20 },
274 { .FromReg: 21U, .ToReg: Lanai::R21 },
275 { .FromReg: 22U, .ToReg: Lanai::R22 },
276 { .FromReg: 23U, .ToReg: Lanai::R23 },
277 { .FromReg: 24U, .ToReg: Lanai::R24 },
278 { .FromReg: 25U, .ToReg: Lanai::R25 },
279 { .FromReg: 26U, .ToReg: Lanai::R26 },
280 { .FromReg: 27U, .ToReg: Lanai::R27 },
281 { .FromReg: 28U, .ToReg: Lanai::R28 },
282 { .FromReg: 29U, .ToReg: Lanai::R29 },
283 { .FromReg: 30U, .ToReg: Lanai::R30 },
284 { .FromReg: 31U, .ToReg: Lanai::R31 },
285};
286extern const unsigned LanaiEHFlavour0Dwarf2LSize = std::size(LanaiEHFlavour0Dwarf2L);
287
288extern const MCRegisterInfo::DwarfLLVMRegPair LanaiDwarfFlavour0L2Dwarf[] = {
289 { .FromReg: Lanai::FP, .ToReg: 5U },
290 { .FromReg: Lanai::PC, .ToReg: 2U },
291 { .FromReg: Lanai::RCA, .ToReg: 15U },
292 { .FromReg: Lanai::RV, .ToReg: 8U },
293 { .FromReg: Lanai::SP, .ToReg: 4U },
294 { .FromReg: Lanai::R0, .ToReg: 0U },
295 { .FromReg: Lanai::R1, .ToReg: 1U },
296 { .FromReg: Lanai::R2, .ToReg: 2U },
297 { .FromReg: Lanai::R3, .ToReg: 3U },
298 { .FromReg: Lanai::R4, .ToReg: 4U },
299 { .FromReg: Lanai::R5, .ToReg: 5U },
300 { .FromReg: Lanai::R6, .ToReg: 6U },
301 { .FromReg: Lanai::R7, .ToReg: 7U },
302 { .FromReg: Lanai::R8, .ToReg: 8U },
303 { .FromReg: Lanai::R9, .ToReg: 9U },
304 { .FromReg: Lanai::R10, .ToReg: 10U },
305 { .FromReg: Lanai::R11, .ToReg: 11U },
306 { .FromReg: Lanai::R12, .ToReg: 12U },
307 { .FromReg: Lanai::R13, .ToReg: 13U },
308 { .FromReg: Lanai::R14, .ToReg: 14U },
309 { .FromReg: Lanai::R15, .ToReg: 15U },
310 { .FromReg: Lanai::R16, .ToReg: 16U },
311 { .FromReg: Lanai::R17, .ToReg: 17U },
312 { .FromReg: Lanai::R18, .ToReg: 18U },
313 { .FromReg: Lanai::R19, .ToReg: 19U },
314 { .FromReg: Lanai::R20, .ToReg: 20U },
315 { .FromReg: Lanai::R21, .ToReg: 21U },
316 { .FromReg: Lanai::R22, .ToReg: 22U },
317 { .FromReg: Lanai::R23, .ToReg: 23U },
318 { .FromReg: Lanai::R24, .ToReg: 24U },
319 { .FromReg: Lanai::R25, .ToReg: 25U },
320 { .FromReg: Lanai::R26, .ToReg: 26U },
321 { .FromReg: Lanai::R27, .ToReg: 27U },
322 { .FromReg: Lanai::R28, .ToReg: 28U },
323 { .FromReg: Lanai::R29, .ToReg: 29U },
324 { .FromReg: Lanai::R30, .ToReg: 30U },
325 { .FromReg: Lanai::R31, .ToReg: 31U },
326 { .FromReg: Lanai::RR1, .ToReg: 10U },
327 { .FromReg: Lanai::RR2, .ToReg: 11U },
328};
329extern const unsigned LanaiDwarfFlavour0L2DwarfSize = std::size(LanaiDwarfFlavour0L2Dwarf);
330
331extern const MCRegisterInfo::DwarfLLVMRegPair LanaiEHFlavour0L2Dwarf[] = {
332 { .FromReg: Lanai::FP, .ToReg: 5U },
333 { .FromReg: Lanai::PC, .ToReg: 2U },
334 { .FromReg: Lanai::RCA, .ToReg: 15U },
335 { .FromReg: Lanai::RV, .ToReg: 8U },
336 { .FromReg: Lanai::SP, .ToReg: 4U },
337 { .FromReg: Lanai::R0, .ToReg: 0U },
338 { .FromReg: Lanai::R1, .ToReg: 1U },
339 { .FromReg: Lanai::R2, .ToReg: 2U },
340 { .FromReg: Lanai::R3, .ToReg: 3U },
341 { .FromReg: Lanai::R4, .ToReg: 4U },
342 { .FromReg: Lanai::R5, .ToReg: 5U },
343 { .FromReg: Lanai::R6, .ToReg: 6U },
344 { .FromReg: Lanai::R7, .ToReg: 7U },
345 { .FromReg: Lanai::R8, .ToReg: 8U },
346 { .FromReg: Lanai::R9, .ToReg: 9U },
347 { .FromReg: Lanai::R10, .ToReg: 10U },
348 { .FromReg: Lanai::R11, .ToReg: 11U },
349 { .FromReg: Lanai::R12, .ToReg: 12U },
350 { .FromReg: Lanai::R13, .ToReg: 13U },
351 { .FromReg: Lanai::R14, .ToReg: 14U },
352 { .FromReg: Lanai::R15, .ToReg: 15U },
353 { .FromReg: Lanai::R16, .ToReg: 16U },
354 { .FromReg: Lanai::R17, .ToReg: 17U },
355 { .FromReg: Lanai::R18, .ToReg: 18U },
356 { .FromReg: Lanai::R19, .ToReg: 19U },
357 { .FromReg: Lanai::R20, .ToReg: 20U },
358 { .FromReg: Lanai::R21, .ToReg: 21U },
359 { .FromReg: Lanai::R22, .ToReg: 22U },
360 { .FromReg: Lanai::R23, .ToReg: 23U },
361 { .FromReg: Lanai::R24, .ToReg: 24U },
362 { .FromReg: Lanai::R25, .ToReg: 25U },
363 { .FromReg: Lanai::R26, .ToReg: 26U },
364 { .FromReg: Lanai::R27, .ToReg: 27U },
365 { .FromReg: Lanai::R28, .ToReg: 28U },
366 { .FromReg: Lanai::R29, .ToReg: 29U },
367 { .FromReg: Lanai::R30, .ToReg: 30U },
368 { .FromReg: Lanai::R31, .ToReg: 31U },
369 { .FromReg: Lanai::RR1, .ToReg: 10U },
370 { .FromReg: Lanai::RR2, .ToReg: 11U },
371};
372extern const unsigned LanaiEHFlavour0L2DwarfSize = std::size(LanaiEHFlavour0L2Dwarf);
373
374extern const uint16_t LanaiRegEncodingTable[] = {
375 0,
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};
417static inline void InitLanaiMCRegisterInfo(MCRegisterInfo *RI, unsigned RA, unsigned DwarfFlavour = 0, unsigned EHFlavour = 0, unsigned PC = 0) {
418 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,
419RET: LanaiRegEncodingTable);
420
421 switch (DwarfFlavour) {
422 default:
423 llvm_unreachable("Unknown DWARF flavour");
424 case 0:
425 RI->mapDwarfRegsToLLVMRegs(Map: LanaiDwarfFlavour0Dwarf2L, Size: LanaiDwarfFlavour0Dwarf2LSize, isEH: false);
426 break;
427 }
428 switch (EHFlavour) {
429 default:
430 llvm_unreachable("Unknown DWARF flavour");
431 case 0:
432 RI->mapDwarfRegsToLLVMRegs(Map: LanaiEHFlavour0Dwarf2L, Size: LanaiEHFlavour0Dwarf2LSize, isEH: true);
433 break;
434 }
435 switch (DwarfFlavour) {
436 default:
437 llvm_unreachable("Unknown DWARF flavour");
438 case 0:
439 RI->mapLLVMRegsToDwarfRegs(Map: LanaiDwarfFlavour0L2Dwarf, Size: LanaiDwarfFlavour0L2DwarfSize, isEH: false);
440 break;
441 }
442 switch (EHFlavour) {
443 default:
444 llvm_unreachable("Unknown DWARF flavour");
445 case 0:
446 RI->mapLLVMRegsToDwarfRegs(Map: LanaiEHFlavour0L2Dwarf, Size: LanaiEHFlavour0L2DwarfSize, isEH: true);
447 break;
448 }
449}
450
451} // end namespace llvm
452
453