13 #ifdef GET_REGINFO_ENUM
14 #undef GET_REGINFO_ENUM
115 SystemZ_NUM_TARGET_REGS
120 SystemZ_GRX32BitRegClassID = 0,
121 SystemZ_FP32BitRegClassID = 1,
122 SystemZ_GR32BitRegClassID = 2,
123 SystemZ_GRH32BitRegClassID = 3,
124 SystemZ_ADDR32BitRegClassID = 4,
125 SystemZ_CCRegsRegClassID = 5,
126 SystemZ_FP64BitRegClassID = 6,
127 SystemZ_GR64BitRegClassID = 7,
128 SystemZ_ADDR64BitRegClassID = 8,
129 SystemZ_FP128BitRegClassID = 9,
130 SystemZ_GR128BitRegClassID = 10,
131 SystemZ_ADDR128BitRegClassID = 11
145 #ifdef GET_REGINFO_MC_DESC
146 #undef GET_REGINFO_MC_DESC
148 static const MCPhysReg SystemZRegDiffLists[] = {
160 65522, 24, 65510, 24, 0,
161 65524, 24, 65510, 24, 0,
162 65526, 24, 65510, 24, 0,
163 65528, 24, 65510, 24, 0,
185 65489, 32, 65520, 65519, 32, 65520, 0,
186 65490, 32, 65520, 65519, 32, 65520, 0,
187 65491, 32, 65520, 65519, 32, 65520, 0,
188 65492, 32, 65520, 65519, 32, 65520, 0,
189 65493, 32, 65520, 65519, 32, 65520, 0,
190 65494, 32, 65520, 65519, 32, 65520, 0,
191 65495, 32, 65520, 65519, 32, 65520, 0,
192 65496, 32, 65520, 65519, 32, 65520, 0,
196 static const uint16_t SystemZSubRegIdxLists[] = {
203 { 2, 0, 0, 0, 0, 0 },
204 { 0, 4, 4, 2, 2737, 0 },
205 { 13, 38, 33, 1, 2737, 3 },
206 { 31, 38, 33, 1, 2737, 3 },
207 { 49, 38, 30, 1, 2737, 3 },
208 { 67, 38, 30, 1, 2737, 3 },
209 { 85, 38, 30, 1, 2737, 3 },
210 { 103, 38, 30, 1, 2737, 3 },
211 { 111, 38, 27, 1, 2737, 3 },
212 { 119, 38, 27, 1, 2737, 3 },
213 { 127, 38, 27, 1, 2737, 3 },
214 { 135, 38, 27, 1, 2737, 3 },
215 { 3, 38, 24, 1, 2737, 3 },
216 { 21, 38, 24, 1, 2737, 3 },
217 { 39, 38, 24, 1, 2737, 3 },
218 { 57, 38, 24, 1, 2737, 3 },
219 { 75, 38, 21, 1, 2737, 3 },
220 { 93, 38, 21, 1, 2737, 3 },
221 { 288, 35, 4, 3, 129, 2 },
222 { 296, 35, 4, 3, 129, 2 },
223 { 324, 40, 4, 3, 177, 2 },
224 { 332, 40, 4, 3, 177, 2 },
225 { 340, 45, 4, 3, 225, 2 },
226 { 348, 45, 4, 3, 225, 2 },
227 { 300, 50, 4, 3, 273, 2 },
228 { 314, 50, 4, 3, 273, 2 },
229 { 357, 4, 32, 2, 1809, 0 },
230 { 366, 4, 32, 2, 1809, 0 },
231 { 375, 4, 29, 2, 1809, 0 },
232 { 384, 4, 29, 2, 1809, 0 },
233 { 393, 4, 29, 2, 1809, 0 },
234 { 402, 4, 29, 2, 1809, 0 },
235 { 406, 4, 26, 2, 1809, 0 },
236 { 410, 4, 26, 2, 1809, 0 },
237 { 414, 4, 26, 2, 1809, 0 },
238 { 418, 4, 26, 2, 1809, 0 },
239 { 352, 4, 23, 2, 1809, 0 },
240 { 361, 4, 23, 2, 1809, 0 },
241 { 370, 4, 23, 2, 1809, 0 },
242 { 379, 4, 23, 2, 1809, 0 },
243 { 388, 4, 20, 2, 1809, 0 },
244 { 397, 4, 20, 2, 1809, 0 },
245 { 17, 119, 104, 0, 82, 7 },
246 { 35, 119, 98, 0, 82, 7 },
247 { 53, 119, 98, 0, 82, 7 },
248 { 71, 119, 92, 0, 82, 7 },
249 { 89, 119, 92, 0, 82, 7 },
250 { 107, 119, 86, 0, 82, 7 },
251 { 115, 119, 86, 0, 82, 7 },
252 { 123, 119, 80, 0, 82, 7 },
253 { 131, 119, 80, 0, 82, 7 },
254 { 139, 119, 74, 0, 82, 7 },
255 { 8, 119, 74, 0, 82, 7 },
256 { 26, 119, 68, 0, 82, 7 },
257 { 44, 119, 68, 0, 82, 7 },
258 { 62, 119, 62, 0, 82, 7 },
259 { 80, 119, 62, 0, 82, 7 },
260 { 98, 119, 56, 0, 82, 7 },
261 { 148, 4, 106, 2, 1778, 0 },
262 { 157, 4, 100, 2, 1778, 0 },
263 { 166, 4, 100, 2, 1778, 0 },
264 { 175, 4, 94, 2, 1778, 0 },
265 { 184, 4, 94, 2, 1778, 0 },
266 { 193, 4, 88, 2, 1778, 0 },
267 { 197, 4, 88, 2, 1778, 0 },
268 { 201, 4, 82, 2, 1778, 0 },
269 { 205, 4, 82, 2, 1778, 0 },
270 { 209, 4, 76, 2, 1778, 0 },
271 { 143, 4, 76, 2, 1778, 0 },
272 { 152, 4, 70, 2, 1778, 0 },
273 { 161, 4, 70, 2, 1778, 0 },
274 { 170, 4, 64, 2, 1778, 0 },
275 { 179, 4, 64, 2, 1778, 0 },
276 { 188, 4, 58, 2, 1778, 0 },
277 { 218, 4, 103, 2, 1746, 0 },
278 { 227, 4, 97, 2, 1746, 0 },
279 { 236, 4, 97, 2, 1746, 0 },
280 { 245, 4, 91, 2, 1746, 0 },
281 { 254, 4, 91, 2, 1746, 0 },
282 { 263, 4, 85, 2, 1746, 0 },
283 { 267, 4, 85, 2, 1746, 0 },
284 { 271, 4, 79, 2, 1746, 0 },
285 { 275, 4, 79, 2, 1746, 0 },
286 { 279, 4, 73, 2, 1746, 0 },
287 { 213, 4, 73, 2, 1746, 0 },
288 { 222, 4, 67, 2, 1746, 0 },
289 { 231, 4, 67, 2, 1746, 0 },
290 { 240, 4, 61, 2, 1746, 0 },
291 { 249, 4, 61, 2, 1746, 0 },
292 { 258, 4, 55, 2, 1746, 0 },
293 { 292, 115, 4, 8, 4, 5 },
294 { 310, 122, 4, 8, 4, 5 },
295 { 328, 129, 4, 8, 4, 5 },
296 { 336, 136, 4, 8, 4, 5 },
297 { 344, 143, 4, 8, 4, 5 },
298 { 283, 150, 4, 8, 4, 5 },
299 { 305, 157, 4, 8, 4, 5 },
300 { 319, 164, 4, 8, 4, 5 },
305 SystemZ_R0L, SystemZ_R1L, SystemZ_R2L, SystemZ_R3L, SystemZ_R4L, SystemZ_R5L, SystemZ_R0H, SystemZ_R1H, SystemZ_R2H, SystemZ_R3H, SystemZ_R4H, SystemZ_R5H, SystemZ_R15L, SystemZ_R15H, SystemZ_R14L, SystemZ_R14H, SystemZ_R13L, SystemZ_R13H, SystemZ_R12L, SystemZ_R12H, SystemZ_R11L, SystemZ_R11H, SystemZ_R10L, SystemZ_R10H, SystemZ_R9L, SystemZ_R9H, SystemZ_R8L, SystemZ_R8H, SystemZ_R7L, SystemZ_R7H, SystemZ_R6L, SystemZ_R6H,
309 static const uint8_t GRX32BitBits[] = {
310 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x03,
315 SystemZ_F0S, SystemZ_F1S, SystemZ_F2S, SystemZ_F3S, SystemZ_F4S, SystemZ_F5S, SystemZ_F6S, SystemZ_F7S, SystemZ_F8S, SystemZ_F9S, SystemZ_F10S, SystemZ_F11S, SystemZ_F12S, SystemZ_F13S, SystemZ_F14S, SystemZ_F15S,
319 static const uint8_t FP32BitBits[] = {
320 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03,
325 SystemZ_R0L, SystemZ_R1L, SystemZ_R2L, SystemZ_R3L, SystemZ_R4L, SystemZ_R5L, SystemZ_R15L, SystemZ_R14L, SystemZ_R13L, SystemZ_R12L, SystemZ_R11L, SystemZ_R10L, SystemZ_R9L, SystemZ_R8L, SystemZ_R7L, SystemZ_R6L,
329 static const uint8_t GR32BitBits[] = {
330 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03,
335 SystemZ_R0H, SystemZ_R1H, SystemZ_R2H, SystemZ_R3H, SystemZ_R4H, SystemZ_R5H, SystemZ_R15H, SystemZ_R14H, SystemZ_R13H, SystemZ_R12H, SystemZ_R11H, SystemZ_R10H, SystemZ_R9H, SystemZ_R8H, SystemZ_R7H, SystemZ_R6H,
339 static const uint8_t GRH32BitBits[] = {
340 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03,
345 SystemZ_R1L, SystemZ_R2L, SystemZ_R3L, SystemZ_R4L, SystemZ_R5L, SystemZ_R15L, SystemZ_R14L, SystemZ_R13L, SystemZ_R12L, SystemZ_R11L, SystemZ_R10L, SystemZ_R9L, SystemZ_R8L, SystemZ_R7L, SystemZ_R6L,
349 static const uint8_t ADDR32BitBits[] = {
350 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03,
359 static const uint8_t CCRegsBits[] = {
365 SystemZ_F0D, SystemZ_F1D, SystemZ_F2D, SystemZ_F3D, SystemZ_F4D, SystemZ_F5D, SystemZ_F6D, SystemZ_F7D, SystemZ_F8D, SystemZ_F9D, SystemZ_F10D, SystemZ_F11D, SystemZ_F12D, SystemZ_F13D, SystemZ_F14D, SystemZ_F15D,
369 static const uint8_t FP64BitBits[] = {
375 SystemZ_R0D, SystemZ_R1D, SystemZ_R2D, SystemZ_R3D, SystemZ_R4D, SystemZ_R5D, SystemZ_R15D, SystemZ_R14D, SystemZ_R13D, SystemZ_R12D, SystemZ_R11D, SystemZ_R10D, SystemZ_R9D, SystemZ_R8D, SystemZ_R7D, SystemZ_R6D,
379 static const uint8_t GR64BitBits[] = {
380 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03,
385 SystemZ_R1D, SystemZ_R2D, SystemZ_R3D, SystemZ_R4D, SystemZ_R5D, SystemZ_R15D, SystemZ_R14D, SystemZ_R13D, SystemZ_R12D, SystemZ_R11D, SystemZ_R10D, SystemZ_R9D, SystemZ_R8D, SystemZ_R7D, SystemZ_R6D,
389 static const uint8_t ADDR64BitBits[] = {
390 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03,
395 SystemZ_F0Q, SystemZ_F1Q, SystemZ_F4Q, SystemZ_F5Q, SystemZ_F8Q, SystemZ_F9Q, SystemZ_F12Q, SystemZ_F13Q,
399 static const uint8_t FP128BitBits[] = {
400 0x00, 0x00, 0xfc, 0x03,
405 SystemZ_R0Q, SystemZ_R2Q, SystemZ_R4Q, SystemZ_R12Q, SystemZ_R10Q, SystemZ_R8Q, SystemZ_R6Q, SystemZ_R14Q,
409 static const uint8_t GR128BitBits[] = {
410 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03,
415 SystemZ_R2Q, SystemZ_R4Q, SystemZ_R12Q, SystemZ_R10Q, SystemZ_R8Q, SystemZ_R6Q, SystemZ_R14Q,
419 static const uint8_t ADDR128BitBits[] = {
420 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03,
424 { GRX32Bit, GRX32BitBits, 42, 32,
sizeof(GRX32BitBits), SystemZ_GRX32BitRegClassID, 4, 4, 1, 1 },
425 { FP32Bit, FP32BitBits, 16, 16,
sizeof(FP32BitBits), SystemZ_FP32BitRegClassID, 4, 4, 1, 1 },
426 { GR32Bit, GR32BitBits, 34, 16,
sizeof(GR32BitBits), SystemZ_GR32BitRegClassID, 4, 4, 1, 1 },
427 { GRH32Bit, GRH32BitBits, 7, 16,
sizeof(GRH32BitBits), SystemZ_GRH32BitRegClassID, 4, 4, 1, 1 },
428 { ADDR32Bit, ADDR32BitBits, 24, 15,
sizeof(ADDR32BitBits), SystemZ_ADDR32BitRegClassID, 4, 4, 1, 1 },
429 { CCRegs, CCRegsBits, 0, 1,
sizeof(CCRegsBits), SystemZ_CCRegsRegClassID, 4, 4, 1, 1 },
430 { FP64Bit, FP64BitBits, 51, 16,
sizeof(FP64BitBits), SystemZ_FP64BitRegClassID, 8, 8, 1, 1 },
431 { GR64Bit, GR64BitBits, 69, 16,
sizeof(GR64BitBits), SystemZ_GR64BitRegClassID, 8, 8, 1, 1 },
432 { ADDR64Bit, ADDR64BitBits, 59, 15,
sizeof(ADDR64BitBits), SystemZ_ADDR64BitRegClassID, 8, 8, 1, 1 },
433 { FP128Bit, FP128BitBits, 77, 8,
sizeof(FP128BitBits), SystemZ_FP128BitRegClassID, 16, 16, 1, 1 },
434 { GR128Bit, GR128BitBits, 97, 8,
sizeof(GR128BitBits), SystemZ_GR128BitRegClassID, 16, 16, 1, 1 },
435 { ADDR128Bit, ADDR128BitBits, 86, 7,
sizeof(ADDR128BitBits), SystemZ_ADDR128BitRegClassID, 16, 16, 1, 1 },