Coverage Report

Created: 2026-06-08 07:05

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/keystone/llvm/lib/Target/Sparc/SparcGenRegisterInfo.inc
Line
Count
Source
1
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2
|*                                                                            *|
3
|* Target Register Enum Values                                                *|
4
|*                                                                            *|
5
|* Automatically generated file, do not edit!                                 *|
6
|*                                                                            *|
7
\*===----------------------------------------------------------------------===*/
8
9
10
#ifdef GET_REGINFO_ENUM
11
#undef GET_REGINFO_ENUM
12
namespace llvm_ks {
13
14
class MCRegisterClass;
15
extern const MCRegisterClass SPMCRegisterClasses[];
16
17
namespace SP {
18
enum {
19
  NoRegister,
20
  CANRESTORE = 1,
21
  CANSAVE = 2,
22
  CLEANWIN = 3,
23
  CWP = 4,
24
  FSR = 5,
25
  ICC = 6,
26
  OTHERWIN = 7,
27
  PIL = 8,
28
  PSR = 9,
29
  PSTATE = 10,
30
  TBA = 11,
31
  TBR = 12,
32
  TICK = 13,
33
  TL = 14,
34
  TNPC = 15,
35
  TPC = 16,
36
  TSTATE = 17,
37
  TT = 18,
38
  WIM = 19,
39
  WSTATE = 20,
40
  Y = 21,
41
  ASR1 = 22,
42
  ASR2 = 23,
43
  ASR3 = 24,
44
  ASR4 = 25,
45
  ASR5 = 26,
46
  ASR6 = 27,
47
  ASR7 = 28,
48
  ASR8 = 29,
49
  ASR9 = 30,
50
  ASR10 = 31,
51
  ASR11 = 32,
52
  ASR12 = 33,
53
  ASR13 = 34,
54
  ASR14 = 35,
55
  ASR15 = 36,
56
  ASR16 = 37,
57
  ASR17 = 38,
58
  ASR18 = 39,
59
  ASR19 = 40,
60
  ASR20 = 41,
61
  ASR21 = 42,
62
  ASR22 = 43,
63
  ASR23 = 44,
64
  ASR24 = 45,
65
  ASR25 = 46,
66
  ASR26 = 47,
67
  ASR27 = 48,
68
  ASR28 = 49,
69
  ASR29 = 50,
70
  ASR30 = 51,
71
  ASR31 = 52,
72
  D0 = 53,
73
  D1 = 54,
74
  D2 = 55,
75
  D3 = 56,
76
  D4 = 57,
77
  D5 = 58,
78
  D6 = 59,
79
  D7 = 60,
80
  D8 = 61,
81
  D9 = 62,
82
  D10 = 63,
83
  D11 = 64,
84
  D12 = 65,
85
  D13 = 66,
86
  D14 = 67,
87
  D15 = 68,
88
  D16 = 69,
89
  D17 = 70,
90
  D18 = 71,
91
  D19 = 72,
92
  D20 = 73,
93
  D21 = 74,
94
  D22 = 75,
95
  D23 = 76,
96
  D24 = 77,
97
  D25 = 78,
98
  D26 = 79,
99
  D27 = 80,
100
  D28 = 81,
101
  D29 = 82,
102
  D30 = 83,
103
  D31 = 84,
104
  F0 = 85,
105
  F1 = 86,
106
  F2 = 87,
107
  F3 = 88,
108
  F4 = 89,
109
  F5 = 90,
110
  F6 = 91,
111
  F7 = 92,
112
  F8 = 93,
113
  F9 = 94,
114
  F10 = 95,
115
  F11 = 96,
116
  F12 = 97,
117
  F13 = 98,
118
  F14 = 99,
119
  F15 = 100,
120
  F16 = 101,
121
  F17 = 102,
122
  F18 = 103,
123
  F19 = 104,
124
  F20 = 105,
125
  F21 = 106,
126
  F22 = 107,
127
  F23 = 108,
128
  F24 = 109,
129
  F25 = 110,
130
  F26 = 111,
131
  F27 = 112,
132
  F28 = 113,
133
  F29 = 114,
134
  F30 = 115,
135
  F31 = 116,
136
  FCC0 = 117,
137
  FCC1 = 118,
138
  FCC2 = 119,
139
  FCC3 = 120,
140
  G0 = 121,
141
  G1 = 122,
142
  G2 = 123,
143
  G3 = 124,
144
  G4 = 125,
145
  G5 = 126,
146
  G6 = 127,
147
  G7 = 128,
148
  I0 = 129,
149
  I1 = 130,
150
  I2 = 131,
151
  I3 = 132,
152
  I4 = 133,
153
  I5 = 134,
154
  I6 = 135,
155
  I7 = 136,
156
  L0 = 137,
157
  L1 = 138,
158
  L2 = 139,
159
  L3 = 140,
160
  L4 = 141,
161
  L5 = 142,
162
  L6 = 143,
163
  L7 = 144,
164
  O0 = 145,
165
  O1 = 146,
166
  O2 = 147,
167
  O3 = 148,
168
  O4 = 149,
169
  O5 = 150,
170
  O6 = 151,
171
  O7 = 152,
172
  Q0 = 153,
173
  Q1 = 154,
174
  Q2 = 155,
175
  Q3 = 156,
176
  Q4 = 157,
177
  Q5 = 158,
178
  Q6 = 159,
179
  Q7 = 160,
180
  Q8 = 161,
181
  Q9 = 162,
182
  Q10 = 163,
183
  Q11 = 164,
184
  Q12 = 165,
185
  Q13 = 166,
186
  Q14 = 167,
187
  Q15 = 168,
188
  G0_G1 = 169,
189
  G2_G3 = 170,
190
  G4_G5 = 171,
191
  G6_G7 = 172,
192
  I0_I1 = 173,
193
  I2_I3 = 174,
194
  I4_I5 = 175,
195
  I6_I7 = 176,
196
  L0_L1 = 177,
197
  L2_L3 = 178,
198
  L4_L5 = 179,
199
  L6_L7 = 180,
200
  O0_O1 = 181,
201
  O2_O3 = 182,
202
  O4_O5 = 183,
203
  O6_O7 = 184,
204
  NUM_TARGET_REGS   // 185
205
};
206
}
207
208
// Register classes
209
namespace SP {
210
enum {
211
  FCCRegsRegClassID = 0,
212
  ASRRegsRegClassID = 1,
213
  FPRegsRegClassID = 2,
214
  IntRegsRegClassID = 3,
215
  DFPRegsRegClassID = 4,
216
  I64RegsRegClassID = 5,
217
  DFPRegs_with_sub_evenRegClassID = 6,
218
  IntPairRegClassID = 7,
219
  PRRegsRegClassID = 8,
220
  QFPRegsRegClassID = 9,
221
  QFPRegs_with_sub_evenRegClassID = 10,
222
223
  };
224
}
225
226
// Subregister indices
227
namespace SP {
228
enum {
229
  NoSubRegister,
230
  sub_even, // 1
231
  sub_even64, // 2
232
  sub_odd,  // 3
233
  sub_odd64,  // 4
234
  sub_odd64_then_sub_even,  // 5
235
  sub_odd64_then_sub_odd, // 6
236
  NUM_TARGET_SUBREGS
237
};
238
}
239
} // End llvm namespace
240
#endif // GET_REGINFO_ENUM
241
242
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
243
|*                                                                            *|
244
|* MC Register Information                                                    *|
245
|*                                                                            *|
246
|* Automatically generated file, do not edit!                                 *|
247
|*                                                                            *|
248
\*===----------------------------------------------------------------------===*/
249
250
251
#ifdef GET_REGINFO_MC_DESC
252
#undef GET_REGINFO_MC_DESC
253
namespace llvm_ks {
254
255
extern const MCPhysReg SparcRegDiffLists[] = {
256
  /* 0 */ 64976, 1, 1, 1, 0,
257
  /* 5 */ 32, 1, 0,
258
  /* 8 */ 65436, 32, 1, 65504, 33, 1, 0,
259
  /* 15 */ 34, 1, 0,
260
  /* 18 */ 65437, 34, 1, 65502, 35, 1, 0,
261
  /* 25 */ 36, 1, 0,
262
  /* 28 */ 65438, 36, 1, 65500, 37, 1, 0,
263
  /* 35 */ 38, 1, 0,
264
  /* 38 */ 65439, 38, 1, 65498, 39, 1, 0,
265
  /* 45 */ 40, 1, 0,
266
  /* 48 */ 65440, 40, 1, 65496, 41, 1, 0,
267
  /* 55 */ 42, 1, 0,
268
  /* 58 */ 65441, 42, 1, 65494, 43, 1, 0,
269
  /* 65 */ 44, 1, 0,
270
  /* 68 */ 65442, 44, 1, 65492, 45, 1, 0,
271
  /* 75 */ 46, 1, 0,
272
  /* 78 */ 65443, 46, 1, 65490, 47, 1, 0,
273
  /* 85 */ 65298, 1, 0,
274
  /* 88 */ 65302, 1, 0,
275
  /* 91 */ 65444, 1, 0,
276
  /* 94 */ 65445, 1, 0,
277
  /* 97 */ 65446, 1, 0,
278
  /* 100 */ 65447, 1, 0,
279
  /* 103 */ 65448, 1, 0,
280
  /* 106 */ 65449, 1, 0,
281
  /* 109 */ 65450, 1, 0,
282
  /* 112 */ 65451, 1, 0,
283
  /* 115 */ 65482, 1, 0,
284
  /* 118 */ 65488, 1, 0,
285
  /* 121 */ 65489, 1, 0,
286
  /* 124 */ 65490, 1, 0,
287
  /* 127 */ 65491, 1, 0,
288
  /* 130 */ 65492, 1, 0,
289
  /* 133 */ 65493, 1, 0,
290
  /* 136 */ 65494, 1, 0,
291
  /* 139 */ 65495, 1, 0,
292
  /* 142 */ 65496, 1, 0,
293
  /* 145 */ 65497, 1, 0,
294
  /* 148 */ 65498, 1, 0,
295
  /* 151 */ 65499, 1, 0,
296
  /* 154 */ 65500, 1, 0,
297
  /* 157 */ 65501, 1, 0,
298
  /* 160 */ 65502, 1, 0,
299
  /* 163 */ 65503, 1, 0,
300
  /* 166 */ 15, 0,
301
  /* 168 */ 32, 0,
302
  /* 170 */ 33, 0,
303
  /* 172 */ 34, 0,
304
  /* 174 */ 35, 0,
305
  /* 176 */ 36, 0,
306
  /* 178 */ 37, 0,
307
  /* 180 */ 38, 0,
308
  /* 182 */ 39, 0,
309
  /* 184 */ 40, 0,
310
  /* 186 */ 41, 0,
311
  /* 188 */ 42, 0,
312
  /* 190 */ 43, 0,
313
  /* 192 */ 44, 0,
314
  /* 194 */ 45, 0,
315
  /* 196 */ 46, 0,
316
  /* 198 */ 47, 0,
317
  /* 200 */ 48, 0,
318
  /* 202 */ 84, 0,
319
  /* 204 */ 85, 0,
320
  /* 206 */ 86, 0,
321
  /* 208 */ 87, 0,
322
  /* 210 */ 88, 0,
323
  /* 212 */ 89, 0,
324
  /* 214 */ 90, 0,
325
  /* 216 */ 91, 0,
326
  /* 218 */ 65488, 92, 0,
327
  /* 221 */ 65489, 92, 0,
328
  /* 224 */ 65489, 93, 0,
329
  /* 227 */ 65490, 93, 0,
330
  /* 230 */ 65491, 93, 0,
331
  /* 233 */ 65491, 94, 0,
332
  /* 236 */ 65492, 94, 0,
333
  /* 239 */ 65493, 94, 0,
334
  /* 242 */ 65493, 95, 0,
335
  /* 245 */ 65494, 95, 0,
336
  /* 248 */ 65495, 95, 0,
337
  /* 251 */ 65495, 96, 0,
338
  /* 254 */ 65496, 96, 0,
339
  /* 257 */ 65497, 96, 0,
340
  /* 260 */ 65497, 97, 0,
341
  /* 263 */ 65498, 97, 0,
342
  /* 266 */ 65499, 97, 0,
343
  /* 269 */ 65499, 98, 0,
344
  /* 272 */ 65500, 98, 0,
345
  /* 275 */ 65501, 98, 0,
346
  /* 278 */ 65501, 99, 0,
347
  /* 281 */ 65502, 99, 0,
348
  /* 284 */ 65503, 99, 0,
349
  /* 287 */ 65503, 100, 0,
350
  /* 290 */ 65504, 100, 0,
351
  /* 293 */ 65503, 0,
352
  /* 295 */ 65519, 0,
353
  /* 297 */ 65535, 0,
354
};
355
356
extern const unsigned SparcLaneMaskLists[] = {
357
  /* 0 */ 0x00000000, ~0u,
358
  /* 2 */ 0x00000001, 0x00000002, ~0u,
359
  /* 5 */ 0x00000001, 0x00000002, 0x00000004, 0x00000008, ~0u,
360
  /* 10 */ 0x00000003, 0x0000000C, ~0u,
361
};
362
363
extern const uint16_t SparcSubRegIdxLists[] = {
364
  /* 0 */ 1, 3, 0,
365
  /* 3 */ 2, 4, 0,
366
  /* 6 */ 2, 1, 3, 4, 5, 6, 0,
367
};
368
369
extern const MCRegisterInfo::SubRegCoveredBits SparcSubRegIdxRanges[] = {
370
  { 65535, 65535 },
371
  { 0, 32 },  // sub_even
372
  { 0, 64 },  // sub_even64
373
  { 32, 32 }, // sub_odd
374
  { 64, 64 }, // sub_odd64
375
  { 64, 32 }, // sub_odd64_then_sub_even
376
  { 96, 32 }, // sub_odd64_then_sub_odd
377
};
378
379
extern const char SparcRegStrings[] = {
380
  /* 0 */ 'D', '1', '0', 0,
381
  /* 4 */ 'F', '1', '0', 0,
382
  /* 8 */ 'Q', '1', '0', 0,
383
  /* 12 */ 'A', 'S', 'R', '1', '0', 0,
384
  /* 18 */ 'D', '2', '0', 0,
385
  /* 22 */ 'F', '2', '0', 0,
386
  /* 26 */ 'A', 'S', 'R', '2', '0', 0,
387
  /* 32 */ 'D', '3', '0', 0,
388
  /* 36 */ 'F', '3', '0', 0,
389
  /* 40 */ 'A', 'S', 'R', '3', '0', 0,
390
  /* 46 */ 'F', 'C', 'C', '0', 0,
391
  /* 51 */ 'D', '0', 0,
392
  /* 54 */ 'F', '0', 0,
393
  /* 57 */ 'G', '0', 0,
394
  /* 60 */ 'I', '0', 0,
395
  /* 63 */ 'L', '0', 0,
396
  /* 66 */ 'O', '0', 0,
397
  /* 69 */ 'Q', '0', 0,
398
  /* 72 */ 'D', '1', '1', 0,
399
  /* 76 */ 'F', '1', '1', 0,
400
  /* 80 */ 'Q', '1', '1', 0,
401
  /* 84 */ 'A', 'S', 'R', '1', '1', 0,
402
  /* 90 */ 'D', '2', '1', 0,
403
  /* 94 */ 'F', '2', '1', 0,
404
  /* 98 */ 'A', 'S', 'R', '2', '1', 0,
405
  /* 104 */ 'D', '3', '1', 0,
406
  /* 108 */ 'F', '3', '1', 0,
407
  /* 112 */ 'A', 'S', 'R', '3', '1', 0,
408
  /* 118 */ 'F', 'C', 'C', '1', 0,
409
  /* 123 */ 'D', '1', 0,
410
  /* 126 */ 'F', '1', 0,
411
  /* 129 */ 'G', '0', '_', 'G', '1', 0,
412
  /* 135 */ 'I', '0', '_', 'I', '1', 0,
413
  /* 141 */ 'L', '0', '_', 'L', '1', 0,
414
  /* 147 */ 'O', '0', '_', 'O', '1', 0,
415
  /* 153 */ 'Q', '1', 0,
416
  /* 156 */ 'A', 'S', 'R', '1', 0,
417
  /* 161 */ 'D', '1', '2', 0,
418
  /* 165 */ 'F', '1', '2', 0,
419
  /* 169 */ 'Q', '1', '2', 0,
420
  /* 173 */ 'A', 'S', 'R', '1', '2', 0,
421
  /* 179 */ 'D', '2', '2', 0,
422
  /* 183 */ 'F', '2', '2', 0,
423
  /* 187 */ 'A', 'S', 'R', '2', '2', 0,
424
  /* 193 */ 'F', 'C', 'C', '2', 0,
425
  /* 198 */ 'D', '2', 0,
426
  /* 201 */ 'F', '2', 0,
427
  /* 204 */ 'G', '2', 0,
428
  /* 207 */ 'I', '2', 0,
429
  /* 210 */ 'L', '2', 0,
430
  /* 213 */ 'O', '2', 0,
431
  /* 216 */ 'Q', '2', 0,
432
  /* 219 */ 'A', 'S', 'R', '2', 0,
433
  /* 224 */ 'D', '1', '3', 0,
434
  /* 228 */ 'F', '1', '3', 0,
435
  /* 232 */ 'Q', '1', '3', 0,
436
  /* 236 */ 'A', 'S', 'R', '1', '3', 0,
437
  /* 242 */ 'D', '2', '3', 0,
438
  /* 246 */ 'F', '2', '3', 0,
439
  /* 250 */ 'A', 'S', 'R', '2', '3', 0,
440
  /* 256 */ 'F', 'C', 'C', '3', 0,
441
  /* 261 */ 'D', '3', 0,
442
  /* 264 */ 'F', '3', 0,
443
  /* 267 */ 'G', '2', '_', 'G', '3', 0,
444
  /* 273 */ 'I', '2', '_', 'I', '3', 0,
445
  /* 279 */ 'L', '2', '_', 'L', '3', 0,
446
  /* 285 */ 'O', '2', '_', 'O', '3', 0,
447
  /* 291 */ 'Q', '3', 0,
448
  /* 294 */ 'A', 'S', 'R', '3', 0,
449
  /* 299 */ 'D', '1', '4', 0,
450
  /* 303 */ 'F', '1', '4', 0,
451
  /* 307 */ 'Q', '1', '4', 0,
452
  /* 311 */ 'A', 'S', 'R', '1', '4', 0,
453
  /* 317 */ 'D', '2', '4', 0,
454
  /* 321 */ 'F', '2', '4', 0,
455
  /* 325 */ 'A', 'S', 'R', '2', '4', 0,
456
  /* 331 */ 'D', '4', 0,
457
  /* 334 */ 'F', '4', 0,
458
  /* 337 */ 'G', '4', 0,
459
  /* 340 */ 'I', '4', 0,
460
  /* 343 */ 'L', '4', 0,
461
  /* 346 */ 'O', '4', 0,
462
  /* 349 */ 'Q', '4', 0,
463
  /* 352 */ 'A', 'S', 'R', '4', 0,
464
  /* 357 */ 'D', '1', '5', 0,
465
  /* 361 */ 'F', '1', '5', 0,
466
  /* 365 */ 'Q', '1', '5', 0,
467
  /* 369 */ 'A', 'S', 'R', '1', '5', 0,
468
  /* 375 */ 'D', '2', '5', 0,
469
  /* 379 */ 'F', '2', '5', 0,
470
  /* 383 */ 'A', 'S', 'R', '2', '5', 0,
471
  /* 389 */ 'D', '5', 0,
472
  /* 392 */ 'F', '5', 0,
473
  /* 395 */ 'G', '4', '_', 'G', '5', 0,
474
  /* 401 */ 'I', '4', '_', 'I', '5', 0,
475
  /* 407 */ 'L', '4', '_', 'L', '5', 0,
476
  /* 413 */ 'O', '4', '_', 'O', '5', 0,
477
  /* 419 */ 'Q', '5', 0,
478
  /* 422 */ 'A', 'S', 'R', '5', 0,
479
  /* 427 */ 'D', '1', '6', 0,
480
  /* 431 */ 'F', '1', '6', 0,
481
  /* 435 */ 'A', 'S', 'R', '1', '6', 0,
482
  /* 441 */ 'D', '2', '6', 0,
483
  /* 445 */ 'F', '2', '6', 0,
484
  /* 449 */ 'A', 'S', 'R', '2', '6', 0,
485
  /* 455 */ 'D', '6', 0,
486
  /* 458 */ 'F', '6', 0,
487
  /* 461 */ 'G', '6', 0,
488
  /* 464 */ 'I', '6', 0,
489
  /* 467 */ 'L', '6', 0,
490
  /* 470 */ 'O', '6', 0,
491
  /* 473 */ 'Q', '6', 0,
492
  /* 476 */ 'A', 'S', 'R', '6', 0,
493
  /* 481 */ 'D', '1', '7', 0,
494
  /* 485 */ 'F', '1', '7', 0,
495
  /* 489 */ 'A', 'S', 'R', '1', '7', 0,
496
  /* 495 */ 'D', '2', '7', 0,
497
  /* 499 */ 'F', '2', '7', 0,
498
  /* 503 */ 'A', 'S', 'R', '2', '7', 0,
499
  /* 509 */ 'D', '7', 0,
500
  /* 512 */ 'F', '7', 0,
501
  /* 515 */ 'G', '6', '_', 'G', '7', 0,
502
  /* 521 */ 'I', '6', '_', 'I', '7', 0,
503
  /* 527 */ 'L', '6', '_', 'L', '7', 0,
504
  /* 533 */ 'O', '6', '_', 'O', '7', 0,
505
  /* 539 */ 'Q', '7', 0,
506
  /* 542 */ 'A', 'S', 'R', '7', 0,
507
  /* 547 */ 'D', '1', '8', 0,
508
  /* 551 */ 'F', '1', '8', 0,
509
  /* 555 */ 'A', 'S', 'R', '1', '8', 0,
510
  /* 561 */ 'D', '2', '8', 0,
511
  /* 565 */ 'F', '2', '8', 0,
512
  /* 569 */ 'A', 'S', 'R', '2', '8', 0,
513
  /* 575 */ 'D', '8', 0,
514
  /* 578 */ 'F', '8', 0,
515
  /* 581 */ 'Q', '8', 0,
516
  /* 584 */ 'A', 'S', 'R', '8', 0,
517
  /* 589 */ 'D', '1', '9', 0,
518
  /* 593 */ 'F', '1', '9', 0,
519
  /* 597 */ 'A', 'S', 'R', '1', '9', 0,
520
  /* 603 */ 'D', '2', '9', 0,
521
  /* 607 */ 'F', '2', '9', 0,
522
  /* 611 */ 'A', 'S', 'R', '2', '9', 0,
523
  /* 617 */ 'D', '9', 0,
524
  /* 620 */ 'F', '9', 0,
525
  /* 623 */ 'Q', '9', 0,
526
  /* 626 */ 'A', 'S', 'R', '9', 0,
527
  /* 631 */ 'T', 'B', 'A', 0,
528
  /* 635 */ 'I', 'C', 'C', 0,
529
  /* 639 */ 'T', 'N', 'P', 'C', 0,
530
  /* 644 */ 'T', 'P', 'C', 0,
531
  /* 648 */ 'C', 'A', 'N', 'R', 'E', 'S', 'T', 'O', 'R', 'E', 0,
532
  /* 659 */ 'P', 'S', 'T', 'A', 'T', 'E', 0,
533
  /* 666 */ 'T', 'S', 'T', 'A', 'T', 'E', 0,
534
  /* 673 */ 'W', 'S', 'T', 'A', 'T', 'E', 0,
535
  /* 680 */ 'C', 'A', 'N', 'S', 'A', 'V', 'E', 0,
536
  /* 688 */ 'T', 'I', 'C', 'K', 0,
537
  /* 693 */ 'P', 'I', 'L', 0,
538
  /* 697 */ 'T', 'L', 0,
539
  /* 700 */ 'W', 'I', 'M', 0,
540
  /* 704 */ 'C', 'L', 'E', 'A', 'N', 'W', 'I', 'N', 0,
541
  /* 713 */ 'O', 'T', 'H', 'E', 'R', 'W', 'I', 'N', 0,
542
  /* 722 */ 'C', 'W', 'P', 0,
543
  /* 726 */ 'T', 'B', 'R', 0,
544
  /* 730 */ 'F', 'S', 'R', 0,
545
  /* 734 */ 'P', 'S', 'R', 0,
546
  /* 738 */ 'T', 'T', 0,
547
  /* 741 */ 'Y', 0,
548
};
549
550
extern const MCRegisterDesc SparcRegDesc[] = { // Descriptors
551
  { 3, 0, 0, 0, 0, 0 },
552
  { 648, 4, 4, 2, 4753, 0 },
553
  { 680, 4, 4, 2, 4753, 0 },
554
  { 704, 4, 4, 2, 4753, 0 },
555
  { 722, 4, 4, 2, 4753, 0 },
556
  { 730, 4, 4, 2, 4753, 0 },
557
  { 635, 4, 4, 2, 4753, 0 },
558
  { 713, 4, 4, 2, 4753, 0 },
559
  { 693, 4, 4, 2, 4753, 0 },
560
  { 734, 4, 4, 2, 4753, 0 },
561
  { 659, 4, 4, 2, 4753, 0 },
562
  { 631, 4, 4, 2, 4753, 0 },
563
  { 726, 4, 4, 2, 4753, 0 },
564
  { 688, 4, 4, 2, 4753, 0 },
565
  { 697, 4, 4, 2, 4753, 0 },
566
  { 639, 4, 4, 2, 4753, 0 },
567
  { 644, 4, 4, 2, 4753, 0 },
568
  { 666, 4, 4, 2, 4753, 0 },
569
  { 738, 4, 4, 2, 4753, 0 },
570
  { 700, 4, 4, 2, 4753, 0 },
571
  { 673, 4, 4, 2, 4753, 0 },
572
  { 741, 4, 4, 2, 4753, 0 },
573
  { 156, 4, 4, 2, 4753, 0 },
574
  { 219, 4, 4, 2, 4753, 0 },
575
  { 294, 4, 4, 2, 4753, 0 },
576
  { 352, 4, 4, 2, 4753, 0 },
577
  { 422, 4, 4, 2, 4753, 0 },
578
  { 476, 4, 4, 2, 4753, 0 },
579
  { 542, 4, 4, 2, 4753, 0 },
580
  { 584, 4, 4, 2, 4753, 0 },
581
  { 626, 4, 4, 2, 4753, 0 },
582
  { 12, 4, 4, 2, 4753, 0 },
583
  { 84, 4, 4, 2, 4753, 0 },
584
  { 173, 4, 4, 2, 4753, 0 },
585
  { 236, 4, 4, 2, 4753, 0 },
586
  { 311, 4, 4, 2, 4753, 0 },
587
  { 369, 4, 4, 2, 4753, 0 },
588
  { 435, 4, 4, 2, 4753, 0 },
589
  { 489, 4, 4, 2, 4753, 0 },
590
  { 555, 4, 4, 2, 4753, 0 },
591
  { 597, 4, 4, 2, 4753, 0 },
592
  { 26, 4, 4, 2, 4753, 0 },
593
  { 98, 4, 4, 2, 4753, 0 },
594
  { 187, 4, 4, 2, 4753, 0 },
595
  { 250, 4, 4, 2, 4753, 0 },
596
  { 325, 4, 4, 2, 4753, 0 },
597
  { 383, 4, 4, 2, 4753, 0 },
598
  { 449, 4, 4, 2, 4753, 0 },
599
  { 503, 4, 4, 2, 4753, 0 },
600
  { 569, 4, 4, 2, 4753, 0 },
601
  { 611, 4, 4, 2, 4753, 0 },
602
  { 40, 4, 4, 2, 4753, 0 },
603
  { 112, 4, 4, 2, 4753, 0 },
604
  { 51, 5, 288, 0, 1842, 2 },
605
  { 123, 12, 279, 0, 1842, 2 },
606
  { 198, 15, 279, 0, 1842, 2 },
607
  { 261, 22, 270, 0, 1842, 2 },
608
  { 331, 25, 270, 0, 1842, 2 },
609
  { 389, 32, 261, 0, 1842, 2 },
610
  { 455, 35, 261, 0, 1842, 2 },
611
  { 509, 42, 252, 0, 1842, 2 },
612
  { 575, 45, 252, 0, 1842, 2 },
613
  { 617, 52, 243, 0, 1842, 2 },
614
  { 0, 55, 243, 0, 1842, 2 },
615
  { 72, 62, 234, 0, 1842, 2 },
616
  { 161, 65, 234, 0, 1842, 2 },
617
  { 224, 72, 225, 0, 1842, 2 },
618
  { 299, 75, 225, 0, 1842, 2 },
619
  { 357, 82, 219, 0, 1842, 2 },
620
  { 427, 4, 219, 2, 2657, 0 },
621
  { 481, 4, 216, 2, 2657, 0 },
622
  { 547, 4, 216, 2, 2657, 0 },
623
  { 589, 4, 214, 2, 2657, 0 },
624
  { 18, 4, 214, 2, 2657, 0 },
625
  { 90, 4, 212, 2, 2657, 0 },
626
  { 179, 4, 212, 2, 2657, 0 },
627
  { 242, 4, 210, 2, 2657, 0 },
628
  { 317, 4, 210, 2, 2657, 0 },
629
  { 375, 4, 208, 2, 2657, 0 },
630
  { 441, 4, 208, 2, 2657, 0 },
631
  { 495, 4, 206, 2, 2657, 0 },
632
  { 561, 4, 206, 2, 2657, 0 },
633
  { 603, 4, 204, 2, 2657, 0 },
634
  { 32, 4, 204, 2, 2657, 0 },
635
  { 104, 4, 202, 2, 2657, 0 },
636
  { 54, 4, 290, 2, 4689, 0 },
637
  { 126, 4, 287, 2, 4689, 0 },
638
  { 201, 4, 284, 2, 4689, 0 },
639
  { 264, 4, 281, 2, 4689, 0 },
640
  { 334, 4, 281, 2, 4689, 0 },
641
  { 392, 4, 278, 2, 4689, 0 },
642
  { 458, 4, 275, 2, 4689, 0 },
643
  { 512, 4, 272, 2, 4689, 0 },
644
  { 578, 4, 272, 2, 4689, 0 },
645
  { 620, 4, 269, 2, 4689, 0 },
646
  { 4, 4, 266, 2, 4689, 0 },
647
  { 76, 4, 263, 2, 4689, 0 },
648
  { 165, 4, 263, 2, 4689, 0 },
649
  { 228, 4, 260, 2, 4689, 0 },
650
  { 303, 4, 257, 2, 4689, 0 },
651
  { 361, 4, 254, 2, 4689, 0 },
652
  { 431, 4, 254, 2, 4689, 0 },
653
  { 485, 4, 251, 2, 4689, 0 },
654
  { 551, 4, 248, 2, 4689, 0 },
655
  { 593, 4, 245, 2, 4689, 0 },
656
  { 22, 4, 245, 2, 4689, 0 },
657
  { 94, 4, 242, 2, 4689, 0 },
658
  { 183, 4, 239, 2, 4689, 0 },
659
  { 246, 4, 236, 2, 4689, 0 },
660
  { 321, 4, 236, 2, 4689, 0 },
661
  { 379, 4, 233, 2, 4689, 0 },
662
  { 445, 4, 230, 2, 4689, 0 },
663
  { 499, 4, 227, 2, 4689, 0 },
664
  { 565, 4, 227, 2, 4689, 0 },
665
  { 607, 4, 224, 2, 4689, 0 },
666
  { 36, 4, 221, 2, 4689, 0 },
667
  { 108, 4, 218, 2, 4689, 0 },
668
  { 46, 4, 4, 2, 4721, 0 },
669
  { 118, 4, 4, 2, 4721, 0 },
670
  { 193, 4, 4, 2, 4721, 0 },
671
  { 256, 4, 4, 2, 4721, 0 },
672
  { 57, 4, 200, 2, 4721, 0 },
673
  { 132, 4, 198, 2, 4721, 0 },
674
  { 204, 4, 198, 2, 4721, 0 },
675
  { 270, 4, 196, 2, 4721, 0 },
676
  { 337, 4, 196, 2, 4721, 0 },
677
  { 398, 4, 194, 2, 4721, 0 },
678
  { 461, 4, 194, 2, 4721, 0 },
679
  { 518, 4, 192, 2, 4721, 0 },
680
  { 60, 4, 192, 2, 4721, 0 },
681
  { 138, 4, 190, 2, 4721, 0 },
682
  { 207, 4, 190, 2, 4721, 0 },
683
  { 276, 4, 188, 2, 4721, 0 },
684
  { 340, 4, 188, 2, 4721, 0 },
685
  { 404, 4, 186, 2, 4721, 0 },
686
  { 464, 4, 186, 2, 4721, 0 },
687
  { 524, 4, 184, 2, 4721, 0 },
688
  { 63, 4, 184, 2, 4721, 0 },
689
  { 144, 4, 182, 2, 4721, 0 },
690
  { 210, 4, 182, 2, 4721, 0 },
691
  { 282, 4, 180, 2, 4721, 0 },
692
  { 343, 4, 180, 2, 4721, 0 },
693
  { 410, 4, 178, 2, 4721, 0 },
694
  { 467, 4, 178, 2, 4721, 0 },
695
  { 530, 4, 176, 2, 4721, 0 },
696
  { 66, 4, 176, 2, 4721, 0 },
697
  { 150, 4, 174, 2, 4721, 0 },
698
  { 213, 4, 174, 2, 4721, 0 },
699
  { 288, 4, 172, 2, 4721, 0 },
700
  { 346, 4, 172, 2, 4721, 0 },
701
  { 416, 4, 170, 2, 4721, 0 },
702
  { 470, 4, 170, 2, 4721, 0 },
703
  { 536, 4, 168, 2, 4721, 0 },
704
  { 69, 8, 4, 6, 4, 5 },
705
  { 153, 18, 4, 6, 4, 5 },
706
  { 216, 28, 4, 6, 4, 5 },
707
  { 291, 38, 4, 6, 4, 5 },
708
  { 349, 48, 4, 6, 4, 5 },
709
  { 419, 58, 4, 6, 4, 5 },
710
  { 473, 68, 4, 6, 4, 5 },
711
  { 539, 78, 4, 6, 4, 5 },
712
  { 581, 91, 4, 3, 1362, 10 },
713
  { 623, 94, 4, 3, 1362, 10 },
714
  { 8, 97, 4, 3, 1362, 10 },
715
  { 80, 100, 4, 3, 1362, 10 },
716
  { 169, 103, 4, 3, 1362, 10 },
717
  { 232, 106, 4, 3, 1362, 10 },
718
  { 307, 109, 4, 3, 1362, 10 },
719
  { 365, 112, 4, 3, 1362, 10 },
720
  { 129, 118, 4, 0, 1410, 2 },
721
  { 267, 121, 4, 0, 1410, 2 },
722
  { 395, 124, 4, 0, 1410, 2 },
723
  { 515, 127, 4, 0, 1410, 2 },
724
  { 135, 130, 4, 0, 1410, 2 },
725
  { 273, 133, 4, 0, 1410, 2 },
726
  { 401, 136, 4, 0, 1410, 2 },
727
  { 521, 139, 4, 0, 1410, 2 },
728
  { 141, 142, 4, 0, 1410, 2 },
729
  { 279, 145, 4, 0, 1410, 2 },
730
  { 407, 148, 4, 0, 1410, 2 },
731
  { 527, 151, 4, 0, 1410, 2 },
732
  { 147, 154, 4, 0, 1410, 2 },
733
  { 285, 157, 4, 0, 1410, 2 },
734
  { 413, 160, 4, 0, 1410, 2 },
735
  { 533, 163, 4, 0, 1410, 2 },
736
};
737
738
extern const MCPhysReg SparcRegUnitRoots[][2] = {
739
  { SP::CANRESTORE },
740
  { SP::CANSAVE },
741
  { SP::CLEANWIN },
742
  { SP::CWP },
743
  { SP::FSR },
744
  { SP::ICC },
745
  { SP::OTHERWIN },
746
  { SP::PIL },
747
  { SP::PSR },
748
  { SP::PSTATE },
749
  { SP::TBA },
750
  { SP::TBR },
751
  { SP::TICK },
752
  { SP::TL },
753
  { SP::TNPC },
754
  { SP::TPC },
755
  { SP::TSTATE },
756
  { SP::TT },
757
  { SP::WIM },
758
  { SP::WSTATE },
759
  { SP::Y },
760
  { SP::ASR1 },
761
  { SP::ASR2 },
762
  { SP::ASR3 },
763
  { SP::ASR4 },
764
  { SP::ASR5 },
765
  { SP::ASR6 },
766
  { SP::ASR7 },
767
  { SP::ASR8 },
768
  { SP::ASR9 },
769
  { SP::ASR10 },
770
  { SP::ASR11 },
771
  { SP::ASR12 },
772
  { SP::ASR13 },
773
  { SP::ASR14 },
774
  { SP::ASR15 },
775
  { SP::ASR16 },
776
  { SP::ASR17 },
777
  { SP::ASR18 },
778
  { SP::ASR19 },
779
  { SP::ASR20 },
780
  { SP::ASR21 },
781
  { SP::ASR22 },
782
  { SP::ASR23 },
783
  { SP::ASR24 },
784
  { SP::ASR25 },
785
  { SP::ASR26 },
786
  { SP::ASR27 },
787
  { SP::ASR28 },
788
  { SP::ASR29 },
789
  { SP::ASR30 },
790
  { SP::ASR31 },
791
  { SP::F0 },
792
  { SP::F1 },
793
  { SP::F2 },
794
  { SP::F3 },
795
  { SP::F4 },
796
  { SP::F5 },
797
  { SP::F6 },
798
  { SP::F7 },
799
  { SP::F8 },
800
  { SP::F9 },
801
  { SP::F10 },
802
  { SP::F11 },
803
  { SP::F12 },
804
  { SP::F13 },
805
  { SP::F14 },
806
  { SP::F15 },
807
  { SP::F16 },
808
  { SP::F17 },
809
  { SP::F18 },
810
  { SP::F19 },
811
  { SP::F20 },
812
  { SP::F21 },
813
  { SP::F22 },
814
  { SP::F23 },
815
  { SP::F24 },
816
  { SP::F25 },
817
  { SP::F26 },
818
  { SP::F27 },
819
  { SP::F28 },
820
  { SP::F29 },
821
  { SP::F30 },
822
  { SP::F31 },
823
  { SP::D16 },
824
  { SP::D17 },
825
  { SP::D18 },
826
  { SP::D19 },
827
  { SP::D20 },
828
  { SP::D21 },
829
  { SP::D22 },
830
  { SP::D23 },
831
  { SP::D24 },
832
  { SP::D25 },
833
  { SP::D26 },
834
  { SP::D27 },
835
  { SP::D28 },
836
  { SP::D29 },
837
  { SP::D30 },
838
  { SP::D31 },
839
  { SP::FCC0 },
840
  { SP::FCC1 },
841
  { SP::FCC2 },
842
  { SP::FCC3 },
843
  { SP::G0 },
844
  { SP::G1 },
845
  { SP::G2 },
846
  { SP::G3 },
847
  { SP::G4 },
848
  { SP::G5 },
849
  { SP::G6 },
850
  { SP::G7 },
851
  { SP::I0 },
852
  { SP::I1 },
853
  { SP::I2 },
854
  { SP::I3 },
855
  { SP::I4 },
856
  { SP::I5 },
857
  { SP::I6 },
858
  { SP::I7 },
859
  { SP::L0 },
860
  { SP::L1 },
861
  { SP::L2 },
862
  { SP::L3 },
863
  { SP::L4 },
864
  { SP::L5 },
865
  { SP::L6 },
866
  { SP::L7 },
867
  { SP::O0 },
868
  { SP::O1 },
869
  { SP::O2 },
870
  { SP::O3 },
871
  { SP::O4 },
872
  { SP::O5 },
873
  { SP::O6 },
874
  { SP::O7 },
875
};
876
877
namespace {     // Register classes...
878
  // FCCRegs Register Class...
879
  const MCPhysReg FCCRegs[] = {
880
    SP::FCC0, SP::FCC1, SP::FCC2, SP::FCC3, 
881
  };
882
883
  // FCCRegs Bit set.
884
  const uint8_t FCCRegsBits[] = {
885
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 
886
  };
887
888
  // ASRRegs Register Class...
889
  const MCPhysReg ASRRegs[] = {
890
    SP::Y, SP::ASR1, SP::ASR2, SP::ASR3, SP::ASR4, SP::ASR5, SP::ASR6, SP::ASR7, SP::ASR8, SP::ASR9, SP::ASR10, SP::ASR11, SP::ASR12, SP::ASR13, SP::ASR14, SP::ASR15, SP::ASR16, SP::ASR17, SP::ASR18, SP::ASR19, SP::ASR20, SP::ASR21, SP::ASR22, SP::ASR23, SP::ASR24, SP::ASR25, SP::ASR26, SP::ASR27, SP::ASR28, SP::ASR29, SP::ASR30, SP::ASR31, 
891
  };
892
893
  // ASRRegs Bit set.
894
  const uint8_t ASRRegsBits[] = {
895
    0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 
896
  };
897
898
  // FPRegs Register Class...
899
  const MCPhysReg FPRegs[] = {
900
    SP::F0, SP::F1, SP::F2, SP::F3, SP::F4, SP::F5, SP::F6, SP::F7, SP::F8, SP::F9, SP::F10, SP::F11, SP::F12, SP::F13, SP::F14, SP::F15, SP::F16, SP::F17, SP::F18, SP::F19, SP::F20, SP::F21, SP::F22, SP::F23, SP::F24, SP::F25, SP::F26, SP::F27, SP::F28, SP::F29, SP::F30, SP::F31, 
901
  };
902
903
  // FPRegs Bit set.
904
  const uint8_t FPRegsBits[] = {
905
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 
906
  };
907
908
  // IntRegs Register Class...
909
  const MCPhysReg IntRegs[] = {
910
    SP::I0, SP::I1, SP::I2, SP::I3, SP::I4, SP::I5, SP::I6, SP::I7, SP::G0, SP::G1, SP::G2, SP::G3, SP::G4, SP::G5, SP::G6, SP::G7, SP::L0, SP::L1, SP::L2, SP::L3, SP::L4, SP::L5, SP::L6, SP::L7, SP::O0, SP::O1, SP::O2, SP::O3, SP::O4, SP::O5, SP::O6, SP::O7, 
911
  };
912
913
  // IntRegs Bit set.
914
  const uint8_t IntRegsBits[] = {
915
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 
916
  };
917
918
  // DFPRegs Register Class...
919
  const MCPhysReg DFPRegs[] = {
920
    SP::D0, SP::D1, SP::D2, SP::D3, SP::D4, SP::D5, SP::D6, SP::D7, SP::D8, SP::D9, SP::D10, SP::D11, SP::D12, SP::D13, SP::D14, SP::D15, SP::D16, SP::D17, SP::D18, SP::D19, SP::D20, SP::D21, SP::D22, SP::D23, SP::D24, SP::D25, SP::D26, SP::D27, SP::D28, SP::D29, SP::D30, SP::D31, 
921
  };
922
923
  // DFPRegs Bit set.
924
  const uint8_t DFPRegsBits[] = {
925
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 
926
  };
927
928
  // I64Regs Register Class...
929
  const MCPhysReg I64Regs[] = {
930
    SP::I0, SP::I1, SP::I2, SP::I3, SP::I4, SP::I5, SP::I6, SP::I7, SP::G0, SP::G1, SP::G2, SP::G3, SP::G4, SP::G5, SP::G6, SP::G7, SP::L0, SP::L1, SP::L2, SP::L3, SP::L4, SP::L5, SP::L6, SP::L7, SP::O0, SP::O1, SP::O2, SP::O3, SP::O4, SP::O5, SP::O6, SP::O7, 
931
  };
932
933
  // I64Regs Bit set.
934
  const uint8_t I64RegsBits[] = {
935
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 
936
  };
937
938
  // DFPRegs_with_sub_even Register Class...
939
  const MCPhysReg DFPRegs_with_sub_even[] = {
940
    SP::D0, SP::D1, SP::D2, SP::D3, SP::D4, SP::D5, SP::D6, SP::D7, SP::D8, SP::D9, SP::D10, SP::D11, SP::D12, SP::D13, SP::D14, SP::D15, 
941
  };
942
943
  // DFPRegs_with_sub_even Bit set.
944
  const uint8_t DFPRegs_with_sub_evenBits[] = {
945
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f, 
946
  };
947
948
  // IntPair Register Class...
949
  const MCPhysReg IntPair[] = {
950
    SP::I0_I1, SP::I2_I3, SP::I4_I5, SP::I6_I7, SP::G0_G1, SP::G2_G3, SP::G4_G5, SP::G6_G7, SP::L0_L1, SP::L2_L3, SP::L4_L5, SP::L6_L7, SP::O0_O1, SP::O2_O3, SP::O4_O5, SP::O6_O7, 
951
  };
952
953
  // IntPair Bit set.
954
  const uint8_t IntPairBits[] = {
955
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 
956
  };
957
958
  // PRRegs Register Class...
959
  const MCPhysReg PRRegs[] = {
960
    SP::TPC, SP::TNPC, SP::TSTATE, SP::TT, SP::TICK, SP::TBA, SP::PSTATE, SP::TL, SP::PIL, SP::CWP, SP::CANSAVE, SP::CANRESTORE, SP::CLEANWIN, SP::OTHERWIN, SP::WSTATE, 
961
  };
962
963
  // PRRegs Bit set.
964
  const uint8_t PRRegsBits[] = {
965
    0x9e, 0xed, 0x17, 
966
  };
967
968
  // QFPRegs Register Class...
969
  const MCPhysReg QFPRegs[] = {
970
    SP::Q0, SP::Q1, SP::Q2, SP::Q3, SP::Q4, SP::Q5, SP::Q6, SP::Q7, SP::Q8, SP::Q9, SP::Q10, SP::Q11, SP::Q12, SP::Q13, SP::Q14, SP::Q15, 
971
  };
972
973
  // QFPRegs Bit set.
974
  const uint8_t QFPRegsBits[] = {
975
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 
976
  };
977
978
  // QFPRegs_with_sub_even Register Class...
979
  const MCPhysReg QFPRegs_with_sub_even[] = {
980
    SP::Q0, SP::Q1, SP::Q2, SP::Q3, SP::Q4, SP::Q5, SP::Q6, SP::Q7, 
981
  };
982
983
  // QFPRegs_with_sub_even Bit set.
984
  const uint8_t QFPRegs_with_sub_evenBits[] = {
985
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 
986
  };
987
988
}
989
990
extern const char SparcRegClassStrings[] = {
991
  /* 0 */ 'D', 'F', 'P', 'R', 'e', 'g', 's', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', 'e', 'v', 'e', 'n', 0,
992
  /* 22 */ 'Q', 'F', 'P', 'R', 'e', 'g', 's', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', 'e', 'v', 'e', 'n', 0,
993
  /* 44 */ 'I', 'n', 't', 'P', 'a', 'i', 'r', 0,
994
  /* 52 */ 'I', '6', '4', 'R', 'e', 'g', 's', 0,
995
  /* 60 */ 'F', 'C', 'C', 'R', 'e', 'g', 's', 0,
996
  /* 68 */ 'D', 'F', 'P', 'R', 'e', 'g', 's', 0,
997
  /* 76 */ 'Q', 'F', 'P', 'R', 'e', 'g', 's', 0,
998
  /* 84 */ 'P', 'R', 'R', 'e', 'g', 's', 0,
999
  /* 91 */ 'A', 'S', 'R', 'R', 'e', 'g', 's', 0,
1000
  /* 99 */ 'I', 'n', 't', 'R', 'e', 'g', 's', 0,
1001
};
1002
1003
extern const MCRegisterClass SparcMCRegisterClasses[] = {
1004
  { FCCRegs, FCCRegsBits, 60, 4, sizeof(FCCRegsBits), SP::FCCRegsRegClassID, 0, 0, 1, 1 },
1005
  { ASRRegs, ASRRegsBits, 91, 32, sizeof(ASRRegsBits), SP::ASRRegsRegClassID, 4, 4, 1, 0 },
1006
  { FPRegs, FPRegsBits, 69, 32, sizeof(FPRegsBits), SP::FPRegsRegClassID, 4, 4, 1, 1 },
1007
  { IntRegs, IntRegsBits, 99, 32, sizeof(IntRegsBits), SP::IntRegsRegClassID, 4, 4, 1, 1 },
1008
  { DFPRegs, DFPRegsBits, 68, 32, sizeof(DFPRegsBits), SP::DFPRegsRegClassID, 8, 8, 1, 1 },
1009
  { I64Regs, I64RegsBits, 52, 32, sizeof(I64RegsBits), SP::I64RegsRegClassID, 8, 8, 1, 1 },
1010
  { DFPRegs_with_sub_even, DFPRegs_with_sub_evenBits, 0, 16, sizeof(DFPRegs_with_sub_evenBits), SP::DFPRegs_with_sub_evenRegClassID, 8, 8, 1, 1 },
1011
  { IntPair, IntPairBits, 44, 16, sizeof(IntPairBits), SP::IntPairRegClassID, 8, 8, 1, 1 },
1012
  { PRRegs, PRRegsBits, 84, 15, sizeof(PRRegsBits), SP::PRRegsRegClassID, 8, 8, 1, 1 },
1013
  { QFPRegs, QFPRegsBits, 76, 16, sizeof(QFPRegsBits), SP::QFPRegsRegClassID, 16, 16, 1, 1 },
1014
  { QFPRegs_with_sub_even, QFPRegs_with_sub_evenBits, 22, 8, sizeof(QFPRegs_with_sub_evenBits), SP::QFPRegs_with_sub_evenRegClassID, 16, 16, 1, 1 },
1015
};
1016
1017
// SP Dwarf<->LLVM register mappings.
1018
extern const MCRegisterInfo::DwarfLLVMRegPair SPDwarfFlavour0Dwarf2L[] = {
1019
  { 0U, SP::G0 },
1020
  { 1U, SP::G1 },
1021
  { 2U, SP::G2 },
1022
  { 3U, SP::G3 },
1023
  { 4U, SP::G4 },
1024
  { 5U, SP::G5 },
1025
  { 6U, SP::G6 },
1026
  { 7U, SP::G7 },
1027
  { 8U, SP::O0 },
1028
  { 9U, SP::O1 },
1029
  { 10U, SP::O2 },
1030
  { 11U, SP::O3 },
1031
  { 12U, SP::O4 },
1032
  { 13U, SP::O5 },
1033
  { 14U, SP::O6 },
1034
  { 15U, SP::O7 },
1035
  { 16U, SP::L0 },
1036
  { 17U, SP::L1 },
1037
  { 18U, SP::L2 },
1038
  { 19U, SP::L3 },
1039
  { 20U, SP::L4 },
1040
  { 21U, SP::L5 },
1041
  { 22U, SP::L6 },
1042
  { 23U, SP::L7 },
1043
  { 24U, SP::I0 },
1044
  { 25U, SP::I1 },
1045
  { 26U, SP::I2 },
1046
  { 27U, SP::I3 },
1047
  { 28U, SP::I4 },
1048
  { 29U, SP::I5 },
1049
  { 30U, SP::I6 },
1050
  { 31U, SP::I7 },
1051
  { 32U, SP::F0 },
1052
  { 33U, SP::F1 },
1053
  { 34U, SP::F2 },
1054
  { 35U, SP::F3 },
1055
  { 36U, SP::F4 },
1056
  { 37U, SP::F5 },
1057
  { 38U, SP::F6 },
1058
  { 39U, SP::F7 },
1059
  { 40U, SP::F8 },
1060
  { 41U, SP::F9 },
1061
  { 42U, SP::F10 },
1062
  { 43U, SP::F11 },
1063
  { 44U, SP::F12 },
1064
  { 45U, SP::F13 },
1065
  { 46U, SP::F14 },
1066
  { 47U, SP::F15 },
1067
  { 48U, SP::F16 },
1068
  { 49U, SP::F17 },
1069
  { 50U, SP::F18 },
1070
  { 51U, SP::F19 },
1071
  { 52U, SP::F20 },
1072
  { 53U, SP::F21 },
1073
  { 54U, SP::F22 },
1074
  { 55U, SP::F23 },
1075
  { 56U, SP::F24 },
1076
  { 57U, SP::F25 },
1077
  { 58U, SP::F26 },
1078
  { 59U, SP::F27 },
1079
  { 60U, SP::F28 },
1080
  { 61U, SP::F29 },
1081
  { 62U, SP::F30 },
1082
  { 63U, SP::F31 },
1083
  { 64U, SP::Y },
1084
  { 72U, SP::D0 },
1085
  { 73U, SP::D1 },
1086
  { 74U, SP::D2 },
1087
  { 75U, SP::D3 },
1088
  { 76U, SP::D4 },
1089
  { 77U, SP::D5 },
1090
  { 78U, SP::D6 },
1091
  { 79U, SP::D7 },
1092
  { 80U, SP::D8 },
1093
  { 81U, SP::D9 },
1094
  { 82U, SP::D10 },
1095
  { 83U, SP::D11 },
1096
  { 84U, SP::D12 },
1097
  { 85U, SP::D13 },
1098
  { 86U, SP::D14 },
1099
  { 87U, SP::D15 },
1100
};
1101
extern const unsigned SPDwarfFlavour0Dwarf2LSize = array_lengthof(SPDwarfFlavour0Dwarf2L);
1102
1103
extern const MCRegisterInfo::DwarfLLVMRegPair SPEHFlavour0Dwarf2L[] = {
1104
  { 0U, SP::G0 },
1105
  { 1U, SP::G1 },
1106
  { 2U, SP::G2 },
1107
  { 3U, SP::G3 },
1108
  { 4U, SP::G4 },
1109
  { 5U, SP::G5 },
1110
  { 6U, SP::G6 },
1111
  { 7U, SP::G7 },
1112
  { 8U, SP::O0 },
1113
  { 9U, SP::O1 },
1114
  { 10U, SP::O2 },
1115
  { 11U, SP::O3 },
1116
  { 12U, SP::O4 },
1117
  { 13U, SP::O5 },
1118
  { 14U, SP::O6 },
1119
  { 15U, SP::O7 },
1120
  { 16U, SP::L0 },
1121
  { 17U, SP::L1 },
1122
  { 18U, SP::L2 },
1123
  { 19U, SP::L3 },
1124
  { 20U, SP::L4 },
1125
  { 21U, SP::L5 },
1126
  { 22U, SP::L6 },
1127
  { 23U, SP::L7 },
1128
  { 24U, SP::I0 },
1129
  { 25U, SP::I1 },
1130
  { 26U, SP::I2 },
1131
  { 27U, SP::I3 },
1132
  { 28U, SP::I4 },
1133
  { 29U, SP::I5 },
1134
  { 30U, SP::I6 },
1135
  { 31U, SP::I7 },
1136
  { 32U, SP::F0 },
1137
  { 33U, SP::F1 },
1138
  { 34U, SP::F2 },
1139
  { 35U, SP::F3 },
1140
  { 36U, SP::F4 },
1141
  { 37U, SP::F5 },
1142
  { 38U, SP::F6 },
1143
  { 39U, SP::F7 },
1144
  { 40U, SP::F8 },
1145
  { 41U, SP::F9 },
1146
  { 42U, SP::F10 },
1147
  { 43U, SP::F11 },
1148
  { 44U, SP::F12 },
1149
  { 45U, SP::F13 },
1150
  { 46U, SP::F14 },
1151
  { 47U, SP::F15 },
1152
  { 48U, SP::F16 },
1153
  { 49U, SP::F17 },
1154
  { 50U, SP::F18 },
1155
  { 51U, SP::F19 },
1156
  { 52U, SP::F20 },
1157
  { 53U, SP::F21 },
1158
  { 54U, SP::F22 },
1159
  { 55U, SP::F23 },
1160
  { 56U, SP::F24 },
1161
  { 57U, SP::F25 },
1162
  { 58U, SP::F26 },
1163
  { 59U, SP::F27 },
1164
  { 60U, SP::F28 },
1165
  { 61U, SP::F29 },
1166
  { 62U, SP::F30 },
1167
  { 63U, SP::F31 },
1168
  { 64U, SP::Y },
1169
  { 72U, SP::D0 },
1170
  { 73U, SP::D1 },
1171
  { 74U, SP::D2 },
1172
  { 75U, SP::D3 },
1173
  { 76U, SP::D4 },
1174
  { 77U, SP::D5 },
1175
  { 78U, SP::D6 },
1176
  { 79U, SP::D7 },
1177
  { 80U, SP::D8 },
1178
  { 81U, SP::D9 },
1179
  { 82U, SP::D10 },
1180
  { 83U, SP::D11 },
1181
  { 84U, SP::D12 },
1182
  { 85U, SP::D13 },
1183
  { 86U, SP::D14 },
1184
  { 87U, SP::D15 },
1185
};
1186
extern const unsigned SPEHFlavour0Dwarf2LSize = array_lengthof(SPEHFlavour0Dwarf2L);
1187
1188
extern const MCRegisterInfo::DwarfLLVMRegPair SPDwarfFlavour0L2Dwarf[] = {
1189
  { SP::Y, 64U },
1190
  { SP::D0, 72U },
1191
  { SP::D1, 73U },
1192
  { SP::D2, 74U },
1193
  { SP::D3, 75U },
1194
  { SP::D4, 76U },
1195
  { SP::D5, 77U },
1196
  { SP::D6, 78U },
1197
  { SP::D7, 79U },
1198
  { SP::D8, 80U },
1199
  { SP::D9, 81U },
1200
  { SP::D10, 82U },
1201
  { SP::D11, 83U },
1202
  { SP::D12, 84U },
1203
  { SP::D13, 85U },
1204
  { SP::D14, 86U },
1205
  { SP::D15, 87U },
1206
  { SP::F0, 32U },
1207
  { SP::F1, 33U },
1208
  { SP::F2, 34U },
1209
  { SP::F3, 35U },
1210
  { SP::F4, 36U },
1211
  { SP::F5, 37U },
1212
  { SP::F6, 38U },
1213
  { SP::F7, 39U },
1214
  { SP::F8, 40U },
1215
  { SP::F9, 41U },
1216
  { SP::F10, 42U },
1217
  { SP::F11, 43U },
1218
  { SP::F12, 44U },
1219
  { SP::F13, 45U },
1220
  { SP::F14, 46U },
1221
  { SP::F15, 47U },
1222
  { SP::F16, 48U },
1223
  { SP::F17, 49U },
1224
  { SP::F18, 50U },
1225
  { SP::F19, 51U },
1226
  { SP::F20, 52U },
1227
  { SP::F21, 53U },
1228
  { SP::F22, 54U },
1229
  { SP::F23, 55U },
1230
  { SP::F24, 56U },
1231
  { SP::F25, 57U },
1232
  { SP::F26, 58U },
1233
  { SP::F27, 59U },
1234
  { SP::F28, 60U },
1235
  { SP::F29, 61U },
1236
  { SP::F30, 62U },
1237
  { SP::F31, 63U },
1238
  { SP::G0, 0U },
1239
  { SP::G1, 1U },
1240
  { SP::G2, 2U },
1241
  { SP::G3, 3U },
1242
  { SP::G4, 4U },
1243
  { SP::G5, 5U },
1244
  { SP::G6, 6U },
1245
  { SP::G7, 7U },
1246
  { SP::I0, 24U },
1247
  { SP::I1, 25U },
1248
  { SP::I2, 26U },
1249
  { SP::I3, 27U },
1250
  { SP::I4, 28U },
1251
  { SP::I5, 29U },
1252
  { SP::I6, 30U },
1253
  { SP::I7, 31U },
1254
  { SP::L0, 16U },
1255
  { SP::L1, 17U },
1256
  { SP::L2, 18U },
1257
  { SP::L3, 19U },
1258
  { SP::L4, 20U },
1259
  { SP::L5, 21U },
1260
  { SP::L6, 22U },
1261
  { SP::L7, 23U },
1262
  { SP::O0, 8U },
1263
  { SP::O1, 9U },
1264
  { SP::O2, 10U },
1265
  { SP::O3, 11U },
1266
  { SP::O4, 12U },
1267
  { SP::O5, 13U },
1268
  { SP::O6, 14U },
1269
  { SP::O7, 15U },
1270
};
1271
extern const unsigned SPDwarfFlavour0L2DwarfSize = array_lengthof(SPDwarfFlavour0L2Dwarf);
1272
1273
extern const MCRegisterInfo::DwarfLLVMRegPair SPEHFlavour0L2Dwarf[] = {
1274
  { SP::Y, 64U },
1275
  { SP::D0, 72U },
1276
  { SP::D1, 73U },
1277
  { SP::D2, 74U },
1278
  { SP::D3, 75U },
1279
  { SP::D4, 76U },
1280
  { SP::D5, 77U },
1281
  { SP::D6, 78U },
1282
  { SP::D7, 79U },
1283
  { SP::D8, 80U },
1284
  { SP::D9, 81U },
1285
  { SP::D10, 82U },
1286
  { SP::D11, 83U },
1287
  { SP::D12, 84U },
1288
  { SP::D13, 85U },
1289
  { SP::D14, 86U },
1290
  { SP::D15, 87U },
1291
  { SP::F0, 32U },
1292
  { SP::F1, 33U },
1293
  { SP::F2, 34U },
1294
  { SP::F3, 35U },
1295
  { SP::F4, 36U },
1296
  { SP::F5, 37U },
1297
  { SP::F6, 38U },
1298
  { SP::F7, 39U },
1299
  { SP::F8, 40U },
1300
  { SP::F9, 41U },
1301
  { SP::F10, 42U },
1302
  { SP::F11, 43U },
1303
  { SP::F12, 44U },
1304
  { SP::F13, 45U },
1305
  { SP::F14, 46U },
1306
  { SP::F15, 47U },
1307
  { SP::F16, 48U },
1308
  { SP::F17, 49U },
1309
  { SP::F18, 50U },
1310
  { SP::F19, 51U },
1311
  { SP::F20, 52U },
1312
  { SP::F21, 53U },
1313
  { SP::F22, 54U },
1314
  { SP::F23, 55U },
1315
  { SP::F24, 56U },
1316
  { SP::F25, 57U },
1317
  { SP::F26, 58U },
1318
  { SP::F27, 59U },
1319
  { SP::F28, 60U },
1320
  { SP::F29, 61U },
1321
  { SP::F30, 62U },
1322
  { SP::F31, 63U },
1323
  { SP::G0, 0U },
1324
  { SP::G1, 1U },
1325
  { SP::G2, 2U },
1326
  { SP::G3, 3U },
1327
  { SP::G4, 4U },
1328
  { SP::G5, 5U },
1329
  { SP::G6, 6U },
1330
  { SP::G7, 7U },
1331
  { SP::I0, 24U },
1332
  { SP::I1, 25U },
1333
  { SP::I2, 26U },
1334
  { SP::I3, 27U },
1335
  { SP::I4, 28U },
1336
  { SP::I5, 29U },
1337
  { SP::I6, 30U },
1338
  { SP::I7, 31U },
1339
  { SP::L0, 16U },
1340
  { SP::L1, 17U },
1341
  { SP::L2, 18U },
1342
  { SP::L3, 19U },
1343
  { SP::L4, 20U },
1344
  { SP::L5, 21U },
1345
  { SP::L6, 22U },
1346
  { SP::L7, 23U },
1347
  { SP::O0, 8U },
1348
  { SP::O1, 9U },
1349
  { SP::O2, 10U },
1350
  { SP::O3, 11U },
1351
  { SP::O4, 12U },
1352
  { SP::O5, 13U },
1353
  { SP::O6, 14U },
1354
  { SP::O7, 15U },
1355
};
1356
extern const unsigned SPEHFlavour0L2DwarfSize = array_lengthof(SPEHFlavour0L2Dwarf);
1357
1358
extern const uint16_t SparcRegEncodingTable[] = {
1359
  0,
1360
  11,
1361
  10,
1362
  12,
1363
  9,
1364
  0,
1365
  0,
1366
  13,
1367
  8,
1368
  0,
1369
  6,
1370
  5,
1371
  0,
1372
  4,
1373
  7,
1374
  1,
1375
  0,
1376
  2,
1377
  3,
1378
  0,
1379
  14,
1380
  0,
1381
  1,
1382
  2,
1383
  3,
1384
  4,
1385
  5,
1386
  6,
1387
  7,
1388
  8,
1389
  9,
1390
  10,
1391
  11,
1392
  12,
1393
  13,
1394
  14,
1395
  15,
1396
  16,
1397
  17,
1398
  18,
1399
  19,
1400
  20,
1401
  21,
1402
  22,
1403
  23,
1404
  24,
1405
  25,
1406
  26,
1407
  27,
1408
  28,
1409
  29,
1410
  30,
1411
  31,
1412
  0,
1413
  2,
1414
  4,
1415
  6,
1416
  8,
1417
  10,
1418
  12,
1419
  14,
1420
  16,
1421
  18,
1422
  20,
1423
  22,
1424
  24,
1425
  26,
1426
  28,
1427
  30,
1428
  1,
1429
  3,
1430
  5,
1431
  7,
1432
  9,
1433
  11,
1434
  13,
1435
  15,
1436
  17,
1437
  19,
1438
  21,
1439
  23,
1440
  25,
1441
  27,
1442
  29,
1443
  31,
1444
  0,
1445
  1,
1446
  2,
1447
  3,
1448
  4,
1449
  5,
1450
  6,
1451
  7,
1452
  8,
1453
  9,
1454
  10,
1455
  11,
1456
  12,
1457
  13,
1458
  14,
1459
  15,
1460
  16,
1461
  17,
1462
  18,
1463
  19,
1464
  20,
1465
  21,
1466
  22,
1467
  23,
1468
  24,
1469
  25,
1470
  26,
1471
  27,
1472
  28,
1473
  29,
1474
  30,
1475
  31,
1476
  0,
1477
  1,
1478
  2,
1479
  3,
1480
  0,
1481
  1,
1482
  2,
1483
  3,
1484
  4,
1485
  5,
1486
  6,
1487
  7,
1488
  24,
1489
  25,
1490
  26,
1491
  27,
1492
  28,
1493
  29,
1494
  30,
1495
  31,
1496
  16,
1497
  17,
1498
  18,
1499
  19,
1500
  20,
1501
  21,
1502
  22,
1503
  23,
1504
  8,
1505
  9,
1506
  10,
1507
  11,
1508
  12,
1509
  13,
1510
  14,
1511
  15,
1512
  0,
1513
  4,
1514
  8,
1515
  12,
1516
  16,
1517
  20,
1518
  24,
1519
  28,
1520
  1,
1521
  5,
1522
  9,
1523
  13,
1524
  17,
1525
  21,
1526
  25,
1527
  29,
1528
  0,
1529
  2,
1530
  4,
1531
  6,
1532
  24,
1533
  26,
1534
  28,
1535
  30,
1536
  16,
1537
  18,
1538
  20,
1539
  22,
1540
  8,
1541
  10,
1542
  12,
1543
  14,
1544
};
1545
12.9k
static inline void InitSparcMCRegisterInfo(MCRegisterInfo *RI, unsigned RA, unsigned DwarfFlavour = 0, unsigned EHFlavour = 0, unsigned PC = 0) {
1546
12.9k
  RI->InitMCRegisterInfo(SparcRegDesc, 185, RA, PC, SparcMCRegisterClasses, 11, SparcRegUnitRoots, 136, SparcRegDiffLists, SparcLaneMaskLists, SparcRegStrings, SparcRegClassStrings, SparcSubRegIdxLists, 7,
1547
12.9k
SparcSubRegIdxRanges, SparcRegEncodingTable);
1548
1549
12.9k
  switch (DwarfFlavour) {
1550
0
  default:
1551
0
    llvm_unreachable("Unknown DWARF flavour");
1552
12.9k
  case 0:
1553
12.9k
    RI->mapDwarfRegsToLLVMRegs(SPDwarfFlavour0Dwarf2L, SPDwarfFlavour0Dwarf2LSize, false);
1554
12.9k
    break;
1555
12.9k
  }
1556
12.9k
  switch (EHFlavour) {
1557
0
  default:
1558
0
    llvm_unreachable("Unknown DWARF flavour");
1559
12.9k
  case 0:
1560
12.9k
    RI->mapDwarfRegsToLLVMRegs(SPEHFlavour0Dwarf2L, SPEHFlavour0Dwarf2LSize, true);
1561
12.9k
    break;
1562
12.9k
  }
1563
12.9k
  switch (DwarfFlavour) {
1564
0
  default:
1565
0
    llvm_unreachable("Unknown DWARF flavour");
1566
12.9k
  case 0:
1567
12.9k
    RI->mapLLVMRegsToDwarfRegs(SPDwarfFlavour0L2Dwarf, SPDwarfFlavour0L2DwarfSize, false);
1568
12.9k
    break;
1569
12.9k
  }
1570
12.9k
  switch (EHFlavour) {
1571
0
  default:
1572
0
    llvm_unreachable("Unknown DWARF flavour");
1573
12.9k
  case 0:
1574
12.9k
    RI->mapLLVMRegsToDwarfRegs(SPEHFlavour0L2Dwarf, SPEHFlavour0L2DwarfSize, true);
1575
12.9k
    break;
1576
12.9k
  }
1577
12.9k
}
1578
1579
} // End llvm namespace
1580
#endif // GET_REGINFO_MC_DESC