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 MSP430RegDiffLists[] = {
12 /* 0 */ -12, 0,
13 /* 2 */ -1, 0,
14 /* 4 */ 1, 0,
15 /* 6 */ 12, 0,
16};
17
18extern const LaneBitmask MSP430LaneMaskLists[] = {
19 /* 0 */ LaneBitmask(0x0000000000000001),
20 /* 1 */ LaneBitmask(0xFFFFFFFFFFFFFFFF),
21};
22
23extern const uint16_t MSP430SubRegIdxLists[] = {
24 /* 0 */ 1,
25};
26
27
28#ifdef __GNUC__
29#pragma GCC diagnostic push
30#pragma GCC diagnostic ignored "-Woverlength-strings"
31#endif
32extern const char MSP430RegStrings[] = {
33 /* 0 */ "R10\000"
34 /* 4 */ "R11\000"
35 /* 8 */ "R12\000"
36 /* 12 */ "R13\000"
37 /* 16 */ "R14\000"
38 /* 20 */ "R4\000"
39 /* 23 */ "R15\000"
40 /* 27 */ "R5\000"
41 /* 30 */ "R6\000"
42 /* 33 */ "R7\000"
43 /* 36 */ "R8\000"
44 /* 39 */ "R9\000"
45 /* 42 */ "R10B\000"
46 /* 47 */ "R11B\000"
47 /* 52 */ "R12B\000"
48 /* 57 */ "R13B\000"
49 /* 62 */ "R14B\000"
50 /* 67 */ "R4B\000"
51 /* 71 */ "R15B\000"
52 /* 76 */ "R5B\000"
53 /* 80 */ "R6B\000"
54 /* 84 */ "R7B\000"
55 /* 88 */ "R8B\000"
56 /* 92 */ "R9B\000"
57 /* 96 */ "PCB\000"
58 /* 100 */ "CGB\000"
59 /* 104 */ "SPB\000"
60 /* 108 */ "SRB\000"
61 /* 112 */ "PC\000"
62 /* 115 */ "CG\000"
63 /* 118 */ "SP\000"
64 /* 121 */ "SR\000"
65};
66#ifdef __GNUC__
67#pragma GCC diagnostic pop
68#endif
69
70extern const MCRegisterDesc MSP430RegDesc[] = { // Descriptors
71 { .Name: 3, .SubRegs: 0, .SuperRegs: 0, .SubRegIndices: 0, .RegUnits: 0, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
72 { .Name: 115, .SubRegs: 4, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4096, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
73 { .Name: 100, .SubRegs: 1, .SuperRegs: 2, .SubRegIndices: 1, .RegUnits: 4096, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
74 { .Name: 112, .SubRegs: 4, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4097, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
75 { .Name: 96, .SubRegs: 1, .SuperRegs: 2, .SubRegIndices: 1, .RegUnits: 4097, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
76 { .Name: 118, .SubRegs: 4, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4098, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
77 { .Name: 104, .SubRegs: 1, .SuperRegs: 2, .SubRegIndices: 1, .RegUnits: 4098, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
78 { .Name: 121, .SubRegs: 4, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4099, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
79 { .Name: 108, .SubRegs: 1, .SuperRegs: 2, .SubRegIndices: 1, .RegUnits: 4099, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
80 { .Name: 20, .SubRegs: 6, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4100, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
81 { .Name: 27, .SubRegs: 6, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4101, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
82 { .Name: 30, .SubRegs: 6, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4102, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
83 { .Name: 33, .SubRegs: 6, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4103, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
84 { .Name: 36, .SubRegs: 6, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4104, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
85 { .Name: 39, .SubRegs: 6, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4105, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
86 { .Name: 0, .SubRegs: 6, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4106, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
87 { .Name: 4, .SubRegs: 6, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4107, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
88 { .Name: 8, .SubRegs: 6, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4108, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
89 { .Name: 12, .SubRegs: 6, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4109, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
90 { .Name: 16, .SubRegs: 6, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4110, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
91 { .Name: 23, .SubRegs: 6, .SuperRegs: 1, .SubRegIndices: 0, .RegUnits: 4111, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
92 { .Name: 67, .SubRegs: 1, .SuperRegs: 0, .SubRegIndices: 1, .RegUnits: 4100, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
93 { .Name: 76, .SubRegs: 1, .SuperRegs: 0, .SubRegIndices: 1, .RegUnits: 4101, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
94 { .Name: 80, .SubRegs: 1, .SuperRegs: 0, .SubRegIndices: 1, .RegUnits: 4102, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
95 { .Name: 84, .SubRegs: 1, .SuperRegs: 0, .SubRegIndices: 1, .RegUnits: 4103, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
96 { .Name: 88, .SubRegs: 1, .SuperRegs: 0, .SubRegIndices: 1, .RegUnits: 4104, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
97 { .Name: 92, .SubRegs: 1, .SuperRegs: 0, .SubRegIndices: 1, .RegUnits: 4105, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
98 { .Name: 42, .SubRegs: 1, .SuperRegs: 0, .SubRegIndices: 1, .RegUnits: 4106, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
99 { .Name: 47, .SubRegs: 1, .SuperRegs: 0, .SubRegIndices: 1, .RegUnits: 4107, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
100 { .Name: 52, .SubRegs: 1, .SuperRegs: 0, .SubRegIndices: 1, .RegUnits: 4108, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
101 { .Name: 57, .SubRegs: 1, .SuperRegs: 0, .SubRegIndices: 1, .RegUnits: 4109, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
102 { .Name: 62, .SubRegs: 1, .SuperRegs: 0, .SubRegIndices: 1, .RegUnits: 4110, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
103 { .Name: 71, .SubRegs: 1, .SuperRegs: 0, .SubRegIndices: 1, .RegUnits: 4111, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
104};
105
106extern const MCPhysReg MSP430RegUnitRoots[][2] = {
107 { MSP430::CGB },
108 { MSP430::PCB },
109 { MSP430::SPB },
110 { MSP430::SRB },
111 { MSP430::R4B },
112 { MSP430::R5B },
113 { MSP430::R6B },
114 { MSP430::R7B },
115 { MSP430::R8B },
116 { MSP430::R9B },
117 { MSP430::R10B },
118 { MSP430::R11B },
119 { MSP430::R12B },
120 { MSP430::R13B },
121 { MSP430::R14B },
122 { MSP430::R15B },
123};
124
125// Register classes...
126
127#ifdef __GNUC__
128#pragma GCC diagnostic push
129#pragma GCC diagnostic ignored "-Woverlength-strings"
130#endif
131extern const char MSP430RegClassStrings[] = {
132 /* 0 */ "GR16\000"
133 /* 5 */ "GR8\000"
134};
135#ifdef __GNUC__
136#pragma GCC diagnostic pop
137#endif
138
139using MSP430RegisterClassStorage = MCRegisterClassStorage<2, 32, 8, 3, 2, 0>;
140extern const MCRegisterClassStorage<2, 32, 8, 3, 2, 0> MSP430MCRegisterClassStorage = {
141 .Classes: {
142 {
143 offsetof(MSP430RegisterClassStorage, Regs[0]) - 0 * sizeof(MCRegisterClass),
144 offsetof(MSP430RegisterClassStorage, BitSets[0]) - 0 * sizeof(MCRegisterClass),
145 .NameIdx: 5,
146 .RegSizeInBits: 8,
147 .RegsSize: 16,
148 .RegSetSize: 5,
149 .ID: MSP430::GR8RegClassID,
150 .CopyCost: 1, /* CopyCost */
151 .Allocatable: true, /* Allocatable */
152 .BaseClass: false,
153 offsetof(MSP430RegisterClassStorage, SubClassMasks[0]) - 0 * sizeof(MCRegisterClass),
154 offsetof(MSP430RegisterClassStorage, SuperRegIdxSeqs[0]) - 0 * sizeof(MCRegisterClass),
155 .LaneMask: LaneBitmask(0x0000000000000001),
156 .AllocationPriority: 0,
157 .GlobalPriority: false,
158 .TSFlags: 0x00, /* TSFlags */
159 .SpillStackID: 0, /* SpillStackID */
160 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
161 .CoveredBySubRegs: false, /* CoveredBySubRegs */
162 offsetof(MSP430RegisterClassStorage, SuperClasses[0]) - 0 * sizeof(MCRegisterClass),
163 .SuperClassesSize: 0
164 },
165 {
166 offsetof(MSP430RegisterClassStorage, Regs[16]) - 1 * sizeof(MCRegisterClass),
167 offsetof(MSP430RegisterClassStorage, BitSets[5]) - 1 * sizeof(MCRegisterClass),
168 .NameIdx: 0,
169 .RegSizeInBits: 16,
170 .RegsSize: 16,
171 .RegSetSize: 3,
172 .ID: MSP430::GR16RegClassID,
173 .CopyCost: 1, /* CopyCost */
174 .Allocatable: true, /* Allocatable */
175 .BaseClass: false,
176 offsetof(MSP430RegisterClassStorage, SubClassMasks[2]) - 1 * sizeof(MCRegisterClass),
177 offsetof(MSP430RegisterClassStorage, SuperRegIdxSeqs[1]) - 1 * sizeof(MCRegisterClass),
178 .LaneMask: LaneBitmask(0x0000000000000001),
179 .AllocationPriority: 0,
180 .GlobalPriority: false,
181 .TSFlags: 0x00, /* TSFlags */
182 .SpillStackID: 0, /* SpillStackID */
183 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
184 .CoveredBySubRegs: false, /* CoveredBySubRegs */
185 offsetof(MSP430RegisterClassStorage, SuperClasses[0]) - 1 * sizeof(MCRegisterClass),
186 .SuperClassesSize: 0
187 },
188 },
189 .Regs: {
190 /* 0 */ MSP430::R12B, MSP430::R13B, MSP430::R14B, MSP430::R15B, MSP430::R11B, MSP430::R10B, MSP430::R9B, MSP430::R8B, MSP430::R7B, MSP430::R6B, MSP430::R5B, MSP430::R4B, MSP430::PCB, MSP430::SPB, MSP430::SRB, MSP430::CGB,
191 /* 16 */ MSP430::R12, MSP430::R13, MSP430::R14, MSP430::R15, MSP430::R11, MSP430::R10, MSP430::R9, MSP430::R8, MSP430::R7, MSP430::R6, MSP430::R5, MSP430::R4, MSP430::PC, MSP430::SP, MSP430::SR, MSP430::CG,
192 },
193 .BitSets: {
194 /* 0 */ 0x54, 0x01, 0xe0, 0xff, 0x01,
195 /* 5 */ 0xaa, 0xfe, 0x1f,
196 },
197 .SubClassMasks: {
198 // 0 GR8
199 0x00000001,
200 0x00000002, // subreg_8bit
201 // 2 GR16
202 0x00000002,
203 },
204 .SuperRegIdxSeqs: {
205 /* 0 */ 1, 0,
206 },
207 .SuperClasses: {
208 /* 0 GR8 */
209 /* 0 GR16 */
210 }
211};
212
213const MCRegisterClass &getMSP430MCRegisterClass(unsigned RC) {
214 return MSP430MCRegisterClassStorage.Classes[RC];
215}
216
217// MSP430 Dwarf<->LLVM register mappings.
218extern const MCRegisterInfo::DwarfLLVMRegPair MSP430DwarfFlavour0Dwarf2L[] = {
219 { .FromReg: 0U, .ToReg: MSP430::PC },
220 { .FromReg: 1U, .ToReg: MSP430::SP },
221 { .FromReg: 2U, .ToReg: MSP430::SR },
222 { .FromReg: 3U, .ToReg: MSP430::CG },
223 { .FromReg: 4U, .ToReg: MSP430::R4 },
224 { .FromReg: 5U, .ToReg: MSP430::R5 },
225 { .FromReg: 6U, .ToReg: MSP430::R6 },
226 { .FromReg: 7U, .ToReg: MSP430::R7 },
227 { .FromReg: 8U, .ToReg: MSP430::R8 },
228 { .FromReg: 9U, .ToReg: MSP430::R9 },
229 { .FromReg: 10U, .ToReg: MSP430::R10 },
230 { .FromReg: 11U, .ToReg: MSP430::R11 },
231 { .FromReg: 12U, .ToReg: MSP430::R12 },
232 { .FromReg: 13U, .ToReg: MSP430::R13 },
233 { .FromReg: 14U, .ToReg: MSP430::R14 },
234 { .FromReg: 15U, .ToReg: MSP430::R15 },
235 { .FromReg: 16U, .ToReg: MSP430::PCB },
236 { .FromReg: 17U, .ToReg: MSP430::SPB },
237 { .FromReg: 18U, .ToReg: MSP430::SRB },
238 { .FromReg: 19U, .ToReg: MSP430::CGB },
239 { .FromReg: 20U, .ToReg: MSP430::R4B },
240 { .FromReg: 21U, .ToReg: MSP430::R5B },
241 { .FromReg: 22U, .ToReg: MSP430::R6B },
242 { .FromReg: 23U, .ToReg: MSP430::R7B },
243 { .FromReg: 24U, .ToReg: MSP430::R8B },
244 { .FromReg: 25U, .ToReg: MSP430::R9B },
245 { .FromReg: 26U, .ToReg: MSP430::R10B },
246 { .FromReg: 27U, .ToReg: MSP430::R11B },
247 { .FromReg: 28U, .ToReg: MSP430::R12B },
248 { .FromReg: 29U, .ToReg: MSP430::R13B },
249 { .FromReg: 30U, .ToReg: MSP430::R14B },
250 { .FromReg: 31U, .ToReg: MSP430::R15B },
251};
252extern const unsigned MSP430DwarfFlavour0Dwarf2LSize = std::size(MSP430DwarfFlavour0Dwarf2L);
253
254extern const MCRegisterInfo::DwarfLLVMRegPair MSP430EHFlavour0Dwarf2L[] = {
255 { .FromReg: 0U, .ToReg: MSP430::PC },
256 { .FromReg: 1U, .ToReg: MSP430::SP },
257 { .FromReg: 2U, .ToReg: MSP430::SR },
258 { .FromReg: 3U, .ToReg: MSP430::CG },
259 { .FromReg: 4U, .ToReg: MSP430::R4 },
260 { .FromReg: 5U, .ToReg: MSP430::R5 },
261 { .FromReg: 6U, .ToReg: MSP430::R6 },
262 { .FromReg: 7U, .ToReg: MSP430::R7 },
263 { .FromReg: 8U, .ToReg: MSP430::R8 },
264 { .FromReg: 9U, .ToReg: MSP430::R9 },
265 { .FromReg: 10U, .ToReg: MSP430::R10 },
266 { .FromReg: 11U, .ToReg: MSP430::R11 },
267 { .FromReg: 12U, .ToReg: MSP430::R12 },
268 { .FromReg: 13U, .ToReg: MSP430::R13 },
269 { .FromReg: 14U, .ToReg: MSP430::R14 },
270 { .FromReg: 15U, .ToReg: MSP430::R15 },
271 { .FromReg: 16U, .ToReg: MSP430::PCB },
272 { .FromReg: 17U, .ToReg: MSP430::SPB },
273 { .FromReg: 18U, .ToReg: MSP430::SRB },
274 { .FromReg: 19U, .ToReg: MSP430::CGB },
275 { .FromReg: 20U, .ToReg: MSP430::R4B },
276 { .FromReg: 21U, .ToReg: MSP430::R5B },
277 { .FromReg: 22U, .ToReg: MSP430::R6B },
278 { .FromReg: 23U, .ToReg: MSP430::R7B },
279 { .FromReg: 24U, .ToReg: MSP430::R8B },
280 { .FromReg: 25U, .ToReg: MSP430::R9B },
281 { .FromReg: 26U, .ToReg: MSP430::R10B },
282 { .FromReg: 27U, .ToReg: MSP430::R11B },
283 { .FromReg: 28U, .ToReg: MSP430::R12B },
284 { .FromReg: 29U, .ToReg: MSP430::R13B },
285 { .FromReg: 30U, .ToReg: MSP430::R14B },
286 { .FromReg: 31U, .ToReg: MSP430::R15B },
287};
288extern const unsigned MSP430EHFlavour0Dwarf2LSize = std::size(MSP430EHFlavour0Dwarf2L);
289
290extern const MCRegisterInfo::DwarfLLVMRegPair MSP430DwarfFlavour0L2Dwarf[] = {
291 { .FromReg: MSP430::CG, .ToReg: 3U },
292 { .FromReg: MSP430::CGB, .ToReg: 19U },
293 { .FromReg: MSP430::PC, .ToReg: 0U },
294 { .FromReg: MSP430::PCB, .ToReg: 16U },
295 { .FromReg: MSP430::SP, .ToReg: 1U },
296 { .FromReg: MSP430::SPB, .ToReg: 17U },
297 { .FromReg: MSP430::SR, .ToReg: 2U },
298 { .FromReg: MSP430::SRB, .ToReg: 18U },
299 { .FromReg: MSP430::R4, .ToReg: 4U },
300 { .FromReg: MSP430::R5, .ToReg: 5U },
301 { .FromReg: MSP430::R6, .ToReg: 6U },
302 { .FromReg: MSP430::R7, .ToReg: 7U },
303 { .FromReg: MSP430::R8, .ToReg: 8U },
304 { .FromReg: MSP430::R9, .ToReg: 9U },
305 { .FromReg: MSP430::R10, .ToReg: 10U },
306 { .FromReg: MSP430::R11, .ToReg: 11U },
307 { .FromReg: MSP430::R12, .ToReg: 12U },
308 { .FromReg: MSP430::R13, .ToReg: 13U },
309 { .FromReg: MSP430::R14, .ToReg: 14U },
310 { .FromReg: MSP430::R15, .ToReg: 15U },
311 { .FromReg: MSP430::R4B, .ToReg: 20U },
312 { .FromReg: MSP430::R5B, .ToReg: 21U },
313 { .FromReg: MSP430::R6B, .ToReg: 22U },
314 { .FromReg: MSP430::R7B, .ToReg: 23U },
315 { .FromReg: MSP430::R8B, .ToReg: 24U },
316 { .FromReg: MSP430::R9B, .ToReg: 25U },
317 { .FromReg: MSP430::R10B, .ToReg: 26U },
318 { .FromReg: MSP430::R11B, .ToReg: 27U },
319 { .FromReg: MSP430::R12B, .ToReg: 28U },
320 { .FromReg: MSP430::R13B, .ToReg: 29U },
321 { .FromReg: MSP430::R14B, .ToReg: 30U },
322 { .FromReg: MSP430::R15B, .ToReg: 31U },
323};
324extern const unsigned MSP430DwarfFlavour0L2DwarfSize = std::size(MSP430DwarfFlavour0L2Dwarf);
325
326extern const MCRegisterInfo::DwarfLLVMRegPair MSP430EHFlavour0L2Dwarf[] = {
327 { .FromReg: MSP430::CG, .ToReg: 3U },
328 { .FromReg: MSP430::CGB, .ToReg: 19U },
329 { .FromReg: MSP430::PC, .ToReg: 0U },
330 { .FromReg: MSP430::PCB, .ToReg: 16U },
331 { .FromReg: MSP430::SP, .ToReg: 1U },
332 { .FromReg: MSP430::SPB, .ToReg: 17U },
333 { .FromReg: MSP430::SR, .ToReg: 2U },
334 { .FromReg: MSP430::SRB, .ToReg: 18U },
335 { .FromReg: MSP430::R4, .ToReg: 4U },
336 { .FromReg: MSP430::R5, .ToReg: 5U },
337 { .FromReg: MSP430::R6, .ToReg: 6U },
338 { .FromReg: MSP430::R7, .ToReg: 7U },
339 { .FromReg: MSP430::R8, .ToReg: 8U },
340 { .FromReg: MSP430::R9, .ToReg: 9U },
341 { .FromReg: MSP430::R10, .ToReg: 10U },
342 { .FromReg: MSP430::R11, .ToReg: 11U },
343 { .FromReg: MSP430::R12, .ToReg: 12U },
344 { .FromReg: MSP430::R13, .ToReg: 13U },
345 { .FromReg: MSP430::R14, .ToReg: 14U },
346 { .FromReg: MSP430::R15, .ToReg: 15U },
347 { .FromReg: MSP430::R4B, .ToReg: 20U },
348 { .FromReg: MSP430::R5B, .ToReg: 21U },
349 { .FromReg: MSP430::R6B, .ToReg: 22U },
350 { .FromReg: MSP430::R7B, .ToReg: 23U },
351 { .FromReg: MSP430::R8B, .ToReg: 24U },
352 { .FromReg: MSP430::R9B, .ToReg: 25U },
353 { .FromReg: MSP430::R10B, .ToReg: 26U },
354 { .FromReg: MSP430::R11B, .ToReg: 27U },
355 { .FromReg: MSP430::R12B, .ToReg: 28U },
356 { .FromReg: MSP430::R13B, .ToReg: 29U },
357 { .FromReg: MSP430::R14B, .ToReg: 30U },
358 { .FromReg: MSP430::R15B, .ToReg: 31U },
359};
360extern const unsigned MSP430EHFlavour0L2DwarfSize = std::size(MSP430EHFlavour0L2Dwarf);
361
362extern const uint16_t MSP430RegEncodingTable[] = {
363 0,
364 3,
365 3,
366 0,
367 0,
368 1,
369 1,
370 2,
371 2,
372 4,
373 5,
374 6,
375 7,
376 8,
377 9,
378 10,
379 11,
380 12,
381 13,
382 14,
383 15,
384 4,
385 5,
386 6,
387 7,
388 8,
389 9,
390 10,
391 11,
392 12,
393 13,
394 14,
395 15,
396};
397static inline void InitMSP430MCRegisterInfo(MCRegisterInfo *RI, unsigned RA, unsigned DwarfFlavour = 0, unsigned EHFlavour = 0, unsigned PC = 0) {
398 RI->InitMCRegisterInfo(D: MSP430RegDesc, NR: 33, RA, PC, C: MSP430MCRegisterClassStorage.Classes, NC: 2, RURoots: MSP430RegUnitRoots, NRU: 16, DL: MSP430RegDiffLists, RUMS: MSP430LaneMaskLists, Strings: MSP430RegStrings, ClassStrings: MSP430RegClassStrings, SubIndices: MSP430SubRegIdxLists, NumIndices: 2,
399RET: MSP430RegEncodingTable, RUI: nullptr);
400
401 switch (DwarfFlavour) {
402 default:
403 llvm_unreachable("Unknown DWARF flavour");
404 case 0:
405 RI->mapDwarfRegsToLLVMRegs(Map: MSP430DwarfFlavour0Dwarf2L, Size: MSP430DwarfFlavour0Dwarf2LSize, isEH: false);
406 break;
407 }
408 switch (EHFlavour) {
409 default:
410 llvm_unreachable("Unknown DWARF flavour");
411 case 0:
412 RI->mapDwarfRegsToLLVMRegs(Map: MSP430EHFlavour0Dwarf2L, Size: MSP430EHFlavour0Dwarf2LSize, isEH: true);
413 break;
414 }
415 switch (DwarfFlavour) {
416 default:
417 llvm_unreachable("Unknown DWARF flavour");
418 case 0:
419 RI->mapLLVMRegsToDwarfRegs(Map: MSP430DwarfFlavour0L2Dwarf, Size: MSP430DwarfFlavour0L2DwarfSize, isEH: false);
420 break;
421 }
422 switch (EHFlavour) {
423 default:
424 llvm_unreachable("Unknown DWARF flavour");
425 case 0:
426 RI->mapLLVMRegsToDwarfRegs(Map: MSP430EHFlavour0L2Dwarf, Size: MSP430EHFlavour0L2DwarfSize, isEH: true);
427 break;
428 }
429}
430
431
432} // namespace llvm
433