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, 7, 3, 2, 0>;
140extern const MCRegisterClassStorage<2, 32, 7, 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 .RegSetBegin: 2, /* MinRegVal */
149 .RegSetSize: 31, /* RegSetSize */
150 .ID: MSP430::GR8RegClassID,
151 .CopyCost: 1, /* CopyCost */
152 .Allocatable: true, /* Allocatable */
153 .BaseClass: false,
154 offsetof(MSP430RegisterClassStorage, SubClassMasks[0]) - 0 * sizeof(MCRegisterClass),
155 offsetof(MSP430RegisterClassStorage, SuperRegIdxSeqs[0]) - 0 * sizeof(MCRegisterClass),
156 .LaneMask: LaneBitmask(0x0000000000000001),
157 .AllocationPriority: 0,
158 .GlobalPriority: false,
159 .TSFlags: 0x00, /* TSFlags */
160 .SpillStackID: 0, /* SpillStackID */
161 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
162 .CoveredBySubRegs: false, /* CoveredBySubRegs */
163 offsetof(MSP430RegisterClassStorage, SuperClasses[0]) - 0 * sizeof(MCRegisterClass),
164 .SuperClassesSize: 0
165 },
166 {
167 offsetof(MSP430RegisterClassStorage, Regs[16]) - 1 * sizeof(MCRegisterClass),
168 offsetof(MSP430RegisterClassStorage, BitSets[4]) - 1 * sizeof(MCRegisterClass),
169 .NameIdx: 0,
170 .RegSizeInBits: 16,
171 .RegsSize: 16,
172 .RegSetBegin: 1, /* MinRegVal */
173 .RegSetSize: 20, /* RegSetSize */
174 .ID: MSP430::GR16RegClassID,
175 .CopyCost: 1, /* CopyCost */
176 .Allocatable: true, /* Allocatable */
177 .BaseClass: false,
178 offsetof(MSP430RegisterClassStorage, SubClassMasks[2]) - 1 * sizeof(MCRegisterClass),
179 offsetof(MSP430RegisterClassStorage, SuperRegIdxSeqs[1]) - 1 * sizeof(MCRegisterClass),
180 .LaneMask: LaneBitmask(0x0000000000000001),
181 .AllocationPriority: 0,
182 .GlobalPriority: false,
183 .TSFlags: 0x00, /* TSFlags */
184 .SpillStackID: 0, /* SpillStackID */
185 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
186 .CoveredBySubRegs: false, /* CoveredBySubRegs */
187 offsetof(MSP430RegisterClassStorage, SuperClasses[0]) - 1 * sizeof(MCRegisterClass),
188 .SuperClassesSize: 0
189 },
190 },
191 .Regs: {
192 /* 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,
193 /* 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,
194 },
195 .BitSets: {
196 /* 0 */ 0x55, 0x00, 0xf8, 0x7f,
197 /* 4 */ 0x55, 0xff, 0x0f,
198 },
199 .SubClassMasks: {
200 // 0 GR8
201 0x00000001,
202 0x00000002, // subreg_8bit
203 // 2 GR16
204 0x00000002,
205 },
206 .SuperRegIdxSeqs: {
207 /* 0 */ 1, 0,
208 },
209 .SuperClasses: {
210 /* 0 GR8 */
211 /* 0 GR16 */
212 }
213};
214
215const MCRegisterClass &getMSP430MCRegisterClass(unsigned RC) {
216 return MSP430MCRegisterClassStorage.Classes[RC];
217}
218
219// MSP430 Dwarf<->LLVM register mappings.
220extern const MCRegisterInfo::DwarfLLVMRegPair MSP430DwarfFlavour0Dwarf2L[] = {
221 { .FromReg: 0U, .ToReg: MSP430::PC },
222 { .FromReg: 1U, .ToReg: MSP430::SP },
223 { .FromReg: 2U, .ToReg: MSP430::SR },
224 { .FromReg: 3U, .ToReg: MSP430::CG },
225 { .FromReg: 4U, .ToReg: MSP430::R4 },
226 { .FromReg: 5U, .ToReg: MSP430::R5 },
227 { .FromReg: 6U, .ToReg: MSP430::R6 },
228 { .FromReg: 7U, .ToReg: MSP430::R7 },
229 { .FromReg: 8U, .ToReg: MSP430::R8 },
230 { .FromReg: 9U, .ToReg: MSP430::R9 },
231 { .FromReg: 10U, .ToReg: MSP430::R10 },
232 { .FromReg: 11U, .ToReg: MSP430::R11 },
233 { .FromReg: 12U, .ToReg: MSP430::R12 },
234 { .FromReg: 13U, .ToReg: MSP430::R13 },
235 { .FromReg: 14U, .ToReg: MSP430::R14 },
236 { .FromReg: 15U, .ToReg: MSP430::R15 },
237 { .FromReg: 16U, .ToReg: MSP430::PCB },
238 { .FromReg: 17U, .ToReg: MSP430::SPB },
239 { .FromReg: 18U, .ToReg: MSP430::SRB },
240 { .FromReg: 19U, .ToReg: MSP430::CGB },
241 { .FromReg: 20U, .ToReg: MSP430::R4B },
242 { .FromReg: 21U, .ToReg: MSP430::R5B },
243 { .FromReg: 22U, .ToReg: MSP430::R6B },
244 { .FromReg: 23U, .ToReg: MSP430::R7B },
245 { .FromReg: 24U, .ToReg: MSP430::R8B },
246 { .FromReg: 25U, .ToReg: MSP430::R9B },
247 { .FromReg: 26U, .ToReg: MSP430::R10B },
248 { .FromReg: 27U, .ToReg: MSP430::R11B },
249 { .FromReg: 28U, .ToReg: MSP430::R12B },
250 { .FromReg: 29U, .ToReg: MSP430::R13B },
251 { .FromReg: 30U, .ToReg: MSP430::R14B },
252 { .FromReg: 31U, .ToReg: MSP430::R15B },
253};
254extern const unsigned MSP430DwarfFlavour0Dwarf2LSize = std::size(MSP430DwarfFlavour0Dwarf2L);
255
256extern const MCRegisterInfo::DwarfLLVMRegPair MSP430EHFlavour0Dwarf2L[] = {
257 { .FromReg: 0U, .ToReg: MSP430::PC },
258 { .FromReg: 1U, .ToReg: MSP430::SP },
259 { .FromReg: 2U, .ToReg: MSP430::SR },
260 { .FromReg: 3U, .ToReg: MSP430::CG },
261 { .FromReg: 4U, .ToReg: MSP430::R4 },
262 { .FromReg: 5U, .ToReg: MSP430::R5 },
263 { .FromReg: 6U, .ToReg: MSP430::R6 },
264 { .FromReg: 7U, .ToReg: MSP430::R7 },
265 { .FromReg: 8U, .ToReg: MSP430::R8 },
266 { .FromReg: 9U, .ToReg: MSP430::R9 },
267 { .FromReg: 10U, .ToReg: MSP430::R10 },
268 { .FromReg: 11U, .ToReg: MSP430::R11 },
269 { .FromReg: 12U, .ToReg: MSP430::R12 },
270 { .FromReg: 13U, .ToReg: MSP430::R13 },
271 { .FromReg: 14U, .ToReg: MSP430::R14 },
272 { .FromReg: 15U, .ToReg: MSP430::R15 },
273 { .FromReg: 16U, .ToReg: MSP430::PCB },
274 { .FromReg: 17U, .ToReg: MSP430::SPB },
275 { .FromReg: 18U, .ToReg: MSP430::SRB },
276 { .FromReg: 19U, .ToReg: MSP430::CGB },
277 { .FromReg: 20U, .ToReg: MSP430::R4B },
278 { .FromReg: 21U, .ToReg: MSP430::R5B },
279 { .FromReg: 22U, .ToReg: MSP430::R6B },
280 { .FromReg: 23U, .ToReg: MSP430::R7B },
281 { .FromReg: 24U, .ToReg: MSP430::R8B },
282 { .FromReg: 25U, .ToReg: MSP430::R9B },
283 { .FromReg: 26U, .ToReg: MSP430::R10B },
284 { .FromReg: 27U, .ToReg: MSP430::R11B },
285 { .FromReg: 28U, .ToReg: MSP430::R12B },
286 { .FromReg: 29U, .ToReg: MSP430::R13B },
287 { .FromReg: 30U, .ToReg: MSP430::R14B },
288 { .FromReg: 31U, .ToReg: MSP430::R15B },
289};
290extern const unsigned MSP430EHFlavour0Dwarf2LSize = std::size(MSP430EHFlavour0Dwarf2L);
291
292extern const MCRegisterInfo::DwarfLLVMRegPair MSP430DwarfFlavour0L2Dwarf[] = {
293 { .FromReg: MSP430::CG, .ToReg: 3U },
294 { .FromReg: MSP430::CGB, .ToReg: 19U },
295 { .FromReg: MSP430::PC, .ToReg: 0U },
296 { .FromReg: MSP430::PCB, .ToReg: 16U },
297 { .FromReg: MSP430::SP, .ToReg: 1U },
298 { .FromReg: MSP430::SPB, .ToReg: 17U },
299 { .FromReg: MSP430::SR, .ToReg: 2U },
300 { .FromReg: MSP430::SRB, .ToReg: 18U },
301 { .FromReg: MSP430::R4, .ToReg: 4U },
302 { .FromReg: MSP430::R5, .ToReg: 5U },
303 { .FromReg: MSP430::R6, .ToReg: 6U },
304 { .FromReg: MSP430::R7, .ToReg: 7U },
305 { .FromReg: MSP430::R8, .ToReg: 8U },
306 { .FromReg: MSP430::R9, .ToReg: 9U },
307 { .FromReg: MSP430::R10, .ToReg: 10U },
308 { .FromReg: MSP430::R11, .ToReg: 11U },
309 { .FromReg: MSP430::R12, .ToReg: 12U },
310 { .FromReg: MSP430::R13, .ToReg: 13U },
311 { .FromReg: MSP430::R14, .ToReg: 14U },
312 { .FromReg: MSP430::R15, .ToReg: 15U },
313 { .FromReg: MSP430::R4B, .ToReg: 20U },
314 { .FromReg: MSP430::R5B, .ToReg: 21U },
315 { .FromReg: MSP430::R6B, .ToReg: 22U },
316 { .FromReg: MSP430::R7B, .ToReg: 23U },
317 { .FromReg: MSP430::R8B, .ToReg: 24U },
318 { .FromReg: MSP430::R9B, .ToReg: 25U },
319 { .FromReg: MSP430::R10B, .ToReg: 26U },
320 { .FromReg: MSP430::R11B, .ToReg: 27U },
321 { .FromReg: MSP430::R12B, .ToReg: 28U },
322 { .FromReg: MSP430::R13B, .ToReg: 29U },
323 { .FromReg: MSP430::R14B, .ToReg: 30U },
324 { .FromReg: MSP430::R15B, .ToReg: 31U },
325};
326extern const unsigned MSP430DwarfFlavour0L2DwarfSize = std::size(MSP430DwarfFlavour0L2Dwarf);
327
328extern const MCRegisterInfo::DwarfLLVMRegPair MSP430EHFlavour0L2Dwarf[] = {
329 { .FromReg: MSP430::CG, .ToReg: 3U },
330 { .FromReg: MSP430::CGB, .ToReg: 19U },
331 { .FromReg: MSP430::PC, .ToReg: 0U },
332 { .FromReg: MSP430::PCB, .ToReg: 16U },
333 { .FromReg: MSP430::SP, .ToReg: 1U },
334 { .FromReg: MSP430::SPB, .ToReg: 17U },
335 { .FromReg: MSP430::SR, .ToReg: 2U },
336 { .FromReg: MSP430::SRB, .ToReg: 18U },
337 { .FromReg: MSP430::R4, .ToReg: 4U },
338 { .FromReg: MSP430::R5, .ToReg: 5U },
339 { .FromReg: MSP430::R6, .ToReg: 6U },
340 { .FromReg: MSP430::R7, .ToReg: 7U },
341 { .FromReg: MSP430::R8, .ToReg: 8U },
342 { .FromReg: MSP430::R9, .ToReg: 9U },
343 { .FromReg: MSP430::R10, .ToReg: 10U },
344 { .FromReg: MSP430::R11, .ToReg: 11U },
345 { .FromReg: MSP430::R12, .ToReg: 12U },
346 { .FromReg: MSP430::R13, .ToReg: 13U },
347 { .FromReg: MSP430::R14, .ToReg: 14U },
348 { .FromReg: MSP430::R15, .ToReg: 15U },
349 { .FromReg: MSP430::R4B, .ToReg: 20U },
350 { .FromReg: MSP430::R5B, .ToReg: 21U },
351 { .FromReg: MSP430::R6B, .ToReg: 22U },
352 { .FromReg: MSP430::R7B, .ToReg: 23U },
353 { .FromReg: MSP430::R8B, .ToReg: 24U },
354 { .FromReg: MSP430::R9B, .ToReg: 25U },
355 { .FromReg: MSP430::R10B, .ToReg: 26U },
356 { .FromReg: MSP430::R11B, .ToReg: 27U },
357 { .FromReg: MSP430::R12B, .ToReg: 28U },
358 { .FromReg: MSP430::R13B, .ToReg: 29U },
359 { .FromReg: MSP430::R14B, .ToReg: 30U },
360 { .FromReg: MSP430::R15B, .ToReg: 31U },
361};
362extern const unsigned MSP430EHFlavour0L2DwarfSize = std::size(MSP430EHFlavour0L2Dwarf);
363
364extern const uint16_t MSP430RegEncodingTable[] = {
365 0,
366 3,
367 3,
368 0,
369 0,
370 1,
371 1,
372 2,
373 2,
374 4,
375 5,
376 6,
377 7,
378 8,
379 9,
380 10,
381 11,
382 12,
383 13,
384 14,
385 15,
386 4,
387 5,
388 6,
389 7,
390 8,
391 9,
392 10,
393 11,
394 12,
395 13,
396 14,
397 15,
398};
399static inline void InitMSP430MCRegisterInfo(MCRegisterInfo *RI, unsigned RA, unsigned DwarfFlavour = 0, unsigned EHFlavour = 0, unsigned PC = 0) {
400 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,
401RET: MSP430RegEncodingTable, RUI: nullptr);
402
403 switch (DwarfFlavour) {
404 default:
405 llvm_unreachable("Unknown DWARF flavour");
406 case 0:
407 RI->mapDwarfRegsToLLVMRegs(Map: MSP430DwarfFlavour0Dwarf2L, Size: MSP430DwarfFlavour0Dwarf2LSize, isEH: false);
408 break;
409 }
410 switch (EHFlavour) {
411 default:
412 llvm_unreachable("Unknown DWARF flavour");
413 case 0:
414 RI->mapDwarfRegsToLLVMRegs(Map: MSP430EHFlavour0Dwarf2L, Size: MSP430EHFlavour0Dwarf2LSize, isEH: true);
415 break;
416 }
417 switch (DwarfFlavour) {
418 default:
419 llvm_unreachable("Unknown DWARF flavour");
420 case 0:
421 RI->mapLLVMRegsToDwarfRegs(Map: MSP430DwarfFlavour0L2Dwarf, Size: MSP430DwarfFlavour0L2DwarfSize, isEH: false);
422 break;
423 }
424 switch (EHFlavour) {
425 default:
426 llvm_unreachable("Unknown DWARF flavour");
427 case 0:
428 RI->mapLLVMRegsToDwarfRegs(Map: MSP430EHFlavour0L2Dwarf, Size: MSP430EHFlavour0L2DwarfSize, isEH: true);
429 break;
430 }
431}
432
433
434} // namespace llvm
435