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 LoongArchRegDiffLists[] = {
12 /* 0 */ -32, 64, -144, 0,
13 /* 4 */ 144, -64, 32, 0,
14};
15
16extern const LaneBitmask LoongArchLaneMaskLists[] = {
17 /* 0 */ LaneBitmask(0x0000000000000001),
18 /* 1 */ LaneBitmask(0xFFFFFFFFFFFFFFFF),
19};
20
21extern const uint16_t LoongArchSubRegIdxLists[] = {
22 /* 0 */ 3, 2, 1,
23};
24
25
26#ifdef __GNUC__
27#pragma GCC diagnostic push
28#pragma GCC diagnostic ignored "-Woverlength-strings"
29#endif
30extern const char LoongArchRegStrings[] = {
31 /* 0 */ "F10\000"
32 /* 4 */ "VR10\000"
33 /* 9 */ "XR10\000"
34 /* 14 */ "F20\000"
35 /* 18 */ "VR20\000"
36 /* 23 */ "XR20\000"
37 /* 28 */ "F30\000"
38 /* 32 */ "VR30\000"
39 /* 37 */ "XR30\000"
40 /* 42 */ "FCC0\000"
41 /* 47 */ "F0\000"
42 /* 50 */ "SCR0\000"
43 /* 55 */ "FCSR0\000"
44 /* 61 */ "VR0\000"
45 /* 65 */ "XR0\000"
46 /* 69 */ "F11\000"
47 /* 73 */ "VR11\000"
48 /* 78 */ "XR11\000"
49 /* 83 */ "F21\000"
50 /* 87 */ "VR21\000"
51 /* 92 */ "XR21\000"
52 /* 97 */ "F31\000"
53 /* 101 */ "VR31\000"
54 /* 106 */ "XR31\000"
55 /* 111 */ "FCC1\000"
56 /* 116 */ "F1\000"
57 /* 119 */ "SCR1\000"
58 /* 124 */ "FCSR1\000"
59 /* 130 */ "VR1\000"
60 /* 134 */ "XR1\000"
61 /* 138 */ "F12\000"
62 /* 142 */ "VR12\000"
63 /* 147 */ "XR12\000"
64 /* 152 */ "F22\000"
65 /* 156 */ "VR22\000"
66 /* 161 */ "XR22\000"
67 /* 166 */ "FCC2\000"
68 /* 171 */ "F2\000"
69 /* 174 */ "SCR2\000"
70 /* 179 */ "FCSR2\000"
71 /* 185 */ "VR2\000"
72 /* 189 */ "XR2\000"
73 /* 193 */ "F13\000"
74 /* 197 */ "VR13\000"
75 /* 202 */ "XR13\000"
76 /* 207 */ "F23\000"
77 /* 211 */ "VR23\000"
78 /* 216 */ "XR23\000"
79 /* 221 */ "FCC3\000"
80 /* 226 */ "F3\000"
81 /* 229 */ "SCR3\000"
82 /* 234 */ "FCSR3\000"
83 /* 240 */ "VR3\000"
84 /* 244 */ "XR3\000"
85 /* 248 */ "F14\000"
86 /* 252 */ "VR14\000"
87 /* 257 */ "XR14\000"
88 /* 262 */ "F24\000"
89 /* 266 */ "VR24\000"
90 /* 271 */ "XR24\000"
91 /* 276 */ "F10_64\000"
92 /* 283 */ "F20_64\000"
93 /* 290 */ "F30_64\000"
94 /* 297 */ "F0_64\000"
95 /* 303 */ "F11_64\000"
96 /* 310 */ "F21_64\000"
97 /* 317 */ "F31_64\000"
98 /* 324 */ "F1_64\000"
99 /* 330 */ "F12_64\000"
100 /* 337 */ "F22_64\000"
101 /* 344 */ "F2_64\000"
102 /* 350 */ "F13_64\000"
103 /* 357 */ "F23_64\000"
104 /* 364 */ "F3_64\000"
105 /* 370 */ "F14_64\000"
106 /* 377 */ "F24_64\000"
107 /* 384 */ "F4_64\000"
108 /* 390 */ "F15_64\000"
109 /* 397 */ "F25_64\000"
110 /* 404 */ "F5_64\000"
111 /* 410 */ "F16_64\000"
112 /* 417 */ "F26_64\000"
113 /* 424 */ "F6_64\000"
114 /* 430 */ "F17_64\000"
115 /* 437 */ "F27_64\000"
116 /* 444 */ "F7_64\000"
117 /* 450 */ "F18_64\000"
118 /* 457 */ "F28_64\000"
119 /* 464 */ "F8_64\000"
120 /* 470 */ "F19_64\000"
121 /* 477 */ "F29_64\000"
122 /* 484 */ "F9_64\000"
123 /* 490 */ "FCC4\000"
124 /* 495 */ "F4\000"
125 /* 498 */ "VR4\000"
126 /* 502 */ "XR4\000"
127 /* 506 */ "F15\000"
128 /* 510 */ "VR15\000"
129 /* 515 */ "XR15\000"
130 /* 520 */ "F25\000"
131 /* 524 */ "VR25\000"
132 /* 529 */ "XR25\000"
133 /* 534 */ "FCC5\000"
134 /* 539 */ "F5\000"
135 /* 542 */ "VR5\000"
136 /* 546 */ "XR5\000"
137 /* 550 */ "F16\000"
138 /* 554 */ "VR16\000"
139 /* 559 */ "XR16\000"
140 /* 564 */ "F26\000"
141 /* 568 */ "VR26\000"
142 /* 573 */ "XR26\000"
143 /* 578 */ "FCC6\000"
144 /* 583 */ "F6\000"
145 /* 586 */ "VR6\000"
146 /* 590 */ "XR6\000"
147 /* 594 */ "F17\000"
148 /* 598 */ "VR17\000"
149 /* 603 */ "XR17\000"
150 /* 608 */ "F27\000"
151 /* 612 */ "VR27\000"
152 /* 617 */ "XR27\000"
153 /* 622 */ "FCC7\000"
154 /* 627 */ "F7\000"
155 /* 630 */ "VR7\000"
156 /* 634 */ "XR7\000"
157 /* 638 */ "F18\000"
158 /* 642 */ "VR18\000"
159 /* 647 */ "XR18\000"
160 /* 652 */ "F28\000"
161 /* 656 */ "VR28\000"
162 /* 661 */ "XR28\000"
163 /* 666 */ "F8\000"
164 /* 669 */ "VR8\000"
165 /* 673 */ "XR8\000"
166 /* 677 */ "F19\000"
167 /* 681 */ "VR19\000"
168 /* 686 */ "XR19\000"
169 /* 691 */ "F29\000"
170 /* 695 */ "VR29\000"
171 /* 700 */ "XR29\000"
172 /* 705 */ "F9\000"
173 /* 708 */ "VR9\000"
174 /* 712 */ "XR9\000"
175};
176#ifdef __GNUC__
177#pragma GCC diagnostic pop
178#endif
179
180extern const MCRegisterDesc LoongArchRegDesc[] = { // Descriptors
181 { .Name: 3, .SubRegs: 0, .SuperRegs: 0, .SubRegIndices: 0, .RegUnits: 0, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
182 { .Name: 47, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12288, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
183 { .Name: 116, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12289, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
184 { .Name: 171, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12290, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
185 { .Name: 226, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12291, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
186 { .Name: 495, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12292, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
187 { .Name: 539, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12293, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
188 { .Name: 583, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12294, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
189 { .Name: 627, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12295, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
190 { .Name: 666, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12296, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
191 { .Name: 705, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12297, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
192 { .Name: 0, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12298, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
193 { .Name: 69, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12299, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
194 { .Name: 138, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12300, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
195 { .Name: 193, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12301, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
196 { .Name: 248, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12302, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
197 { .Name: 506, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12303, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
198 { .Name: 550, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12304, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
199 { .Name: 594, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12305, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
200 { .Name: 638, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12306, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
201 { .Name: 677, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12307, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
202 { .Name: 14, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12308, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
203 { .Name: 83, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12309, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
204 { .Name: 152, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12310, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
205 { .Name: 207, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12311, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
206 { .Name: 262, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12312, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
207 { .Name: 520, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12313, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
208 { .Name: 564, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12314, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
209 { .Name: 608, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12315, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
210 { .Name: 652, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12316, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
211 { .Name: 691, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12317, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
212 { .Name: 28, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12318, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
213 { .Name: 97, .SubRegs: 3, .SuperRegs: 4, .SubRegIndices: 3, .RegUnits: 12319, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
214 { .Name: 42, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12320, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
215 { .Name: 111, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12321, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
216 { .Name: 166, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12322, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
217 { .Name: 221, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12323, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
218 { .Name: 490, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12324, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
219 { .Name: 534, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12325, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
220 { .Name: 578, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12326, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
221 { .Name: 622, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12327, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
222 { .Name: 55, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12328, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
223 { .Name: 124, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12329, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
224 { .Name: 179, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12330, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
225 { .Name: 234, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12331, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
226 { .Name: 52, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12332, .RegUnitLaneMasks: 1, .IsConstant: 1, .IsArtificial: 0 },
227 { .Name: 121, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12333, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
228 { .Name: 176, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12334, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
229 { .Name: 231, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12335, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
230 { .Name: 499, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12336, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
231 { .Name: 543, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12337, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
232 { .Name: 587, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12338, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
233 { .Name: 631, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12339, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
234 { .Name: 670, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12340, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
235 { .Name: 709, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12341, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
236 { .Name: 5, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12342, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
237 { .Name: 74, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12343, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
238 { .Name: 143, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12344, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
239 { .Name: 198, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12345, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
240 { .Name: 253, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12346, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
241 { .Name: 511, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12347, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
242 { .Name: 555, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12348, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
243 { .Name: 599, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12349, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
244 { .Name: 643, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12350, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
245 { .Name: 682, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12351, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
246 { .Name: 19, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12352, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
247 { .Name: 88, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12353, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
248 { .Name: 157, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12354, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
249 { .Name: 212, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12355, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
250 { .Name: 267, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12356, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
251 { .Name: 525, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12357, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
252 { .Name: 569, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12358, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
253 { .Name: 613, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12359, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
254 { .Name: 657, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12360, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
255 { .Name: 696, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12361, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
256 { .Name: 33, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12362, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
257 { .Name: 102, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12363, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
258 { .Name: 50, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12364, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
259 { .Name: 119, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12365, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
260 { .Name: 174, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12366, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
261 { .Name: 229, .SubRegs: 3, .SuperRegs: 3, .SubRegIndices: 3, .RegUnits: 12367, .RegUnitLaneMasks: 1, .IsConstant: 0, .IsArtificial: 0 },
262 { .Name: 61, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12288, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
263 { .Name: 130, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12289, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
264 { .Name: 185, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12290, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
265 { .Name: 240, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12291, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
266 { .Name: 498, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12292, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
267 { .Name: 542, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12293, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
268 { .Name: 586, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12294, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
269 { .Name: 630, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12295, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
270 { .Name: 669, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12296, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
271 { .Name: 708, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12297, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
272 { .Name: 4, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12298, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
273 { .Name: 73, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12299, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
274 { .Name: 142, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12300, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
275 { .Name: 197, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12301, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
276 { .Name: 252, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12302, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
277 { .Name: 510, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12303, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
278 { .Name: 554, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12304, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
279 { .Name: 598, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12305, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
280 { .Name: 642, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12306, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
281 { .Name: 681, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12307, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
282 { .Name: 18, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12308, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
283 { .Name: 87, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12309, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
284 { .Name: 156, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12310, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
285 { .Name: 211, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12311, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
286 { .Name: 266, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12312, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
287 { .Name: 524, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12313, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
288 { .Name: 568, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12314, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
289 { .Name: 612, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12315, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
290 { .Name: 656, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12316, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
291 { .Name: 695, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12317, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
292 { .Name: 32, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12318, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
293 { .Name: 101, .SubRegs: 1, .SuperRegs: 6, .SubRegIndices: 1, .RegUnits: 12319, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
294 { .Name: 65, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12288, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
295 { .Name: 134, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12289, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
296 { .Name: 189, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12290, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
297 { .Name: 244, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12291, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
298 { .Name: 502, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12292, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
299 { .Name: 546, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12293, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
300 { .Name: 590, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12294, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
301 { .Name: 634, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12295, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
302 { .Name: 673, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12296, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
303 { .Name: 712, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12297, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
304 { .Name: 9, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12298, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
305 { .Name: 78, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12299, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
306 { .Name: 147, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12300, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
307 { .Name: 202, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12301, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
308 { .Name: 257, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12302, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
309 { .Name: 515, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12303, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
310 { .Name: 559, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12304, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
311 { .Name: 603, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12305, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
312 { .Name: 647, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12306, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
313 { .Name: 686, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12307, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
314 { .Name: 23, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12308, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
315 { .Name: 92, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12309, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
316 { .Name: 161, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12310, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
317 { .Name: 216, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12311, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
318 { .Name: 271, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12312, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
319 { .Name: 529, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12313, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
320 { .Name: 573, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12314, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
321 { .Name: 617, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12315, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
322 { .Name: 661, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12316, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
323 { .Name: 700, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12317, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
324 { .Name: 37, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12318, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
325 { .Name: 106, .SubRegs: 0, .SuperRegs: 3, .SubRegIndices: 0, .RegUnits: 12319, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
326 { .Name: 297, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12288, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
327 { .Name: 324, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12289, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
328 { .Name: 344, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12290, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
329 { .Name: 364, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12291, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
330 { .Name: 384, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12292, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
331 { .Name: 404, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12293, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
332 { .Name: 424, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12294, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
333 { .Name: 444, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12295, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
334 { .Name: 464, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12296, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
335 { .Name: 484, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12297, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
336 { .Name: 276, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12298, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
337 { .Name: 303, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12299, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
338 { .Name: 330, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12300, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
339 { .Name: 350, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12301, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
340 { .Name: 370, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12302, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
341 { .Name: 390, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12303, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
342 { .Name: 410, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12304, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
343 { .Name: 430, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12305, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
344 { .Name: 450, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12306, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
345 { .Name: 470, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12307, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
346 { .Name: 283, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12308, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
347 { .Name: 310, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12309, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
348 { .Name: 337, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12310, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
349 { .Name: 357, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12311, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
350 { .Name: 377, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12312, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
351 { .Name: 397, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12313, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
352 { .Name: 417, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12314, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
353 { .Name: 437, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12315, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
354 { .Name: 457, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12316, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
355 { .Name: 477, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12317, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
356 { .Name: 290, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12318, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
357 { .Name: 317, .SubRegs: 2, .SuperRegs: 5, .SubRegIndices: 2, .RegUnits: 12319, .RegUnitLaneMasks: 0, .IsConstant: 0, .IsArtificial: 0 },
358};
359
360extern const MCPhysReg LoongArchRegUnitRoots[][2] = {
361 { LoongArch::F0 },
362 { LoongArch::F1 },
363 { LoongArch::F2 },
364 { LoongArch::F3 },
365 { LoongArch::F4 },
366 { LoongArch::F5 },
367 { LoongArch::F6 },
368 { LoongArch::F7 },
369 { LoongArch::F8 },
370 { LoongArch::F9 },
371 { LoongArch::F10 },
372 { LoongArch::F11 },
373 { LoongArch::F12 },
374 { LoongArch::F13 },
375 { LoongArch::F14 },
376 { LoongArch::F15 },
377 { LoongArch::F16 },
378 { LoongArch::F17 },
379 { LoongArch::F18 },
380 { LoongArch::F19 },
381 { LoongArch::F20 },
382 { LoongArch::F21 },
383 { LoongArch::F22 },
384 { LoongArch::F23 },
385 { LoongArch::F24 },
386 { LoongArch::F25 },
387 { LoongArch::F26 },
388 { LoongArch::F27 },
389 { LoongArch::F28 },
390 { LoongArch::F29 },
391 { LoongArch::F30 },
392 { LoongArch::F31 },
393 { LoongArch::FCC0 },
394 { LoongArch::FCC1 },
395 { LoongArch::FCC2 },
396 { LoongArch::FCC3 },
397 { LoongArch::FCC4 },
398 { LoongArch::FCC5 },
399 { LoongArch::FCC6 },
400 { LoongArch::FCC7 },
401 { LoongArch::FCSR0 },
402 { LoongArch::FCSR1 },
403 { LoongArch::FCSR2 },
404 { LoongArch::FCSR3 },
405 { LoongArch::R0 },
406 { LoongArch::R1 },
407 { LoongArch::R2 },
408 { LoongArch::R3 },
409 { LoongArch::R4 },
410 { LoongArch::R5 },
411 { LoongArch::R6 },
412 { LoongArch::R7 },
413 { LoongArch::R8 },
414 { LoongArch::R9 },
415 { LoongArch::R10 },
416 { LoongArch::R11 },
417 { LoongArch::R12 },
418 { LoongArch::R13 },
419 { LoongArch::R14 },
420 { LoongArch::R15 },
421 { LoongArch::R16 },
422 { LoongArch::R17 },
423 { LoongArch::R18 },
424 { LoongArch::R19 },
425 { LoongArch::R20 },
426 { LoongArch::R21 },
427 { LoongArch::R22 },
428 { LoongArch::R23 },
429 { LoongArch::R24 },
430 { LoongArch::R25 },
431 { LoongArch::R26 },
432 { LoongArch::R27 },
433 { LoongArch::R28 },
434 { LoongArch::R29 },
435 { LoongArch::R30 },
436 { LoongArch::R31 },
437 { LoongArch::SCR0 },
438 { LoongArch::SCR1 },
439 { LoongArch::SCR2 },
440 { LoongArch::SCR3 },
441};
442
443// Register classes...
444
445#ifdef __GNUC__
446#pragma GCC diagnostic push
447#pragma GCC diagnostic ignored "-Woverlength-strings"
448#endif
449extern const char LoongArchRegClassStrings[] = {
450 /* 0 */ "GPRNoR0R1\000"
451 /* 10 */ "FPR32\000"
452 /* 16 */ "FPR64\000"
453 /* 22 */ "LASX256\000"
454 /* 30 */ "LSX128\000"
455 /* 37 */ "SCR\000"
456 /* 41 */ "CFR\000"
457 /* 45 */ "GPRJR\000"
458 /* 51 */ "GPR\000"
459 /* 55 */ "FCSR\000"
460 /* 60 */ "GPRT\000"
461};
462#ifdef __GNUC__
463#pragma GCC diagnostic pop
464#endif
465
466using LoongArchRegisterClassStorage = MCRegisterClassStorage<11, 254, 124, 14, 6, 6>;
467extern const MCRegisterClassStorage<11, 254, 124, 14, 6, 6> LoongArchMCRegisterClassStorage = {
468 .Classes: {
469 {
470 offsetof(LoongArchRegisterClassStorage, Regs[0]) - 0 * sizeof(MCRegisterClass),
471 offsetof(LoongArchRegisterClassStorage, BitSets[0]) - 0 * sizeof(MCRegisterClass),
472 .NameIdx: 10,
473 .RegSizeInBits: 32,
474 .RegsSize: 32,
475 .RegSetSize: 5,
476 .ID: LoongArch::FPR32RegClassID,
477 .CopyCost: 1, /* CopyCost */
478 .Allocatable: true, /* Allocatable */
479 .BaseClass: false,
480 offsetof(LoongArchRegisterClassStorage, SubClassMasks[0]) - 0 * sizeof(MCRegisterClass),
481 offsetof(LoongArchRegisterClassStorage, SuperRegIdxSeqs[0]) - 0 * sizeof(MCRegisterClass),
482 .LaneMask: LaneBitmask(0x0000000000000001),
483 .AllocationPriority: 0,
484 .GlobalPriority: false,
485 .TSFlags: 0x00, /* TSFlags */
486 .SpillStackID: 0, /* SpillStackID */
487 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
488 .CoveredBySubRegs: false, /* CoveredBySubRegs */
489 offsetof(LoongArchRegisterClassStorage, SuperClasses[0]) - 0 * sizeof(MCRegisterClass),
490 .SuperClassesSize: 0
491 },
492 {
493 offsetof(LoongArchRegisterClassStorage, Regs[32]) - 1 * sizeof(MCRegisterClass),
494 offsetof(LoongArchRegisterClassStorage, BitSets[5]) - 1 * sizeof(MCRegisterClass),
495 .NameIdx: 51,
496 .RegSizeInBits: 0,
497 .RegsSize: 32,
498 .RegSetSize: 10,
499 .ID: LoongArch::GPRRegClassID,
500 .CopyCost: 1, /* CopyCost */
501 .Allocatable: true, /* Allocatable */
502 .BaseClass: false,
503 offsetof(LoongArchRegisterClassStorage, SubClassMasks[2]) - 1 * sizeof(MCRegisterClass),
504 offsetof(LoongArchRegisterClassStorage, SuperRegIdxSeqs[1]) - 1 * sizeof(MCRegisterClass),
505 .LaneMask: LaneBitmask(0x0000000000000001),
506 .AllocationPriority: 0,
507 .GlobalPriority: false,
508 .TSFlags: 0x00, /* TSFlags */
509 .SpillStackID: 0, /* SpillStackID */
510 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
511 .CoveredBySubRegs: false, /* CoveredBySubRegs */
512 offsetof(LoongArchRegisterClassStorage, SuperClasses[0]) - 1 * sizeof(MCRegisterClass),
513 .SuperClassesSize: 0
514 },
515 {
516 offsetof(LoongArchRegisterClassStorage, Regs[64]) - 2 * sizeof(MCRegisterClass),
517 offsetof(LoongArchRegisterClassStorage, BitSets[15]) - 2 * sizeof(MCRegisterClass),
518 .NameIdx: 45,
519 .RegSizeInBits: 0,
520 .RegsSize: 31,
521 .RegSetSize: 10,
522 .ID: LoongArch::GPRJRRegClassID,
523 .CopyCost: 1, /* CopyCost */
524 .Allocatable: true, /* Allocatable */
525 .BaseClass: false,
526 offsetof(LoongArchRegisterClassStorage, SubClassMasks[3]) - 2 * sizeof(MCRegisterClass),
527 offsetof(LoongArchRegisterClassStorage, SuperRegIdxSeqs[1]) - 2 * sizeof(MCRegisterClass),
528 .LaneMask: LaneBitmask(0x0000000000000001),
529 .AllocationPriority: 0,
530 .GlobalPriority: false,
531 .TSFlags: 0x00, /* TSFlags */
532 .SpillStackID: 0, /* SpillStackID */
533 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
534 .CoveredBySubRegs: false, /* CoveredBySubRegs */
535 offsetof(LoongArchRegisterClassStorage, SuperClasses[0]) - 2 * sizeof(MCRegisterClass),
536 .SuperClassesSize: 1
537 },
538 {
539 offsetof(LoongArchRegisterClassStorage, Regs[95]) - 3 * sizeof(MCRegisterClass),
540 offsetof(LoongArchRegisterClassStorage, BitSets[25]) - 3 * sizeof(MCRegisterClass),
541 .NameIdx: 0,
542 .RegSizeInBits: 0,
543 .RegsSize: 30,
544 .RegSetSize: 10,
545 .ID: LoongArch::GPRNoR0R1RegClassID,
546 .CopyCost: 1, /* CopyCost */
547 .Allocatable: true, /* Allocatable */
548 .BaseClass: false,
549 offsetof(LoongArchRegisterClassStorage, SubClassMasks[4]) - 3 * sizeof(MCRegisterClass),
550 offsetof(LoongArchRegisterClassStorage, SuperRegIdxSeqs[1]) - 3 * sizeof(MCRegisterClass),
551 .LaneMask: LaneBitmask(0x0000000000000001),
552 .AllocationPriority: 0,
553 .GlobalPriority: false,
554 .TSFlags: 0x00, /* TSFlags */
555 .SpillStackID: 0, /* SpillStackID */
556 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
557 .CoveredBySubRegs: false, /* CoveredBySubRegs */
558 offsetof(LoongArchRegisterClassStorage, SuperClasses[1]) - 3 * sizeof(MCRegisterClass),
559 .SuperClassesSize: 2
560 },
561 {
562 offsetof(LoongArchRegisterClassStorage, Regs[125]) - 4 * sizeof(MCRegisterClass),
563 offsetof(LoongArchRegisterClassStorage, BitSets[35]) - 4 * sizeof(MCRegisterClass),
564 .NameIdx: 60,
565 .RegSizeInBits: 0,
566 .RegsSize: 17,
567 .RegSetSize: 9,
568 .ID: LoongArch::GPRTRegClassID,
569 .CopyCost: 1, /* CopyCost */
570 .Allocatable: true, /* Allocatable */
571 .BaseClass: false,
572 offsetof(LoongArchRegisterClassStorage, SubClassMasks[5]) - 4 * sizeof(MCRegisterClass),
573 offsetof(LoongArchRegisterClassStorage, SuperRegIdxSeqs[1]) - 4 * sizeof(MCRegisterClass),
574 .LaneMask: LaneBitmask(0x0000000000000001),
575 .AllocationPriority: 0,
576 .GlobalPriority: false,
577 .TSFlags: 0x00, /* TSFlags */
578 .SpillStackID: 0, /* SpillStackID */
579 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
580 .CoveredBySubRegs: false, /* CoveredBySubRegs */
581 offsetof(LoongArchRegisterClassStorage, SuperClasses[3]) - 4 * sizeof(MCRegisterClass),
582 .SuperClassesSize: 3
583 },
584 {
585 offsetof(LoongArchRegisterClassStorage, Regs[142]) - 5 * sizeof(MCRegisterClass),
586 offsetof(LoongArchRegisterClassStorage, BitSets[44]) - 5 * sizeof(MCRegisterClass),
587 .NameIdx: 41,
588 .RegSizeInBits: 0,
589 .RegsSize: 8,
590 .RegSetSize: 6,
591 .ID: LoongArch::CFRRegClassID,
592 .CopyCost: 1, /* CopyCost */
593 .Allocatable: true, /* Allocatable */
594 .BaseClass: false,
595 offsetof(LoongArchRegisterClassStorage, SubClassMasks[6]) - 5 * sizeof(MCRegisterClass),
596 offsetof(LoongArchRegisterClassStorage, SuperRegIdxSeqs[1]) - 5 * sizeof(MCRegisterClass),
597 .LaneMask: LaneBitmask(0x0000000000000001),
598 .AllocationPriority: 0,
599 .GlobalPriority: false,
600 .TSFlags: 0x00, /* TSFlags */
601 .SpillStackID: 0, /* SpillStackID */
602 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
603 .CoveredBySubRegs: false, /* CoveredBySubRegs */
604 offsetof(LoongArchRegisterClassStorage, SuperClasses[6]) - 5 * sizeof(MCRegisterClass),
605 .SuperClassesSize: 0
606 },
607 {
608 offsetof(LoongArchRegisterClassStorage, Regs[150]) - 6 * sizeof(MCRegisterClass),
609 offsetof(LoongArchRegisterClassStorage, BitSets[50]) - 6 * sizeof(MCRegisterClass),
610 .NameIdx: 55,
611 .RegSizeInBits: 32,
612 .RegsSize: 4,
613 .RegSetSize: 6,
614 .ID: LoongArch::FCSRRegClassID,
615 .CopyCost: 1, /* CopyCost */
616 .Allocatable: false, /* Allocatable */
617 .BaseClass: false,
618 offsetof(LoongArchRegisterClassStorage, SubClassMasks[7]) - 6 * sizeof(MCRegisterClass),
619 offsetof(LoongArchRegisterClassStorage, SuperRegIdxSeqs[1]) - 6 * sizeof(MCRegisterClass),
620 .LaneMask: LaneBitmask(0x0000000000000001),
621 .AllocationPriority: 0,
622 .GlobalPriority: false,
623 .TSFlags: 0x00, /* TSFlags */
624 .SpillStackID: 0, /* SpillStackID */
625 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
626 .CoveredBySubRegs: false, /* CoveredBySubRegs */
627 offsetof(LoongArchRegisterClassStorage, SuperClasses[6]) - 6 * sizeof(MCRegisterClass),
628 .SuperClassesSize: 0
629 },
630 {
631 offsetof(LoongArchRegisterClassStorage, Regs[154]) - 7 * sizeof(MCRegisterClass),
632 offsetof(LoongArchRegisterClassStorage, BitSets[56]) - 7 * sizeof(MCRegisterClass),
633 .NameIdx: 37,
634 .RegSizeInBits: 0,
635 .RegsSize: 4,
636 .RegSetSize: 11,
637 .ID: LoongArch::SCRRegClassID,
638 .CopyCost: 1, /* CopyCost */
639 .Allocatable: false, /* Allocatable */
640 .BaseClass: false,
641 offsetof(LoongArchRegisterClassStorage, SubClassMasks[8]) - 7 * sizeof(MCRegisterClass),
642 offsetof(LoongArchRegisterClassStorage, SuperRegIdxSeqs[1]) - 7 * sizeof(MCRegisterClass),
643 .LaneMask: LaneBitmask(0x0000000000000001),
644 .AllocationPriority: 0,
645 .GlobalPriority: false,
646 .TSFlags: 0x00, /* TSFlags */
647 .SpillStackID: 0, /* SpillStackID */
648 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
649 .CoveredBySubRegs: false, /* CoveredBySubRegs */
650 offsetof(LoongArchRegisterClassStorage, SuperClasses[6]) - 7 * sizeof(MCRegisterClass),
651 .SuperClassesSize: 0
652 },
653 {
654 offsetof(LoongArchRegisterClassStorage, Regs[158]) - 8 * sizeof(MCRegisterClass),
655 offsetof(LoongArchRegisterClassStorage, BitSets[67]) - 8 * sizeof(MCRegisterClass),
656 .NameIdx: 16,
657 .RegSizeInBits: 64,
658 .RegsSize: 32,
659 .RegSetSize: 23,
660 .ID: LoongArch::FPR64RegClassID,
661 .CopyCost: 1, /* CopyCost */
662 .Allocatable: true, /* Allocatable */
663 .BaseClass: false,
664 offsetof(LoongArchRegisterClassStorage, SubClassMasks[9]) - 8 * sizeof(MCRegisterClass),
665 offsetof(LoongArchRegisterClassStorage, SuperRegIdxSeqs[2]) - 8 * sizeof(MCRegisterClass),
666 .LaneMask: LaneBitmask(0x0000000000000001),
667 .AllocationPriority: 0,
668 .GlobalPriority: false,
669 .TSFlags: 0x00, /* TSFlags */
670 .SpillStackID: 0, /* SpillStackID */
671 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
672 .CoveredBySubRegs: false, /* CoveredBySubRegs */
673 offsetof(LoongArchRegisterClassStorage, SuperClasses[6]) - 8 * sizeof(MCRegisterClass),
674 .SuperClassesSize: 0
675 },
676 {
677 offsetof(LoongArchRegisterClassStorage, Regs[190]) - 9 * sizeof(MCRegisterClass),
678 offsetof(LoongArchRegisterClassStorage, BitSets[90]) - 9 * sizeof(MCRegisterClass),
679 .NameIdx: 30,
680 .RegSizeInBits: 128,
681 .RegsSize: 32,
682 .RegSetSize: 15,
683 .ID: LoongArch::LSX128RegClassID,
684 .CopyCost: 1, /* CopyCost */
685 .Allocatable: true, /* Allocatable */
686 .BaseClass: false,
687 offsetof(LoongArchRegisterClassStorage, SubClassMasks[11]) - 9 * sizeof(MCRegisterClass),
688 offsetof(LoongArchRegisterClassStorage, SuperRegIdxSeqs[4]) - 9 * sizeof(MCRegisterClass),
689 .LaneMask: LaneBitmask(0x0000000000000001),
690 .AllocationPriority: 0,
691 .GlobalPriority: false,
692 .TSFlags: 0x00, /* TSFlags */
693 .SpillStackID: 0, /* SpillStackID */
694 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
695 .CoveredBySubRegs: false, /* CoveredBySubRegs */
696 offsetof(LoongArchRegisterClassStorage, SuperClasses[6]) - 9 * sizeof(MCRegisterClass),
697 .SuperClassesSize: 0
698 },
699 {
700 offsetof(LoongArchRegisterClassStorage, Regs[222]) - 10 * sizeof(MCRegisterClass),
701 offsetof(LoongArchRegisterClassStorage, BitSets[105]) - 10 * sizeof(MCRegisterClass),
702 .NameIdx: 22,
703 .RegSizeInBits: 256,
704 .RegsSize: 32,
705 .RegSetSize: 19,
706 .ID: LoongArch::LASX256RegClassID,
707 .CopyCost: 1, /* CopyCost */
708 .Allocatable: true, /* Allocatable */
709 .BaseClass: false,
710 offsetof(LoongArchRegisterClassStorage, SubClassMasks[13]) - 10 * sizeof(MCRegisterClass),
711 offsetof(LoongArchRegisterClassStorage, SuperRegIdxSeqs[1]) - 10 * sizeof(MCRegisterClass),
712 .LaneMask: LaneBitmask(0x0000000000000001),
713 .AllocationPriority: 0,
714 .GlobalPriority: false,
715 .TSFlags: 0x00, /* TSFlags */
716 .SpillStackID: 0, /* SpillStackID */
717 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
718 .CoveredBySubRegs: false, /* CoveredBySubRegs */
719 offsetof(LoongArchRegisterClassStorage, SuperClasses[6]) - 10 * sizeof(MCRegisterClass),
720 .SuperClassesSize: 0
721 },
722 },
723 .Regs: {
724 /* 0 */ LoongArch::F0, LoongArch::F1, LoongArch::F2, LoongArch::F3, LoongArch::F4, LoongArch::F5, LoongArch::F6, LoongArch::F7, LoongArch::F8, LoongArch::F9, LoongArch::F10, LoongArch::F11, LoongArch::F12, LoongArch::F13, LoongArch::F14, LoongArch::F15, LoongArch::F16, LoongArch::F17, LoongArch::F18, LoongArch::F19, LoongArch::F20, LoongArch::F21, LoongArch::F22, LoongArch::F23, LoongArch::F24, LoongArch::F25, LoongArch::F26, LoongArch::F27, LoongArch::F28, LoongArch::F29, LoongArch::F30, LoongArch::F31,
725 /* 32 */ LoongArch::R4, LoongArch::R5, LoongArch::R6, LoongArch::R7, LoongArch::R8, LoongArch::R9, LoongArch::R10, LoongArch::R11, LoongArch::R12, LoongArch::R13, LoongArch::R14, LoongArch::R15, LoongArch::R16, LoongArch::R17, LoongArch::R18, LoongArch::R19, LoongArch::R20, LoongArch::R22, LoongArch::R23, LoongArch::R24, LoongArch::R25, LoongArch::R26, LoongArch::R27, LoongArch::R28, LoongArch::R29, LoongArch::R30, LoongArch::R31, LoongArch::R0, LoongArch::R1, LoongArch::R2, LoongArch::R3, LoongArch::R21,
726 /* 64 */ LoongArch::R4, LoongArch::R5, LoongArch::R6, LoongArch::R7, LoongArch::R8, LoongArch::R9, LoongArch::R10, LoongArch::R11, LoongArch::R12, LoongArch::R13, LoongArch::R14, LoongArch::R15, LoongArch::R16, LoongArch::R17, LoongArch::R18, LoongArch::R19, LoongArch::R20, LoongArch::R22, LoongArch::R23, LoongArch::R24, LoongArch::R25, LoongArch::R26, LoongArch::R27, LoongArch::R28, LoongArch::R29, LoongArch::R30, LoongArch::R31, LoongArch::R0, LoongArch::R2, LoongArch::R3, LoongArch::R21,
727 /* 95 */ LoongArch::R4, LoongArch::R5, LoongArch::R6, LoongArch::R7, LoongArch::R8, LoongArch::R9, LoongArch::R10, LoongArch::R11, LoongArch::R12, LoongArch::R13, LoongArch::R14, LoongArch::R15, LoongArch::R16, LoongArch::R17, LoongArch::R18, LoongArch::R19, LoongArch::R20, LoongArch::R22, LoongArch::R23, LoongArch::R24, LoongArch::R25, LoongArch::R26, LoongArch::R27, LoongArch::R28, LoongArch::R29, LoongArch::R30, LoongArch::R31, LoongArch::R2, LoongArch::R3, LoongArch::R21,
728 /* 125 */ LoongArch::R4, LoongArch::R5, LoongArch::R6, LoongArch::R7, LoongArch::R8, LoongArch::R9, LoongArch::R10, LoongArch::R11, LoongArch::R12, LoongArch::R13, LoongArch::R14, LoongArch::R15, LoongArch::R16, LoongArch::R17, LoongArch::R18, LoongArch::R19, LoongArch::R20,
729 /* 142 */ LoongArch::FCC0, LoongArch::FCC1, LoongArch::FCC2, LoongArch::FCC3, LoongArch::FCC4, LoongArch::FCC5, LoongArch::FCC6, LoongArch::FCC7,
730 /* 150 */ LoongArch::FCSR0, LoongArch::FCSR1, LoongArch::FCSR2, LoongArch::FCSR3,
731 /* 154 */ LoongArch::SCR0, LoongArch::SCR1, LoongArch::SCR2, LoongArch::SCR3,
732 /* 158 */ LoongArch::F0_64, LoongArch::F1_64, LoongArch::F2_64, LoongArch::F3_64, LoongArch::F4_64, LoongArch::F5_64, LoongArch::F6_64, LoongArch::F7_64, LoongArch::F8_64, LoongArch::F9_64, LoongArch::F10_64, LoongArch::F11_64, LoongArch::F12_64, LoongArch::F13_64, LoongArch::F14_64, LoongArch::F15_64, LoongArch::F16_64, LoongArch::F17_64, LoongArch::F18_64, LoongArch::F19_64, LoongArch::F20_64, LoongArch::F21_64, LoongArch::F22_64, LoongArch::F23_64, LoongArch::F24_64, LoongArch::F25_64, LoongArch::F26_64, LoongArch::F27_64, LoongArch::F28_64, LoongArch::F29_64, LoongArch::F30_64, LoongArch::F31_64,
733 /* 190 */ LoongArch::VR0, LoongArch::VR1, LoongArch::VR2, LoongArch::VR3, LoongArch::VR4, LoongArch::VR5, LoongArch::VR6, LoongArch::VR7, LoongArch::VR8, LoongArch::VR9, LoongArch::VR10, LoongArch::VR11, LoongArch::VR12, LoongArch::VR13, LoongArch::VR14, LoongArch::VR15, LoongArch::VR16, LoongArch::VR17, LoongArch::VR18, LoongArch::VR19, LoongArch::VR20, LoongArch::VR21, LoongArch::VR22, LoongArch::VR23, LoongArch::VR24, LoongArch::VR25, LoongArch::VR26, LoongArch::VR27, LoongArch::VR28, LoongArch::VR29, LoongArch::VR30, LoongArch::VR31,
734 /* 222 */ LoongArch::XR0, LoongArch::XR1, LoongArch::XR2, LoongArch::XR3, LoongArch::XR4, LoongArch::XR5, LoongArch::XR6, LoongArch::XR7, LoongArch::XR8, LoongArch::XR9, LoongArch::XR10, LoongArch::XR11, LoongArch::XR12, LoongArch::XR13, LoongArch::XR14, LoongArch::XR15, LoongArch::XR16, LoongArch::XR17, LoongArch::XR18, LoongArch::XR19, LoongArch::XR20, LoongArch::XR21, LoongArch::XR22, LoongArch::XR23, LoongArch::XR24, LoongArch::XR25, LoongArch::XR26, LoongArch::XR27, LoongArch::XR28, LoongArch::XR29, LoongArch::XR30, LoongArch::XR31,
735 },
736 .BitSets: {
737 /* 0 */ 0xfe, 0xff, 0xff, 0xff, 0x01,
738 /* 5 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f,
739 /* 15 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, 0xff, 0xff, 0x1f,
740 /* 25 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x1f,
741 /* 35 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x03,
742 /* 44 */ 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01,
743 /* 50 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e,
744 /* 56 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01,
745 /* 67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01,
746 /* 90 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01,
747 /* 105 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01,
748 },
749 .SubClassMasks: {
750 // 0 FPR32
751 0x00000001,
752 0x00000700, // sub_32
753 // 2 GPR
754 0x0000001e,
755 // 3 GPRJR
756 0x0000001c,
757 // 4 GPRNoR0R1
758 0x00000018,
759 // 5 GPRT
760 0x00000010,
761 // 6 CFR
762 0x00000020,
763 // 7 FCSR
764 0x00000040,
765 // 8 SCR
766 0x00000080,
767 // 9 FPR64
768 0x00000100,
769 0x00000600, // sub_64
770 // 11 LSX128
771 0x00000200,
772 0x00000400, // sub_128
773 // 13 LASX256
774 0x00000400,
775 },
776 .SuperRegIdxSeqs: {
777 /* 0 */ 1, 0,
778 /* 2 */ 2, 0,
779 /* 4 */ 3, 0,
780 },
781 .SuperClasses: {
782 /* 0 FPR32 */
783 /* 0 GPR */
784 /* 0 GPRJR */ LoongArch::GPRRegClassID,
785 /* 1 GPRNoR0R1 */ LoongArch::GPRRegClassID, LoongArch::GPRJRRegClassID,
786 /* 3 GPRT */ LoongArch::GPRRegClassID, LoongArch::GPRJRRegClassID, LoongArch::GPRNoR0R1RegClassID,
787 /* 6 CFR */
788 /* 6 FCSR */
789 /* 6 SCR */
790 /* 6 FPR64 */
791 /* 6 LSX128 */
792 /* 6 LASX256 */
793 }
794};
795
796const MCRegisterClass &getLoongArchMCRegisterClass(unsigned RC) {
797 return LoongArchMCRegisterClassStorage.Classes[RC];
798}
799
800// LoongArch Dwarf<->LLVM register mappings.
801extern const MCRegisterInfo::DwarfLLVMRegPair LoongArchDwarfFlavour0Dwarf2L[] = {
802 { .FromReg: 0U, .ToReg: LoongArch::R0 },
803 { .FromReg: 1U, .ToReg: LoongArch::R1 },
804 { .FromReg: 2U, .ToReg: LoongArch::R2 },
805 { .FromReg: 3U, .ToReg: LoongArch::R3 },
806 { .FromReg: 4U, .ToReg: LoongArch::R4 },
807 { .FromReg: 5U, .ToReg: LoongArch::R5 },
808 { .FromReg: 6U, .ToReg: LoongArch::R6 },
809 { .FromReg: 7U, .ToReg: LoongArch::R7 },
810 { .FromReg: 8U, .ToReg: LoongArch::R8 },
811 { .FromReg: 9U, .ToReg: LoongArch::R9 },
812 { .FromReg: 10U, .ToReg: LoongArch::R10 },
813 { .FromReg: 11U, .ToReg: LoongArch::R11 },
814 { .FromReg: 12U, .ToReg: LoongArch::R12 },
815 { .FromReg: 13U, .ToReg: LoongArch::R13 },
816 { .FromReg: 14U, .ToReg: LoongArch::R14 },
817 { .FromReg: 15U, .ToReg: LoongArch::R15 },
818 { .FromReg: 16U, .ToReg: LoongArch::R16 },
819 { .FromReg: 17U, .ToReg: LoongArch::R17 },
820 { .FromReg: 18U, .ToReg: LoongArch::R18 },
821 { .FromReg: 19U, .ToReg: LoongArch::R19 },
822 { .FromReg: 20U, .ToReg: LoongArch::R20 },
823 { .FromReg: 21U, .ToReg: LoongArch::R21 },
824 { .FromReg: 22U, .ToReg: LoongArch::R22 },
825 { .FromReg: 23U, .ToReg: LoongArch::R23 },
826 { .FromReg: 24U, .ToReg: LoongArch::R24 },
827 { .FromReg: 25U, .ToReg: LoongArch::R25 },
828 { .FromReg: 26U, .ToReg: LoongArch::R26 },
829 { .FromReg: 27U, .ToReg: LoongArch::R27 },
830 { .FromReg: 28U, .ToReg: LoongArch::R28 },
831 { .FromReg: 29U, .ToReg: LoongArch::R29 },
832 { .FromReg: 30U, .ToReg: LoongArch::R30 },
833 { .FromReg: 31U, .ToReg: LoongArch::R31 },
834 { .FromReg: 32U, .ToReg: LoongArch::F0_64 },
835 { .FromReg: 33U, .ToReg: LoongArch::F1_64 },
836 { .FromReg: 34U, .ToReg: LoongArch::F2_64 },
837 { .FromReg: 35U, .ToReg: LoongArch::F3_64 },
838 { .FromReg: 36U, .ToReg: LoongArch::F4_64 },
839 { .FromReg: 37U, .ToReg: LoongArch::F5_64 },
840 { .FromReg: 38U, .ToReg: LoongArch::F6_64 },
841 { .FromReg: 39U, .ToReg: LoongArch::F7_64 },
842 { .FromReg: 40U, .ToReg: LoongArch::F8_64 },
843 { .FromReg: 41U, .ToReg: LoongArch::F9_64 },
844 { .FromReg: 42U, .ToReg: LoongArch::F10_64 },
845 { .FromReg: 43U, .ToReg: LoongArch::F11_64 },
846 { .FromReg: 44U, .ToReg: LoongArch::F12_64 },
847 { .FromReg: 45U, .ToReg: LoongArch::F13_64 },
848 { .FromReg: 46U, .ToReg: LoongArch::F14_64 },
849 { .FromReg: 47U, .ToReg: LoongArch::F15_64 },
850 { .FromReg: 48U, .ToReg: LoongArch::F16_64 },
851 { .FromReg: 49U, .ToReg: LoongArch::F17_64 },
852 { .FromReg: 50U, .ToReg: LoongArch::F18_64 },
853 { .FromReg: 51U, .ToReg: LoongArch::F19_64 },
854 { .FromReg: 52U, .ToReg: LoongArch::F20_64 },
855 { .FromReg: 53U, .ToReg: LoongArch::F21_64 },
856 { .FromReg: 54U, .ToReg: LoongArch::F22_64 },
857 { .FromReg: 55U, .ToReg: LoongArch::F23_64 },
858 { .FromReg: 56U, .ToReg: LoongArch::F24_64 },
859 { .FromReg: 57U, .ToReg: LoongArch::F25_64 },
860 { .FromReg: 58U, .ToReg: LoongArch::F26_64 },
861 { .FromReg: 59U, .ToReg: LoongArch::F27_64 },
862 { .FromReg: 60U, .ToReg: LoongArch::F28_64 },
863 { .FromReg: 61U, .ToReg: LoongArch::F29_64 },
864 { .FromReg: 62U, .ToReg: LoongArch::F30_64 },
865 { .FromReg: 63U, .ToReg: LoongArch::F31_64 },
866};
867extern const unsigned LoongArchDwarfFlavour0Dwarf2LSize = std::size(LoongArchDwarfFlavour0Dwarf2L);
868
869extern const MCRegisterInfo::DwarfLLVMRegPair LoongArchEHFlavour0Dwarf2L[] = {
870 { .FromReg: 0U, .ToReg: LoongArch::R0 },
871 { .FromReg: 1U, .ToReg: LoongArch::R1 },
872 { .FromReg: 2U, .ToReg: LoongArch::R2 },
873 { .FromReg: 3U, .ToReg: LoongArch::R3 },
874 { .FromReg: 4U, .ToReg: LoongArch::R4 },
875 { .FromReg: 5U, .ToReg: LoongArch::R5 },
876 { .FromReg: 6U, .ToReg: LoongArch::R6 },
877 { .FromReg: 7U, .ToReg: LoongArch::R7 },
878 { .FromReg: 8U, .ToReg: LoongArch::R8 },
879 { .FromReg: 9U, .ToReg: LoongArch::R9 },
880 { .FromReg: 10U, .ToReg: LoongArch::R10 },
881 { .FromReg: 11U, .ToReg: LoongArch::R11 },
882 { .FromReg: 12U, .ToReg: LoongArch::R12 },
883 { .FromReg: 13U, .ToReg: LoongArch::R13 },
884 { .FromReg: 14U, .ToReg: LoongArch::R14 },
885 { .FromReg: 15U, .ToReg: LoongArch::R15 },
886 { .FromReg: 16U, .ToReg: LoongArch::R16 },
887 { .FromReg: 17U, .ToReg: LoongArch::R17 },
888 { .FromReg: 18U, .ToReg: LoongArch::R18 },
889 { .FromReg: 19U, .ToReg: LoongArch::R19 },
890 { .FromReg: 20U, .ToReg: LoongArch::R20 },
891 { .FromReg: 21U, .ToReg: LoongArch::R21 },
892 { .FromReg: 22U, .ToReg: LoongArch::R22 },
893 { .FromReg: 23U, .ToReg: LoongArch::R23 },
894 { .FromReg: 24U, .ToReg: LoongArch::R24 },
895 { .FromReg: 25U, .ToReg: LoongArch::R25 },
896 { .FromReg: 26U, .ToReg: LoongArch::R26 },
897 { .FromReg: 27U, .ToReg: LoongArch::R27 },
898 { .FromReg: 28U, .ToReg: LoongArch::R28 },
899 { .FromReg: 29U, .ToReg: LoongArch::R29 },
900 { .FromReg: 30U, .ToReg: LoongArch::R30 },
901 { .FromReg: 31U, .ToReg: LoongArch::R31 },
902 { .FromReg: 32U, .ToReg: LoongArch::F0_64 },
903 { .FromReg: 33U, .ToReg: LoongArch::F1_64 },
904 { .FromReg: 34U, .ToReg: LoongArch::F2_64 },
905 { .FromReg: 35U, .ToReg: LoongArch::F3_64 },
906 { .FromReg: 36U, .ToReg: LoongArch::F4_64 },
907 { .FromReg: 37U, .ToReg: LoongArch::F5_64 },
908 { .FromReg: 38U, .ToReg: LoongArch::F6_64 },
909 { .FromReg: 39U, .ToReg: LoongArch::F7_64 },
910 { .FromReg: 40U, .ToReg: LoongArch::F8_64 },
911 { .FromReg: 41U, .ToReg: LoongArch::F9_64 },
912 { .FromReg: 42U, .ToReg: LoongArch::F10_64 },
913 { .FromReg: 43U, .ToReg: LoongArch::F11_64 },
914 { .FromReg: 44U, .ToReg: LoongArch::F12_64 },
915 { .FromReg: 45U, .ToReg: LoongArch::F13_64 },
916 { .FromReg: 46U, .ToReg: LoongArch::F14_64 },
917 { .FromReg: 47U, .ToReg: LoongArch::F15_64 },
918 { .FromReg: 48U, .ToReg: LoongArch::F16_64 },
919 { .FromReg: 49U, .ToReg: LoongArch::F17_64 },
920 { .FromReg: 50U, .ToReg: LoongArch::F18_64 },
921 { .FromReg: 51U, .ToReg: LoongArch::F19_64 },
922 { .FromReg: 52U, .ToReg: LoongArch::F20_64 },
923 { .FromReg: 53U, .ToReg: LoongArch::F21_64 },
924 { .FromReg: 54U, .ToReg: LoongArch::F22_64 },
925 { .FromReg: 55U, .ToReg: LoongArch::F23_64 },
926 { .FromReg: 56U, .ToReg: LoongArch::F24_64 },
927 { .FromReg: 57U, .ToReg: LoongArch::F25_64 },
928 { .FromReg: 58U, .ToReg: LoongArch::F26_64 },
929 { .FromReg: 59U, .ToReg: LoongArch::F27_64 },
930 { .FromReg: 60U, .ToReg: LoongArch::F28_64 },
931 { .FromReg: 61U, .ToReg: LoongArch::F29_64 },
932 { .FromReg: 62U, .ToReg: LoongArch::F30_64 },
933 { .FromReg: 63U, .ToReg: LoongArch::F31_64 },
934};
935extern const unsigned LoongArchEHFlavour0Dwarf2LSize = std::size(LoongArchEHFlavour0Dwarf2L);
936
937extern const MCRegisterInfo::DwarfLLVMRegPair LoongArchDwarfFlavour0L2Dwarf[] = {
938 { .FromReg: LoongArch::F0, .ToReg: 32U },
939 { .FromReg: LoongArch::F1, .ToReg: 33U },
940 { .FromReg: LoongArch::F2, .ToReg: 34U },
941 { .FromReg: LoongArch::F3, .ToReg: 35U },
942 { .FromReg: LoongArch::F4, .ToReg: 36U },
943 { .FromReg: LoongArch::F5, .ToReg: 37U },
944 { .FromReg: LoongArch::F6, .ToReg: 38U },
945 { .FromReg: LoongArch::F7, .ToReg: 39U },
946 { .FromReg: LoongArch::F8, .ToReg: 40U },
947 { .FromReg: LoongArch::F9, .ToReg: 41U },
948 { .FromReg: LoongArch::F10, .ToReg: 42U },
949 { .FromReg: LoongArch::F11, .ToReg: 43U },
950 { .FromReg: LoongArch::F12, .ToReg: 44U },
951 { .FromReg: LoongArch::F13, .ToReg: 45U },
952 { .FromReg: LoongArch::F14, .ToReg: 46U },
953 { .FromReg: LoongArch::F15, .ToReg: 47U },
954 { .FromReg: LoongArch::F16, .ToReg: 48U },
955 { .FromReg: LoongArch::F17, .ToReg: 49U },
956 { .FromReg: LoongArch::F18, .ToReg: 50U },
957 { .FromReg: LoongArch::F19, .ToReg: 51U },
958 { .FromReg: LoongArch::F20, .ToReg: 52U },
959 { .FromReg: LoongArch::F21, .ToReg: 53U },
960 { .FromReg: LoongArch::F22, .ToReg: 54U },
961 { .FromReg: LoongArch::F23, .ToReg: 55U },
962 { .FromReg: LoongArch::F24, .ToReg: 56U },
963 { .FromReg: LoongArch::F25, .ToReg: 57U },
964 { .FromReg: LoongArch::F26, .ToReg: 58U },
965 { .FromReg: LoongArch::F27, .ToReg: 59U },
966 { .FromReg: LoongArch::F28, .ToReg: 60U },
967 { .FromReg: LoongArch::F29, .ToReg: 61U },
968 { .FromReg: LoongArch::F30, .ToReg: 62U },
969 { .FromReg: LoongArch::F31, .ToReg: 63U },
970 { .FromReg: LoongArch::R0, .ToReg: 0U },
971 { .FromReg: LoongArch::R1, .ToReg: 1U },
972 { .FromReg: LoongArch::R2, .ToReg: 2U },
973 { .FromReg: LoongArch::R3, .ToReg: 3U },
974 { .FromReg: LoongArch::R4, .ToReg: 4U },
975 { .FromReg: LoongArch::R5, .ToReg: 5U },
976 { .FromReg: LoongArch::R6, .ToReg: 6U },
977 { .FromReg: LoongArch::R7, .ToReg: 7U },
978 { .FromReg: LoongArch::R8, .ToReg: 8U },
979 { .FromReg: LoongArch::R9, .ToReg: 9U },
980 { .FromReg: LoongArch::R10, .ToReg: 10U },
981 { .FromReg: LoongArch::R11, .ToReg: 11U },
982 { .FromReg: LoongArch::R12, .ToReg: 12U },
983 { .FromReg: LoongArch::R13, .ToReg: 13U },
984 { .FromReg: LoongArch::R14, .ToReg: 14U },
985 { .FromReg: LoongArch::R15, .ToReg: 15U },
986 { .FromReg: LoongArch::R16, .ToReg: 16U },
987 { .FromReg: LoongArch::R17, .ToReg: 17U },
988 { .FromReg: LoongArch::R18, .ToReg: 18U },
989 { .FromReg: LoongArch::R19, .ToReg: 19U },
990 { .FromReg: LoongArch::R20, .ToReg: 20U },
991 { .FromReg: LoongArch::R21, .ToReg: 21U },
992 { .FromReg: LoongArch::R22, .ToReg: 22U },
993 { .FromReg: LoongArch::R23, .ToReg: 23U },
994 { .FromReg: LoongArch::R24, .ToReg: 24U },
995 { .FromReg: LoongArch::R25, .ToReg: 25U },
996 { .FromReg: LoongArch::R26, .ToReg: 26U },
997 { .FromReg: LoongArch::R27, .ToReg: 27U },
998 { .FromReg: LoongArch::R28, .ToReg: 28U },
999 { .FromReg: LoongArch::R29, .ToReg: 29U },
1000 { .FromReg: LoongArch::R30, .ToReg: 30U },
1001 { .FromReg: LoongArch::R31, .ToReg: 31U },
1002 { .FromReg: LoongArch::VR0, .ToReg: 32U },
1003 { .FromReg: LoongArch::VR1, .ToReg: 33U },
1004 { .FromReg: LoongArch::VR2, .ToReg: 34U },
1005 { .FromReg: LoongArch::VR3, .ToReg: 35U },
1006 { .FromReg: LoongArch::VR4, .ToReg: 36U },
1007 { .FromReg: LoongArch::VR5, .ToReg: 37U },
1008 { .FromReg: LoongArch::VR6, .ToReg: 38U },
1009 { .FromReg: LoongArch::VR7, .ToReg: 39U },
1010 { .FromReg: LoongArch::VR8, .ToReg: 40U },
1011 { .FromReg: LoongArch::VR9, .ToReg: 41U },
1012 { .FromReg: LoongArch::VR10, .ToReg: 42U },
1013 { .FromReg: LoongArch::VR11, .ToReg: 43U },
1014 { .FromReg: LoongArch::VR12, .ToReg: 44U },
1015 { .FromReg: LoongArch::VR13, .ToReg: 45U },
1016 { .FromReg: LoongArch::VR14, .ToReg: 46U },
1017 { .FromReg: LoongArch::VR15, .ToReg: 47U },
1018 { .FromReg: LoongArch::VR16, .ToReg: 48U },
1019 { .FromReg: LoongArch::VR17, .ToReg: 49U },
1020 { .FromReg: LoongArch::VR18, .ToReg: 50U },
1021 { .FromReg: LoongArch::VR19, .ToReg: 51U },
1022 { .FromReg: LoongArch::VR20, .ToReg: 52U },
1023 { .FromReg: LoongArch::VR21, .ToReg: 53U },
1024 { .FromReg: LoongArch::VR22, .ToReg: 54U },
1025 { .FromReg: LoongArch::VR23, .ToReg: 55U },
1026 { .FromReg: LoongArch::VR24, .ToReg: 56U },
1027 { .FromReg: LoongArch::VR25, .ToReg: 57U },
1028 { .FromReg: LoongArch::VR26, .ToReg: 58U },
1029 { .FromReg: LoongArch::VR27, .ToReg: 59U },
1030 { .FromReg: LoongArch::VR28, .ToReg: 60U },
1031 { .FromReg: LoongArch::VR29, .ToReg: 61U },
1032 { .FromReg: LoongArch::VR30, .ToReg: 62U },
1033 { .FromReg: LoongArch::VR31, .ToReg: 63U },
1034 { .FromReg: LoongArch::XR0, .ToReg: 32U },
1035 { .FromReg: LoongArch::XR1, .ToReg: 33U },
1036 { .FromReg: LoongArch::XR2, .ToReg: 34U },
1037 { .FromReg: LoongArch::XR3, .ToReg: 35U },
1038 { .FromReg: LoongArch::XR4, .ToReg: 36U },
1039 { .FromReg: LoongArch::XR5, .ToReg: 37U },
1040 { .FromReg: LoongArch::XR6, .ToReg: 38U },
1041 { .FromReg: LoongArch::XR7, .ToReg: 39U },
1042 { .FromReg: LoongArch::XR8, .ToReg: 40U },
1043 { .FromReg: LoongArch::XR9, .ToReg: 41U },
1044 { .FromReg: LoongArch::XR10, .ToReg: 42U },
1045 { .FromReg: LoongArch::XR11, .ToReg: 43U },
1046 { .FromReg: LoongArch::XR12, .ToReg: 44U },
1047 { .FromReg: LoongArch::XR13, .ToReg: 45U },
1048 { .FromReg: LoongArch::XR14, .ToReg: 46U },
1049 { .FromReg: LoongArch::XR15, .ToReg: 47U },
1050 { .FromReg: LoongArch::XR16, .ToReg: 48U },
1051 { .FromReg: LoongArch::XR17, .ToReg: 49U },
1052 { .FromReg: LoongArch::XR18, .ToReg: 50U },
1053 { .FromReg: LoongArch::XR19, .ToReg: 51U },
1054 { .FromReg: LoongArch::XR20, .ToReg: 52U },
1055 { .FromReg: LoongArch::XR21, .ToReg: 53U },
1056 { .FromReg: LoongArch::XR22, .ToReg: 54U },
1057 { .FromReg: LoongArch::XR23, .ToReg: 55U },
1058 { .FromReg: LoongArch::XR24, .ToReg: 56U },
1059 { .FromReg: LoongArch::XR25, .ToReg: 57U },
1060 { .FromReg: LoongArch::XR26, .ToReg: 58U },
1061 { .FromReg: LoongArch::XR27, .ToReg: 59U },
1062 { .FromReg: LoongArch::XR28, .ToReg: 60U },
1063 { .FromReg: LoongArch::XR29, .ToReg: 61U },
1064 { .FromReg: LoongArch::XR30, .ToReg: 62U },
1065 { .FromReg: LoongArch::XR31, .ToReg: 63U },
1066 { .FromReg: LoongArch::F0_64, .ToReg: 32U },
1067 { .FromReg: LoongArch::F1_64, .ToReg: 33U },
1068 { .FromReg: LoongArch::F2_64, .ToReg: 34U },
1069 { .FromReg: LoongArch::F3_64, .ToReg: 35U },
1070 { .FromReg: LoongArch::F4_64, .ToReg: 36U },
1071 { .FromReg: LoongArch::F5_64, .ToReg: 37U },
1072 { .FromReg: LoongArch::F6_64, .ToReg: 38U },
1073 { .FromReg: LoongArch::F7_64, .ToReg: 39U },
1074 { .FromReg: LoongArch::F8_64, .ToReg: 40U },
1075 { .FromReg: LoongArch::F9_64, .ToReg: 41U },
1076 { .FromReg: LoongArch::F10_64, .ToReg: 42U },
1077 { .FromReg: LoongArch::F11_64, .ToReg: 43U },
1078 { .FromReg: LoongArch::F12_64, .ToReg: 44U },
1079 { .FromReg: LoongArch::F13_64, .ToReg: 45U },
1080 { .FromReg: LoongArch::F14_64, .ToReg: 46U },
1081 { .FromReg: LoongArch::F15_64, .ToReg: 47U },
1082 { .FromReg: LoongArch::F16_64, .ToReg: 48U },
1083 { .FromReg: LoongArch::F17_64, .ToReg: 49U },
1084 { .FromReg: LoongArch::F18_64, .ToReg: 50U },
1085 { .FromReg: LoongArch::F19_64, .ToReg: 51U },
1086 { .FromReg: LoongArch::F20_64, .ToReg: 52U },
1087 { .FromReg: LoongArch::F21_64, .ToReg: 53U },
1088 { .FromReg: LoongArch::F22_64, .ToReg: 54U },
1089 { .FromReg: LoongArch::F23_64, .ToReg: 55U },
1090 { .FromReg: LoongArch::F24_64, .ToReg: 56U },
1091 { .FromReg: LoongArch::F25_64, .ToReg: 57U },
1092 { .FromReg: LoongArch::F26_64, .ToReg: 58U },
1093 { .FromReg: LoongArch::F27_64, .ToReg: 59U },
1094 { .FromReg: LoongArch::F28_64, .ToReg: 60U },
1095 { .FromReg: LoongArch::F29_64, .ToReg: 61U },
1096 { .FromReg: LoongArch::F30_64, .ToReg: 62U },
1097 { .FromReg: LoongArch::F31_64, .ToReg: 63U },
1098};
1099extern const unsigned LoongArchDwarfFlavour0L2DwarfSize = std::size(LoongArchDwarfFlavour0L2Dwarf);
1100
1101extern const MCRegisterInfo::DwarfLLVMRegPair LoongArchEHFlavour0L2Dwarf[] = {
1102 { .FromReg: LoongArch::F0, .ToReg: 32U },
1103 { .FromReg: LoongArch::F1, .ToReg: 33U },
1104 { .FromReg: LoongArch::F2, .ToReg: 34U },
1105 { .FromReg: LoongArch::F3, .ToReg: 35U },
1106 { .FromReg: LoongArch::F4, .ToReg: 36U },
1107 { .FromReg: LoongArch::F5, .ToReg: 37U },
1108 { .FromReg: LoongArch::F6, .ToReg: 38U },
1109 { .FromReg: LoongArch::F7, .ToReg: 39U },
1110 { .FromReg: LoongArch::F8, .ToReg: 40U },
1111 { .FromReg: LoongArch::F9, .ToReg: 41U },
1112 { .FromReg: LoongArch::F10, .ToReg: 42U },
1113 { .FromReg: LoongArch::F11, .ToReg: 43U },
1114 { .FromReg: LoongArch::F12, .ToReg: 44U },
1115 { .FromReg: LoongArch::F13, .ToReg: 45U },
1116 { .FromReg: LoongArch::F14, .ToReg: 46U },
1117 { .FromReg: LoongArch::F15, .ToReg: 47U },
1118 { .FromReg: LoongArch::F16, .ToReg: 48U },
1119 { .FromReg: LoongArch::F17, .ToReg: 49U },
1120 { .FromReg: LoongArch::F18, .ToReg: 50U },
1121 { .FromReg: LoongArch::F19, .ToReg: 51U },
1122 { .FromReg: LoongArch::F20, .ToReg: 52U },
1123 { .FromReg: LoongArch::F21, .ToReg: 53U },
1124 { .FromReg: LoongArch::F22, .ToReg: 54U },
1125 { .FromReg: LoongArch::F23, .ToReg: 55U },
1126 { .FromReg: LoongArch::F24, .ToReg: 56U },
1127 { .FromReg: LoongArch::F25, .ToReg: 57U },
1128 { .FromReg: LoongArch::F26, .ToReg: 58U },
1129 { .FromReg: LoongArch::F27, .ToReg: 59U },
1130 { .FromReg: LoongArch::F28, .ToReg: 60U },
1131 { .FromReg: LoongArch::F29, .ToReg: 61U },
1132 { .FromReg: LoongArch::F30, .ToReg: 62U },
1133 { .FromReg: LoongArch::F31, .ToReg: 63U },
1134 { .FromReg: LoongArch::R0, .ToReg: 0U },
1135 { .FromReg: LoongArch::R1, .ToReg: 1U },
1136 { .FromReg: LoongArch::R2, .ToReg: 2U },
1137 { .FromReg: LoongArch::R3, .ToReg: 3U },
1138 { .FromReg: LoongArch::R4, .ToReg: 4U },
1139 { .FromReg: LoongArch::R5, .ToReg: 5U },
1140 { .FromReg: LoongArch::R6, .ToReg: 6U },
1141 { .FromReg: LoongArch::R7, .ToReg: 7U },
1142 { .FromReg: LoongArch::R8, .ToReg: 8U },
1143 { .FromReg: LoongArch::R9, .ToReg: 9U },
1144 { .FromReg: LoongArch::R10, .ToReg: 10U },
1145 { .FromReg: LoongArch::R11, .ToReg: 11U },
1146 { .FromReg: LoongArch::R12, .ToReg: 12U },
1147 { .FromReg: LoongArch::R13, .ToReg: 13U },
1148 { .FromReg: LoongArch::R14, .ToReg: 14U },
1149 { .FromReg: LoongArch::R15, .ToReg: 15U },
1150 { .FromReg: LoongArch::R16, .ToReg: 16U },
1151 { .FromReg: LoongArch::R17, .ToReg: 17U },
1152 { .FromReg: LoongArch::R18, .ToReg: 18U },
1153 { .FromReg: LoongArch::R19, .ToReg: 19U },
1154 { .FromReg: LoongArch::R20, .ToReg: 20U },
1155 { .FromReg: LoongArch::R21, .ToReg: 21U },
1156 { .FromReg: LoongArch::R22, .ToReg: 22U },
1157 { .FromReg: LoongArch::R23, .ToReg: 23U },
1158 { .FromReg: LoongArch::R24, .ToReg: 24U },
1159 { .FromReg: LoongArch::R25, .ToReg: 25U },
1160 { .FromReg: LoongArch::R26, .ToReg: 26U },
1161 { .FromReg: LoongArch::R27, .ToReg: 27U },
1162 { .FromReg: LoongArch::R28, .ToReg: 28U },
1163 { .FromReg: LoongArch::R29, .ToReg: 29U },
1164 { .FromReg: LoongArch::R30, .ToReg: 30U },
1165 { .FromReg: LoongArch::R31, .ToReg: 31U },
1166 { .FromReg: LoongArch::VR0, .ToReg: 32U },
1167 { .FromReg: LoongArch::VR1, .ToReg: 33U },
1168 { .FromReg: LoongArch::VR2, .ToReg: 34U },
1169 { .FromReg: LoongArch::VR3, .ToReg: 35U },
1170 { .FromReg: LoongArch::VR4, .ToReg: 36U },
1171 { .FromReg: LoongArch::VR5, .ToReg: 37U },
1172 { .FromReg: LoongArch::VR6, .ToReg: 38U },
1173 { .FromReg: LoongArch::VR7, .ToReg: 39U },
1174 { .FromReg: LoongArch::VR8, .ToReg: 40U },
1175 { .FromReg: LoongArch::VR9, .ToReg: 41U },
1176 { .FromReg: LoongArch::VR10, .ToReg: 42U },
1177 { .FromReg: LoongArch::VR11, .ToReg: 43U },
1178 { .FromReg: LoongArch::VR12, .ToReg: 44U },
1179 { .FromReg: LoongArch::VR13, .ToReg: 45U },
1180 { .FromReg: LoongArch::VR14, .ToReg: 46U },
1181 { .FromReg: LoongArch::VR15, .ToReg: 47U },
1182 { .FromReg: LoongArch::VR16, .ToReg: 48U },
1183 { .FromReg: LoongArch::VR17, .ToReg: 49U },
1184 { .FromReg: LoongArch::VR18, .ToReg: 50U },
1185 { .FromReg: LoongArch::VR19, .ToReg: 51U },
1186 { .FromReg: LoongArch::VR20, .ToReg: 52U },
1187 { .FromReg: LoongArch::VR21, .ToReg: 53U },
1188 { .FromReg: LoongArch::VR22, .ToReg: 54U },
1189 { .FromReg: LoongArch::VR23, .ToReg: 55U },
1190 { .FromReg: LoongArch::VR24, .ToReg: 56U },
1191 { .FromReg: LoongArch::VR25, .ToReg: 57U },
1192 { .FromReg: LoongArch::VR26, .ToReg: 58U },
1193 { .FromReg: LoongArch::VR27, .ToReg: 59U },
1194 { .FromReg: LoongArch::VR28, .ToReg: 60U },
1195 { .FromReg: LoongArch::VR29, .ToReg: 61U },
1196 { .FromReg: LoongArch::VR30, .ToReg: 62U },
1197 { .FromReg: LoongArch::VR31, .ToReg: 63U },
1198 { .FromReg: LoongArch::XR0, .ToReg: 32U },
1199 { .FromReg: LoongArch::XR1, .ToReg: 33U },
1200 { .FromReg: LoongArch::XR2, .ToReg: 34U },
1201 { .FromReg: LoongArch::XR3, .ToReg: 35U },
1202 { .FromReg: LoongArch::XR4, .ToReg: 36U },
1203 { .FromReg: LoongArch::XR5, .ToReg: 37U },
1204 { .FromReg: LoongArch::XR6, .ToReg: 38U },
1205 { .FromReg: LoongArch::XR7, .ToReg: 39U },
1206 { .FromReg: LoongArch::XR8, .ToReg: 40U },
1207 { .FromReg: LoongArch::XR9, .ToReg: 41U },
1208 { .FromReg: LoongArch::XR10, .ToReg: 42U },
1209 { .FromReg: LoongArch::XR11, .ToReg: 43U },
1210 { .FromReg: LoongArch::XR12, .ToReg: 44U },
1211 { .FromReg: LoongArch::XR13, .ToReg: 45U },
1212 { .FromReg: LoongArch::XR14, .ToReg: 46U },
1213 { .FromReg: LoongArch::XR15, .ToReg: 47U },
1214 { .FromReg: LoongArch::XR16, .ToReg: 48U },
1215 { .FromReg: LoongArch::XR17, .ToReg: 49U },
1216 { .FromReg: LoongArch::XR18, .ToReg: 50U },
1217 { .FromReg: LoongArch::XR19, .ToReg: 51U },
1218 { .FromReg: LoongArch::XR20, .ToReg: 52U },
1219 { .FromReg: LoongArch::XR21, .ToReg: 53U },
1220 { .FromReg: LoongArch::XR22, .ToReg: 54U },
1221 { .FromReg: LoongArch::XR23, .ToReg: 55U },
1222 { .FromReg: LoongArch::XR24, .ToReg: 56U },
1223 { .FromReg: LoongArch::XR25, .ToReg: 57U },
1224 { .FromReg: LoongArch::XR26, .ToReg: 58U },
1225 { .FromReg: LoongArch::XR27, .ToReg: 59U },
1226 { .FromReg: LoongArch::XR28, .ToReg: 60U },
1227 { .FromReg: LoongArch::XR29, .ToReg: 61U },
1228 { .FromReg: LoongArch::XR30, .ToReg: 62U },
1229 { .FromReg: LoongArch::XR31, .ToReg: 63U },
1230 { .FromReg: LoongArch::F0_64, .ToReg: 32U },
1231 { .FromReg: LoongArch::F1_64, .ToReg: 33U },
1232 { .FromReg: LoongArch::F2_64, .ToReg: 34U },
1233 { .FromReg: LoongArch::F3_64, .ToReg: 35U },
1234 { .FromReg: LoongArch::F4_64, .ToReg: 36U },
1235 { .FromReg: LoongArch::F5_64, .ToReg: 37U },
1236 { .FromReg: LoongArch::F6_64, .ToReg: 38U },
1237 { .FromReg: LoongArch::F7_64, .ToReg: 39U },
1238 { .FromReg: LoongArch::F8_64, .ToReg: 40U },
1239 { .FromReg: LoongArch::F9_64, .ToReg: 41U },
1240 { .FromReg: LoongArch::F10_64, .ToReg: 42U },
1241 { .FromReg: LoongArch::F11_64, .ToReg: 43U },
1242 { .FromReg: LoongArch::F12_64, .ToReg: 44U },
1243 { .FromReg: LoongArch::F13_64, .ToReg: 45U },
1244 { .FromReg: LoongArch::F14_64, .ToReg: 46U },
1245 { .FromReg: LoongArch::F15_64, .ToReg: 47U },
1246 { .FromReg: LoongArch::F16_64, .ToReg: 48U },
1247 { .FromReg: LoongArch::F17_64, .ToReg: 49U },
1248 { .FromReg: LoongArch::F18_64, .ToReg: 50U },
1249 { .FromReg: LoongArch::F19_64, .ToReg: 51U },
1250 { .FromReg: LoongArch::F20_64, .ToReg: 52U },
1251 { .FromReg: LoongArch::F21_64, .ToReg: 53U },
1252 { .FromReg: LoongArch::F22_64, .ToReg: 54U },
1253 { .FromReg: LoongArch::F23_64, .ToReg: 55U },
1254 { .FromReg: LoongArch::F24_64, .ToReg: 56U },
1255 { .FromReg: LoongArch::F25_64, .ToReg: 57U },
1256 { .FromReg: LoongArch::F26_64, .ToReg: 58U },
1257 { .FromReg: LoongArch::F27_64, .ToReg: 59U },
1258 { .FromReg: LoongArch::F28_64, .ToReg: 60U },
1259 { .FromReg: LoongArch::F29_64, .ToReg: 61U },
1260 { .FromReg: LoongArch::F30_64, .ToReg: 62U },
1261 { .FromReg: LoongArch::F31_64, .ToReg: 63U },
1262};
1263extern const unsigned LoongArchEHFlavour0L2DwarfSize = std::size(LoongArchEHFlavour0L2Dwarf);
1264
1265extern const uint16_t LoongArchRegEncodingTable[] = {
1266 0,
1267 0,
1268 1,
1269 2,
1270 3,
1271 4,
1272 5,
1273 6,
1274 7,
1275 8,
1276 9,
1277 10,
1278 11,
1279 12,
1280 13,
1281 14,
1282 15,
1283 16,
1284 17,
1285 18,
1286 19,
1287 20,
1288 21,
1289 22,
1290 23,
1291 24,
1292 25,
1293 26,
1294 27,
1295 28,
1296 29,
1297 30,
1298 31,
1299 0,
1300 1,
1301 2,
1302 3,
1303 4,
1304 5,
1305 6,
1306 7,
1307 0,
1308 1,
1309 2,
1310 3,
1311 0,
1312 1,
1313 2,
1314 3,
1315 4,
1316 5,
1317 6,
1318 7,
1319 8,
1320 9,
1321 10,
1322 11,
1323 12,
1324 13,
1325 14,
1326 15,
1327 16,
1328 17,
1329 18,
1330 19,
1331 20,
1332 21,
1333 22,
1334 23,
1335 24,
1336 25,
1337 26,
1338 27,
1339 28,
1340 29,
1341 30,
1342 31,
1343 0,
1344 1,
1345 2,
1346 3,
1347 0,
1348 1,
1349 2,
1350 3,
1351 4,
1352 5,
1353 6,
1354 7,
1355 8,
1356 9,
1357 10,
1358 11,
1359 12,
1360 13,
1361 14,
1362 15,
1363 16,
1364 17,
1365 18,
1366 19,
1367 20,
1368 21,
1369 22,
1370 23,
1371 24,
1372 25,
1373 26,
1374 27,
1375 28,
1376 29,
1377 30,
1378 31,
1379 0,
1380 1,
1381 2,
1382 3,
1383 4,
1384 5,
1385 6,
1386 7,
1387 8,
1388 9,
1389 10,
1390 11,
1391 12,
1392 13,
1393 14,
1394 15,
1395 16,
1396 17,
1397 18,
1398 19,
1399 20,
1400 21,
1401 22,
1402 23,
1403 24,
1404 25,
1405 26,
1406 27,
1407 28,
1408 29,
1409 30,
1410 31,
1411 0,
1412 1,
1413 2,
1414 3,
1415 4,
1416 5,
1417 6,
1418 7,
1419 8,
1420 9,
1421 10,
1422 11,
1423 12,
1424 13,
1425 14,
1426 15,
1427 16,
1428 17,
1429 18,
1430 19,
1431 20,
1432 21,
1433 22,
1434 23,
1435 24,
1436 25,
1437 26,
1438 27,
1439 28,
1440 29,
1441 30,
1442 31,
1443};
1444static inline void InitLoongArchMCRegisterInfo(MCRegisterInfo *RI, unsigned RA, unsigned DwarfFlavour = 0, unsigned EHFlavour = 0, unsigned PC = 0) {
1445 RI->InitMCRegisterInfo(D: LoongArchRegDesc, NR: 177, RA, PC, C: LoongArchMCRegisterClassStorage.Classes, NC: 11, RURoots: LoongArchRegUnitRoots, NRU: 80, DL: LoongArchRegDiffLists, RUMS: LoongArchLaneMaskLists, Strings: LoongArchRegStrings, ClassStrings: LoongArchRegClassStrings, SubIndices: LoongArchSubRegIdxLists, NumIndices: 4,
1446RET: LoongArchRegEncodingTable, RUI: nullptr);
1447
1448 switch (DwarfFlavour) {
1449 default:
1450 llvm_unreachable("Unknown DWARF flavour");
1451 case 0:
1452 RI->mapDwarfRegsToLLVMRegs(Map: LoongArchDwarfFlavour0Dwarf2L, Size: LoongArchDwarfFlavour0Dwarf2LSize, isEH: false);
1453 break;
1454 }
1455 switch (EHFlavour) {
1456 default:
1457 llvm_unreachable("Unknown DWARF flavour");
1458 case 0:
1459 RI->mapDwarfRegsToLLVMRegs(Map: LoongArchEHFlavour0Dwarf2L, Size: LoongArchEHFlavour0Dwarf2LSize, isEH: true);
1460 break;
1461 }
1462 switch (DwarfFlavour) {
1463 default:
1464 llvm_unreachable("Unknown DWARF flavour");
1465 case 0:
1466 RI->mapLLVMRegsToDwarfRegs(Map: LoongArchDwarfFlavour0L2Dwarf, Size: LoongArchDwarfFlavour0L2DwarfSize, isEH: false);
1467 break;
1468 }
1469 switch (EHFlavour) {
1470 default:
1471 llvm_unreachable("Unknown DWARF flavour");
1472 case 0:
1473 RI->mapLLVMRegsToDwarfRegs(Map: LoongArchEHFlavour0L2Dwarf, Size: LoongArchEHFlavour0L2DwarfSize, isEH: true);
1474 break;
1475 }
1476}
1477
1478
1479} // namespace llvm
1480