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
13namespace llvm {
14
15class MCRegisterClass;
16extern const MCRegisterClass PPCMCRegisterClasses[];
17
18namespace PPC {
19enum {
20  NoRegister,
21  BP = 1,
22  CARRY = 2,
23  CTR = 3,
24  FP = 4,
25  LR = 5,
26  RM = 6,
27  SPEFSCR = 7,
28  VRSAVE = 8,
29  XER = 9,
30  ZERO = 10,
31  BP8 = 11,
32  CR0 = 12,
33  CR1 = 13,
34  CR2 = 14,
35  CR3 = 15,
36  CR4 = 16,
37  CR5 = 17,
38  CR6 = 18,
39  CR7 = 19,
40  CTR8 = 20,
41  F0 = 21,
42  F1 = 22,
43  F2 = 23,
44  F3 = 24,
45  F4 = 25,
46  F5 = 26,
47  F6 = 27,
48  F7 = 28,
49  F8 = 29,
50  F9 = 30,
51  F10 = 31,
52  F11 = 32,
53  F12 = 33,
54  F13 = 34,
55  F14 = 35,
56  F15 = 36,
57  F16 = 37,
58  F17 = 38,
59  F18 = 39,
60  F19 = 40,
61  F20 = 41,
62  F21 = 42,
63  F22 = 43,
64  F23 = 44,
65  F24 = 45,
66  F25 = 46,
67  F26 = 47,
68  F27 = 48,
69  F28 = 49,
70  F29 = 50,
71  F30 = 51,
72  F31 = 52,
73  FP8 = 53,
74  LR8 = 54,
75  QF0 = 55,
76  QF1 = 56,
77  QF2 = 57,
78  QF3 = 58,
79  QF4 = 59,
80  QF5 = 60,
81  QF6 = 61,
82  QF7 = 62,
83  QF8 = 63,
84  QF9 = 64,
85  QF10 = 65,
86  QF11 = 66,
87  QF12 = 67,
88  QF13 = 68,
89  QF14 = 69,
90  QF15 = 70,
91  QF16 = 71,
92  QF17 = 72,
93  QF18 = 73,
94  QF19 = 74,
95  QF20 = 75,
96  QF21 = 76,
97  QF22 = 77,
98  QF23 = 78,
99  QF24 = 79,
100  QF25 = 80,
101  QF26 = 81,
102  QF27 = 82,
103  QF28 = 83,
104  QF29 = 84,
105  QF30 = 85,
106  QF31 = 86,
107  R0 = 87,
108  R1 = 88,
109  R2 = 89,
110  R3 = 90,
111  R4 = 91,
112  R5 = 92,
113  R6 = 93,
114  R7 = 94,
115  R8 = 95,
116  R9 = 96,
117  R10 = 97,
118  R11 = 98,
119  R12 = 99,
120  R13 = 100,
121  R14 = 101,
122  R15 = 102,
123  R16 = 103,
124  R17 = 104,
125  R18 = 105,
126  R19 = 106,
127  R20 = 107,
128  R21 = 108,
129  R22 = 109,
130  R23 = 110,
131  R24 = 111,
132  R25 = 112,
133  R26 = 113,
134  R27 = 114,
135  R28 = 115,
136  R29 = 116,
137  R30 = 117,
138  R31 = 118,
139  S0 = 119,
140  S1 = 120,
141  S2 = 121,
142  S3 = 122,
143  S4 = 123,
144  S5 = 124,
145  S6 = 125,
146  S7 = 126,
147  S8 = 127,
148  S9 = 128,
149  S10 = 129,
150  S11 = 130,
151  S12 = 131,
152  S13 = 132,
153  S14 = 133,
154  S15 = 134,
155  S16 = 135,
156  S17 = 136,
157  S18 = 137,
158  S19 = 138,
159  S20 = 139,
160  S21 = 140,
161  S22 = 141,
162  S23 = 142,
163  S24 = 143,
164  S25 = 144,
165  S26 = 145,
166  S27 = 146,
167  S28 = 147,
168  S29 = 148,
169  S30 = 149,
170  S31 = 150,
171  V0 = 151,
172  V1 = 152,
173  V2 = 153,
174  V3 = 154,
175  V4 = 155,
176  V5 = 156,
177  V6 = 157,
178  V7 = 158,
179  V8 = 159,
180  V9 = 160,
181  V10 = 161,
182  V11 = 162,
183  V12 = 163,
184  V13 = 164,
185  V14 = 165,
186  V15 = 166,
187  V16 = 167,
188  V17 = 168,
189  V18 = 169,
190  V19 = 170,
191  V20 = 171,
192  V21 = 172,
193  V22 = 173,
194  V23 = 174,
195  V24 = 175,
196  V25 = 176,
197  V26 = 177,
198  V27 = 178,
199  V28 = 179,
200  V29 = 180,
201  V30 = 181,
202  V31 = 182,
203  VF0 = 183,
204  VF1 = 184,
205  VF2 = 185,
206  VF3 = 186,
207  VF4 = 187,
208  VF5 = 188,
209  VF6 = 189,
210  VF7 = 190,
211  VF8 = 191,
212  VF9 = 192,
213  VF10 = 193,
214  VF11 = 194,
215  VF12 = 195,
216  VF13 = 196,
217  VF14 = 197,
218  VF15 = 198,
219  VF16 = 199,
220  VF17 = 200,
221  VF18 = 201,
222  VF19 = 202,
223  VF20 = 203,
224  VF21 = 204,
225  VF22 = 205,
226  VF23 = 206,
227  VF24 = 207,
228  VF25 = 208,
229  VF26 = 209,
230  VF27 = 210,
231  VF28 = 211,
232  VF29 = 212,
233  VF30 = 213,
234  VF31 = 214,
235  VSL0 = 215,
236  VSL1 = 216,
237  VSL2 = 217,
238  VSL3 = 218,
239  VSL4 = 219,
240  VSL5 = 220,
241  VSL6 = 221,
242  VSL7 = 222,
243  VSL8 = 223,
244  VSL9 = 224,
245  VSL10 = 225,
246  VSL11 = 226,
247  VSL12 = 227,
248  VSL13 = 228,
249  VSL14 = 229,
250  VSL15 = 230,
251  VSL16 = 231,
252  VSL17 = 232,
253  VSL18 = 233,
254  VSL19 = 234,
255  VSL20 = 235,
256  VSL21 = 236,
257  VSL22 = 237,
258  VSL23 = 238,
259  VSL24 = 239,
260  VSL25 = 240,
261  VSL26 = 241,
262  VSL27 = 242,
263  VSL28 = 243,
264  VSL29 = 244,
265  VSL30 = 245,
266  VSL31 = 246,
267  VSX32 = 247,
268  VSX33 = 248,
269  VSX34 = 249,
270  VSX35 = 250,
271  VSX36 = 251,
272  VSX37 = 252,
273  VSX38 = 253,
274  VSX39 = 254,
275  VSX40 = 255,
276  VSX41 = 256,
277  VSX42 = 257,
278  VSX43 = 258,
279  VSX44 = 259,
280  VSX45 = 260,
281  VSX46 = 261,
282  VSX47 = 262,
283  VSX48 = 263,
284  VSX49 = 264,
285  VSX50 = 265,
286  VSX51 = 266,
287  VSX52 = 267,
288  VSX53 = 268,
289  VSX54 = 269,
290  VSX55 = 270,
291  VSX56 = 271,
292  VSX57 = 272,
293  VSX58 = 273,
294  VSX59 = 274,
295  VSX60 = 275,
296  VSX61 = 276,
297  VSX62 = 277,
298  VSX63 = 278,
299  X0 = 279,
300  X1 = 280,
301  X2 = 281,
302  X3 = 282,
303  X4 = 283,
304  X5 = 284,
305  X6 = 285,
306  X7 = 286,
307  X8 = 287,
308  X9 = 288,
309  X10 = 289,
310  X11 = 290,
311  X12 = 291,
312  X13 = 292,
313  X14 = 293,
314  X15 = 294,
315  X16 = 295,
316  X17 = 296,
317  X18 = 297,
318  X19 = 298,
319  X20 = 299,
320  X21 = 300,
321  X22 = 301,
322  X23 = 302,
323  X24 = 303,
324  X25 = 304,
325  X26 = 305,
326  X27 = 306,
327  X28 = 307,
328  X29 = 308,
329  X30 = 309,
330  X31 = 310,
331  ZERO8 = 311,
332  CR0EQ = 312,
333  CR1EQ = 313,
334  CR2EQ = 314,
335  CR3EQ = 315,
336  CR4EQ = 316,
337  CR5EQ = 317,
338  CR6EQ = 318,
339  CR7EQ = 319,
340  CR0GT = 320,
341  CR1GT = 321,
342  CR2GT = 322,
343  CR3GT = 323,
344  CR4GT = 324,
345  CR5GT = 325,
346  CR6GT = 326,
347  CR7GT = 327,
348  CR0LT = 328,
349  CR1LT = 329,
350  CR2LT = 330,
351  CR3LT = 331,
352  CR4LT = 332,
353  CR5LT = 333,
354  CR6LT = 334,
355  CR7LT = 335,
356  CR0UN = 336,
357  CR1UN = 337,
358  CR2UN = 338,
359  CR3UN = 339,
360  CR4UN = 340,
361  CR5UN = 341,
362  CR6UN = 342,
363  CR7UN = 343,
364  NUM_TARGET_REGS 	// 344
365};
366} // end namespace PPC
367
368// Register classes
369
370namespace PPC {
371enum {
372  VSSRCRegClassID = 0,
373  GPRCRegClassID = 1,
374  GPRC_NOR0RegClassID = 2,
375  GPRC_and_GPRC_NOR0RegClassID = 3,
376  CRBITRCRegClassID = 4,
377  F4RCRegClassID = 5,
378  CRRCRegClassID = 6,
379  CARRYRCRegClassID = 7,
380  CTRRCRegClassID = 8,
381  VRSAVERCRegClassID = 9,
382  SPILLTOVSRRCRegClassID = 10,
383  VSFRCRegClassID = 11,
384  G8RCRegClassID = 12,
385  G8RC_NOX0RegClassID = 13,
386  SPILLTOVSRRC_and_VSFRCRegClassID = 14,
387  G8RC_and_G8RC_NOX0RegClassID = 15,
388  F8RCRegClassID = 16,
389  SPERCRegClassID = 17,
390  VFRCRegClassID = 18,
391  SPERC_with_sub_32_in_GPRC_NOR0RegClassID = 19,
392  SPILLTOVSRRC_and_VFRCRegClassID = 20,
393  SPILLTOVSRRC_and_F4RCRegClassID = 21,
394  CTRRC8RegClassID = 22,
395  VSRCRegClassID = 23,
396  VSRC_with_sub_64_in_SPILLTOVSRRCRegClassID = 24,
397  QSRCRegClassID = 25,
398  VRRCRegClassID = 26,
399  VSLRCRegClassID = 27,
400  VRRC_with_sub_64_in_SPILLTOVSRRCRegClassID = 28,
401  QSRC_with_sub_64_in_SPILLTOVSRRCRegClassID = 29,
402  VSLRC_with_sub_64_in_SPILLTOVSRRCRegClassID = 30,
403  QBRCRegClassID = 31,
404  QFRCRegClassID = 32,
405  QBRC_with_sub_64_in_SPILLTOVSRRCRegClassID = 33,
406
407  };
408} // end namespace PPC
409
410
411// Subregister indices
412
413namespace PPC {
414enum {
415  NoSubRegister,
416  sub_32,	// 1
417  sub_64,	// 2
418  sub_eq,	// 3
419  sub_gt,	// 4
420  sub_lt,	// 5
421  sub_un,	// 6
422  NUM_TARGET_SUBREGS
423};
424} // end namespace PPC
425
426} // end namespace llvm
427
428#endif // GET_REGINFO_ENUM
429
430/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
431|*                                                                            *|
432|* MC Register Information                                                    *|
433|*                                                                            *|
434|* Automatically generated file, do not edit!                                 *|
435|*                                                                            *|
436\*===----------------------------------------------------------------------===*/
437
438
439#ifdef GET_REGINFO_MC_DESC
440#undef GET_REGINFO_MC_DESC
441
442namespace llvm {
443
444extern const MCPhysReg PPCRegDiffLists[] = {
445  /* 0 */ 0, 0,
446  /* 2 */ 65497, 1, 1, 1, 0,
447  /* 7 */ 3, 0,
448  /* 9 */ 10, 0,
449  /* 11 */ 21, 0,
450  /* 13 */ 316, 65528, 65528, 24, 0,
451  /* 18 */ 32, 0,
452  /* 20 */ 49, 0,
453  /* 22 */ 74, 0,
454  /* 24 */ 32, 160, 0,
455  /* 27 */ 34, 160, 0,
456  /* 30 */ 301, 0,
457  /* 32 */ 64204, 0,
458  /* 34 */ 64233, 0,
459  /* 36 */ 64266, 0,
460  /* 38 */ 64299, 0,
461  /* 40 */ 64611, 0,
462  /* 42 */ 65212, 0,
463  /* 44 */ 65220, 0,
464  /* 46 */ 65228, 0,
465  /* 48 */ 65235, 0,
466  /* 50 */ 65236, 0,
467  /* 52 */ 65332, 0,
468  /* 54 */ 65342, 0,
469  /* 56 */ 65344, 0,
470  /* 58 */ 65363, 0,
471  /* 60 */ 65428, 0,
472  /* 62 */ 65460, 0,
473  /* 64 */ 65474, 0,
474  /* 66 */ 65487, 0,
475  /* 68 */ 65492, 0,
476  /* 70 */ 65502, 0,
477  /* 72 */ 65504, 0,
478  /* 74 */ 65523, 0,
479  /* 76 */ 65524, 0,
480  /* 78 */ 65526, 0,
481  /* 80 */ 65535, 0,
482};
483
484extern const LaneBitmask PPCLaneMaskLists[] = {
485  /* 0 */ LaneBitmask(0x00000000), LaneBitmask::getAll(),
486  /* 2 */ LaneBitmask(0x00000001), LaneBitmask::getAll(),
487  /* 4 */ LaneBitmask(0x00000002), LaneBitmask::getAll(),
488  /* 6 */ LaneBitmask(0x00000010), LaneBitmask(0x00000008), LaneBitmask(0x00000004), LaneBitmask(0x00000020), LaneBitmask::getAll(),
489};
490
491extern const uint16_t PPCSubRegIdxLists[] = {
492  /* 0 */ 1, 0,
493  /* 2 */ 2, 0,
494  /* 4 */ 5, 4, 3, 6, 0,
495};
496
497extern const MCRegisterInfo::SubRegCoveredBits PPCSubRegIdxRanges[] = {
498  { 65535, 65535 },
499  { 0, 32 },	// sub_32
500  { 0, 64 },	// sub_64
501  { 2, 1 },	// sub_eq
502  { 1, 1 },	// sub_gt
503  { 0, 1 },	// sub_lt
504  { 3, 1 },	// sub_un
505};
506
507extern const char PPCRegStrings[] = {
508  /* 0 */ 'Q', 'F', '1', '0', 0,
509  /* 5 */ 'V', 'F', '1', '0', 0,
510  /* 10 */ 'V', 'S', 'L', '1', '0', 0,
511  /* 16 */ 'R', '1', '0', 0,
512  /* 20 */ 'S', '1', '0', 0,
513  /* 24 */ 'V', '1', '0', 0,
514  /* 28 */ 'X', '1', '0', 0,
515  /* 32 */ 'Q', 'F', '2', '0', 0,
516  /* 37 */ 'V', 'F', '2', '0', 0,
517  /* 42 */ 'V', 'S', 'L', '2', '0', 0,
518  /* 48 */ 'R', '2', '0', 0,
519  /* 52 */ 'S', '2', '0', 0,
520  /* 56 */ 'V', '2', '0', 0,
521  /* 60 */ 'X', '2', '0', 0,
522  /* 64 */ 'Q', 'F', '3', '0', 0,
523  /* 69 */ 'V', 'F', '3', '0', 0,
524  /* 74 */ 'V', 'S', 'L', '3', '0', 0,
525  /* 80 */ 'R', '3', '0', 0,
526  /* 84 */ 'S', '3', '0', 0,
527  /* 88 */ 'V', '3', '0', 0,
528  /* 92 */ 'X', '3', '0', 0,
529  /* 96 */ 'V', 'S', 'X', '4', '0', 0,
530  /* 102 */ 'V', 'S', 'X', '5', '0', 0,
531  /* 108 */ 'V', 'S', 'X', '6', '0', 0,
532  /* 114 */ 'Q', 'F', '0', 0,
533  /* 118 */ 'V', 'F', '0', 0,
534  /* 122 */ 'V', 'S', 'L', '0', 0,
535  /* 127 */ 'C', 'R', '0', 0,
536  /* 131 */ 'S', '0', 0,
537  /* 134 */ 'V', '0', 0,
538  /* 137 */ 'X', '0', 0,
539  /* 140 */ 'Q', 'F', '1', '1', 0,
540  /* 145 */ 'V', 'F', '1', '1', 0,
541  /* 150 */ 'V', 'S', 'L', '1', '1', 0,
542  /* 156 */ 'R', '1', '1', 0,
543  /* 160 */ 'S', '1', '1', 0,
544  /* 164 */ 'V', '1', '1', 0,
545  /* 168 */ 'X', '1', '1', 0,
546  /* 172 */ 'Q', 'F', '2', '1', 0,
547  /* 177 */ 'V', 'F', '2', '1', 0,
548  /* 182 */ 'V', 'S', 'L', '2', '1', 0,
549  /* 188 */ 'R', '2', '1', 0,
550  /* 192 */ 'S', '2', '1', 0,
551  /* 196 */ 'V', '2', '1', 0,
552  /* 200 */ 'X', '2', '1', 0,
553  /* 204 */ 'Q', 'F', '3', '1', 0,
554  /* 209 */ 'V', 'F', '3', '1', 0,
555  /* 214 */ 'V', 'S', 'L', '3', '1', 0,
556  /* 220 */ 'R', '3', '1', 0,
557  /* 224 */ 'S', '3', '1', 0,
558  /* 228 */ 'V', '3', '1', 0,
559  /* 232 */ 'X', '3', '1', 0,
560  /* 236 */ 'V', 'S', 'X', '4', '1', 0,
561  /* 242 */ 'V', 'S', 'X', '5', '1', 0,
562  /* 248 */ 'V', 'S', 'X', '6', '1', 0,
563  /* 254 */ 'Q', 'F', '1', 0,
564  /* 258 */ 'V', 'F', '1', 0,
565  /* 262 */ 'V', 'S', 'L', '1', 0,
566  /* 267 */ 'C', 'R', '1', 0,
567  /* 271 */ 'S', '1', 0,
568  /* 274 */ 'V', '1', 0,
569  /* 277 */ 'X', '1', 0,
570  /* 280 */ 'Q', 'F', '1', '2', 0,
571  /* 285 */ 'V', 'F', '1', '2', 0,
572  /* 290 */ 'V', 'S', 'L', '1', '2', 0,
573  /* 296 */ 'R', '1', '2', 0,
574  /* 300 */ 'S', '1', '2', 0,
575  /* 304 */ 'V', '1', '2', 0,
576  /* 308 */ 'X', '1', '2', 0,
577  /* 312 */ 'Q', 'F', '2', '2', 0,
578  /* 317 */ 'V', 'F', '2', '2', 0,
579  /* 322 */ 'V', 'S', 'L', '2', '2', 0,
580  /* 328 */ 'R', '2', '2', 0,
581  /* 332 */ 'S', '2', '2', 0,
582  /* 336 */ 'V', '2', '2', 0,
583  /* 340 */ 'X', '2', '2', 0,
584  /* 344 */ 'V', 'S', 'X', '3', '2', 0,
585  /* 350 */ 'V', 'S', 'X', '4', '2', 0,
586  /* 356 */ 'V', 'S', 'X', '5', '2', 0,
587  /* 362 */ 'V', 'S', 'X', '6', '2', 0,
588  /* 368 */ 'Q', 'F', '2', 0,
589  /* 372 */ 'V', 'F', '2', 0,
590  /* 376 */ 'V', 'S', 'L', '2', 0,
591  /* 381 */ 'C', 'R', '2', 0,
592  /* 385 */ 'S', '2', 0,
593  /* 388 */ 'V', '2', 0,
594  /* 391 */ 'X', '2', 0,
595  /* 394 */ 'Q', 'F', '1', '3', 0,
596  /* 399 */ 'V', 'F', '1', '3', 0,
597  /* 404 */ 'V', 'S', 'L', '1', '3', 0,
598  /* 410 */ 'R', '1', '3', 0,
599  /* 414 */ 'S', '1', '3', 0,
600  /* 418 */ 'V', '1', '3', 0,
601  /* 422 */ 'X', '1', '3', 0,
602  /* 426 */ 'Q', 'F', '2', '3', 0,
603  /* 431 */ 'V', 'F', '2', '3', 0,
604  /* 436 */ 'V', 'S', 'L', '2', '3', 0,
605  /* 442 */ 'R', '2', '3', 0,
606  /* 446 */ 'S', '2', '3', 0,
607  /* 450 */ 'V', '2', '3', 0,
608  /* 454 */ 'X', '2', '3', 0,
609  /* 458 */ 'V', 'S', 'X', '3', '3', 0,
610  /* 464 */ 'V', 'S', 'X', '4', '3', 0,
611  /* 470 */ 'V', 'S', 'X', '5', '3', 0,
612  /* 476 */ 'V', 'S', 'X', '6', '3', 0,
613  /* 482 */ 'Q', 'F', '3', 0,
614  /* 486 */ 'V', 'F', '3', 0,
615  /* 490 */ 'V', 'S', 'L', '3', 0,
616  /* 495 */ 'C', 'R', '3', 0,
617  /* 499 */ 'S', '3', 0,
618  /* 502 */ 'V', '3', 0,
619  /* 505 */ 'X', '3', 0,
620  /* 508 */ 'Q', 'F', '1', '4', 0,
621  /* 513 */ 'V', 'F', '1', '4', 0,
622  /* 518 */ 'V', 'S', 'L', '1', '4', 0,
623  /* 524 */ 'R', '1', '4', 0,
624  /* 528 */ 'S', '1', '4', 0,
625  /* 532 */ 'V', '1', '4', 0,
626  /* 536 */ 'X', '1', '4', 0,
627  /* 540 */ 'Q', 'F', '2', '4', 0,
628  /* 545 */ 'V', 'F', '2', '4', 0,
629  /* 550 */ 'V', 'S', 'L', '2', '4', 0,
630  /* 556 */ 'R', '2', '4', 0,
631  /* 560 */ 'S', '2', '4', 0,
632  /* 564 */ 'V', '2', '4', 0,
633  /* 568 */ 'X', '2', '4', 0,
634  /* 572 */ 'V', 'S', 'X', '3', '4', 0,
635  /* 578 */ 'V', 'S', 'X', '4', '4', 0,
636  /* 584 */ 'V', 'S', 'X', '5', '4', 0,
637  /* 590 */ 'Q', 'F', '4', 0,
638  /* 594 */ 'V', 'F', '4', 0,
639  /* 598 */ 'V', 'S', 'L', '4', 0,
640  /* 603 */ 'C', 'R', '4', 0,
641  /* 607 */ 'S', '4', 0,
642  /* 610 */ 'V', '4', 0,
643  /* 613 */ 'X', '4', 0,
644  /* 616 */ 'Q', 'F', '1', '5', 0,
645  /* 621 */ 'V', 'F', '1', '5', 0,
646  /* 626 */ 'V', 'S', 'L', '1', '5', 0,
647  /* 632 */ 'R', '1', '5', 0,
648  /* 636 */ 'S', '1', '5', 0,
649  /* 640 */ 'V', '1', '5', 0,
650  /* 644 */ 'X', '1', '5', 0,
651  /* 648 */ 'Q', 'F', '2', '5', 0,
652  /* 653 */ 'V', 'F', '2', '5', 0,
653  /* 658 */ 'V', 'S', 'L', '2', '5', 0,
654  /* 664 */ 'R', '2', '5', 0,
655  /* 668 */ 'S', '2', '5', 0,
656  /* 672 */ 'V', '2', '5', 0,
657  /* 676 */ 'X', '2', '5', 0,
658  /* 680 */ 'V', 'S', 'X', '3', '5', 0,
659  /* 686 */ 'V', 'S', 'X', '4', '5', 0,
660  /* 692 */ 'V', 'S', 'X', '5', '5', 0,
661  /* 698 */ 'Q', 'F', '5', 0,
662  /* 702 */ 'V', 'F', '5', 0,
663  /* 706 */ 'V', 'S', 'L', '5', 0,
664  /* 711 */ 'C', 'R', '5', 0,
665  /* 715 */ 'S', '5', 0,
666  /* 718 */ 'V', '5', 0,
667  /* 721 */ 'X', '5', 0,
668  /* 724 */ 'Q', 'F', '1', '6', 0,
669  /* 729 */ 'V', 'F', '1', '6', 0,
670  /* 734 */ 'V', 'S', 'L', '1', '6', 0,
671  /* 740 */ 'R', '1', '6', 0,
672  /* 744 */ 'S', '1', '6', 0,
673  /* 748 */ 'V', '1', '6', 0,
674  /* 752 */ 'X', '1', '6', 0,
675  /* 756 */ 'Q', 'F', '2', '6', 0,
676  /* 761 */ 'V', 'F', '2', '6', 0,
677  /* 766 */ 'V', 'S', 'L', '2', '6', 0,
678  /* 772 */ 'R', '2', '6', 0,
679  /* 776 */ 'S', '2', '6', 0,
680  /* 780 */ 'V', '2', '6', 0,
681  /* 784 */ 'X', '2', '6', 0,
682  /* 788 */ 'V', 'S', 'X', '3', '6', 0,
683  /* 794 */ 'V', 'S', 'X', '4', '6', 0,
684  /* 800 */ 'V', 'S', 'X', '5', '6', 0,
685  /* 806 */ 'Q', 'F', '6', 0,
686  /* 810 */ 'V', 'F', '6', 0,
687  /* 814 */ 'V', 'S', 'L', '6', 0,
688  /* 819 */ 'C', 'R', '6', 0,
689  /* 823 */ 'S', '6', 0,
690  /* 826 */ 'V', '6', 0,
691  /* 829 */ 'X', '6', 0,
692  /* 832 */ 'Q', 'F', '1', '7', 0,
693  /* 837 */ 'V', 'F', '1', '7', 0,
694  /* 842 */ 'V', 'S', 'L', '1', '7', 0,
695  /* 848 */ 'R', '1', '7', 0,
696  /* 852 */ 'S', '1', '7', 0,
697  /* 856 */ 'V', '1', '7', 0,
698  /* 860 */ 'X', '1', '7', 0,
699  /* 864 */ 'Q', 'F', '2', '7', 0,
700  /* 869 */ 'V', 'F', '2', '7', 0,
701  /* 874 */ 'V', 'S', 'L', '2', '7', 0,
702  /* 880 */ 'R', '2', '7', 0,
703  /* 884 */ 'S', '2', '7', 0,
704  /* 888 */ 'V', '2', '7', 0,
705  /* 892 */ 'X', '2', '7', 0,
706  /* 896 */ 'V', 'S', 'X', '3', '7', 0,
707  /* 902 */ 'V', 'S', 'X', '4', '7', 0,
708  /* 908 */ 'V', 'S', 'X', '5', '7', 0,
709  /* 914 */ 'Q', 'F', '7', 0,
710  /* 918 */ 'V', 'F', '7', 0,
711  /* 922 */ 'V', 'S', 'L', '7', 0,
712  /* 927 */ 'C', 'R', '7', 0,
713  /* 931 */ 'S', '7', 0,
714  /* 934 */ 'V', '7', 0,
715  /* 937 */ 'X', '7', 0,
716  /* 940 */ 'Q', 'F', '1', '8', 0,
717  /* 945 */ 'V', 'F', '1', '8', 0,
718  /* 950 */ 'V', 'S', 'L', '1', '8', 0,
719  /* 956 */ 'R', '1', '8', 0,
720  /* 960 */ 'S', '1', '8', 0,
721  /* 964 */ 'V', '1', '8', 0,
722  /* 968 */ 'X', '1', '8', 0,
723  /* 972 */ 'Q', 'F', '2', '8', 0,
724  /* 977 */ 'V', 'F', '2', '8', 0,
725  /* 982 */ 'V', 'S', 'L', '2', '8', 0,
726  /* 988 */ 'R', '2', '8', 0,
727  /* 992 */ 'S', '2', '8', 0,
728  /* 996 */ 'V', '2', '8', 0,
729  /* 1000 */ 'X', '2', '8', 0,
730  /* 1004 */ 'V', 'S', 'X', '3', '8', 0,
731  /* 1010 */ 'V', 'S', 'X', '4', '8', 0,
732  /* 1016 */ 'V', 'S', 'X', '5', '8', 0,
733  /* 1022 */ 'Q', 'F', '8', 0,
734  /* 1026 */ 'V', 'F', '8', 0,
735  /* 1030 */ 'V', 'S', 'L', '8', 0,
736  /* 1035 */ 'Z', 'E', 'R', 'O', '8', 0,
737  /* 1041 */ 'B', 'P', '8', 0,
738  /* 1045 */ 'F', 'P', '8', 0,
739  /* 1049 */ 'L', 'R', '8', 0,
740  /* 1053 */ 'C', 'T', 'R', '8', 0,
741  /* 1058 */ 'S', '8', 0,
742  /* 1061 */ 'V', '8', 0,
743  /* 1064 */ 'X', '8', 0,
744  /* 1067 */ 'Q', 'F', '1', '9', 0,
745  /* 1072 */ 'V', 'F', '1', '9', 0,
746  /* 1077 */ 'V', 'S', 'L', '1', '9', 0,
747  /* 1083 */ 'R', '1', '9', 0,
748  /* 1087 */ 'S', '1', '9', 0,
749  /* 1091 */ 'V', '1', '9', 0,
750  /* 1095 */ 'X', '1', '9', 0,
751  /* 1099 */ 'Q', 'F', '2', '9', 0,
752  /* 1104 */ 'V', 'F', '2', '9', 0,
753  /* 1109 */ 'V', 'S', 'L', '2', '9', 0,
754  /* 1115 */ 'R', '2', '9', 0,
755  /* 1119 */ 'S', '2', '9', 0,
756  /* 1123 */ 'V', '2', '9', 0,
757  /* 1127 */ 'X', '2', '9', 0,
758  /* 1131 */ 'V', 'S', 'X', '3', '9', 0,
759  /* 1137 */ 'V', 'S', 'X', '4', '9', 0,
760  /* 1143 */ 'V', 'S', 'X', '5', '9', 0,
761  /* 1149 */ 'Q', 'F', '9', 0,
762  /* 1153 */ 'V', 'F', '9', 0,
763  /* 1157 */ 'V', 'S', 'L', '9', 0,
764  /* 1162 */ 'R', '9', 0,
765  /* 1165 */ 'S', '9', 0,
766  /* 1168 */ 'V', '9', 0,
767  /* 1171 */ 'X', '9', 0,
768  /* 1174 */ 'V', 'R', 'S', 'A', 'V', 'E', 0,
769  /* 1181 */ 'R', 'M', 0,
770  /* 1184 */ 'C', 'R', '0', 'U', 'N', 0,
771  /* 1190 */ 'C', 'R', '1', 'U', 'N', 0,
772  /* 1196 */ 'C', 'R', '2', 'U', 'N', 0,
773  /* 1202 */ 'C', 'R', '3', 'U', 'N', 0,
774  /* 1208 */ 'C', 'R', '4', 'U', 'N', 0,
775  /* 1214 */ 'C', 'R', '5', 'U', 'N', 0,
776  /* 1220 */ 'C', 'R', '6', 'U', 'N', 0,
777  /* 1226 */ 'C', 'R', '7', 'U', 'N', 0,
778  /* 1232 */ 'Z', 'E', 'R', 'O', 0,
779  /* 1237 */ 'B', 'P', 0,
780  /* 1240 */ 'F', 'P', 0,
781  /* 1243 */ 'C', 'R', '0', 'E', 'Q', 0,
782  /* 1249 */ 'C', 'R', '1', 'E', 'Q', 0,
783  /* 1255 */ 'C', 'R', '2', 'E', 'Q', 0,
784  /* 1261 */ 'C', 'R', '3', 'E', 'Q', 0,
785  /* 1267 */ 'C', 'R', '4', 'E', 'Q', 0,
786  /* 1273 */ 'C', 'R', '5', 'E', 'Q', 0,
787  /* 1279 */ 'C', 'R', '6', 'E', 'Q', 0,
788  /* 1285 */ 'C', 'R', '7', 'E', 'Q', 0,
789  /* 1291 */ 'S', 'P', 'E', 'F', 'S', 'C', 'R', 0,
790  /* 1299 */ 'X', 'E', 'R', 0,
791  /* 1303 */ 'L', 'R', 0,
792  /* 1306 */ 'C', 'T', 'R', 0,
793  /* 1310 */ 'C', 'R', '0', 'G', 'T', 0,
794  /* 1316 */ 'C', 'R', '1', 'G', 'T', 0,
795  /* 1322 */ 'C', 'R', '2', 'G', 'T', 0,
796  /* 1328 */ 'C', 'R', '3', 'G', 'T', 0,
797  /* 1334 */ 'C', 'R', '4', 'G', 'T', 0,
798  /* 1340 */ 'C', 'R', '5', 'G', 'T', 0,
799  /* 1346 */ 'C', 'R', '6', 'G', 'T', 0,
800  /* 1352 */ 'C', 'R', '7', 'G', 'T', 0,
801  /* 1358 */ 'C', 'R', '0', 'L', 'T', 0,
802  /* 1364 */ 'C', 'R', '1', 'L', 'T', 0,
803  /* 1370 */ 'C', 'R', '2', 'L', 'T', 0,
804  /* 1376 */ 'C', 'R', '3', 'L', 'T', 0,
805  /* 1382 */ 'C', 'R', '4', 'L', 'T', 0,
806  /* 1388 */ 'C', 'R', '5', 'L', 'T', 0,
807  /* 1394 */ 'C', 'R', '6', 'L', 'T', 0,
808  /* 1400 */ 'C', 'R', '7', 'L', 'T', 0,
809  /* 1406 */ 'C', 'A', 'R', 'R', 'Y', 0,
810};
811
812extern const MCRegisterDesc PPCRegDesc[] = { // Descriptors
813  { 4, 0, 0, 0, 0, 0 },
814  { 1237, 1, 9, 1, 1281, 0 },
815  { 1406, 1, 1, 1, 1281, 0 },
816  { 1306, 1, 1, 1, 1281, 0 },
817  { 1240, 1, 20, 1, 1281, 0 },
818  { 1303, 1, 1, 1, 1281, 0 },
819  { 1181, 1, 1, 1, 1281, 0 },
820  { 1291, 1, 1, 1, 1281, 0 },
821  { 1174, 1, 1, 1, 1281, 0 },
822  { 1299, 1, 1, 1, 1031, 0 },
823  { 1232, 1, 30, 1, 1031, 0 },
824  { 1041, 78, 1, 0, 0, 2 },
825  { 127, 13, 1, 4, 36, 6 },
826  { 267, 13, 1, 4, 36, 6 },
827  { 381, 13, 1, 4, 36, 6 },
828  { 495, 13, 1, 4, 36, 6 },
829  { 603, 13, 1, 4, 36, 6 },
830  { 711, 13, 1, 4, 36, 6 },
831  { 819, 13, 1, 4, 36, 6 },
832  { 927, 13, 1, 4, 36, 6 },
833  { 1053, 1, 1, 1, 177, 0 },
834  { 115, 1, 27, 1, 177, 0 },
835  { 255, 1, 27, 1, 177, 0 },
836  { 369, 1, 27, 1, 177, 0 },
837  { 483, 1, 27, 1, 177, 0 },
838  { 591, 1, 27, 1, 177, 0 },
839  { 699, 1, 27, 1, 177, 0 },
840  { 807, 1, 27, 1, 177, 0 },
841  { 915, 1, 27, 1, 177, 0 },
842  { 1023, 1, 27, 1, 177, 0 },
843  { 1150, 1, 27, 1, 177, 0 },
844  { 1, 1, 27, 1, 177, 0 },
845  { 141, 1, 27, 1, 177, 0 },
846  { 281, 1, 27, 1, 177, 0 },
847  { 395, 1, 27, 1, 177, 0 },
848  { 509, 1, 27, 1, 177, 0 },
849  { 617, 1, 27, 1, 177, 0 },
850  { 725, 1, 27, 1, 177, 0 },
851  { 833, 1, 27, 1, 177, 0 },
852  { 941, 1, 27, 1, 177, 0 },
853  { 1068, 1, 27, 1, 177, 0 },
854  { 33, 1, 27, 1, 177, 0 },
855  { 173, 1, 27, 1, 177, 0 },
856  { 313, 1, 27, 1, 177, 0 },
857  { 427, 1, 27, 1, 177, 0 },
858  { 541, 1, 27, 1, 177, 0 },
859  { 649, 1, 27, 1, 177, 0 },
860  { 757, 1, 27, 1, 177, 0 },
861  { 865, 1, 27, 1, 177, 0 },
862  { 973, 1, 27, 1, 177, 0 },
863  { 1100, 1, 27, 1, 177, 0 },
864  { 65, 1, 27, 1, 177, 0 },
865  { 205, 1, 27, 1, 177, 0 },
866  { 1045, 66, 1, 0, 112, 2 },
867  { 1049, 1, 1, 1, 352, 0 },
868  { 114, 70, 1, 2, 1185, 4 },
869  { 254, 70, 1, 2, 1185, 4 },
870  { 368, 70, 1, 2, 1185, 4 },
871  { 482, 70, 1, 2, 1185, 4 },
872  { 590, 70, 1, 2, 1185, 4 },
873  { 698, 70, 1, 2, 1185, 4 },
874  { 806, 70, 1, 2, 1185, 4 },
875  { 914, 70, 1, 2, 1185, 4 },
876  { 1022, 70, 1, 2, 1185, 4 },
877  { 1149, 70, 1, 2, 1185, 4 },
878  { 0, 70, 1, 2, 1185, 4 },
879  { 140, 70, 1, 2, 1185, 4 },
880  { 280, 70, 1, 2, 1185, 4 },
881  { 394, 70, 1, 2, 1185, 4 },
882  { 508, 70, 1, 2, 1185, 4 },
883  { 616, 70, 1, 2, 1185, 4 },
884  { 724, 70, 1, 2, 1185, 4 },
885  { 832, 70, 1, 2, 1185, 4 },
886  { 940, 70, 1, 2, 1185, 4 },
887  { 1067, 70, 1, 2, 1185, 4 },
888  { 32, 70, 1, 2, 1185, 4 },
889  { 172, 70, 1, 2, 1185, 4 },
890  { 312, 70, 1, 2, 1185, 4 },
891  { 426, 70, 1, 2, 1185, 4 },
892  { 540, 70, 1, 2, 1185, 4 },
893  { 648, 70, 1, 2, 1185, 4 },
894  { 756, 70, 1, 2, 1185, 4 },
895  { 864, 70, 1, 2, 1185, 4 },
896  { 972, 70, 1, 2, 1185, 4 },
897  { 1099, 70, 1, 2, 1185, 4 },
898  { 64, 70, 1, 2, 1185, 4 },
899  { 204, 70, 1, 2, 1185, 4 },
900  { 128, 1, 24, 1, 1217, 0 },
901  { 268, 1, 24, 1, 1217, 0 },
902  { 382, 1, 24, 1, 1217, 0 },
903  { 496, 1, 24, 1, 1217, 0 },
904  { 604, 1, 24, 1, 1217, 0 },
905  { 712, 1, 24, 1, 1217, 0 },
906  { 820, 1, 24, 1, 1217, 0 },
907  { 928, 1, 24, 1, 1217, 0 },
908  { 1050, 1, 24, 1, 1217, 0 },
909  { 1162, 1, 24, 1, 1217, 0 },
910  { 16, 1, 24, 1, 1217, 0 },
911  { 156, 1, 24, 1, 1217, 0 },
912  { 296, 1, 24, 1, 1217, 0 },
913  { 410, 1, 24, 1, 1217, 0 },
914  { 524, 1, 24, 1, 1217, 0 },
915  { 632, 1, 24, 1, 1217, 0 },
916  { 740, 1, 24, 1, 1217, 0 },
917  { 848, 1, 24, 1, 1217, 0 },
918  { 956, 1, 24, 1, 1217, 0 },
919  { 1083, 1, 24, 1, 1217, 0 },
920  { 48, 1, 24, 1, 1217, 0 },
921  { 188, 1, 24, 1, 1217, 0 },
922  { 328, 1, 24, 1, 1217, 0 },
923  { 442, 1, 24, 1, 1217, 0 },
924  { 556, 1, 24, 1, 1217, 0 },
925  { 664, 1, 24, 1, 1217, 0 },
926  { 772, 1, 24, 1, 1217, 0 },
927  { 880, 1, 24, 1, 1217, 0 },
928  { 988, 1, 24, 1, 1217, 0 },
929  { 1115, 1, 24, 1, 1217, 0 },
930  { 80, 1, 24, 1, 1217, 0 },
931  { 220, 1, 24, 1, 1217, 0 },
932  { 131, 72, 1, 0, 1089, 2 },
933  { 271, 72, 1, 0, 1089, 2 },
934  { 385, 72, 1, 0, 1089, 2 },
935  { 499, 72, 1, 0, 1089, 2 },
936  { 607, 72, 1, 0, 1089, 2 },
937  { 715, 72, 1, 0, 1089, 2 },
938  { 823, 72, 1, 0, 1089, 2 },
939  { 931, 72, 1, 0, 1089, 2 },
940  { 1058, 72, 1, 0, 1089, 2 },
941  { 1165, 72, 1, 0, 1089, 2 },
942  { 20, 72, 1, 0, 1089, 2 },
943  { 160, 72, 1, 0, 1089, 2 },
944  { 300, 72, 1, 0, 1089, 2 },
945  { 414, 72, 1, 0, 1089, 2 },
946  { 528, 72, 1, 0, 1089, 2 },
947  { 636, 72, 1, 0, 1089, 2 },
948  { 744, 72, 1, 0, 1089, 2 },
949  { 852, 72, 1, 0, 1089, 2 },
950  { 960, 72, 1, 0, 1089, 2 },
951  { 1087, 72, 1, 0, 1089, 2 },
952  { 52, 72, 1, 0, 1089, 2 },
953  { 192, 72, 1, 0, 1089, 2 },
954  { 332, 72, 1, 0, 1089, 2 },
955  { 446, 72, 1, 0, 1089, 2 },
956  { 560, 72, 1, 0, 1089, 2 },
957  { 668, 72, 1, 0, 1089, 2 },
958  { 776, 72, 1, 0, 1089, 2 },
959  { 884, 72, 1, 0, 1089, 2 },
960  { 992, 72, 1, 0, 1089, 2 },
961  { 1119, 72, 1, 0, 1089, 2 },
962  { 84, 72, 1, 0, 1089, 2 },
963  { 224, 72, 1, 0, 1089, 2 },
964  { 134, 18, 1, 2, 1089, 4 },
965  { 274, 18, 1, 2, 1089, 4 },
966  { 388, 18, 1, 2, 1089, 4 },
967  { 502, 18, 1, 2, 1089, 4 },
968  { 610, 18, 1, 2, 1089, 4 },
969  { 718, 18, 1, 2, 1089, 4 },
970  { 826, 18, 1, 2, 1089, 4 },
971  { 934, 18, 1, 2, 1089, 4 },
972  { 1061, 18, 1, 2, 1089, 4 },
973  { 1168, 18, 1, 2, 1089, 4 },
974  { 24, 18, 1, 2, 1089, 4 },
975  { 164, 18, 1, 2, 1089, 4 },
976  { 304, 18, 1, 2, 1089, 4 },
977  { 418, 18, 1, 2, 1089, 4 },
978  { 532, 18, 1, 2, 1089, 4 },
979  { 640, 18, 1, 2, 1089, 4 },
980  { 748, 18, 1, 2, 1089, 4 },
981  { 856, 18, 1, 2, 1089, 4 },
982  { 964, 18, 1, 2, 1089, 4 },
983  { 1091, 18, 1, 2, 1089, 4 },
984  { 56, 18, 1, 2, 1089, 4 },
985  { 196, 18, 1, 2, 1089, 4 },
986  { 336, 18, 1, 2, 1089, 4 },
987  { 450, 18, 1, 2, 1089, 4 },
988  { 564, 18, 1, 2, 1089, 4 },
989  { 672, 18, 1, 2, 1089, 4 },
990  { 780, 18, 1, 2, 1089, 4 },
991  { 888, 18, 1, 2, 1089, 4 },
992  { 996, 18, 1, 2, 1089, 4 },
993  { 1123, 18, 1, 2, 1089, 4 },
994  { 88, 18, 1, 2, 1089, 4 },
995  { 228, 18, 1, 2, 1089, 4 },
996  { 118, 1, 72, 1, 993, 0 },
997  { 258, 1, 72, 1, 993, 0 },
998  { 372, 1, 72, 1, 993, 0 },
999  { 486, 1, 72, 1, 993, 0 },
1000  { 594, 1, 72, 1, 993, 0 },
1001  { 702, 1, 72, 1, 993, 0 },
1002  { 810, 1, 72, 1, 993, 0 },
1003  { 918, 1, 72, 1, 993, 0 },
1004  { 1026, 1, 72, 1, 993, 0 },
1005  { 1153, 1, 72, 1, 993, 0 },
1006  { 5, 1, 72, 1, 993, 0 },
1007  { 145, 1, 72, 1, 993, 0 },
1008  { 285, 1, 72, 1, 993, 0 },
1009  { 399, 1, 72, 1, 993, 0 },
1010  { 513, 1, 72, 1, 993, 0 },
1011  { 621, 1, 72, 1, 993, 0 },
1012  { 729, 1, 72, 1, 993, 0 },
1013  { 837, 1, 72, 1, 993, 0 },
1014  { 945, 1, 72, 1, 993, 0 },
1015  { 1072, 1, 72, 1, 993, 0 },
1016  { 37, 1, 72, 1, 993, 0 },
1017  { 177, 1, 72, 1, 993, 0 },
1018  { 317, 1, 72, 1, 993, 0 },
1019  { 431, 1, 72, 1, 993, 0 },
1020  { 545, 1, 72, 1, 993, 0 },
1021  { 653, 1, 72, 1, 993, 0 },
1022  { 761, 1, 72, 1, 993, 0 },
1023  { 869, 1, 72, 1, 993, 0 },
1024  { 977, 1, 72, 1, 993, 0 },
1025  { 1104, 1, 72, 1, 993, 0 },
1026  { 69, 1, 72, 1, 993, 0 },
1027  { 209, 1, 72, 1, 993, 0 },
1028  { 122, 54, 1, 2, 929, 4 },
1029  { 262, 54, 1, 2, 929, 4 },
1030  { 376, 54, 1, 2, 929, 4 },
1031  { 490, 54, 1, 2, 929, 4 },
1032  { 598, 54, 1, 2, 929, 4 },
1033  { 706, 54, 1, 2, 929, 4 },
1034  { 814, 54, 1, 2, 929, 4 },
1035  { 922, 54, 1, 2, 929, 4 },
1036  { 1030, 54, 1, 2, 929, 4 },
1037  { 1157, 54, 1, 2, 929, 4 },
1038  { 10, 54, 1, 2, 929, 4 },
1039  { 150, 54, 1, 2, 929, 4 },
1040  { 290, 54, 1, 2, 929, 4 },
1041  { 404, 54, 1, 2, 929, 4 },
1042  { 518, 54, 1, 2, 929, 4 },
1043  { 626, 54, 1, 2, 929, 4 },
1044  { 734, 54, 1, 2, 929, 4 },
1045  { 842, 54, 1, 2, 929, 4 },
1046  { 950, 54, 1, 2, 929, 4 },
1047  { 1077, 54, 1, 2, 929, 4 },
1048  { 42, 54, 1, 2, 929, 4 },
1049  { 182, 54, 1, 2, 929, 4 },
1050  { 322, 54, 1, 2, 929, 4 },
1051  { 436, 54, 1, 2, 929, 4 },
1052  { 550, 54, 1, 2, 929, 4 },
1053  { 658, 54, 1, 2, 929, 4 },
1054  { 766, 54, 1, 2, 929, 4 },
1055  { 874, 54, 1, 2, 929, 4 },
1056  { 982, 54, 1, 2, 929, 4 },
1057  { 1109, 54, 1, 2, 929, 4 },
1058  { 74, 54, 1, 2, 929, 4 },
1059  { 214, 54, 1, 2, 929, 4 },
1060  { 344, 1, 1, 1, 961, 0 },
1061  { 458, 1, 1, 1, 961, 0 },
1062  { 572, 1, 1, 1, 961, 0 },
1063  { 680, 1, 1, 1, 961, 0 },
1064  { 788, 1, 1, 1, 961, 0 },
1065  { 896, 1, 1, 1, 961, 0 },
1066  { 1004, 1, 1, 1, 961, 0 },
1067  { 1131, 1, 1, 1, 961, 0 },
1068  { 96, 1, 1, 1, 961, 0 },
1069  { 236, 1, 1, 1, 961, 0 },
1070  { 350, 1, 1, 1, 961, 0 },
1071  { 464, 1, 1, 1, 961, 0 },
1072  { 578, 1, 1, 1, 961, 0 },
1073  { 686, 1, 1, 1, 961, 0 },
1074  { 794, 1, 1, 1, 961, 0 },
1075  { 902, 1, 1, 1, 961, 0 },
1076  { 1010, 1, 1, 1, 961, 0 },
1077  { 1137, 1, 1, 1, 961, 0 },
1078  { 102, 1, 1, 1, 961, 0 },
1079  { 242, 1, 1, 1, 961, 0 },
1080  { 356, 1, 1, 1, 961, 0 },
1081  { 470, 1, 1, 1, 961, 0 },
1082  { 584, 1, 1, 1, 961, 0 },
1083  { 692, 1, 1, 1, 961, 0 },
1084  { 800, 1, 1, 1, 961, 0 },
1085  { 908, 1, 1, 1, 961, 0 },
1086  { 1016, 1, 1, 1, 961, 0 },
1087  { 1143, 1, 1, 1, 961, 0 },
1088  { 108, 1, 1, 1, 961, 0 },
1089  { 248, 1, 1, 1, 961, 0 },
1090  { 362, 1, 1, 1, 961, 0 },
1091  { 476, 1, 1, 1, 961, 0 },
1092  { 137, 56, 1, 0, 833, 2 },
1093  { 277, 56, 1, 0, 833, 2 },
1094  { 391, 56, 1, 0, 833, 2 },
1095  { 505, 56, 1, 0, 833, 2 },
1096  { 613, 56, 1, 0, 833, 2 },
1097  { 721, 56, 1, 0, 833, 2 },
1098  { 829, 56, 1, 0, 833, 2 },
1099  { 937, 56, 1, 0, 833, 2 },
1100  { 1064, 56, 1, 0, 833, 2 },
1101  { 1171, 56, 1, 0, 833, 2 },
1102  { 28, 56, 1, 0, 833, 2 },
1103  { 168, 56, 1, 0, 833, 2 },
1104  { 308, 56, 1, 0, 833, 2 },
1105  { 422, 56, 1, 0, 833, 2 },
1106  { 536, 56, 1, 0, 833, 2 },
1107  { 644, 56, 1, 0, 833, 2 },
1108  { 752, 56, 1, 0, 833, 2 },
1109  { 860, 56, 1, 0, 833, 2 },
1110  { 968, 56, 1, 0, 833, 2 },
1111  { 1095, 56, 1, 0, 833, 2 },
1112  { 60, 56, 1, 0, 833, 2 },
1113  { 200, 56, 1, 0, 833, 2 },
1114  { 340, 56, 1, 0, 833, 2 },
1115  { 454, 56, 1, 0, 833, 2 },
1116  { 568, 56, 1, 0, 833, 2 },
1117  { 676, 56, 1, 0, 833, 2 },
1118  { 784, 56, 1, 0, 833, 2 },
1119  { 892, 56, 1, 0, 833, 2 },
1120  { 1000, 56, 1, 0, 833, 2 },
1121  { 1127, 56, 1, 0, 833, 2 },
1122  { 92, 56, 1, 0, 833, 2 },
1123  { 232, 56, 1, 0, 833, 2 },
1124  { 1035, 48, 1, 0, 643, 2 },
1125  { 1243, 1, 50, 1, 643, 0 },
1126  { 1249, 1, 50, 1, 612, 0 },
1127  { 1255, 1, 50, 1, 612, 0 },
1128  { 1261, 1, 50, 1, 612, 0 },
1129  { 1267, 1, 50, 1, 612, 0 },
1130  { 1273, 1, 50, 1, 612, 0 },
1131  { 1279, 1, 50, 1, 612, 0 },
1132  { 1285, 1, 50, 1, 612, 0 },
1133  { 1310, 1, 46, 1, 580, 0 },
1134  { 1316, 1, 46, 1, 580, 0 },
1135  { 1322, 1, 46, 1, 580, 0 },
1136  { 1328, 1, 46, 1, 580, 0 },
1137  { 1334, 1, 46, 1, 580, 0 },
1138  { 1340, 1, 46, 1, 580, 0 },
1139  { 1346, 1, 46, 1, 580, 0 },
1140  { 1352, 1, 46, 1, 580, 0 },
1141  { 1358, 1, 44, 1, 548, 0 },
1142  { 1364, 1, 44, 1, 548, 0 },
1143  { 1370, 1, 44, 1, 548, 0 },
1144  { 1376, 1, 44, 1, 548, 0 },
1145  { 1382, 1, 44, 1, 548, 0 },
1146  { 1388, 1, 44, 1, 548, 0 },
1147  { 1394, 1, 44, 1, 548, 0 },
1148  { 1400, 1, 44, 1, 548, 0 },
1149  { 1184, 1, 42, 1, 516, 0 },
1150  { 1190, 1, 42, 1, 516, 0 },
1151  { 1196, 1, 42, 1, 516, 0 },
1152  { 1202, 1, 42, 1, 516, 0 },
1153  { 1208, 1, 42, 1, 516, 0 },
1154  { 1214, 1, 42, 1, 516, 0 },
1155  { 1220, 1, 42, 1, 516, 0 },
1156  { 1226, 1, 42, 1, 516, 0 },
1157};
1158
1159extern const MCPhysReg PPCRegUnitRoots[][2] = {
1160  { PPC::BP },
1161  { PPC::CARRY, PPC::XER },
1162  { PPC::CTR },
1163  { PPC::FP },
1164  { PPC::LR },
1165  { PPC::RM },
1166  { PPC::SPEFSCR },
1167  { PPC::VRSAVE },
1168  { PPC::ZERO },
1169  { PPC::CR0LT },
1170  { PPC::CR0GT },
1171  { PPC::CR0EQ },
1172  { PPC::CR0UN },
1173  { PPC::CR1LT },
1174  { PPC::CR1GT },
1175  { PPC::CR1EQ },
1176  { PPC::CR1UN },
1177  { PPC::CR2LT },
1178  { PPC::CR2GT },
1179  { PPC::CR2EQ },
1180  { PPC::CR2UN },
1181  { PPC::CR3LT },
1182  { PPC::CR3GT },
1183  { PPC::CR3EQ },
1184  { PPC::CR3UN },
1185  { PPC::CR4LT },
1186  { PPC::CR4GT },
1187  { PPC::CR4EQ },
1188  { PPC::CR4UN },
1189  { PPC::CR5LT },
1190  { PPC::CR5GT },
1191  { PPC::CR5EQ },
1192  { PPC::CR5UN },
1193  { PPC::CR6LT },
1194  { PPC::CR6GT },
1195  { PPC::CR6EQ },
1196  { PPC::CR6UN },
1197  { PPC::CR7LT },
1198  { PPC::CR7GT },
1199  { PPC::CR7EQ },
1200  { PPC::CR7UN },
1201  { PPC::CTR8 },
1202  { PPC::F0 },
1203  { PPC::F1 },
1204  { PPC::F2 },
1205  { PPC::F3 },
1206  { PPC::F4 },
1207  { PPC::F5 },
1208  { PPC::F6 },
1209  { PPC::F7 },
1210  { PPC::F8 },
1211  { PPC::F9 },
1212  { PPC::F10 },
1213  { PPC::F11 },
1214  { PPC::F12 },
1215  { PPC::F13 },
1216  { PPC::F14 },
1217  { PPC::F15 },
1218  { PPC::F16 },
1219  { PPC::F17 },
1220  { PPC::F18 },
1221  { PPC::F19 },
1222  { PPC::F20 },
1223  { PPC::F21 },
1224  { PPC::F22 },
1225  { PPC::F23 },
1226  { PPC::F24 },
1227  { PPC::F25 },
1228  { PPC::F26 },
1229  { PPC::F27 },
1230  { PPC::F28 },
1231  { PPC::F29 },
1232  { PPC::F30 },
1233  { PPC::F31 },
1234  { PPC::LR8 },
1235  { PPC::R0 },
1236  { PPC::R1 },
1237  { PPC::R2 },
1238  { PPC::R3 },
1239  { PPC::R4 },
1240  { PPC::R5 },
1241  { PPC::R6 },
1242  { PPC::R7 },
1243  { PPC::R8 },
1244  { PPC::R9 },
1245  { PPC::R10 },
1246  { PPC::R11 },
1247  { PPC::R12 },
1248  { PPC::R13 },
1249  { PPC::R14 },
1250  { PPC::R15 },
1251  { PPC::R16 },
1252  { PPC::R17 },
1253  { PPC::R18 },
1254  { PPC::R19 },
1255  { PPC::R20 },
1256  { PPC::R21 },
1257  { PPC::R22 },
1258  { PPC::R23 },
1259  { PPC::R24 },
1260  { PPC::R25 },
1261  { PPC::R26 },
1262  { PPC::R27 },
1263  { PPC::R28 },
1264  { PPC::R29 },
1265  { PPC::R30 },
1266  { PPC::R31 },
1267  { PPC::VF0 },
1268  { PPC::VF1 },
1269  { PPC::VF2 },
1270  { PPC::VF3 },
1271  { PPC::VF4 },
1272  { PPC::VF5 },
1273  { PPC::VF6 },
1274  { PPC::VF7 },
1275  { PPC::VF8 },
1276  { PPC::VF9 },
1277  { PPC::VF10 },
1278  { PPC::VF11 },
1279  { PPC::VF12 },
1280  { PPC::VF13 },
1281  { PPC::VF14 },
1282  { PPC::VF15 },
1283  { PPC::VF16 },
1284  { PPC::VF17 },
1285  { PPC::VF18 },
1286  { PPC::VF19 },
1287  { PPC::VF20 },
1288  { PPC::VF21 },
1289  { PPC::VF22 },
1290  { PPC::VF23 },
1291  { PPC::VF24 },
1292  { PPC::VF25 },
1293  { PPC::VF26 },
1294  { PPC::VF27 },
1295  { PPC::VF28 },
1296  { PPC::VF29 },
1297  { PPC::VF30 },
1298  { PPC::VF31 },
1299  { PPC::VSX32 },
1300  { PPC::VSX33 },
1301  { PPC::VSX34 },
1302  { PPC::VSX35 },
1303  { PPC::VSX36 },
1304  { PPC::VSX37 },
1305  { PPC::VSX38 },
1306  { PPC::VSX39 },
1307  { PPC::VSX40 },
1308  { PPC::VSX41 },
1309  { PPC::VSX42 },
1310  { PPC::VSX43 },
1311  { PPC::VSX44 },
1312  { PPC::VSX45 },
1313  { PPC::VSX46 },
1314  { PPC::VSX47 },
1315  { PPC::VSX48 },
1316  { PPC::VSX49 },
1317  { PPC::VSX50 },
1318  { PPC::VSX51 },
1319  { PPC::VSX52 },
1320  { PPC::VSX53 },
1321  { PPC::VSX54 },
1322  { PPC::VSX55 },
1323  { PPC::VSX56 },
1324  { PPC::VSX57 },
1325  { PPC::VSX58 },
1326  { PPC::VSX59 },
1327  { PPC::VSX60 },
1328  { PPC::VSX61 },
1329  { PPC::VSX62 },
1330  { PPC::VSX63 },
1331};
1332
1333namespace {     // Register classes...
1334  // VSSRC Register Class...
1335  const MCPhysReg VSSRC[] = {
1336    PPC::F0, PPC::F1, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::F31, PPC::F30, PPC::F29, PPC::F28, PPC::F27, PPC::F26, PPC::F25, PPC::F24, PPC::F23, PPC::F22, PPC::F21, PPC::F20, PPC::F19, PPC::F18, PPC::F17, PPC::F16, PPC::F15, PPC::F14, PPC::VF2, PPC::VF3, PPC::VF4, PPC::VF5, PPC::VF0, PPC::VF1, PPC::VF6, PPC::VF7, PPC::VF8, PPC::VF9, PPC::VF10, PPC::VF11, PPC::VF12, PPC::VF13, PPC::VF14, PPC::VF15, PPC::VF16, PPC::VF17, PPC::VF18, PPC::VF19, PPC::VF31, PPC::VF30, PPC::VF29, PPC::VF28, PPC::VF27, PPC::VF26, PPC::VF25, PPC::VF24, PPC::VF23, PPC::VF22, PPC::VF21, PPC::VF20,
1337  };
1338
1339  // VSSRC Bit set.
1340  const uint8_t VSSRCBits[] = {
1341    0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f,
1342  };
1343
1344  // GPRC Register Class...
1345  const MCPhysReg GPRC[] = {
1346    PPC::R2, PPC::R3, PPC::R4, PPC::R5, PPC::R6, PPC::R7, PPC::R8, PPC::R9, PPC::R10, PPC::R11, PPC::R12, PPC::R30, PPC::R29, PPC::R28, PPC::R27, PPC::R26, PPC::R25, PPC::R24, PPC::R23, PPC::R22, PPC::R21, PPC::R20, PPC::R19, PPC::R18, PPC::R17, PPC::R16, PPC::R15, PPC::R14, PPC::R13, PPC::R31, PPC::R0, PPC::R1, PPC::FP, PPC::BP,
1347  };
1348
1349  // GPRC Bit set.
1350  const uint8_t GPRCBits[] = {
1351    0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f,
1352  };
1353
1354  // GPRC_NOR0 Register Class...
1355  const MCPhysReg GPRC_NOR0[] = {
1356    PPC::R2, PPC::R3, PPC::R4, PPC::R5, PPC::R6, PPC::R7, PPC::R8, PPC::R9, PPC::R10, PPC::R11, PPC::R12, PPC::R30, PPC::R29, PPC::R28, PPC::R27, PPC::R26, PPC::R25, PPC::R24, PPC::R23, PPC::R22, PPC::R21, PPC::R20, PPC::R19, PPC::R18, PPC::R17, PPC::R16, PPC::R15, PPC::R14, PPC::R13, PPC::R31, PPC::R1, PPC::FP, PPC::BP, PPC::ZERO,
1357  };
1358
1359  // GPRC_NOR0 Bit set.
1360  const uint8_t GPRC_NOR0Bits[] = {
1361    0x12, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f,
1362  };
1363
1364  // GPRC_and_GPRC_NOR0 Register Class...
1365  const MCPhysReg GPRC_and_GPRC_NOR0[] = {
1366    PPC::R2, PPC::R3, PPC::R4, PPC::R5, PPC::R6, PPC::R7, PPC::R8, PPC::R9, PPC::R10, PPC::R11, PPC::R12, PPC::R30, PPC::R29, PPC::R28, PPC::R27, PPC::R26, PPC::R25, PPC::R24, PPC::R23, PPC::R22, PPC::R21, PPC::R20, PPC::R19, PPC::R18, PPC::R17, PPC::R16, PPC::R15, PPC::R14, PPC::R13, PPC::R31, PPC::R1, PPC::FP, PPC::BP,
1367  };
1368
1369  // GPRC_and_GPRC_NOR0 Bit set.
1370  const uint8_t GPRC_and_GPRC_NOR0Bits[] = {
1371    0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f,
1372  };
1373
1374  // CRBITRC Register Class...
1375  const MCPhysReg CRBITRC[] = {
1376    PPC::CR2LT, PPC::CR2GT, PPC::CR2EQ, PPC::CR2UN, PPC::CR3LT, PPC::CR3GT, PPC::CR3EQ, PPC::CR3UN, PPC::CR4LT, PPC::CR4GT, PPC::CR4EQ, PPC::CR4UN, PPC::CR5LT, PPC::CR5GT, PPC::CR5EQ, PPC::CR5UN, PPC::CR6LT, PPC::CR6GT, PPC::CR6EQ, PPC::CR6UN, PPC::CR7LT, PPC::CR7GT, PPC::CR7EQ, PPC::CR7UN, PPC::CR1LT, PPC::CR1GT, PPC::CR1EQ, PPC::CR1UN, PPC::CR0LT, PPC::CR0GT, PPC::CR0EQ, PPC::CR0UN,
1377  };
1378
1379  // CRBITRC Bit set.
1380  const uint8_t CRBITRCBits[] = {
1381    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
1382  };
1383
1384  // F4RC Register Class...
1385  const MCPhysReg F4RC[] = {
1386    PPC::F0, PPC::F1, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::F31, PPC::F30, PPC::F29, PPC::F28, PPC::F27, PPC::F26, PPC::F25, PPC::F24, PPC::F23, PPC::F22, PPC::F21, PPC::F20, PPC::F19, PPC::F18, PPC::F17, PPC::F16, PPC::F15, PPC::F14,
1387  };
1388
1389  // F4RC Bit set.
1390  const uint8_t F4RCBits[] = {
1391    0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f,
1392  };
1393
1394  // CRRC Register Class...
1395  const MCPhysReg CRRC[] = {
1396    PPC::CR0, PPC::CR1, PPC::CR5, PPC::CR6, PPC::CR7, PPC::CR2, PPC::CR3, PPC::CR4,
1397  };
1398
1399  // CRRC Bit set.
1400  const uint8_t CRRCBits[] = {
1401    0x00, 0xf0, 0x0f,
1402  };
1403
1404  // CARRYRC Register Class...
1405  const MCPhysReg CARRYRC[] = {
1406    PPC::CARRY, PPC::XER,
1407  };
1408
1409  // CARRYRC Bit set.
1410  const uint8_t CARRYRCBits[] = {
1411    0x04, 0x02,
1412  };
1413
1414  // CTRRC Register Class...
1415  const MCPhysReg CTRRC[] = {
1416    PPC::CTR,
1417  };
1418
1419  // CTRRC Bit set.
1420  const uint8_t CTRRCBits[] = {
1421    0x08,
1422  };
1423
1424  // VRSAVERC Register Class...
1425  const MCPhysReg VRSAVERC[] = {
1426    PPC::VRSAVE,
1427  };
1428
1429  // VRSAVERC Bit set.
1430  const uint8_t VRSAVERCBits[] = {
1431    0x00, 0x01,
1432  };
1433
1434  // SPILLTOVSRRC Register Class...
1435  const MCPhysReg SPILLTOVSRRC[] = {
1436    PPC::X2, PPC::X3, PPC::X4, PPC::X5, PPC::X6, PPC::X7, PPC::X8, PPC::X9, PPC::X10, PPC::X11, PPC::X12, PPC::X30, PPC::X29, PPC::X28, PPC::X27, PPC::X26, PPC::X25, PPC::X24, PPC::X23, PPC::X22, PPC::X21, PPC::X20, PPC::X19, PPC::X18, PPC::X17, PPC::X16, PPC::X15, PPC::X14, PPC::X31, PPC::X13, PPC::X0, PPC::X1, PPC::FP8, PPC::BP8, PPC::F0, PPC::F1, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::VF2, PPC::VF3, PPC::VF4, PPC::VF5, PPC::VF0, PPC::VF1, PPC::VF6, PPC::VF7, PPC::VF8, PPC::VF9, PPC::VF10, PPC::VF11, PPC::VF12, PPC::VF13, PPC::VF14, PPC::VF15, PPC::VF16, PPC::VF17, PPC::VF18, PPC::VF19,
1437  };
1438
1439  // SPILLTOVSRRC Bit set.
1440  const uint8_t SPILLTOVSRRCBits[] = {
1441    0x00, 0x08, 0xe0, 0xff, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f,
1442  };
1443
1444  // VSFRC Register Class...
1445  const MCPhysReg VSFRC[] = {
1446    PPC::F0, PPC::F1, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::F31, PPC::F30, PPC::F29, PPC::F28, PPC::F27, PPC::F26, PPC::F25, PPC::F24, PPC::F23, PPC::F22, PPC::F21, PPC::F20, PPC::F19, PPC::F18, PPC::F17, PPC::F16, PPC::F15, PPC::F14, PPC::VF2, PPC::VF3, PPC::VF4, PPC::VF5, PPC::VF0, PPC::VF1, PPC::VF6, PPC::VF7, PPC::VF8, PPC::VF9, PPC::VF10, PPC::VF11, PPC::VF12, PPC::VF13, PPC::VF14, PPC::VF15, PPC::VF16, PPC::VF17, PPC::VF18, PPC::VF19, PPC::VF31, PPC::VF30, PPC::VF29, PPC::VF28, PPC::VF27, PPC::VF26, PPC::VF25, PPC::VF24, PPC::VF23, PPC::VF22, PPC::VF21, PPC::VF20,
1447  };
1448
1449  // VSFRC Bit set.
1450  const uint8_t VSFRCBits[] = {
1451    0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f,
1452  };
1453
1454  // G8RC Register Class...
1455  const MCPhysReg G8RC[] = {
1456    PPC::X2, PPC::X3, PPC::X4, PPC::X5, PPC::X6, PPC::X7, PPC::X8, PPC::X9, PPC::X10, PPC::X11, PPC::X12, PPC::X30, PPC::X29, PPC::X28, PPC::X27, PPC::X26, PPC::X25, PPC::X24, PPC::X23, PPC::X22, PPC::X21, PPC::X20, PPC::X19, PPC::X18, PPC::X17, PPC::X16, PPC::X15, PPC::X14, PPC::X31, PPC::X13, PPC::X0, PPC::X1, PPC::FP8, PPC::BP8,
1457  };
1458
1459  // G8RC Bit set.
1460  const uint8_t G8RCBits[] = {
1461    0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f,
1462  };
1463
1464  // G8RC_NOX0 Register Class...
1465  const MCPhysReg G8RC_NOX0[] = {
1466    PPC::X2, PPC::X3, PPC::X4, PPC::X5, PPC::X6, PPC::X7, PPC::X8, PPC::X9, PPC::X10, PPC::X11, PPC::X12, PPC::X30, PPC::X29, PPC::X28, PPC::X27, PPC::X26, PPC::X25, PPC::X24, PPC::X23, PPC::X22, PPC::X21, PPC::X20, PPC::X19, PPC::X18, PPC::X17, PPC::X16, PPC::X15, PPC::X14, PPC::X31, PPC::X13, PPC::X1, PPC::FP8, PPC::BP8, PPC::ZERO8,
1467  };
1468
1469  // G8RC_NOX0 Bit set.
1470  const uint8_t G8RC_NOX0Bits[] = {
1471    0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
1472  };
1473
1474  // SPILLTOVSRRC_and_VSFRC Register Class...
1475  const MCPhysReg SPILLTOVSRRC_and_VSFRC[] = {
1476    PPC::F0, PPC::F1, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::VF2, PPC::VF3, PPC::VF4, PPC::VF5, PPC::VF0, PPC::VF1, PPC::VF6, PPC::VF7, PPC::VF8, PPC::VF9, PPC::VF10, PPC::VF11, PPC::VF12, PPC::VF13, PPC::VF14, PPC::VF15, PPC::VF16, PPC::VF17, PPC::VF18, PPC::VF19,
1477  };
1478
1479  // SPILLTOVSRRC_and_VSFRC Bit set.
1480  const uint8_t SPILLTOVSRRC_and_VSFRCBits[] = {
1481    0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07,
1482  };
1483
1484  // G8RC_and_G8RC_NOX0 Register Class...
1485  const MCPhysReg G8RC_and_G8RC_NOX0[] = {
1486    PPC::X2, PPC::X3, PPC::X4, PPC::X5, PPC::X6, PPC::X7, PPC::X8, PPC::X9, PPC::X10, PPC::X11, PPC::X12, PPC::X30, PPC::X29, PPC::X28, PPC::X27, PPC::X26, PPC::X25, PPC::X24, PPC::X23, PPC::X22, PPC::X21, PPC::X20, PPC::X19, PPC::X18, PPC::X17, PPC::X16, PPC::X15, PPC::X14, PPC::X31, PPC::X13, PPC::X1, PPC::FP8, PPC::BP8,
1487  };
1488
1489  // G8RC_and_G8RC_NOX0 Bit set.
1490  const uint8_t G8RC_and_G8RC_NOX0Bits[] = {
1491    0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f,
1492  };
1493
1494  // F8RC Register Class...
1495  const MCPhysReg F8RC[] = {
1496    PPC::F0, PPC::F1, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::F31, PPC::F30, PPC::F29, PPC::F28, PPC::F27, PPC::F26, PPC::F25, PPC::F24, PPC::F23, PPC::F22, PPC::F21, PPC::F20, PPC::F19, PPC::F18, PPC::F17, PPC::F16, PPC::F15, PPC::F14,
1497  };
1498
1499  // F8RC Bit set.
1500  const uint8_t F8RCBits[] = {
1501    0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f,
1502  };
1503
1504  // SPERC Register Class...
1505  const MCPhysReg SPERC[] = {
1506    PPC::S2, PPC::S3, PPC::S4, PPC::S5, PPC::S6, PPC::S7, PPC::S8, PPC::S9, PPC::S10, PPC::S11, PPC::S12, PPC::S30, PPC::S29, PPC::S28, PPC::S27, PPC::S26, PPC::S25, PPC::S24, PPC::S23, PPC::S22, PPC::S21, PPC::S20, PPC::S19, PPC::S18, PPC::S17, PPC::S16, PPC::S15, PPC::S14, PPC::S13, PPC::S31, PPC::S0, PPC::S1,
1507  };
1508
1509  // SPERC Bit set.
1510  const uint8_t SPERCBits[] = {
1511    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f,
1512  };
1513
1514  // VFRC Register Class...
1515  const MCPhysReg VFRC[] = {
1516    PPC::VF2, PPC::VF3, PPC::VF4, PPC::VF5, PPC::VF0, PPC::VF1, PPC::VF6, PPC::VF7, PPC::VF8, PPC::VF9, PPC::VF10, PPC::VF11, PPC::VF12, PPC::VF13, PPC::VF14, PPC::VF15, PPC::VF16, PPC::VF17, PPC::VF18, PPC::VF19, PPC::VF31, PPC::VF30, PPC::VF29, PPC::VF28, PPC::VF27, PPC::VF26, PPC::VF25, PPC::VF24, PPC::VF23, PPC::VF22, PPC::VF21, PPC::VF20,
1517  };
1518
1519  // VFRC Bit set.
1520  const uint8_t VFRCBits[] = {
1521    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f,
1522  };
1523
1524  // SPERC_with_sub_32_in_GPRC_NOR0 Register Class...
1525  const MCPhysReg SPERC_with_sub_32_in_GPRC_NOR0[] = {
1526    PPC::S2, PPC::S3, PPC::S4, PPC::S5, PPC::S6, PPC::S7, PPC::S8, PPC::S9, PPC::S10, PPC::S11, PPC::S12, PPC::S30, PPC::S29, PPC::S28, PPC::S27, PPC::S26, PPC::S25, PPC::S24, PPC::S23, PPC::S22, PPC::S21, PPC::S20, PPC::S19, PPC::S18, PPC::S17, PPC::S16, PPC::S15, PPC::S14, PPC::S13, PPC::S31, PPC::S1,
1527  };
1528
1529  // SPERC_with_sub_32_in_GPRC_NOR0 Bit set.
1530  const uint8_t SPERC_with_sub_32_in_GPRC_NOR0Bits[] = {
1531    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f,
1532  };
1533
1534  // SPILLTOVSRRC_and_VFRC Register Class...
1535  const MCPhysReg SPILLTOVSRRC_and_VFRC[] = {
1536    PPC::VF2, PPC::VF3, PPC::VF4, PPC::VF5, PPC::VF0, PPC::VF1, PPC::VF6, PPC::VF7, PPC::VF8, PPC::VF9, PPC::VF10, PPC::VF11, PPC::VF12, PPC::VF13, PPC::VF14, PPC::VF15, PPC::VF16, PPC::VF17, PPC::VF18, PPC::VF19,
1537  };
1538
1539  // SPILLTOVSRRC_and_VFRC Bit set.
1540  const uint8_t SPILLTOVSRRC_and_VFRCBits[] = {
1541    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07,
1542  };
1543
1544  // SPILLTOVSRRC_and_F4RC Register Class...
1545  const MCPhysReg SPILLTOVSRRC_and_F4RC[] = {
1546    PPC::F0, PPC::F1, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13,
1547  };
1548
1549  // SPILLTOVSRRC_and_F4RC Bit set.
1550  const uint8_t SPILLTOVSRRC_and_F4RCBits[] = {
1551    0x00, 0x00, 0xe0, 0xff, 0x07,
1552  };
1553
1554  // CTRRC8 Register Class...
1555  const MCPhysReg CTRRC8[] = {
1556    PPC::CTR8,
1557  };
1558
1559  // CTRRC8 Bit set.
1560  const uint8_t CTRRC8Bits[] = {
1561    0x00, 0x00, 0x10,
1562  };
1563
1564  // VSRC Register Class...
1565  const MCPhysReg VSRC[] = {
1566    PPC::VSL0, PPC::VSL1, PPC::VSL2, PPC::VSL3, PPC::VSL4, PPC::VSL5, PPC::VSL6, PPC::VSL7, PPC::VSL8, PPC::VSL9, PPC::VSL10, PPC::VSL11, PPC::VSL12, PPC::VSL13, PPC::VSL31, PPC::VSL30, PPC::VSL29, PPC::VSL28, PPC::VSL27, PPC::VSL26, PPC::VSL25, PPC::VSL24, PPC::VSL23, PPC::VSL22, PPC::VSL21, PPC::VSL20, PPC::VSL19, PPC::VSL18, PPC::VSL17, PPC::VSL16, PPC::VSL15, PPC::VSL14, PPC::V2, PPC::V3, PPC::V4, PPC::V5, PPC::V0, PPC::V1, PPC::V6, PPC::V7, PPC::V8, PPC::V9, PPC::V10, PPC::V11, PPC::V12, PPC::V13, PPC::V14, PPC::V15, PPC::V16, PPC::V17, PPC::V18, PPC::V19, PPC::V31, PPC::V30, PPC::V29, PPC::V28, PPC::V27, PPC::V26, PPC::V25, PPC::V24, PPC::V23, PPC::V22, PPC::V21, PPC::V20,
1567  };
1568
1569  // VSRC Bit set.
1570  const uint8_t VSRCBits[] = {
1571    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f,
1572  };
1573
1574  // VSRC_with_sub_64_in_SPILLTOVSRRC Register Class...
1575  const MCPhysReg VSRC_with_sub_64_in_SPILLTOVSRRC[] = {
1576    PPC::VSL0, PPC::VSL1, PPC::VSL2, PPC::VSL3, PPC::VSL4, PPC::VSL5, PPC::VSL6, PPC::VSL7, PPC::VSL8, PPC::VSL9, PPC::VSL10, PPC::VSL11, PPC::VSL12, PPC::VSL13, PPC::V2, PPC::V3, PPC::V4, PPC::V5, PPC::V0, PPC::V1, PPC::V6, PPC::V7, PPC::V8, PPC::V9, PPC::V10, PPC::V11, PPC::V12, PPC::V13, PPC::V14, PPC::V15, PPC::V16, PPC::V17, PPC::V18, PPC::V19,
1577  };
1578
1579  // VSRC_with_sub_64_in_SPILLTOVSRRC Bit set.
1580  const uint8_t VSRC_with_sub_64_in_SPILLTOVSRRCBits[] = {
1581    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x1f,
1582  };
1583
1584  // QSRC Register Class...
1585  const MCPhysReg QSRC[] = {
1586    PPC::QF0, PPC::QF1, PPC::QF2, PPC::QF3, PPC::QF4, PPC::QF5, PPC::QF6, PPC::QF7, PPC::QF8, PPC::QF9, PPC::QF10, PPC::QF11, PPC::QF12, PPC::QF13, PPC::QF31, PPC::QF30, PPC::QF29, PPC::QF28, PPC::QF27, PPC::QF26, PPC::QF25, PPC::QF24, PPC::QF23, PPC::QF22, PPC::QF21, PPC::QF20, PPC::QF19, PPC::QF18, PPC::QF17, PPC::QF16, PPC::QF15, PPC::QF14,
1587  };
1588
1589  // QSRC Bit set.
1590  const uint8_t QSRCBits[] = {
1591    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f,
1592  };
1593
1594  // VRRC Register Class...
1595  const MCPhysReg VRRC[] = {
1596    PPC::V2, PPC::V3, PPC::V4, PPC::V5, PPC::V0, PPC::V1, PPC::V6, PPC::V7, PPC::V8, PPC::V9, PPC::V10, PPC::V11, PPC::V12, PPC::V13, PPC::V14, PPC::V15, PPC::V16, PPC::V17, PPC::V18, PPC::V19, PPC::V31, PPC::V30, PPC::V29, PPC::V28, PPC::V27, PPC::V26, PPC::V25, PPC::V24, PPC::V23, PPC::V22, PPC::V21, PPC::V20,
1597  };
1598
1599  // VRRC Bit set.
1600  const uint8_t VRRCBits[] = {
1601    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f,
1602  };
1603
1604  // VSLRC Register Class...
1605  const MCPhysReg VSLRC[] = {
1606    PPC::VSL0, PPC::VSL1, PPC::VSL2, PPC::VSL3, PPC::VSL4, PPC::VSL5, PPC::VSL6, PPC::VSL7, PPC::VSL8, PPC::VSL9, PPC::VSL10, PPC::VSL11, PPC::VSL12, PPC::VSL13, PPC::VSL31, PPC::VSL30, PPC::VSL29, PPC::VSL28, PPC::VSL27, PPC::VSL26, PPC::VSL25, PPC::VSL24, PPC::VSL23, PPC::VSL22, PPC::VSL21, PPC::VSL20, PPC::VSL19, PPC::VSL18, PPC::VSL17, PPC::VSL16, PPC::VSL15, PPC::VSL14,
1607  };
1608
1609  // VSLRC Bit set.
1610  const uint8_t VSLRCBits[] = {
1611    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f,
1612  };
1613
1614  // VRRC_with_sub_64_in_SPILLTOVSRRC Register Class...
1615  const MCPhysReg VRRC_with_sub_64_in_SPILLTOVSRRC[] = {
1616    PPC::V2, PPC::V3, PPC::V4, PPC::V5, PPC::V0, PPC::V1, PPC::V6, PPC::V7, PPC::V8, PPC::V9, PPC::V10, PPC::V11, PPC::V12, PPC::V13, PPC::V14, PPC::V15, PPC::V16, PPC::V17, PPC::V18, PPC::V19,
1617  };
1618
1619  // VRRC_with_sub_64_in_SPILLTOVSRRC Bit set.
1620  const uint8_t VRRC_with_sub_64_in_SPILLTOVSRRCBits[] = {
1621    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07,
1622  };
1623
1624  // QSRC_with_sub_64_in_SPILLTOVSRRC Register Class...
1625  const MCPhysReg QSRC_with_sub_64_in_SPILLTOVSRRC[] = {
1626    PPC::QF0, PPC::QF1, PPC::QF2, PPC::QF3, PPC::QF4, PPC::QF5, PPC::QF6, PPC::QF7, PPC::QF8, PPC::QF9, PPC::QF10, PPC::QF11, PPC::QF12, PPC::QF13,
1627  };
1628
1629  // QSRC_with_sub_64_in_SPILLTOVSRRC Bit set.
1630  const uint8_t QSRC_with_sub_64_in_SPILLTOVSRRCBits[] = {
1631    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x1f,
1632  };
1633
1634  // VSLRC_with_sub_64_in_SPILLTOVSRRC Register Class...
1635  const MCPhysReg VSLRC_with_sub_64_in_SPILLTOVSRRC[] = {
1636    PPC::VSL0, PPC::VSL1, PPC::VSL2, PPC::VSL3, PPC::VSL4, PPC::VSL5, PPC::VSL6, PPC::VSL7, PPC::VSL8, PPC::VSL9, PPC::VSL10, PPC::VSL11, PPC::VSL12, PPC::VSL13,
1637  };
1638
1639  // VSLRC_with_sub_64_in_SPILLTOVSRRC Bit set.
1640  const uint8_t VSLRC_with_sub_64_in_SPILLTOVSRRCBits[] = {
1641    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x1f,
1642  };
1643
1644  // QBRC Register Class...
1645  const MCPhysReg QBRC[] = {
1646    PPC::QF0, PPC::QF1, PPC::QF2, PPC::QF3, PPC::QF4, PPC::QF5, PPC::QF6, PPC::QF7, PPC::QF8, PPC::QF9, PPC::QF10, PPC::QF11, PPC::QF12, PPC::QF13, PPC::QF31, PPC::QF30, PPC::QF29, PPC::QF28, PPC::QF27, PPC::QF26, PPC::QF25, PPC::QF24, PPC::QF23, PPC::QF22, PPC::QF21, PPC::QF20, PPC::QF19, PPC::QF18, PPC::QF17, PPC::QF16, PPC::QF15, PPC::QF14,
1647  };
1648
1649  // QBRC Bit set.
1650  const uint8_t QBRCBits[] = {
1651    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f,
1652  };
1653
1654  // QFRC Register Class...
1655  const MCPhysReg QFRC[] = {
1656    PPC::QF0, PPC::QF1, PPC::QF2, PPC::QF3, PPC::QF4, PPC::QF5, PPC::QF6, PPC::QF7, PPC::QF8, PPC::QF9, PPC::QF10, PPC::QF11, PPC::QF12, PPC::QF13, PPC::QF31, PPC::QF30, PPC::QF29, PPC::QF28, PPC::QF27, PPC::QF26, PPC::QF25, PPC::QF24, PPC::QF23, PPC::QF22, PPC::QF21, PPC::QF20, PPC::QF19, PPC::QF18, PPC::QF17, PPC::QF16, PPC::QF15, PPC::QF14,
1657  };
1658
1659  // QFRC Bit set.
1660  const uint8_t QFRCBits[] = {
1661    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f,
1662  };
1663
1664  // QBRC_with_sub_64_in_SPILLTOVSRRC Register Class...
1665  const MCPhysReg QBRC_with_sub_64_in_SPILLTOVSRRC[] = {
1666    PPC::QF0, PPC::QF1, PPC::QF2, PPC::QF3, PPC::QF4, PPC::QF5, PPC::QF6, PPC::QF7, PPC::QF8, PPC::QF9, PPC::QF10, PPC::QF11, PPC::QF12, PPC::QF13,
1667  };
1668
1669  // QBRC_with_sub_64_in_SPILLTOVSRRC Bit set.
1670  const uint8_t QBRC_with_sub_64_in_SPILLTOVSRRCBits[] = {
1671    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x1f,
1672  };
1673
1674} // end anonymous namespace
1675
1676extern const char PPCRegClassStrings[] = {
1677  /* 0 */ 'G', 'P', 'R', 'C', '_', 'a', 'n', 'd', '_', 'G', 'P', 'R', 'C', '_', 'N', 'O', 'R', '0', 0,
1678  /* 19 */ 'S', 'P', 'E', 'R', 'C', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', '_', 'i', 'n', '_', 'G', 'P', 'R', 'C', '_', 'N', 'O', 'R', '0', 0,
1679  /* 50 */ 'G', '8', 'R', 'C', '_', 'a', 'n', 'd', '_', 'G', '8', 'R', 'C', '_', 'N', 'O', 'X', '0', 0,
1680  /* 69 */ 'C', 'T', 'R', 'R', 'C', '8', 0,
1681  /* 76 */ 'S', 'P', 'I', 'L', 'L', 'T', 'O', 'V', 'S', 'R', 'R', 'C', '_', 'a', 'n', 'd', '_', 'F', '4', 'R', 'C', 0,
1682  /* 98 */ 'F', '8', 'R', 'C', 0,
1683  /* 103 */ 'G', '8', 'R', 'C', 0,
1684  /* 108 */ 'Q', 'B', 'R', 'C', 0,
1685  /* 113 */ 'S', 'P', 'E', 'R', 'C', 0,
1686  /* 119 */ 'V', 'R', 'S', 'A', 'V', 'E', 'R', 'C', 0,
1687  /* 128 */ 'Q', 'F', 'R', 'C', 0,
1688  /* 133 */ 'S', 'P', 'I', 'L', 'L', 'T', 'O', 'V', 'S', 'R', 'R', 'C', '_', 'a', 'n', 'd', '_', 'V', 'S', 'F', 'R', 'C', 0,
1689  /* 156 */ 'S', 'P', 'I', 'L', 'L', 'T', 'O', 'V', 'S', 'R', 'R', 'C', '_', 'a', 'n', 'd', '_', 'V', 'F', 'R', 'C', 0,
1690  /* 178 */ 'V', 'S', 'L', 'R', 'C', 0,
1691  /* 184 */ 'G', 'P', 'R', 'C', 0,
1692  /* 189 */ 'C', 'R', 'R', 'C', 0,
1693  /* 194 */ 'Q', 'B', 'R', 'C', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '6', '4', '_', 'i', 'n', '_', 'S', 'P', 'I', 'L', 'L', 'T', 'O', 'V', 'S', 'R', 'R', 'C', 0,
1694  /* 227 */ 'V', 'S', 'L', 'R', 'C', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '6', '4', '_', 'i', 'n', '_', 'S', 'P', 'I', 'L', 'L', 'T', 'O', 'V', 'S', 'R', 'R', 'C', 0,
1695  /* 261 */ 'V', 'R', 'R', 'C', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '6', '4', '_', 'i', 'n', '_', 'S', 'P', 'I', 'L', 'L', 'T', 'O', 'V', 'S', 'R', 'R', 'C', 0,
1696  /* 294 */ 'Q', 'S', 'R', 'C', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '6', '4', '_', 'i', 'n', '_', 'S', 'P', 'I', 'L', 'L', 'T', 'O', 'V', 'S', 'R', 'R', 'C', 0,
1697  /* 327 */ 'V', 'S', 'R', 'C', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '6', '4', '_', 'i', 'n', '_', 'S', 'P', 'I', 'L', 'L', 'T', 'O', 'V', 'S', 'R', 'R', 'C', 0,
1698  /* 360 */ 'C', 'T', 'R', 'R', 'C', 0,
1699  /* 366 */ 'V', 'R', 'R', 'C', 0,
1700  /* 371 */ 'Q', 'S', 'R', 'C', 0,
1701  /* 376 */ 'V', 'S', 'S', 'R', 'C', 0,
1702  /* 382 */ 'V', 'S', 'R', 'C', 0,
1703  /* 387 */ 'C', 'R', 'B', 'I', 'T', 'R', 'C', 0,
1704  /* 395 */ 'C', 'A', 'R', 'R', 'Y', 'R', 'C', 0,
1705};
1706
1707extern const MCRegisterClass PPCMCRegisterClasses[] = {
1708  { VSSRC, VSSRCBits, 376, 64, sizeof(VSSRCBits), PPC::VSSRCRegClassID, 1, true },
1709  { GPRC, GPRCBits, 184, 34, sizeof(GPRCBits), PPC::GPRCRegClassID, 1, true },
1710  { GPRC_NOR0, GPRC_NOR0Bits, 9, 34, sizeof(GPRC_NOR0Bits), PPC::GPRC_NOR0RegClassID, 1, true },
1711  { GPRC_and_GPRC_NOR0, GPRC_and_GPRC_NOR0Bits, 0, 33, sizeof(GPRC_and_GPRC_NOR0Bits), PPC::GPRC_and_GPRC_NOR0RegClassID, 1, true },
1712  { CRBITRC, CRBITRCBits, 387, 32, sizeof(CRBITRCBits), PPC::CRBITRCRegClassID, 1, true },
1713  { F4RC, F4RCBits, 93, 32, sizeof(F4RCBits), PPC::F4RCRegClassID, 1, true },
1714  { CRRC, CRRCBits, 189, 8, sizeof(CRRCBits), PPC::CRRCRegClassID, 1, true },
1715  { CARRYRC, CARRYRCBits, 395, 2, sizeof(CARRYRCBits), PPC::CARRYRCRegClassID, -1, true },
1716  { CTRRC, CTRRCBits, 360, 1, sizeof(CTRRCBits), PPC::CTRRCRegClassID, 1, false },
1717  { VRSAVERC, VRSAVERCBits, 119, 1, sizeof(VRSAVERCBits), PPC::VRSAVERCRegClassID, 1, true },
1718  { SPILLTOVSRRC, SPILLTOVSRRCBits, 214, 68, sizeof(SPILLTOVSRRCBits), PPC::SPILLTOVSRRCRegClassID, 1, true },
1719  { VSFRC, VSFRCBits, 150, 64, sizeof(VSFRCBits), PPC::VSFRCRegClassID, 1, true },
1720  { G8RC, G8RCBits, 103, 34, sizeof(G8RCBits), PPC::G8RCRegClassID, 1, true },
1721  { G8RC_NOX0, G8RC_NOX0Bits, 59, 34, sizeof(G8RC_NOX0Bits), PPC::G8RC_NOX0RegClassID, 1, true },
1722  { SPILLTOVSRRC_and_VSFRC, SPILLTOVSRRC_and_VSFRCBits, 133, 34, sizeof(SPILLTOVSRRC_and_VSFRCBits), PPC::SPILLTOVSRRC_and_VSFRCRegClassID, 1, true },
1723  { G8RC_and_G8RC_NOX0, G8RC_and_G8RC_NOX0Bits, 50, 33, sizeof(G8RC_and_G8RC_NOX0Bits), PPC::G8RC_and_G8RC_NOX0RegClassID, 1, true },
1724  { F8RC, F8RCBits, 98, 32, sizeof(F8RCBits), PPC::F8RCRegClassID, 1, true },
1725  { SPERC, SPERCBits, 113, 32, sizeof(SPERCBits), PPC::SPERCRegClassID, 1, true },
1726  { VFRC, VFRCBits, 173, 32, sizeof(VFRCBits), PPC::VFRCRegClassID, 1, true },
1727  { SPERC_with_sub_32_in_GPRC_NOR0, SPERC_with_sub_32_in_GPRC_NOR0Bits, 19, 31, sizeof(SPERC_with_sub_32_in_GPRC_NOR0Bits), PPC::SPERC_with_sub_32_in_GPRC_NOR0RegClassID, 1, true },
1728  { SPILLTOVSRRC_and_VFRC, SPILLTOVSRRC_and_VFRCBits, 156, 20, sizeof(SPILLTOVSRRC_and_VFRCBits), PPC::SPILLTOVSRRC_and_VFRCRegClassID, 1, true },
1729  { SPILLTOVSRRC_and_F4RC, SPILLTOVSRRC_and_F4RCBits, 76, 14, sizeof(SPILLTOVSRRC_and_F4RCBits), PPC::SPILLTOVSRRC_and_F4RCRegClassID, 1, true },
1730  { CTRRC8, CTRRC8Bits, 69, 1, sizeof(CTRRC8Bits), PPC::CTRRC8RegClassID, 1, false },
1731  { VSRC, VSRCBits, 382, 64, sizeof(VSRCBits), PPC::VSRCRegClassID, 1, true },
1732  { VSRC_with_sub_64_in_SPILLTOVSRRC, VSRC_with_sub_64_in_SPILLTOVSRRCBits, 327, 34, sizeof(VSRC_with_sub_64_in_SPILLTOVSRRCBits), PPC::VSRC_with_sub_64_in_SPILLTOVSRRCRegClassID, 1, true },
1733  { QSRC, QSRCBits, 371, 32, sizeof(QSRCBits), PPC::QSRCRegClassID, 1, true },
1734  { VRRC, VRRCBits, 366, 32, sizeof(VRRCBits), PPC::VRRCRegClassID, 1, true },
1735  { VSLRC, VSLRCBits, 178, 32, sizeof(VSLRCBits), PPC::VSLRCRegClassID, 1, true },
1736  { VRRC_with_sub_64_in_SPILLTOVSRRC, VRRC_with_sub_64_in_SPILLTOVSRRCBits, 261, 20, sizeof(VRRC_with_sub_64_in_SPILLTOVSRRCBits), PPC::VRRC_with_sub_64_in_SPILLTOVSRRCRegClassID, 1, true },
1737  { QSRC_with_sub_64_in_SPILLTOVSRRC, QSRC_with_sub_64_in_SPILLTOVSRRCBits, 294, 14, sizeof(QSRC_with_sub_64_in_SPILLTOVSRRCBits), PPC::QSRC_with_sub_64_in_SPILLTOVSRRCRegClassID, 1, true },
1738  { VSLRC_with_sub_64_in_SPILLTOVSRRC, VSLRC_with_sub_64_in_SPILLTOVSRRCBits, 227, 14, sizeof(VSLRC_with_sub_64_in_SPILLTOVSRRCBits), PPC::VSLRC_with_sub_64_in_SPILLTOVSRRCRegClassID, 1, true },
1739  { QBRC, QBRCBits, 108, 32, sizeof(QBRCBits), PPC::QBRCRegClassID, 1, true },
1740  { QFRC, QFRCBits, 128, 32, sizeof(QFRCBits), PPC::QFRCRegClassID, 1, true },
1741  { QBRC_with_sub_64_in_SPILLTOVSRRC, QBRC_with_sub_64_in_SPILLTOVSRRCBits, 194, 14, sizeof(QBRC_with_sub_64_in_SPILLTOVSRRCBits), PPC::QBRC_with_sub_64_in_SPILLTOVSRRCRegClassID, 1, true },
1742};
1743
1744// PPC Dwarf<->LLVM register mappings.
1745extern const MCRegisterInfo::DwarfLLVMRegPair PPCDwarfFlavour0Dwarf2L[] = {
1746  { 0U, PPC::X0 },
1747  { 1U, PPC::X1 },
1748  { 2U, PPC::X2 },
1749  { 3U, PPC::X3 },
1750  { 4U, PPC::X4 },
1751  { 5U, PPC::X5 },
1752  { 6U, PPC::X6 },
1753  { 7U, PPC::X7 },
1754  { 8U, PPC::X8 },
1755  { 9U, PPC::X9 },
1756  { 10U, PPC::X10 },
1757  { 11U, PPC::X11 },
1758  { 12U, PPC::X12 },
1759  { 13U, PPC::X13 },
1760  { 14U, PPC::X14 },
1761  { 15U, PPC::X15 },
1762  { 16U, PPC::X16 },
1763  { 17U, PPC::X17 },
1764  { 18U, PPC::X18 },
1765  { 19U, PPC::X19 },
1766  { 20U, PPC::X20 },
1767  { 21U, PPC::X21 },
1768  { 22U, PPC::X22 },
1769  { 23U, PPC::X23 },
1770  { 24U, PPC::X24 },
1771  { 25U, PPC::X25 },
1772  { 26U, PPC::X26 },
1773  { 27U, PPC::X27 },
1774  { 28U, PPC::X28 },
1775  { 29U, PPC::X29 },
1776  { 30U, PPC::X30 },
1777  { 31U, PPC::X31 },
1778  { 32U, PPC::QF0 },
1779  { 33U, PPC::QF1 },
1780  { 34U, PPC::QF2 },
1781  { 35U, PPC::QF3 },
1782  { 36U, PPC::QF4 },
1783  { 37U, PPC::QF5 },
1784  { 38U, PPC::QF6 },
1785  { 39U, PPC::QF7 },
1786  { 40U, PPC::QF8 },
1787  { 41U, PPC::QF9 },
1788  { 42U, PPC::QF10 },
1789  { 43U, PPC::QF11 },
1790  { 44U, PPC::QF12 },
1791  { 45U, PPC::QF13 },
1792  { 46U, PPC::QF14 },
1793  { 47U, PPC::QF15 },
1794  { 48U, PPC::QF16 },
1795  { 49U, PPC::QF17 },
1796  { 50U, PPC::QF18 },
1797  { 51U, PPC::QF19 },
1798  { 52U, PPC::QF20 },
1799  { 53U, PPC::QF21 },
1800  { 54U, PPC::QF22 },
1801  { 55U, PPC::QF23 },
1802  { 56U, PPC::QF24 },
1803  { 57U, PPC::QF25 },
1804  { 58U, PPC::QF26 },
1805  { 59U, PPC::QF27 },
1806  { 60U, PPC::QF28 },
1807  { 61U, PPC::QF29 },
1808  { 62U, PPC::QF30 },
1809  { 63U, PPC::QF31 },
1810  { 65U, PPC::LR8 },
1811  { 66U, PPC::CTR8 },
1812  { 68U, PPC::CR0 },
1813  { 69U, PPC::CR1 },
1814  { 70U, PPC::CR2 },
1815  { 71U, PPC::CR3 },
1816  { 72U, PPC::CR4 },
1817  { 73U, PPC::CR5 },
1818  { 74U, PPC::CR6 },
1819  { 75U, PPC::CR7 },
1820  { 76U, PPC::XER },
1821  { 77U, PPC::VF0 },
1822  { 78U, PPC::VF1 },
1823  { 79U, PPC::VF2 },
1824  { 80U, PPC::VF3 },
1825  { 81U, PPC::VF4 },
1826  { 82U, PPC::VF5 },
1827  { 83U, PPC::VF6 },
1828  { 84U, PPC::VF7 },
1829  { 85U, PPC::VF8 },
1830  { 86U, PPC::VF9 },
1831  { 87U, PPC::VF10 },
1832  { 88U, PPC::VF11 },
1833  { 89U, PPC::VF12 },
1834  { 90U, PPC::VF13 },
1835  { 91U, PPC::VF14 },
1836  { 92U, PPC::VF15 },
1837  { 93U, PPC::VF16 },
1838  { 94U, PPC::VF17 },
1839  { 95U, PPC::VF18 },
1840  { 96U, PPC::VF19 },
1841  { 97U, PPC::VF20 },
1842  { 98U, PPC::VF21 },
1843  { 99U, PPC::VF22 },
1844  { 100U, PPC::VF23 },
1845  { 101U, PPC::VF24 },
1846  { 102U, PPC::VF25 },
1847  { 103U, PPC::VF26 },
1848  { 104U, PPC::VF27 },
1849  { 105U, PPC::VF28 },
1850  { 106U, PPC::VF29 },
1851  { 107U, PPC::VF30 },
1852  { 108U, PPC::VF31 },
1853  { 109U, PPC::VRSAVE },
1854  { 612U, PPC::SPEFSCR },
1855  { 1200U, PPC::S0 },
1856  { 1201U, PPC::S1 },
1857  { 1202U, PPC::S2 },
1858  { 1203U, PPC::S3 },
1859  { 1204U, PPC::S4 },
1860  { 1205U, PPC::S5 },
1861  { 1206U, PPC::S6 },
1862  { 1207U, PPC::S7 },
1863  { 1208U, PPC::S8 },
1864  { 1209U, PPC::S9 },
1865  { 1210U, PPC::S10 },
1866  { 1211U, PPC::S11 },
1867  { 1212U, PPC::S12 },
1868  { 1213U, PPC::S13 },
1869  { 1214U, PPC::S14 },
1870  { 1215U, PPC::S15 },
1871  { 1216U, PPC::S16 },
1872  { 1217U, PPC::S17 },
1873  { 1218U, PPC::S18 },
1874  { 1219U, PPC::S19 },
1875  { 1220U, PPC::S20 },
1876  { 1221U, PPC::S21 },
1877  { 1222U, PPC::S22 },
1878  { 1223U, PPC::S23 },
1879  { 1224U, PPC::S24 },
1880  { 1225U, PPC::S25 },
1881  { 1226U, PPC::S26 },
1882  { 1227U, PPC::S27 },
1883  { 1228U, PPC::S28 },
1884  { 1229U, PPC::S29 },
1885  { 1230U, PPC::S30 },
1886  { 1231U, PPC::S31 },
1887};
1888extern const unsigned PPCDwarfFlavour0Dwarf2LSize = array_lengthof(PPCDwarfFlavour0Dwarf2L);
1889
1890extern const MCRegisterInfo::DwarfLLVMRegPair PPCDwarfFlavour1Dwarf2L[] = {
1891  { 0U, PPC::R0 },
1892  { 1U, PPC::R1 },
1893  { 2U, PPC::R2 },
1894  { 3U, PPC::R3 },
1895  { 4U, PPC::R4 },
1896  { 5U, PPC::R5 },
1897  { 6U, PPC::R6 },
1898  { 7U, PPC::R7 },
1899  { 8U, PPC::R8 },
1900  { 9U, PPC::R9 },
1901  { 10U, PPC::R10 },
1902  { 11U, PPC::R11 },
1903  { 12U, PPC::R12 },
1904  { 13U, PPC::R13 },
1905  { 14U, PPC::R14 },
1906  { 15U, PPC::R15 },
1907  { 16U, PPC::R16 },
1908  { 17U, PPC::R17 },
1909  { 18U, PPC::R18 },
1910  { 19U, PPC::R19 },
1911  { 20U, PPC::R20 },
1912  { 21U, PPC::R21 },
1913  { 22U, PPC::R22 },
1914  { 23U, PPC::R23 },
1915  { 24U, PPC::R24 },
1916  { 25U, PPC::R25 },
1917  { 26U, PPC::R26 },
1918  { 27U, PPC::R27 },
1919  { 28U, PPC::R28 },
1920  { 29U, PPC::R29 },
1921  { 30U, PPC::R30 },
1922  { 31U, PPC::R31 },
1923  { 32U, PPC::QF0 },
1924  { 33U, PPC::QF1 },
1925  { 34U, PPC::QF2 },
1926  { 35U, PPC::QF3 },
1927  { 36U, PPC::QF4 },
1928  { 37U, PPC::QF5 },
1929  { 38U, PPC::QF6 },
1930  { 39U, PPC::QF7 },
1931  { 40U, PPC::QF8 },
1932  { 41U, PPC::QF9 },
1933  { 42U, PPC::QF10 },
1934  { 43U, PPC::QF11 },
1935  { 44U, PPC::QF12 },
1936  { 45U, PPC::QF13 },
1937  { 46U, PPC::QF14 },
1938  { 47U, PPC::QF15 },
1939  { 48U, PPC::QF16 },
1940  { 49U, PPC::QF17 },
1941  { 50U, PPC::QF18 },
1942  { 51U, PPC::QF19 },
1943  { 52U, PPC::QF20 },
1944  { 53U, PPC::QF21 },
1945  { 54U, PPC::QF22 },
1946  { 55U, PPC::QF23 },
1947  { 56U, PPC::QF24 },
1948  { 57U, PPC::QF25 },
1949  { 58U, PPC::QF26 },
1950  { 59U, PPC::QF27 },
1951  { 60U, PPC::QF28 },
1952  { 61U, PPC::QF29 },
1953  { 62U, PPC::QF30 },
1954  { 63U, PPC::QF31 },
1955  { 65U, PPC::LR },
1956  { 66U, PPC::CTR },
1957  { 68U, PPC::CR0 },
1958  { 69U, PPC::CR1 },
1959  { 70U, PPC::CR2 },
1960  { 71U, PPC::CR3 },
1961  { 72U, PPC::CR4 },
1962  { 73U, PPC::CR5 },
1963  { 74U, PPC::CR6 },
1964  { 75U, PPC::CR7 },
1965  { 77U, PPC::VF0 },
1966  { 78U, PPC::VF1 },
1967  { 79U, PPC::VF2 },
1968  { 80U, PPC::VF3 },
1969  { 81U, PPC::VF4 },
1970  { 82U, PPC::VF5 },
1971  { 83U, PPC::VF6 },
1972  { 84U, PPC::VF7 },
1973  { 85U, PPC::VF8 },
1974  { 86U, PPC::VF9 },
1975  { 87U, PPC::VF10 },
1976  { 88U, PPC::VF11 },
1977  { 89U, PPC::VF12 },
1978  { 90U, PPC::VF13 },
1979  { 91U, PPC::VF14 },
1980  { 92U, PPC::VF15 },
1981  { 93U, PPC::VF16 },
1982  { 94U, PPC::VF17 },
1983  { 95U, PPC::VF18 },
1984  { 96U, PPC::VF19 },
1985  { 97U, PPC::VF20 },
1986  { 98U, PPC::VF21 },
1987  { 99U, PPC::VF22 },
1988  { 100U, PPC::VF23 },
1989  { 101U, PPC::VF24 },
1990  { 102U, PPC::VF25 },
1991  { 103U, PPC::VF26 },
1992  { 104U, PPC::VF27 },
1993  { 105U, PPC::VF28 },
1994  { 106U, PPC::VF29 },
1995  { 107U, PPC::VF30 },
1996  { 108U, PPC::VF31 },
1997  { 112U, PPC::SPEFSCR },
1998  { 1200U, PPC::S0 },
1999  { 1201U, PPC::S1 },
2000  { 1202U, PPC::S2 },
2001  { 1203U, PPC::S3 },
2002  { 1204U, PPC::S4 },
2003  { 1205U, PPC::S5 },
2004  { 1206U, PPC::S6 },
2005  { 1207U, PPC::S7 },
2006  { 1208U, PPC::S8 },
2007  { 1209U, PPC::S9 },
2008  { 1210U, PPC::S10 },
2009  { 1211U, PPC::S11 },
2010  { 1212U, PPC::S12 },
2011  { 1213U, PPC::S13 },
2012  { 1214U, PPC::S14 },
2013  { 1215U, PPC::S15 },
2014  { 1216U, PPC::S16 },
2015  { 1217U, PPC::S17 },
2016  { 1218U, PPC::S18 },
2017  { 1219U, PPC::S19 },
2018  { 1220U, PPC::S20 },
2019  { 1221U, PPC::S21 },
2020  { 1222U, PPC::S22 },
2021  { 1223U, PPC::S23 },
2022  { 1224U, PPC::S24 },
2023  { 1225U, PPC::S25 },
2024  { 1226U, PPC::S26 },
2025  { 1227U, PPC::S27 },
2026  { 1228U, PPC::S28 },
2027  { 1229U, PPC::S29 },
2028  { 1230U, PPC::S30 },
2029  { 1231U, PPC::S31 },
2030};
2031extern const unsigned PPCDwarfFlavour1Dwarf2LSize = array_lengthof(PPCDwarfFlavour1Dwarf2L);
2032
2033extern const MCRegisterInfo::DwarfLLVMRegPair PPCEHFlavour0Dwarf2L[] = {
2034  { 0U, PPC::X0 },
2035  { 1U, PPC::X1 },
2036  { 2U, PPC::X2 },
2037  { 3U, PPC::X3 },
2038  { 4U, PPC::X4 },
2039  { 5U, PPC::X5 },
2040  { 6U, PPC::X6 },
2041  { 7U, PPC::X7 },
2042  { 8U, PPC::X8 },
2043  { 9U, PPC::X9 },
2044  { 10U, PPC::X10 },
2045  { 11U, PPC::X11 },
2046  { 12U, PPC::X12 },
2047  { 13U, PPC::X13 },
2048  { 14U, PPC::X14 },
2049  { 15U, PPC::X15 },
2050  { 16U, PPC::X16 },
2051  { 17U, PPC::X17 },
2052  { 18U, PPC::X18 },
2053  { 19U, PPC::X19 },
2054  { 20U, PPC::X20 },
2055  { 21U, PPC::X21 },
2056  { 22U, PPC::X22 },
2057  { 23U, PPC::X23 },
2058  { 24U, PPC::X24 },
2059  { 25U, PPC::X25 },
2060  { 26U, PPC::X26 },
2061  { 27U, PPC::X27 },
2062  { 28U, PPC::X28 },
2063  { 29U, PPC::X29 },
2064  { 30U, PPC::X30 },
2065  { 31U, PPC::X31 },
2066  { 32U, PPC::QF0 },
2067  { 33U, PPC::QF1 },
2068  { 34U, PPC::QF2 },
2069  { 35U, PPC::QF3 },
2070  { 36U, PPC::QF4 },
2071  { 37U, PPC::QF5 },
2072  { 38U, PPC::QF6 },
2073  { 39U, PPC::QF7 },
2074  { 40U, PPC::QF8 },
2075  { 41U, PPC::QF9 },
2076  { 42U, PPC::QF10 },
2077  { 43U, PPC::QF11 },
2078  { 44U, PPC::QF12 },
2079  { 45U, PPC::QF13 },
2080  { 46U, PPC::QF14 },
2081  { 47U, PPC::QF15 },
2082  { 48U, PPC::QF16 },
2083  { 49U, PPC::QF17 },
2084  { 50U, PPC::QF18 },
2085  { 51U, PPC::QF19 },
2086  { 52U, PPC::QF20 },
2087  { 53U, PPC::QF21 },
2088  { 54U, PPC::QF22 },
2089  { 55U, PPC::QF23 },
2090  { 56U, PPC::QF24 },
2091  { 57U, PPC::QF25 },
2092  { 58U, PPC::QF26 },
2093  { 59U, PPC::QF27 },
2094  { 60U, PPC::QF28 },
2095  { 61U, PPC::QF29 },
2096  { 62U, PPC::QF30 },
2097  { 63U, PPC::QF31 },
2098  { 65U, PPC::LR8 },
2099  { 66U, PPC::CTR8 },
2100  { 68U, PPC::CR0 },
2101  { 69U, PPC::CR1 },
2102  { 70U, PPC::CR2 },
2103  { 71U, PPC::CR3 },
2104  { 72U, PPC::CR4 },
2105  { 73U, PPC::CR5 },
2106  { 74U, PPC::CR6 },
2107  { 75U, PPC::CR7 },
2108  { 76U, PPC::XER },
2109  { 77U, PPC::VF0 },
2110  { 78U, PPC::VF1 },
2111  { 79U, PPC::VF2 },
2112  { 80U, PPC::VF3 },
2113  { 81U, PPC::VF4 },
2114  { 82U, PPC::VF5 },
2115  { 83U, PPC::VF6 },
2116  { 84U, PPC::VF7 },
2117  { 85U, PPC::VF8 },
2118  { 86U, PPC::VF9 },
2119  { 87U, PPC::VF10 },
2120  { 88U, PPC::VF11 },
2121  { 89U, PPC::VF12 },
2122  { 90U, PPC::VF13 },
2123  { 91U, PPC::VF14 },
2124  { 92U, PPC::VF15 },
2125  { 93U, PPC::VF16 },
2126  { 94U, PPC::VF17 },
2127  { 95U, PPC::VF18 },
2128  { 96U, PPC::VF19 },
2129  { 97U, PPC::VF20 },
2130  { 98U, PPC::VF21 },
2131  { 99U, PPC::VF22 },
2132  { 100U, PPC::VF23 },
2133  { 101U, PPC::VF24 },
2134  { 102U, PPC::VF25 },
2135  { 103U, PPC::VF26 },
2136  { 104U, PPC::VF27 },
2137  { 105U, PPC::VF28 },
2138  { 106U, PPC::VF29 },
2139  { 107U, PPC::VF30 },
2140  { 108U, PPC::VF31 },
2141  { 109U, PPC::VRSAVE },
2142  { 612U, PPC::SPEFSCR },
2143  { 1200U, PPC::S0 },
2144  { 1201U, PPC::S1 },
2145  { 1202U, PPC::S2 },
2146  { 1203U, PPC::S3 },
2147  { 1204U, PPC::S4 },
2148  { 1205U, PPC::S5 },
2149  { 1206U, PPC::S6 },
2150  { 1207U, PPC::S7 },
2151  { 1208U, PPC::S8 },
2152  { 1209U, PPC::S9 },
2153  { 1210U, PPC::S10 },
2154  { 1211U, PPC::S11 },
2155  { 1212U, PPC::S12 },
2156  { 1213U, PPC::S13 },
2157  { 1214U, PPC::S14 },
2158  { 1215U, PPC::S15 },
2159  { 1216U, PPC::S16 },
2160  { 1217U, PPC::S17 },
2161  { 1218U, PPC::S18 },
2162  { 1219U, PPC::S19 },
2163  { 1220U, PPC::S20 },
2164  { 1221U, PPC::S21 },
2165  { 1222U, PPC::S22 },
2166  { 1223U, PPC::S23 },
2167  { 1224U, PPC::S24 },
2168  { 1225U, PPC::S25 },
2169  { 1226U, PPC::S26 },
2170  { 1227U, PPC::S27 },
2171  { 1228U, PPC::S28 },
2172  { 1229U, PPC::S29 },
2173  { 1230U, PPC::S30 },
2174  { 1231U, PPC::S31 },
2175};
2176extern const unsigned PPCEHFlavour0Dwarf2LSize = array_lengthof(PPCEHFlavour0Dwarf2L);
2177
2178extern const MCRegisterInfo::DwarfLLVMRegPair PPCEHFlavour1Dwarf2L[] = {
2179  { 0U, PPC::R0 },
2180  { 1U, PPC::R1 },
2181  { 2U, PPC::R2 },
2182  { 3U, PPC::R3 },
2183  { 4U, PPC::R4 },
2184  { 5U, PPC::R5 },
2185  { 6U, PPC::R6 },
2186  { 7U, PPC::R7 },
2187  { 8U, PPC::R8 },
2188  { 9U, PPC::R9 },
2189  { 10U, PPC::R10 },
2190  { 11U, PPC::R11 },
2191  { 12U, PPC::R12 },
2192  { 13U, PPC::R13 },
2193  { 14U, PPC::R14 },
2194  { 15U, PPC::R15 },
2195  { 16U, PPC::R16 },
2196  { 17U, PPC::R17 },
2197  { 18U, PPC::R18 },
2198  { 19U, PPC::R19 },
2199  { 20U, PPC::R20 },
2200  { 21U, PPC::R21 },
2201  { 22U, PPC::R22 },
2202  { 23U, PPC::R23 },
2203  { 24U, PPC::R24 },
2204  { 25U, PPC::R25 },
2205  { 26U, PPC::R26 },
2206  { 27U, PPC::R27 },
2207  { 28U, PPC::R28 },
2208  { 29U, PPC::R29 },
2209  { 30U, PPC::R30 },
2210  { 31U, PPC::R31 },
2211  { 32U, PPC::QF0 },
2212  { 33U, PPC::QF1 },
2213  { 34U, PPC::QF2 },
2214  { 35U, PPC::QF3 },
2215  { 36U, PPC::QF4 },
2216  { 37U, PPC::QF5 },
2217  { 38U, PPC::QF6 },
2218  { 39U, PPC::QF7 },
2219  { 40U, PPC::QF8 },
2220  { 41U, PPC::QF9 },
2221  { 42U, PPC::QF10 },
2222  { 43U, PPC::QF11 },
2223  { 44U, PPC::QF12 },
2224  { 45U, PPC::QF13 },
2225  { 46U, PPC::QF14 },
2226  { 47U, PPC::QF15 },
2227  { 48U, PPC::QF16 },
2228  { 49U, PPC::QF17 },
2229  { 50U, PPC::QF18 },
2230  { 51U, PPC::QF19 },
2231  { 52U, PPC::QF20 },
2232  { 53U, PPC::QF21 },
2233  { 54U, PPC::QF22 },
2234  { 55U, PPC::QF23 },
2235  { 56U, PPC::QF24 },
2236  { 57U, PPC::QF25 },
2237  { 58U, PPC::QF26 },
2238  { 59U, PPC::QF27 },
2239  { 60U, PPC::QF28 },
2240  { 61U, PPC::QF29 },
2241  { 62U, PPC::QF30 },
2242  { 63U, PPC::QF31 },
2243  { 65U, PPC::LR },
2244  { 66U, PPC::CTR },
2245  { 68U, PPC::CR0 },
2246  { 69U, PPC::CR1 },
2247  { 70U, PPC::CR2 },
2248  { 71U, PPC::CR3 },
2249  { 72U, PPC::CR4 },
2250  { 73U, PPC::CR5 },
2251  { 74U, PPC::CR6 },
2252  { 75U, PPC::CR7 },
2253  { 77U, PPC::VF0 },
2254  { 78U, PPC::VF1 },
2255  { 79U, PPC::VF2 },
2256  { 80U, PPC::VF3 },
2257  { 81U, PPC::VF4 },
2258  { 82U, PPC::VF5 },
2259  { 83U, PPC::VF6 },
2260  { 84U, PPC::VF7 },
2261  { 85U, PPC::VF8 },
2262  { 86U, PPC::VF9 },
2263  { 87U, PPC::VF10 },
2264  { 88U, PPC::VF11 },
2265  { 89U, PPC::VF12 },
2266  { 90U, PPC::VF13 },
2267  { 91U, PPC::VF14 },
2268  { 92U, PPC::VF15 },
2269  { 93U, PPC::VF16 },
2270  { 94U, PPC::VF17 },
2271  { 95U, PPC::VF18 },
2272  { 96U, PPC::VF19 },
2273  { 97U, PPC::VF20 },
2274  { 98U, PPC::VF21 },
2275  { 99U, PPC::VF22 },
2276  { 100U, PPC::VF23 },
2277  { 101U, PPC::VF24 },
2278  { 102U, PPC::VF25 },
2279  { 103U, PPC::VF26 },
2280  { 104U, PPC::VF27 },
2281  { 105U, PPC::VF28 },
2282  { 106U, PPC::VF29 },
2283  { 107U, PPC::VF30 },
2284  { 108U, PPC::VF31 },
2285  { 112U, PPC::SPEFSCR },
2286  { 1200U, PPC::S0 },
2287  { 1201U, PPC::S1 },
2288  { 1202U, PPC::S2 },
2289  { 1203U, PPC::S3 },
2290  { 1204U, PPC::S4 },
2291  { 1205U, PPC::S5 },
2292  { 1206U, PPC::S6 },
2293  { 1207U, PPC::S7 },
2294  { 1208U, PPC::S8 },
2295  { 1209U, PPC::S9 },
2296  { 1210U, PPC::S10 },
2297  { 1211U, PPC::S11 },
2298  { 1212U, PPC::S12 },
2299  { 1213U, PPC::S13 },
2300  { 1214U, PPC::S14 },
2301  { 1215U, PPC::S15 },
2302  { 1216U, PPC::S16 },
2303  { 1217U, PPC::S17 },
2304  { 1218U, PPC::S18 },
2305  { 1219U, PPC::S19 },
2306  { 1220U, PPC::S20 },
2307  { 1221U, PPC::S21 },
2308  { 1222U, PPC::S22 },
2309  { 1223U, PPC::S23 },
2310  { 1224U, PPC::S24 },
2311  { 1225U, PPC::S25 },
2312  { 1226U, PPC::S26 },
2313  { 1227U, PPC::S27 },
2314  { 1228U, PPC::S28 },
2315  { 1229U, PPC::S29 },
2316  { 1230U, PPC::S30 },
2317  { 1231U, PPC::S31 },
2318};
2319extern const unsigned PPCEHFlavour1Dwarf2LSize = array_lengthof(PPCEHFlavour1Dwarf2L);
2320
2321extern const MCRegisterInfo::DwarfLLVMRegPair PPCDwarfFlavour0L2Dwarf[] = {
2322  { PPC::CARRY, 76U },
2323  { PPC::CTR, -2U },
2324  { PPC::LR, -2U },
2325  { PPC::SPEFSCR, 612U },
2326  { PPC::VRSAVE, 109U },
2327  { PPC::XER, 76U },
2328  { PPC::ZERO, -2U },
2329  { PPC::CR0, 68U },
2330  { PPC::CR1, 69U },
2331  { PPC::CR2, 70U },
2332  { PPC::CR3, 71U },
2333  { PPC::CR4, 72U },
2334  { PPC::CR5, 73U },
2335  { PPC::CR6, 74U },
2336  { PPC::CR7, 75U },
2337  { PPC::CTR8, 66U },
2338  { PPC::F0, 32U },
2339  { PPC::F1, 33U },
2340  { PPC::F2, 34U },
2341  { PPC::F3, 35U },
2342  { PPC::F4, 36U },
2343  { PPC::F5, 37U },
2344  { PPC::F6, 38U },
2345  { PPC::F7, 39U },
2346  { PPC::F8, 40U },
2347  { PPC::F9, 41U },
2348  { PPC::F10, 42U },
2349  { PPC::F11, 43U },
2350  { PPC::F12, 44U },
2351  { PPC::F13, 45U },
2352  { PPC::F14, 46U },
2353  { PPC::F15, 47U },
2354  { PPC::F16, 48U },
2355  { PPC::F17, 49U },
2356  { PPC::F18, 50U },
2357  { PPC::F19, 51U },
2358  { PPC::F20, 52U },
2359  { PPC::F21, 53U },
2360  { PPC::F22, 54U },
2361  { PPC::F23, 55U },
2362  { PPC::F24, 56U },
2363  { PPC::F25, 57U },
2364  { PPC::F26, 58U },
2365  { PPC::F27, 59U },
2366  { PPC::F28, 60U },
2367  { PPC::F29, 61U },
2368  { PPC::F30, 62U },
2369  { PPC::F31, 63U },
2370  { PPC::LR8, 65U },
2371  { PPC::QF0, 32U },
2372  { PPC::QF1, 33U },
2373  { PPC::QF2, 34U },
2374  { PPC::QF3, 35U },
2375  { PPC::QF4, 36U },
2376  { PPC::QF5, 37U },
2377  { PPC::QF6, 38U },
2378  { PPC::QF7, 39U },
2379  { PPC::QF8, 40U },
2380  { PPC::QF9, 41U },
2381  { PPC::QF10, 42U },
2382  { PPC::QF11, 43U },
2383  { PPC::QF12, 44U },
2384  { PPC::QF13, 45U },
2385  { PPC::QF14, 46U },
2386  { PPC::QF15, 47U },
2387  { PPC::QF16, 48U },
2388  { PPC::QF17, 49U },
2389  { PPC::QF18, 50U },
2390  { PPC::QF19, 51U },
2391  { PPC::QF20, 52U },
2392  { PPC::QF21, 53U },
2393  { PPC::QF22, 54U },
2394  { PPC::QF23, 55U },
2395  { PPC::QF24, 56U },
2396  { PPC::QF25, 57U },
2397  { PPC::QF26, 58U },
2398  { PPC::QF27, 59U },
2399  { PPC::QF28, 60U },
2400  { PPC::QF29, 61U },
2401  { PPC::QF30, 62U },
2402  { PPC::QF31, 63U },
2403  { PPC::R0, -2U },
2404  { PPC::R1, -2U },
2405  { PPC::R2, -2U },
2406  { PPC::R3, -2U },
2407  { PPC::R4, -2U },
2408  { PPC::R5, -2U },
2409  { PPC::R6, -2U },
2410  { PPC::R7, -2U },
2411  { PPC::R8, -2U },
2412  { PPC::R9, -2U },
2413  { PPC::R10, -2U },
2414  { PPC::R11, -2U },
2415  { PPC::R12, -2U },
2416  { PPC::R13, -2U },
2417  { PPC::R14, -2U },
2418  { PPC::R15, -2U },
2419  { PPC::R16, -2U },
2420  { PPC::R17, -2U },
2421  { PPC::R18, -2U },
2422  { PPC::R19, -2U },
2423  { PPC::R20, -2U },
2424  { PPC::R21, -2U },
2425  { PPC::R22, -2U },
2426  { PPC::R23, -2U },
2427  { PPC::R24, -2U },
2428  { PPC::R25, -2U },
2429  { PPC::R26, -2U },
2430  { PPC::R27, -2U },
2431  { PPC::R28, -2U },
2432  { PPC::R29, -2U },
2433  { PPC::R30, -2U },
2434  { PPC::R31, -2U },
2435  { PPC::S0, 1200U },
2436  { PPC::S1, 1201U },
2437  { PPC::S2, 1202U },
2438  { PPC::S3, 1203U },
2439  { PPC::S4, 1204U },
2440  { PPC::S5, 1205U },
2441  { PPC::S6, 1206U },
2442  { PPC::S7, 1207U },
2443  { PPC::S8, 1208U },
2444  { PPC::S9, 1209U },
2445  { PPC::S10, 1210U },
2446  { PPC::S11, 1211U },
2447  { PPC::S12, 1212U },
2448  { PPC::S13, 1213U },
2449  { PPC::S14, 1214U },
2450  { PPC::S15, 1215U },
2451  { PPC::S16, 1216U },
2452  { PPC::S17, 1217U },
2453  { PPC::S18, 1218U },
2454  { PPC::S19, 1219U },
2455  { PPC::S20, 1220U },
2456  { PPC::S21, 1221U },
2457  { PPC::S22, 1222U },
2458  { PPC::S23, 1223U },
2459  { PPC::S24, 1224U },
2460  { PPC::S25, 1225U },
2461  { PPC::S26, 1226U },
2462  { PPC::S27, 1227U },
2463  { PPC::S28, 1228U },
2464  { PPC::S29, 1229U },
2465  { PPC::S30, 1230U },
2466  { PPC::S31, 1231U },
2467  { PPC::V0, 77U },
2468  { PPC::V1, 78U },
2469  { PPC::V2, 79U },
2470  { PPC::V3, 80U },
2471  { PPC::V4, 81U },
2472  { PPC::V5, 82U },
2473  { PPC::V6, 83U },
2474  { PPC::V7, 84U },
2475  { PPC::V8, 85U },
2476  { PPC::V9, 86U },
2477  { PPC::V10, 87U },
2478  { PPC::V11, 88U },
2479  { PPC::V12, 89U },
2480  { PPC::V13, 90U },
2481  { PPC::V14, 91U },
2482  { PPC::V15, 92U },
2483  { PPC::V16, 93U },
2484  { PPC::V17, 94U },
2485  { PPC::V18, 95U },
2486  { PPC::V19, 96U },
2487  { PPC::V20, 97U },
2488  { PPC::V21, 98U },
2489  { PPC::V22, 99U },
2490  { PPC::V23, 100U },
2491  { PPC::V24, 101U },
2492  { PPC::V25, 102U },
2493  { PPC::V26, 103U },
2494  { PPC::V27, 104U },
2495  { PPC::V28, 105U },
2496  { PPC::V29, 106U },
2497  { PPC::V30, 107U },
2498  { PPC::V31, 108U },
2499  { PPC::VF0, 77U },
2500  { PPC::VF1, 78U },
2501  { PPC::VF2, 79U },
2502  { PPC::VF3, 80U },
2503  { PPC::VF4, 81U },
2504  { PPC::VF5, 82U },
2505  { PPC::VF6, 83U },
2506  { PPC::VF7, 84U },
2507  { PPC::VF8, 85U },
2508  { PPC::VF9, 86U },
2509  { PPC::VF10, 87U },
2510  { PPC::VF11, 88U },
2511  { PPC::VF12, 89U },
2512  { PPC::VF13, 90U },
2513  { PPC::VF14, 91U },
2514  { PPC::VF15, 92U },
2515  { PPC::VF16, 93U },
2516  { PPC::VF17, 94U },
2517  { PPC::VF18, 95U },
2518  { PPC::VF19, 96U },
2519  { PPC::VF20, 97U },
2520  { PPC::VF21, 98U },
2521  { PPC::VF22, 99U },
2522  { PPC::VF23, 100U },
2523  { PPC::VF24, 101U },
2524  { PPC::VF25, 102U },
2525  { PPC::VF26, 103U },
2526  { PPC::VF27, 104U },
2527  { PPC::VF28, 105U },
2528  { PPC::VF29, 106U },
2529  { PPC::VF30, 107U },
2530  { PPC::VF31, 108U },
2531  { PPC::VSL0, 32U },
2532  { PPC::VSL1, 33U },
2533  { PPC::VSL2, 34U },
2534  { PPC::VSL3, 35U },
2535  { PPC::VSL4, 36U },
2536  { PPC::VSL5, 37U },
2537  { PPC::VSL6, 38U },
2538  { PPC::VSL7, 39U },
2539  { PPC::VSL8, 40U },
2540  { PPC::VSL9, 41U },
2541  { PPC::VSL10, 42U },
2542  { PPC::VSL11, 43U },
2543  { PPC::VSL12, 44U },
2544  { PPC::VSL13, 45U },
2545  { PPC::VSL14, 46U },
2546  { PPC::VSL15, 47U },
2547  { PPC::VSL16, 48U },
2548  { PPC::VSL17, 49U },
2549  { PPC::VSL18, 50U },
2550  { PPC::VSL19, 51U },
2551  { PPC::VSL20, 52U },
2552  { PPC::VSL21, 53U },
2553  { PPC::VSL22, 54U },
2554  { PPC::VSL23, 55U },
2555  { PPC::VSL24, 56U },
2556  { PPC::VSL25, 57U },
2557  { PPC::VSL26, 58U },
2558  { PPC::VSL27, 59U },
2559  { PPC::VSL28, 60U },
2560  { PPC::VSL29, 61U },
2561  { PPC::VSL30, 62U },
2562  { PPC::VSL31, 63U },
2563  { PPC::X0, 0U },
2564  { PPC::X1, 1U },
2565  { PPC::X2, 2U },
2566  { PPC::X3, 3U },
2567  { PPC::X4, 4U },
2568  { PPC::X5, 5U },
2569  { PPC::X6, 6U },
2570  { PPC::X7, 7U },
2571  { PPC::X8, 8U },
2572  { PPC::X9, 9U },
2573  { PPC::X10, 10U },
2574  { PPC::X11, 11U },
2575  { PPC::X12, 12U },
2576  { PPC::X13, 13U },
2577  { PPC::X14, 14U },
2578  { PPC::X15, 15U },
2579  { PPC::X16, 16U },
2580  { PPC::X17, 17U },
2581  { PPC::X18, 18U },
2582  { PPC::X19, 19U },
2583  { PPC::X20, 20U },
2584  { PPC::X21, 21U },
2585  { PPC::X22, 22U },
2586  { PPC::X23, 23U },
2587  { PPC::X24, 24U },
2588  { PPC::X25, 25U },
2589  { PPC::X26, 26U },
2590  { PPC::X27, 27U },
2591  { PPC::X28, 28U },
2592  { PPC::X29, 29U },
2593  { PPC::X30, 30U },
2594  { PPC::X31, 31U },
2595  { PPC::ZERO8, 0U },
2596};
2597extern const unsigned PPCDwarfFlavour0L2DwarfSize = array_lengthof(PPCDwarfFlavour0L2Dwarf);
2598
2599extern const MCRegisterInfo::DwarfLLVMRegPair PPCDwarfFlavour1L2Dwarf[] = {
2600  { PPC::CTR, 66U },
2601  { PPC::LR, 65U },
2602  { PPC::SPEFSCR, 112U },
2603  { PPC::ZERO, 0U },
2604  { PPC::CR0, 68U },
2605  { PPC::CR1, 69U },
2606  { PPC::CR2, 70U },
2607  { PPC::CR3, 71U },
2608  { PPC::CR4, 72U },
2609  { PPC::CR5, 73U },
2610  { PPC::CR6, 74U },
2611  { PPC::CR7, 75U },
2612  { PPC::CTR8, -2U },
2613  { PPC::F0, 32U },
2614  { PPC::F1, 33U },
2615  { PPC::F2, 34U },
2616  { PPC::F3, 35U },
2617  { PPC::F4, 36U },
2618  { PPC::F5, 37U },
2619  { PPC::F6, 38U },
2620  { PPC::F7, 39U },
2621  { PPC::F8, 40U },
2622  { PPC::F9, 41U },
2623  { PPC::F10, 42U },
2624  { PPC::F11, 43U },
2625  { PPC::F12, 44U },
2626  { PPC::F13, 45U },
2627  { PPC::F14, 46U },
2628  { PPC::F15, 47U },
2629  { PPC::F16, 48U },
2630  { PPC::F17, 49U },
2631  { PPC::F18, 50U },
2632  { PPC::F19, 51U },
2633  { PPC::F20, 52U },
2634  { PPC::F21, 53U },
2635  { PPC::F22, 54U },
2636  { PPC::F23, 55U },
2637  { PPC::F24, 56U },
2638  { PPC::F25, 57U },
2639  { PPC::F26, 58U },
2640  { PPC::F27, 59U },
2641  { PPC::F28, 60U },
2642  { PPC::F29, 61U },
2643  { PPC::F30, 62U },
2644  { PPC::F31, 63U },
2645  { PPC::LR8, -2U },
2646  { PPC::QF0, 32U },
2647  { PPC::QF1, 33U },
2648  { PPC::QF2, 34U },
2649  { PPC::QF3, 35U },
2650  { PPC::QF4, 36U },
2651  { PPC::QF5, 37U },
2652  { PPC::QF6, 38U },
2653  { PPC::QF7, 39U },
2654  { PPC::QF8, 40U },
2655  { PPC::QF9, 41U },
2656  { PPC::QF10, 42U },
2657  { PPC::QF11, 43U },
2658  { PPC::QF12, 44U },
2659  { PPC::QF13, 45U },
2660  { PPC::QF14, 46U },
2661  { PPC::QF15, 47U },
2662  { PPC::QF16, 48U },
2663  { PPC::QF17, 49U },
2664  { PPC::QF18, 50U },
2665  { PPC::QF19, 51U },
2666  { PPC::QF20, 52U },
2667  { PPC::QF21, 53U },
2668  { PPC::QF22, 54U },
2669  { PPC::QF23, 55U },
2670  { PPC::QF24, 56U },
2671  { PPC::QF25, 57U },
2672  { PPC::QF26, 58U },
2673  { PPC::QF27, 59U },
2674  { PPC::QF28, 60U },
2675  { PPC::QF29, 61U },
2676  { PPC::QF30, 62U },
2677  { PPC::QF31, 63U },
2678  { PPC::R0, 0U },
2679  { PPC::R1, 1U },
2680  { PPC::R2, 2U },
2681  { PPC::R3, 3U },
2682  { PPC::R4, 4U },
2683  { PPC::R5, 5U },
2684  { PPC::R6, 6U },
2685  { PPC::R7, 7U },
2686  { PPC::R8, 8U },
2687  { PPC::R9, 9U },
2688  { PPC::R10, 10U },
2689  { PPC::R11, 11U },
2690  { PPC::R12, 12U },
2691  { PPC::R13, 13U },
2692  { PPC::R14, 14U },
2693  { PPC::R15, 15U },
2694  { PPC::R16, 16U },
2695  { PPC::R17, 17U },
2696  { PPC::R18, 18U },
2697  { PPC::R19, 19U },
2698  { PPC::R20, 20U },
2699  { PPC::R21, 21U },
2700  { PPC::R22, 22U },
2701  { PPC::R23, 23U },
2702  { PPC::R24, 24U },
2703  { PPC::R25, 25U },
2704  { PPC::R26, 26U },
2705  { PPC::R27, 27U },
2706  { PPC::R28, 28U },
2707  { PPC::R29, 29U },
2708  { PPC::R30, 30U },
2709  { PPC::R31, 31U },
2710  { PPC::S0, 1200U },
2711  { PPC::S1, 1201U },
2712  { PPC::S2, 1202U },
2713  { PPC::S3, 1203U },
2714  { PPC::S4, 1204U },
2715  { PPC::S5, 1205U },
2716  { PPC::S6, 1206U },
2717  { PPC::S7, 1207U },
2718  { PPC::S8, 1208U },
2719  { PPC::S9, 1209U },
2720  { PPC::S10, 1210U },
2721  { PPC::S11, 1211U },
2722  { PPC::S12, 1212U },
2723  { PPC::S13, 1213U },
2724  { PPC::S14, 1214U },
2725  { PPC::S15, 1215U },
2726  { PPC::S16, 1216U },
2727  { PPC::S17, 1217U },
2728  { PPC::S18, 1218U },
2729  { PPC::S19, 1219U },
2730  { PPC::S20, 1220U },
2731  { PPC::S21, 1221U },
2732  { PPC::S22, 1222U },
2733  { PPC::S23, 1223U },
2734  { PPC::S24, 1224U },
2735  { PPC::S25, 1225U },
2736  { PPC::S26, 1226U },
2737  { PPC::S27, 1227U },
2738  { PPC::S28, 1228U },
2739  { PPC::S29, 1229U },
2740  { PPC::S30, 1230U },
2741  { PPC::S31, 1231U },
2742  { PPC::V0, 77U },
2743  { PPC::V1, 78U },
2744  { PPC::V2, 79U },
2745  { PPC::V3, 80U },
2746  { PPC::V4, 81U },
2747  { PPC::V5, 82U },
2748  { PPC::V6, 83U },
2749  { PPC::V7, 84U },
2750  { PPC::V8, 85U },
2751  { PPC::V9, 86U },
2752  { PPC::V10, 87U },
2753  { PPC::V11, 88U },
2754  { PPC::V12, 89U },
2755  { PPC::V13, 90U },
2756  { PPC::V14, 91U },
2757  { PPC::V15, 92U },
2758  { PPC::V16, 93U },
2759  { PPC::V17, 94U },
2760  { PPC::V18, 95U },
2761  { PPC::V19, 96U },
2762  { PPC::V20, 97U },
2763  { PPC::V21, 98U },
2764  { PPC::V22, 99U },
2765  { PPC::V23, 100U },
2766  { PPC::V24, 101U },
2767  { PPC::V25, 102U },
2768  { PPC::V26, 103U },
2769  { PPC::V27, 104U },
2770  { PPC::V28, 105U },
2771  { PPC::V29, 106U },
2772  { PPC::V30, 107U },
2773  { PPC::V31, 108U },
2774  { PPC::VF0, 77U },
2775  { PPC::VF1, 78U },
2776  { PPC::VF2, 79U },
2777  { PPC::VF3, 80U },
2778  { PPC::VF4, 81U },
2779  { PPC::VF5, 82U },
2780  { PPC::VF6, 83U },
2781  { PPC::VF7, 84U },
2782  { PPC::VF8, 85U },
2783  { PPC::VF9, 86U },
2784  { PPC::VF10, 87U },
2785  { PPC::VF11, 88U },
2786  { PPC::VF12, 89U },
2787  { PPC::VF13, 90U },
2788  { PPC::VF14, 91U },
2789  { PPC::VF15, 92U },
2790  { PPC::VF16, 93U },
2791  { PPC::VF17, 94U },
2792  { PPC::VF18, 95U },
2793  { PPC::VF19, 96U },
2794  { PPC::VF20, 97U },
2795  { PPC::VF21, 98U },
2796  { PPC::VF22, 99U },
2797  { PPC::VF23, 100U },
2798  { PPC::VF24, 101U },
2799  { PPC::VF25, 102U },
2800  { PPC::VF26, 103U },
2801  { PPC::VF27, 104U },
2802  { PPC::VF28, 105U },
2803  { PPC::VF29, 106U },
2804  { PPC::VF30, 107U },
2805  { PPC::VF31, 108U },
2806  { PPC::VSL0, 32U },
2807  { PPC::VSL1, 33U },
2808  { PPC::VSL2, 34U },
2809  { PPC::VSL3, 35U },
2810  { PPC::VSL4, 36U },
2811  { PPC::VSL5, 37U },
2812  { PPC::VSL6, 38U },
2813  { PPC::VSL7, 39U },
2814  { PPC::VSL8, 40U },
2815  { PPC::VSL9, 41U },
2816  { PPC::VSL10, 42U },
2817  { PPC::VSL11, 43U },
2818  { PPC::VSL12, 44U },
2819  { PPC::VSL13, 45U },
2820  { PPC::VSL14, 46U },
2821  { PPC::VSL15, 47U },
2822  { PPC::VSL16, 48U },
2823  { PPC::VSL17, 49U },
2824  { PPC::VSL18, 50U },
2825  { PPC::VSL19, 51U },
2826  { PPC::VSL20, 52U },
2827  { PPC::VSL21, 53U },
2828  { PPC::VSL22, 54U },
2829  { PPC::VSL23, 55U },
2830  { PPC::VSL24, 56U },
2831  { PPC::VSL25, 57U },
2832  { PPC::VSL26, 58U },
2833  { PPC::VSL27, 59U },
2834  { PPC::VSL28, 60U },
2835  { PPC::VSL29, 61U },
2836  { PPC::VSL30, 62U },
2837  { PPC::VSL31, 63U },
2838  { PPC::X0, -2U },
2839  { PPC::X1, -2U },
2840  { PPC::X2, -2U },
2841  { PPC::X3, -2U },
2842  { PPC::X4, -2U },
2843  { PPC::X5, -2U },
2844  { PPC::X6, -2U },
2845  { PPC::X7, -2U },
2846  { PPC::X8, -2U },
2847  { PPC::X9, -2U },
2848  { PPC::X10, -2U },
2849  { PPC::X11, -2U },
2850  { PPC::X12, -2U },
2851  { PPC::X13, -2U },
2852  { PPC::X14, -2U },
2853  { PPC::X15, -2U },
2854  { PPC::X16, -2U },
2855  { PPC::X17, -2U },
2856  { PPC::X18, -2U },
2857  { PPC::X19, -2U },
2858  { PPC::X20, -2U },
2859  { PPC::X21, -2U },
2860  { PPC::X22, -2U },
2861  { PPC::X23, -2U },
2862  { PPC::X24, -2U },
2863  { PPC::X25, -2U },
2864  { PPC::X26, -2U },
2865  { PPC::X27, -2U },
2866  { PPC::X28, -2U },
2867  { PPC::X29, -2U },
2868  { PPC::X30, -2U },
2869  { PPC::X31, -2U },
2870  { PPC::ZERO8, -2U },
2871};
2872extern const unsigned PPCDwarfFlavour1L2DwarfSize = array_lengthof(PPCDwarfFlavour1L2Dwarf);
2873
2874extern const MCRegisterInfo::DwarfLLVMRegPair PPCEHFlavour0L2Dwarf[] = {
2875  { PPC::CARRY, 76U },
2876  { PPC::CTR, -2U },
2877  { PPC::LR, -2U },
2878  { PPC::SPEFSCR, 612U },
2879  { PPC::VRSAVE, 109U },
2880  { PPC::XER, 76U },
2881  { PPC::ZERO, -2U },
2882  { PPC::CR0, 68U },
2883  { PPC::CR1, 69U },
2884  { PPC::CR2, 70U },
2885  { PPC::CR3, 71U },
2886  { PPC::CR4, 72U },
2887  { PPC::CR5, 73U },
2888  { PPC::CR6, 74U },
2889  { PPC::CR7, 75U },
2890  { PPC::CTR8, 66U },
2891  { PPC::F0, 32U },
2892  { PPC::F1, 33U },
2893  { PPC::F2, 34U },
2894  { PPC::F3, 35U },
2895  { PPC::F4, 36U },
2896  { PPC::F5, 37U },
2897  { PPC::F6, 38U },
2898  { PPC::F7, 39U },
2899  { PPC::F8, 40U },
2900  { PPC::F9, 41U },
2901  { PPC::F10, 42U },
2902  { PPC::F11, 43U },
2903  { PPC::F12, 44U },
2904  { PPC::F13, 45U },
2905  { PPC::F14, 46U },
2906  { PPC::F15, 47U },
2907  { PPC::F16, 48U },
2908  { PPC::F17, 49U },
2909  { PPC::F18, 50U },
2910  { PPC::F19, 51U },
2911  { PPC::F20, 52U },
2912  { PPC::F21, 53U },
2913  { PPC::F22, 54U },
2914  { PPC::F23, 55U },
2915  { PPC::F24, 56U },
2916  { PPC::F25, 57U },
2917  { PPC::F26, 58U },
2918  { PPC::F27, 59U },
2919  { PPC::F28, 60U },
2920  { PPC::F29, 61U },
2921  { PPC::F30, 62U },
2922  { PPC::F31, 63U },
2923  { PPC::LR8, 65U },
2924  { PPC::QF0, 32U },
2925  { PPC::QF1, 33U },
2926  { PPC::QF2, 34U },
2927  { PPC::QF3, 35U },
2928  { PPC::QF4, 36U },
2929  { PPC::QF5, 37U },
2930  { PPC::QF6, 38U },
2931  { PPC::QF7, 39U },
2932  { PPC::QF8, 40U },
2933  { PPC::QF9, 41U },
2934  { PPC::QF10, 42U },
2935  { PPC::QF11, 43U },
2936  { PPC::QF12, 44U },
2937  { PPC::QF13, 45U },
2938  { PPC::QF14, 46U },
2939  { PPC::QF15, 47U },
2940  { PPC::QF16, 48U },
2941  { PPC::QF17, 49U },
2942  { PPC::QF18, 50U },
2943  { PPC::QF19, 51U },
2944  { PPC::QF20, 52U },
2945  { PPC::QF21, 53U },
2946  { PPC::QF22, 54U },
2947  { PPC::QF23, 55U },
2948  { PPC::QF24, 56U },
2949  { PPC::QF25, 57U },
2950  { PPC::QF26, 58U },
2951  { PPC::QF27, 59U },
2952  { PPC::QF28, 60U },
2953  { PPC::QF29, 61U },
2954  { PPC::QF30, 62U },
2955  { PPC::QF31, 63U },
2956  { PPC::R0, -2U },
2957  { PPC::R1, -2U },
2958  { PPC::R2, -2U },
2959  { PPC::R3, -2U },
2960  { PPC::R4, -2U },
2961  { PPC::R5, -2U },
2962  { PPC::R6, -2U },
2963  { PPC::R7, -2U },
2964  { PPC::R8, -2U },
2965  { PPC::R9, -2U },
2966  { PPC::R10, -2U },
2967  { PPC::R11, -2U },
2968  { PPC::R12, -2U },
2969  { PPC::R13, -2U },
2970  { PPC::R14, -2U },
2971  { PPC::R15, -2U },
2972  { PPC::R16, -2U },
2973  { PPC::R17, -2U },
2974  { PPC::R18, -2U },
2975  { PPC::R19, -2U },
2976  { PPC::R20, -2U },
2977  { PPC::R21, -2U },
2978  { PPC::R22, -2U },
2979  { PPC::R23, -2U },
2980  { PPC::R24, -2U },
2981  { PPC::R25, -2U },
2982  { PPC::R26, -2U },
2983  { PPC::R27, -2U },
2984  { PPC::R28, -2U },
2985  { PPC::R29, -2U },
2986  { PPC::R30, -2U },
2987  { PPC::R31, -2U },
2988  { PPC::S0, 1200U },
2989  { PPC::S1, 1201U },
2990  { PPC::S2, 1202U },
2991  { PPC::S3, 1203U },
2992  { PPC::S4, 1204U },
2993  { PPC::S5, 1205U },
2994  { PPC::S6, 1206U },
2995  { PPC::S7, 1207U },
2996  { PPC::S8, 1208U },
2997  { PPC::S9, 1209U },
2998  { PPC::S10, 1210U },
2999  { PPC::S11, 1211U },
3000  { PPC::S12, 1212U },
3001  { PPC::S13, 1213U },
3002  { PPC::S14, 1214U },
3003  { PPC::S15, 1215U },
3004  { PPC::S16, 1216U },
3005  { PPC::S17, 1217U },
3006  { PPC::S18, 1218U },
3007  { PPC::S19, 1219U },
3008  { PPC::S20, 1220U },
3009  { PPC::S21, 1221U },
3010  { PPC::S22, 1222U },
3011  { PPC::S23, 1223U },
3012  { PPC::S24, 1224U },
3013  { PPC::S25, 1225U },
3014  { PPC::S26, 1226U },
3015  { PPC::S27, 1227U },
3016  { PPC::S28, 1228U },
3017  { PPC::S29, 1229U },
3018  { PPC::S30, 1230U },
3019  { PPC::S31, 1231U },
3020  { PPC::V0, 77U },
3021  { PPC::V1, 78U },
3022  { PPC::V2, 79U },
3023  { PPC::V3, 80U },
3024  { PPC::V4, 81U },
3025  { PPC::V5, 82U },
3026  { PPC::V6, 83U },
3027  { PPC::V7, 84U },
3028  { PPC::V8, 85U },
3029  { PPC::V9, 86U },
3030  { PPC::V10, 87U },
3031  { PPC::V11, 88U },
3032  { PPC::V12, 89U },
3033  { PPC::V13, 90U },
3034  { PPC::V14, 91U },
3035  { PPC::V15, 92U },
3036  { PPC::V16, 93U },
3037  { PPC::V17, 94U },
3038  { PPC::V18, 95U },
3039  { PPC::V19, 96U },
3040  { PPC::V20, 97U },
3041  { PPC::V21, 98U },
3042  { PPC::V22, 99U },
3043  { PPC::V23, 100U },
3044  { PPC::V24, 101U },
3045  { PPC::V25, 102U },
3046  { PPC::V26, 103U },
3047  { PPC::V27, 104U },
3048  { PPC::V28, 105U },
3049  { PPC::V29, 106U },
3050  { PPC::V30, 107U },
3051  { PPC::V31, 108U },
3052  { PPC::VF0, 77U },
3053  { PPC::VF1, 78U },
3054  { PPC::VF2, 79U },
3055  { PPC::VF3, 80U },
3056  { PPC::VF4, 81U },
3057  { PPC::VF5, 82U },
3058  { PPC::VF6, 83U },
3059  { PPC::VF7, 84U },
3060  { PPC::VF8, 85U },
3061  { PPC::VF9, 86U },
3062  { PPC::VF10, 87U },
3063  { PPC::VF11, 88U },
3064  { PPC::VF12, 89U },
3065  { PPC::VF13, 90U },
3066  { PPC::VF14, 91U },
3067  { PPC::VF15, 92U },
3068  { PPC::VF16, 93U },
3069  { PPC::VF17, 94U },
3070  { PPC::VF18, 95U },
3071  { PPC::VF19, 96U },
3072  { PPC::VF20, 97U },
3073  { PPC::VF21, 98U },
3074  { PPC::VF22, 99U },
3075  { PPC::VF23, 100U },
3076  { PPC::VF24, 101U },
3077  { PPC::VF25, 102U },
3078  { PPC::VF26, 103U },
3079  { PPC::VF27, 104U },
3080  { PPC::VF28, 105U },
3081  { PPC::VF29, 106U },
3082  { PPC::VF30, 107U },
3083  { PPC::VF31, 108U },
3084  { PPC::VSL0, 32U },
3085  { PPC::VSL1, 33U },
3086  { PPC::VSL2, 34U },
3087  { PPC::VSL3, 35U },
3088  { PPC::VSL4, 36U },
3089  { PPC::VSL5, 37U },
3090  { PPC::VSL6, 38U },
3091  { PPC::VSL7, 39U },
3092  { PPC::VSL8, 40U },
3093  { PPC::VSL9, 41U },
3094  { PPC::VSL10, 42U },
3095  { PPC::VSL11, 43U },
3096  { PPC::VSL12, 44U },
3097  { PPC::VSL13, 45U },
3098  { PPC::VSL14, 46U },
3099  { PPC::VSL15, 47U },
3100  { PPC::VSL16, 48U },
3101  { PPC::VSL17, 49U },
3102  { PPC::VSL18, 50U },
3103  { PPC::VSL19, 51U },
3104  { PPC::VSL20, 52U },
3105  { PPC::VSL21, 53U },
3106  { PPC::VSL22, 54U },
3107  { PPC::VSL23, 55U },
3108  { PPC::VSL24, 56U },
3109  { PPC::VSL25, 57U },
3110  { PPC::VSL26, 58U },
3111  { PPC::VSL27, 59U },
3112  { PPC::VSL28, 60U },
3113  { PPC::VSL29, 61U },
3114  { PPC::VSL30, 62U },
3115  { PPC::VSL31, 63U },
3116  { PPC::X0, 0U },
3117  { PPC::X1, 1U },
3118  { PPC::X2, 2U },
3119  { PPC::X3, 3U },
3120  { PPC::X4, 4U },
3121  { PPC::X5, 5U },
3122  { PPC::X6, 6U },
3123  { PPC::X7, 7U },
3124  { PPC::X8, 8U },
3125  { PPC::X9, 9U },
3126  { PPC::X10, 10U },
3127  { PPC::X11, 11U },
3128  { PPC::X12, 12U },
3129  { PPC::X13, 13U },
3130  { PPC::X14, 14U },
3131  { PPC::X15, 15U },
3132  { PPC::X16, 16U },
3133  { PPC::X17, 17U },
3134  { PPC::X18, 18U },
3135  { PPC::X19, 19U },
3136  { PPC::X20, 20U },
3137  { PPC::X21, 21U },
3138  { PPC::X22, 22U },
3139  { PPC::X23, 23U },
3140  { PPC::X24, 24U },
3141  { PPC::X25, 25U },
3142  { PPC::X26, 26U },
3143  { PPC::X27, 27U },
3144  { PPC::X28, 28U },
3145  { PPC::X29, 29U },
3146  { PPC::X30, 30U },
3147  { PPC::X31, 31U },
3148  { PPC::ZERO8, 0U },
3149};
3150extern const unsigned PPCEHFlavour0L2DwarfSize = array_lengthof(PPCEHFlavour0L2Dwarf);
3151
3152extern const MCRegisterInfo::DwarfLLVMRegPair PPCEHFlavour1L2Dwarf[] = {
3153  { PPC::CTR, 66U },
3154  { PPC::LR, 65U },
3155  { PPC::SPEFSCR, 112U },
3156  { PPC::ZERO, 0U },
3157  { PPC::CR0, 68U },
3158  { PPC::CR1, 69U },
3159  { PPC::CR2, 70U },
3160  { PPC::CR3, 71U },
3161  { PPC::CR4, 72U },
3162  { PPC::CR5, 73U },
3163  { PPC::CR6, 74U },
3164  { PPC::CR7, 75U },
3165  { PPC::CTR8, -2U },
3166  { PPC::F0, 32U },
3167  { PPC::F1, 33U },
3168  { PPC::F2, 34U },
3169  { PPC::F3, 35U },
3170  { PPC::F4, 36U },
3171  { PPC::F5, 37U },
3172  { PPC::F6, 38U },
3173  { PPC::F7, 39U },
3174  { PPC::F8, 40U },
3175  { PPC::F9, 41U },
3176  { PPC::F10, 42U },
3177  { PPC::F11, 43U },
3178  { PPC::F12, 44U },
3179  { PPC::F13, 45U },
3180  { PPC::F14, 46U },
3181  { PPC::F15, 47U },
3182  { PPC::F16, 48U },
3183  { PPC::F17, 49U },
3184  { PPC::F18, 50U },
3185  { PPC::F19, 51U },
3186  { PPC::F20, 52U },
3187  { PPC::F21, 53U },
3188  { PPC::F22, 54U },
3189  { PPC::F23, 55U },
3190  { PPC::F24, 56U },
3191  { PPC::F25, 57U },
3192  { PPC::F26, 58U },
3193  { PPC::F27, 59U },
3194  { PPC::F28, 60U },
3195  { PPC::F29, 61U },
3196  { PPC::F30, 62U },
3197  { PPC::F31, 63U },
3198  { PPC::LR8, -2U },
3199  { PPC::QF0, 32U },
3200  { PPC::QF1, 33U },
3201  { PPC::QF2, 34U },
3202  { PPC::QF3, 35U },
3203  { PPC::QF4, 36U },
3204  { PPC::QF5, 37U },
3205  { PPC::QF6, 38U },
3206  { PPC::QF7, 39U },
3207  { PPC::QF8, 40U },
3208  { PPC::QF9, 41U },
3209  { PPC::QF10, 42U },
3210  { PPC::QF11, 43U },
3211  { PPC::QF12, 44U },
3212  { PPC::QF13, 45U },
3213  { PPC::QF14, 46U },
3214  { PPC::QF15, 47U },
3215  { PPC::QF16, 48U },
3216  { PPC::QF17, 49U },
3217  { PPC::QF18, 50U },
3218  { PPC::QF19, 51U },
3219  { PPC::QF20, 52U },
3220  { PPC::QF21, 53U },
3221  { PPC::QF22, 54U },
3222  { PPC::QF23, 55U },
3223  { PPC::QF24, 56U },
3224  { PPC::QF25, 57U },
3225  { PPC::QF26, 58U },
3226  { PPC::QF27, 59U },
3227  { PPC::QF28, 60U },
3228  { PPC::QF29, 61U },
3229  { PPC::QF30, 62U },
3230  { PPC::QF31, 63U },
3231  { PPC::R0, 0U },
3232  { PPC::R1, 1U },
3233  { PPC::R2, 2U },
3234  { PPC::R3, 3U },
3235  { PPC::R4, 4U },
3236  { PPC::R5, 5U },
3237  { PPC::R6, 6U },
3238  { PPC::R7, 7U },
3239  { PPC::R8, 8U },
3240  { PPC::R9, 9U },
3241  { PPC::R10, 10U },
3242  { PPC::R11, 11U },
3243  { PPC::R12, 12U },
3244  { PPC::R13, 13U },
3245  { PPC::R14, 14U },
3246  { PPC::R15, 15U },
3247  { PPC::R16, 16U },
3248  { PPC::R17, 17U },
3249  { PPC::R18, 18U },
3250  { PPC::R19, 19U },
3251  { PPC::R20, 20U },
3252  { PPC::R21, 21U },
3253  { PPC::R22, 22U },
3254  { PPC::R23, 23U },
3255  { PPC::R24, 24U },
3256  { PPC::R25, 25U },
3257  { PPC::R26, 26U },
3258  { PPC::R27, 27U },
3259  { PPC::R28, 28U },
3260  { PPC::R29, 29U },
3261  { PPC::R30, 30U },
3262  { PPC::R31, 31U },
3263  { PPC::S0, 1200U },
3264  { PPC::S1, 1201U },
3265  { PPC::S2, 1202U },
3266  { PPC::S3, 1203U },
3267  { PPC::S4, 1204U },
3268  { PPC::S5, 1205U },
3269  { PPC::S6, 1206U },
3270  { PPC::S7, 1207U },
3271  { PPC::S8, 1208U },
3272  { PPC::S9, 1209U },
3273  { PPC::S10, 1210U },
3274  { PPC::S11, 1211U },
3275  { PPC::S12, 1212U },
3276  { PPC::S13, 1213U },
3277  { PPC::S14, 1214U },
3278  { PPC::S15, 1215U },
3279  { PPC::S16, 1216U },
3280  { PPC::S17, 1217U },
3281  { PPC::S18, 1218U },
3282  { PPC::S19, 1219U },
3283  { PPC::S20, 1220U },
3284  { PPC::S21, 1221U },
3285  { PPC::S22, 1222U },
3286  { PPC::S23, 1223U },
3287  { PPC::S24, 1224U },
3288  { PPC::S25, 1225U },
3289  { PPC::S26, 1226U },
3290  { PPC::S27, 1227U },
3291  { PPC::S28, 1228U },
3292  { PPC::S29, 1229U },
3293  { PPC::S30, 1230U },
3294  { PPC::S31, 1231U },
3295  { PPC::V0, 77U },
3296  { PPC::V1, 78U },
3297  { PPC::V2, 79U },
3298  { PPC::V3, 80U },
3299  { PPC::V4, 81U },
3300  { PPC::V5, 82U },
3301  { PPC::V6, 83U },
3302  { PPC::V7, 84U },
3303  { PPC::V8, 85U },
3304  { PPC::V9, 86U },
3305  { PPC::V10, 87U },
3306  { PPC::V11, 88U },
3307  { PPC::V12, 89U },
3308  { PPC::V13, 90U },
3309  { PPC::V14, 91U },
3310  { PPC::V15, 92U },
3311  { PPC::V16, 93U },
3312  { PPC::V17, 94U },
3313  { PPC::V18, 95U },
3314  { PPC::V19, 96U },
3315  { PPC::V20, 97U },
3316  { PPC::V21, 98U },
3317  { PPC::V22, 99U },
3318  { PPC::V23, 100U },
3319  { PPC::V24, 101U },
3320  { PPC::V25, 102U },
3321  { PPC::V26, 103U },
3322  { PPC::V27, 104U },
3323  { PPC::V28, 105U },
3324  { PPC::V29, 106U },
3325  { PPC::V30, 107U },
3326  { PPC::V31, 108U },
3327  { PPC::VF0, 77U },
3328  { PPC::VF1, 78U },
3329  { PPC::VF2, 79U },
3330  { PPC::VF3, 80U },
3331  { PPC::VF4, 81U },
3332  { PPC::VF5, 82U },
3333  { PPC::VF6, 83U },
3334  { PPC::VF7, 84U },
3335  { PPC::VF8, 85U },
3336  { PPC::VF9, 86U },
3337  { PPC::VF10, 87U },
3338  { PPC::VF11, 88U },
3339  { PPC::VF12, 89U },
3340  { PPC::VF13, 90U },
3341  { PPC::VF14, 91U },
3342  { PPC::VF15, 92U },
3343  { PPC::VF16, 93U },
3344  { PPC::VF17, 94U },
3345  { PPC::VF18, 95U },
3346  { PPC::VF19, 96U },
3347  { PPC::VF20, 97U },
3348  { PPC::VF21, 98U },
3349  { PPC::VF22, 99U },
3350  { PPC::VF23, 100U },
3351  { PPC::VF24, 101U },
3352  { PPC::VF25, 102U },
3353  { PPC::VF26, 103U },
3354  { PPC::VF27, 104U },
3355  { PPC::VF28, 105U },
3356  { PPC::VF29, 106U },
3357  { PPC::VF30, 107U },
3358  { PPC::VF31, 108U },
3359  { PPC::VSL0, 32U },
3360  { PPC::VSL1, 33U },
3361  { PPC::VSL2, 34U },
3362  { PPC::VSL3, 35U },
3363  { PPC::VSL4, 36U },
3364  { PPC::VSL5, 37U },
3365  { PPC::VSL6, 38U },
3366  { PPC::VSL7, 39U },
3367  { PPC::VSL8, 40U },
3368  { PPC::VSL9, 41U },
3369  { PPC::VSL10, 42U },
3370  { PPC::VSL11, 43U },
3371  { PPC::VSL12, 44U },
3372  { PPC::VSL13, 45U },
3373  { PPC::VSL14, 46U },
3374  { PPC::VSL15, 47U },
3375  { PPC::VSL16, 48U },
3376  { PPC::VSL17, 49U },
3377  { PPC::VSL18, 50U },
3378  { PPC::VSL19, 51U },
3379  { PPC::VSL20, 52U },
3380  { PPC::VSL21, 53U },
3381  { PPC::VSL22, 54U },
3382  { PPC::VSL23, 55U },
3383  { PPC::VSL24, 56U },
3384  { PPC::VSL25, 57U },
3385  { PPC::VSL26, 58U },
3386  { PPC::VSL27, 59U },
3387  { PPC::VSL28, 60U },
3388  { PPC::VSL29, 61U },
3389  { PPC::VSL30, 62U },
3390  { PPC::VSL31, 63U },
3391  { PPC::X0, -2U },
3392  { PPC::X1, -2U },
3393  { PPC::X2, -2U },
3394  { PPC::X3, -2U },
3395  { PPC::X4, -2U },
3396  { PPC::X5, -2U },
3397  { PPC::X6, -2U },
3398  { PPC::X7, -2U },
3399  { PPC::X8, -2U },
3400  { PPC::X9, -2U },
3401  { PPC::X10, -2U },
3402  { PPC::X11, -2U },
3403  { PPC::X12, -2U },
3404  { PPC::X13, -2U },
3405  { PPC::X14, -2U },
3406  { PPC::X15, -2U },
3407  { PPC::X16, -2U },
3408  { PPC::X17, -2U },
3409  { PPC::X18, -2U },
3410  { PPC::X19, -2U },
3411  { PPC::X20, -2U },
3412  { PPC::X21, -2U },
3413  { PPC::X22, -2U },
3414  { PPC::X23, -2U },
3415  { PPC::X24, -2U },
3416  { PPC::X25, -2U },
3417  { PPC::X26, -2U },
3418  { PPC::X27, -2U },
3419  { PPC::X28, -2U },
3420  { PPC::X29, -2U },
3421  { PPC::X30, -2U },
3422  { PPC::X31, -2U },
3423  { PPC::ZERO8, -2U },
3424};
3425extern const unsigned PPCEHFlavour1L2DwarfSize = array_lengthof(PPCEHFlavour1L2Dwarf);
3426
3427extern const uint16_t PPCRegEncodingTable[] = {
3428  0,
3429  0,
3430  1,
3431  9,
3432  0,
3433  8,
3434  0,
3435  512,
3436  256,
3437  1,
3438  0,
3439  0,
3440  0,
3441  1,
3442  2,
3443  3,
3444  4,
3445  5,
3446  6,
3447  7,
3448  9,
3449  0,
3450  1,
3451  2,
3452  3,
3453  4,
3454  5,
3455  6,
3456  7,
3457  8,
3458  9,
3459  10,
3460  11,
3461  12,
3462  13,
3463  14,
3464  15,
3465  16,
3466  17,
3467  18,
3468  19,
3469  20,
3470  21,
3471  22,
3472  23,
3473  24,
3474  25,
3475  26,
3476  27,
3477  28,
3478  29,
3479  30,
3480  31,
3481  0,
3482  8,
3483  0,
3484  1,
3485  2,
3486  3,
3487  4,
3488  5,
3489  6,
3490  7,
3491  8,
3492  9,
3493  10,
3494  11,
3495  12,
3496  13,
3497  14,
3498  15,
3499  16,
3500  17,
3501  18,
3502  19,
3503  20,
3504  21,
3505  22,
3506  23,
3507  24,
3508  25,
3509  26,
3510  27,
3511  28,
3512  29,
3513  30,
3514  31,
3515  0,
3516  1,
3517  2,
3518  3,
3519  4,
3520  5,
3521  6,
3522  7,
3523  8,
3524  9,
3525  10,
3526  11,
3527  12,
3528  13,
3529  14,
3530  15,
3531  16,
3532  17,
3533  18,
3534  19,
3535  20,
3536  21,
3537  22,
3538  23,
3539  24,
3540  25,
3541  26,
3542  27,
3543  28,
3544  29,
3545  30,
3546  31,
3547  0,
3548  1,
3549  2,
3550  3,
3551  4,
3552  5,
3553  6,
3554  7,
3555  8,
3556  9,
3557  10,
3558  11,
3559  12,
3560  13,
3561  14,
3562  15,
3563  16,
3564  17,
3565  18,
3566  19,
3567  20,
3568  21,
3569  22,
3570  23,
3571  24,
3572  25,
3573  26,
3574  27,
3575  28,
3576  29,
3577  30,
3578  31,
3579  0,
3580  1,
3581  2,
3582  3,
3583  4,
3584  5,
3585  6,
3586  7,
3587  8,
3588  9,
3589  10,
3590  11,
3591  12,
3592  13,
3593  14,
3594  15,
3595  16,
3596  17,
3597  18,
3598  19,
3599  20,
3600  21,
3601  22,
3602  23,
3603  24,
3604  25,
3605  26,
3606  27,
3607  28,
3608  29,
3609  30,
3610  31,
3611  32,
3612  33,
3613  34,
3614  35,
3615  36,
3616  37,
3617  38,
3618  39,
3619  40,
3620  41,
3621  42,
3622  43,
3623  44,
3624  45,
3625  46,
3626  47,
3627  48,
3628  49,
3629  50,
3630  51,
3631  52,
3632  53,
3633  54,
3634  55,
3635  56,
3636  57,
3637  58,
3638  59,
3639  60,
3640  61,
3641  62,
3642  63,
3643  0,
3644  1,
3645  2,
3646  3,
3647  4,
3648  5,
3649  6,
3650  7,
3651  8,
3652  9,
3653  10,
3654  11,
3655  12,
3656  13,
3657  14,
3658  15,
3659  16,
3660  17,
3661  18,
3662  19,
3663  20,
3664  21,
3665  22,
3666  23,
3667  24,
3668  25,
3669  26,
3670  27,
3671  28,
3672  29,
3673  30,
3674  31,
3675  32,
3676  33,
3677  34,
3678  35,
3679  36,
3680  37,
3681  38,
3682  39,
3683  40,
3684  41,
3685  42,
3686  43,
3687  44,
3688  45,
3689  46,
3690  47,
3691  48,
3692  49,
3693  50,
3694  51,
3695  52,
3696  53,
3697  54,
3698  55,
3699  56,
3700  57,
3701  58,
3702  59,
3703  60,
3704  61,
3705  62,
3706  63,
3707  0,
3708  1,
3709  2,
3710  3,
3711  4,
3712  5,
3713  6,
3714  7,
3715  8,
3716  9,
3717  10,
3718  11,
3719  12,
3720  13,
3721  14,
3722  15,
3723  16,
3724  17,
3725  18,
3726  19,
3727  20,
3728  21,
3729  22,
3730  23,
3731  24,
3732  25,
3733  26,
3734  27,
3735  28,
3736  29,
3737  30,
3738  31,
3739  0,
3740  2,
3741  6,
3742  10,
3743  14,
3744  18,
3745  22,
3746  26,
3747  30,
3748  1,
3749  5,
3750  9,
3751  13,
3752  17,
3753  21,
3754  25,
3755  29,
3756  0,
3757  4,
3758  8,
3759  12,
3760  16,
3761  20,
3762  24,
3763  28,
3764  3,
3765  7,
3766  11,
3767  15,
3768  19,
3769  23,
3770  27,
3771  31,
3772};
3773static inline void InitPPCMCRegisterInfo(MCRegisterInfo *RI, unsigned RA, unsigned DwarfFlavour = 0, unsigned EHFlavour = 0, unsigned PC = 0) {
3774  RI->InitMCRegisterInfo(PPCRegDesc, 344, RA, PC, PPCMCRegisterClasses, 34, PPCRegUnitRoots, 171, PPCRegDiffLists, PPCLaneMaskLists, PPCRegStrings, PPCRegClassStrings, PPCSubRegIdxLists, 7,
3775PPCSubRegIdxRanges, PPCRegEncodingTable);
3776
3777  switch (DwarfFlavour) {
3778  default:
3779    llvm_unreachable("Unknown DWARF flavour");
3780  case 0:
3781    RI->mapDwarfRegsToLLVMRegs(PPCDwarfFlavour0Dwarf2L, PPCDwarfFlavour0Dwarf2LSize, false);
3782    break;
3783  case 1:
3784    RI->mapDwarfRegsToLLVMRegs(PPCDwarfFlavour1Dwarf2L, PPCDwarfFlavour1Dwarf2LSize, false);
3785    break;
3786  }
3787  switch (EHFlavour) {
3788  default:
3789    llvm_unreachable("Unknown DWARF flavour");
3790  case 0:
3791    RI->mapDwarfRegsToLLVMRegs(PPCEHFlavour0Dwarf2L, PPCEHFlavour0Dwarf2LSize, true);
3792    break;
3793  case 1:
3794    RI->mapDwarfRegsToLLVMRegs(PPCEHFlavour1Dwarf2L, PPCEHFlavour1Dwarf2LSize, true);
3795    break;
3796  }
3797  switch (DwarfFlavour) {
3798  default:
3799    llvm_unreachable("Unknown DWARF flavour");
3800  case 0:
3801    RI->mapLLVMRegsToDwarfRegs(PPCDwarfFlavour0L2Dwarf, PPCDwarfFlavour0L2DwarfSize, false);
3802    break;
3803  case 1:
3804    RI->mapLLVMRegsToDwarfRegs(PPCDwarfFlavour1L2Dwarf, PPCDwarfFlavour1L2DwarfSize, false);
3805    break;
3806  }
3807  switch (EHFlavour) {
3808  default:
3809    llvm_unreachable("Unknown DWARF flavour");
3810  case 0:
3811    RI->mapLLVMRegsToDwarfRegs(PPCEHFlavour0L2Dwarf, PPCEHFlavour0L2DwarfSize, true);
3812    break;
3813  case 1:
3814    RI->mapLLVMRegsToDwarfRegs(PPCEHFlavour1L2Dwarf, PPCEHFlavour1L2DwarfSize, true);
3815    break;
3816  }
3817}
3818
3819} // end namespace llvm
3820
3821#endif // GET_REGINFO_MC_DESC
3822
3823/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
3824|*                                                                            *|
3825|* Register Information Header Fragment                                       *|
3826|*                                                                            *|
3827|* Automatically generated file, do not edit!                                 *|
3828|*                                                                            *|
3829\*===----------------------------------------------------------------------===*/
3830
3831
3832#ifdef GET_REGINFO_HEADER
3833#undef GET_REGINFO_HEADER
3834
3835#include "llvm/CodeGen/TargetRegisterInfo.h"
3836
3837namespace llvm {
3838
3839class PPCFrameLowering;
3840
3841struct PPCGenRegisterInfo : public TargetRegisterInfo {
3842  explicit PPCGenRegisterInfo(unsigned RA, unsigned D = 0, unsigned E = 0,
3843      unsigned PC = 0, unsigned HwMode = 0);
3844  unsigned composeSubRegIndicesImpl(unsigned, unsigned) const override;
3845  LaneBitmask composeSubRegIndexLaneMaskImpl(unsigned, LaneBitmask) const override;
3846  LaneBitmask reverseComposeSubRegIndexLaneMaskImpl(unsigned, LaneBitmask) const override;
3847  const TargetRegisterClass *getSubClassWithSubReg(const TargetRegisterClass*, unsigned) const override;
3848  const RegClassWeight &getRegClassWeight(const TargetRegisterClass *RC) const override;
3849  unsigned getRegUnitWeight(unsigned RegUnit) const override;
3850  unsigned getNumRegPressureSets() const override;
3851  const char *getRegPressureSetName(unsigned Idx) const override;
3852  unsigned getRegPressureSetLimit(const MachineFunction &MF, unsigned Idx) const override;
3853  const int *getRegClassPressureSets(const TargetRegisterClass *RC) const override;
3854  const int *getRegUnitPressureSets(unsigned RegUnit) const override;
3855  ArrayRef<const char *> getRegMaskNames() const override;
3856  ArrayRef<const uint32_t *> getRegMasks() const override;
3857  /// Devirtualized TargetFrameLowering.
3858  static const PPCFrameLowering *getFrameLowering(
3859      const MachineFunction &MF);
3860};
3861
3862namespace PPC { // Register classes
3863  extern const TargetRegisterClass VSSRCRegClass;
3864  extern const TargetRegisterClass GPRCRegClass;
3865  extern const TargetRegisterClass GPRC_NOR0RegClass;
3866  extern const TargetRegisterClass GPRC_and_GPRC_NOR0RegClass;
3867  extern const TargetRegisterClass CRBITRCRegClass;
3868  extern const TargetRegisterClass F4RCRegClass;
3869  extern const TargetRegisterClass CRRCRegClass;
3870  extern const TargetRegisterClass CARRYRCRegClass;
3871  extern const TargetRegisterClass CTRRCRegClass;
3872  extern const TargetRegisterClass VRSAVERCRegClass;
3873  extern const TargetRegisterClass SPILLTOVSRRCRegClass;
3874  extern const TargetRegisterClass VSFRCRegClass;
3875  extern const TargetRegisterClass G8RCRegClass;
3876  extern const TargetRegisterClass G8RC_NOX0RegClass;
3877  extern const TargetRegisterClass SPILLTOVSRRC_and_VSFRCRegClass;
3878  extern const TargetRegisterClass G8RC_and_G8RC_NOX0RegClass;
3879  extern const TargetRegisterClass F8RCRegClass;
3880  extern const TargetRegisterClass SPERCRegClass;
3881  extern const TargetRegisterClass VFRCRegClass;
3882  extern const TargetRegisterClass SPERC_with_sub_32_in_GPRC_NOR0RegClass;
3883  extern const TargetRegisterClass SPILLTOVSRRC_and_VFRCRegClass;
3884  extern const TargetRegisterClass SPILLTOVSRRC_and_F4RCRegClass;
3885  extern const TargetRegisterClass CTRRC8RegClass;
3886  extern const TargetRegisterClass VSRCRegClass;
3887  extern const TargetRegisterClass VSRC_with_sub_64_in_SPILLTOVSRRCRegClass;
3888  extern const TargetRegisterClass QSRCRegClass;
3889  extern const TargetRegisterClass VRRCRegClass;
3890  extern const TargetRegisterClass VSLRCRegClass;
3891  extern const TargetRegisterClass VRRC_with_sub_64_in_SPILLTOVSRRCRegClass;
3892  extern const TargetRegisterClass QSRC_with_sub_64_in_SPILLTOVSRRCRegClass;
3893  extern const TargetRegisterClass VSLRC_with_sub_64_in_SPILLTOVSRRCRegClass;
3894  extern const TargetRegisterClass QBRCRegClass;
3895  extern const TargetRegisterClass QFRCRegClass;
3896  extern const TargetRegisterClass QBRC_with_sub_64_in_SPILLTOVSRRCRegClass;
3897} // end namespace PPC
3898
3899} // end namespace llvm
3900
3901#endif // GET_REGINFO_HEADER
3902
3903/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
3904|*                                                                            *|
3905|* Target Register and Register Classes Information                           *|
3906|*                                                                            *|
3907|* Automatically generated file, do not edit!                                 *|
3908|*                                                                            *|
3909\*===----------------------------------------------------------------------===*/
3910
3911
3912#ifdef GET_REGINFO_TARGET_DESC
3913#undef GET_REGINFO_TARGET_DESC
3914
3915namespace llvm {
3916
3917extern const MCRegisterClass PPCMCRegisterClasses[];
3918
3919static const MVT::SimpleValueType VTLists[] = {
3920  /* 0 */ MVT::i1, MVT::Other,
3921  /* 2 */ MVT::i32, MVT::Other,
3922  /* 4 */ MVT::i64, MVT::Other,
3923  /* 6 */ MVT::i32, MVT::f32, MVT::Other,
3924  /* 9 */ MVT::i64, MVT::f64, MVT::Other,
3925  /* 12 */ MVT::v16i8, MVT::v8i16, MVT::v4i32, MVT::v2i64, MVT::v1i128, MVT::v4f32, MVT::v2f64, MVT::f128, MVT::Other,
3926  /* 21 */ MVT::v4i1, MVT::Other,
3927  /* 23 */ MVT::v4i32, MVT::v4f32, MVT::v2f64, MVT::v2i64, MVT::Other,
3928  /* 28 */ MVT::v4f32, MVT::Other,
3929  /* 30 */ MVT::v4f64, MVT::Other,
3930};
3931
3932static const char *const SubRegIndexNameTable[] = { "sub_32", "sub_64", "sub_eq", "sub_gt", "sub_lt", "sub_un", "" };
3933
3934
3935static const LaneBitmask SubRegIndexLaneMaskTable[] = {
3936  LaneBitmask::getAll(),
3937  LaneBitmask(0x00000001), // sub_32
3938  LaneBitmask(0x00000002), // sub_64
3939  LaneBitmask(0x00000004), // sub_eq
3940  LaneBitmask(0x00000008), // sub_gt
3941  LaneBitmask(0x00000010), // sub_lt
3942  LaneBitmask(0x00000020), // sub_un
3943 };
3944
3945
3946
3947static const TargetRegisterInfo::RegClassInfo RegClassInfos[] = {
3948  // Mode = 0 (Default)
3949  { 32, 32, 32, VTLists+7 },    // VSSRC
3950  { 32, 32, 32, VTLists+6 },    // GPRC
3951  { 32, 32, 32, VTLists+6 },    // GPRC_NOR0
3952  { 32, 32, 32, VTLists+6 },    // GPRC_and_GPRC_NOR0
3953  { 32, 32, 32, VTLists+0 },    // CRBITRC
3954  { 32, 32, 32, VTLists+7 },    // F4RC
3955  { 32, 32, 32, VTLists+2 },    // CRRC
3956  { 32, 32, 32, VTLists+2 },    // CARRYRC
3957  { 32, 32, 32, VTLists+2 },    // CTRRC
3958  { 32, 32, 32, VTLists+2 },    // VRSAVERC
3959  { 64, 64, 64, VTLists+9 },    // SPILLTOVSRRC
3960  { 64, 64, 64, VTLists+10 },    // VSFRC
3961  { 64, 64, 64, VTLists+4 },    // G8RC
3962  { 64, 64, 64, VTLists+4 },    // G8RC_NOX0
3963  { 64, 64, 64, VTLists+10 },    // SPILLTOVSRRC_and_VSFRC
3964  { 64, 64, 64, VTLists+4 },    // G8RC_and_G8RC_NOX0
3965  { 64, 64, 64, VTLists+10 },    // F8RC
3966  { 64, 64, 64, VTLists+10 },    // SPERC
3967  { 64, 64, 64, VTLists+10 },    // VFRC
3968  { 64, 64, 64, VTLists+10 },    // SPERC_with_sub_32_in_GPRC_NOR0
3969  { 64, 64, 64, VTLists+10 },    // SPILLTOVSRRC_and_VFRC
3970  { 64, 64, 64, VTLists+10 },    // SPILLTOVSRRC_and_F4RC
3971  { 64, 64, 64, VTLists+4 },    // CTRRC8
3972  { 128, 128, 128, VTLists+23 },    // VSRC
3973  { 128, 128, 128, VTLists+23 },    // VSRC_with_sub_64_in_SPILLTOVSRRC
3974  { 128, 128, 128, VTLists+28 },    // QSRC
3975  { 128, 128, 128, VTLists+12 },    // VRRC
3976  { 128, 128, 128, VTLists+23 },    // VSLRC
3977  { 128, 128, 128, VTLists+12 },    // VRRC_with_sub_64_in_SPILLTOVSRRC
3978  { 128, 128, 128, VTLists+28 },    // QSRC_with_sub_64_in_SPILLTOVSRRC
3979  { 128, 128, 128, VTLists+23 },    // VSLRC_with_sub_64_in_SPILLTOVSRRC
3980  { 256, 256, 256, VTLists+21 },    // QBRC
3981  { 256, 256, 256, VTLists+30 },    // QFRC
3982  { 256, 256, 256, VTLists+30 },    // QBRC_with_sub_64_in_SPILLTOVSRRC
3983};
3984
3985static const TargetRegisterClass *const NullRegClasses[] = { nullptr };
3986
3987static const uint32_t VSSRCSubClassMask[] = {
3988  0x00354821, 0x00000000,
3989  0xff800000, 0x00000003, // sub_64
3990};
3991
3992static const uint32_t GPRCSubClassMask[] = {
3993  0x0000000a, 0x00000000,
3994  0x000a9000, 0x00000000, // sub_32
3995};
3996
3997static const uint32_t GPRC_NOR0SubClassMask[] = {
3998  0x0000000c, 0x00000000,
3999  0x0008a000, 0x00000000, // sub_32
4000};
4001
4002static const uint32_t GPRC_and_GPRC_NOR0SubClassMask[] = {
4003  0x00000008, 0x00000000,
4004  0x00088000, 0x00000000, // sub_32
4005};
4006
4007static const uint32_t CRBITRCSubClassMask[] = {
4008  0x00000010, 0x00000000,
4009  0x00000040, 0x00000000, // sub_eq
4010  0x00000040, 0x00000000, // sub_gt
4011  0x00000040, 0x00000000, // sub_lt
4012  0x00000040, 0x00000000, // sub_un
4013};
4014
4015static const uint32_t F4RCSubClassMask[] = {
4016  0x00210020, 0x00000000,
4017  0xea000000, 0x00000003, // sub_64
4018};
4019
4020static const uint32_t CRRCSubClassMask[] = {
4021  0x00000040, 0x00000000,
4022};
4023
4024static const uint32_t CARRYRCSubClassMask[] = {
4025  0x00000080, 0x00000000,
4026};
4027
4028static const uint32_t CTRRCSubClassMask[] = {
4029  0x00000100, 0x00000000,
4030};
4031
4032static const uint32_t VRSAVERCSubClassMask[] = {
4033  0x00000200, 0x00000000,
4034};
4035
4036static const uint32_t SPILLTOVSRRCSubClassMask[] = {
4037  0x0030d400, 0x00000000,
4038  0x71000000, 0x00000002, // sub_64
4039};
4040
4041static const uint32_t VSFRCSubClassMask[] = {
4042  0x00354800, 0x00000000,
4043  0xff800000, 0x00000003, // sub_64
4044};
4045
4046static const uint32_t G8RCSubClassMask[] = {
4047  0x00009000, 0x00000000,
4048};
4049
4050static const uint32_t G8RC_NOX0SubClassMask[] = {
4051  0x0000a000, 0x00000000,
4052};
4053
4054static const uint32_t SPILLTOVSRRC_and_VSFRCSubClassMask[] = {
4055  0x00304000, 0x00000000,
4056  0x71000000, 0x00000002, // sub_64
4057};
4058
4059static const uint32_t G8RC_and_G8RC_NOX0SubClassMask[] = {
4060  0x00008000, 0x00000000,
4061};
4062
4063static const uint32_t F8RCSubClassMask[] = {
4064  0x00210000, 0x00000000,
4065  0xea000000, 0x00000003, // sub_64
4066};
4067
4068static const uint32_t SPERCSubClassMask[] = {
4069  0x000a0000, 0x00000000,
4070};
4071
4072static const uint32_t VFRCSubClassMask[] = {
4073  0x00140000, 0x00000000,
4074  0x14000000, 0x00000000, // sub_64
4075};
4076
4077static const uint32_t SPERC_with_sub_32_in_GPRC_NOR0SubClassMask[] = {
4078  0x00080000, 0x00000000,
4079};
4080
4081static const uint32_t SPILLTOVSRRC_and_VFRCSubClassMask[] = {
4082  0x00100000, 0x00000000,
4083  0x10000000, 0x00000000, // sub_64
4084};
4085
4086static const uint32_t SPILLTOVSRRC_and_F4RCSubClassMask[] = {
4087  0x00200000, 0x00000000,
4088  0x60000000, 0x00000002, // sub_64
4089};
4090
4091static const uint32_t CTRRC8SubClassMask[] = {
4092  0x00400000, 0x00000000,
4093};
4094
4095static const uint32_t VSRCSubClassMask[] = {
4096  0x5d800000, 0x00000000,
4097};
4098
4099static const uint32_t VSRC_with_sub_64_in_SPILLTOVSRRCSubClassMask[] = {
4100  0x51000000, 0x00000000,
4101};
4102
4103static const uint32_t QSRCSubClassMask[] = {
4104  0xa2000000, 0x00000003,
4105};
4106
4107static const uint32_t VRRCSubClassMask[] = {
4108  0x14000000, 0x00000000,
4109};
4110
4111static const uint32_t VSLRCSubClassMask[] = {
4112  0x48000000, 0x00000000,
4113};
4114
4115static const uint32_t VRRC_with_sub_64_in_SPILLTOVSRRCSubClassMask[] = {
4116  0x10000000, 0x00000000,
4117};
4118
4119static const uint32_t QSRC_with_sub_64_in_SPILLTOVSRRCSubClassMask[] = {
4120  0x20000000, 0x00000002,
4121};
4122
4123static const uint32_t VSLRC_with_sub_64_in_SPILLTOVSRRCSubClassMask[] = {
4124  0x40000000, 0x00000000,
4125};
4126
4127static const uint32_t QBRCSubClassMask[] = {
4128  0x80000000, 0x00000003,
4129};
4130
4131static const uint32_t QFRCSubClassMask[] = {
4132  0x80000000, 0x00000003,
4133};
4134
4135static const uint32_t QBRC_with_sub_64_in_SPILLTOVSRRCSubClassMask[] = {
4136  0x00000000, 0x00000002,
4137};
4138
4139static const uint16_t SuperRegIdxSeqs[] = {
4140  /* 0 */ 1, 0,
4141  /* 2 */ 2, 0,
4142  /* 4 */ 3, 4, 5, 6, 0,
4143};
4144
4145static const TargetRegisterClass *const GPRC_and_GPRC_NOR0Superclasses[] = {
4146  &PPC::GPRCRegClass,
4147  &PPC::GPRC_NOR0RegClass,
4148  nullptr
4149};
4150
4151static const TargetRegisterClass *const F4RCSuperclasses[] = {
4152  &PPC::VSSRCRegClass,
4153  nullptr
4154};
4155
4156static const TargetRegisterClass *const VSFRCSuperclasses[] = {
4157  &PPC::VSSRCRegClass,
4158  nullptr
4159};
4160
4161static const TargetRegisterClass *const G8RCSuperclasses[] = {
4162  &PPC::SPILLTOVSRRCRegClass,
4163  nullptr
4164};
4165
4166static const TargetRegisterClass *const SPILLTOVSRRC_and_VSFRCSuperclasses[] = {
4167  &PPC::VSSRCRegClass,
4168  &PPC::SPILLTOVSRRCRegClass,
4169  &PPC::VSFRCRegClass,
4170  nullptr
4171};
4172
4173static const TargetRegisterClass *const G8RC_and_G8RC_NOX0Superclasses[] = {
4174  &PPC::SPILLTOVSRRCRegClass,
4175  &PPC::G8RCRegClass,
4176  &PPC::G8RC_NOX0RegClass,
4177  nullptr
4178};
4179
4180static const TargetRegisterClass *const F8RCSuperclasses[] = {
4181  &PPC::VSSRCRegClass,
4182  &PPC::F4RCRegClass,
4183  &PPC::VSFRCRegClass,
4184  nullptr
4185};
4186
4187static const TargetRegisterClass *const VFRCSuperclasses[] = {
4188  &PPC::VSSRCRegClass,
4189  &PPC::VSFRCRegClass,
4190  nullptr
4191};
4192
4193static const TargetRegisterClass *const SPERC_with_sub_32_in_GPRC_NOR0Superclasses[] = {
4194  &PPC::SPERCRegClass,
4195  nullptr
4196};
4197
4198static const TargetRegisterClass *const SPILLTOVSRRC_and_VFRCSuperclasses[] = {
4199  &PPC::VSSRCRegClass,
4200  &PPC::SPILLTOVSRRCRegClass,
4201  &PPC::VSFRCRegClass,
4202  &PPC::SPILLTOVSRRC_and_VSFRCRegClass,
4203  &PPC::VFRCRegClass,
4204  nullptr
4205};
4206
4207static const TargetRegisterClass *const SPILLTOVSRRC_and_F4RCSuperclasses[] = {
4208  &PPC::VSSRCRegClass,
4209  &PPC::F4RCRegClass,
4210  &PPC::SPILLTOVSRRCRegClass,
4211  &PPC::VSFRCRegClass,
4212  &PPC::SPILLTOVSRRC_and_VSFRCRegClass,
4213  &PPC::F8RCRegClass,
4214  nullptr
4215};
4216
4217static const TargetRegisterClass *const VSRC_with_sub_64_in_SPILLTOVSRRCSuperclasses[] = {
4218  &PPC::VSRCRegClass,
4219  nullptr
4220};
4221
4222static const TargetRegisterClass *const VRRCSuperclasses[] = {
4223  &PPC::VSRCRegClass,
4224  nullptr
4225};
4226
4227static const TargetRegisterClass *const VSLRCSuperclasses[] = {
4228  &PPC::VSRCRegClass,
4229  nullptr
4230};
4231
4232static const TargetRegisterClass *const VRRC_with_sub_64_in_SPILLTOVSRRCSuperclasses[] = {
4233  &PPC::VSRCRegClass,
4234  &PPC::VSRC_with_sub_64_in_SPILLTOVSRRCRegClass,
4235  &PPC::VRRCRegClass,
4236  nullptr
4237};
4238
4239static const TargetRegisterClass *const QSRC_with_sub_64_in_SPILLTOVSRRCSuperclasses[] = {
4240  &PPC::QSRCRegClass,
4241  nullptr
4242};
4243
4244static const TargetRegisterClass *const VSLRC_with_sub_64_in_SPILLTOVSRRCSuperclasses[] = {
4245  &PPC::VSRCRegClass,
4246  &PPC::VSRC_with_sub_64_in_SPILLTOVSRRCRegClass,
4247  &PPC::VSLRCRegClass,
4248  nullptr
4249};
4250
4251static const TargetRegisterClass *const QBRCSuperclasses[] = {
4252  &PPC::QSRCRegClass,
4253  &PPC::QFRCRegClass,
4254  nullptr
4255};
4256
4257static const TargetRegisterClass *const QFRCSuperclasses[] = {
4258  &PPC::QSRCRegClass,
4259  &PPC::QBRCRegClass,
4260  nullptr
4261};
4262
4263static const TargetRegisterClass *const QBRC_with_sub_64_in_SPILLTOVSRRCSuperclasses[] = {
4264  &PPC::QSRCRegClass,
4265  &PPC::QSRC_with_sub_64_in_SPILLTOVSRRCRegClass,
4266  &PPC::QBRCRegClass,
4267  &PPC::QFRCRegClass,
4268  nullptr
4269};
4270
4271
4272static inline unsigned GPRCAltOrderSelect(const MachineFunction &MF) {
4273    return MF.getSubtarget<PPCSubtarget>().is64BitELFABI();
4274  }
4275
4276static ArrayRef<MCPhysReg> GPRCGetRawAllocationOrder(const MachineFunction &MF) {
4277  static const MCPhysReg AltOrder1[] = { PPC::R3, PPC::R4, PPC::R5, PPC::R6, PPC::R7, PPC::R8, PPC::R9, PPC::R10, PPC::R11, PPC::R12, PPC::R30, PPC::R29, PPC::R28, PPC::R27, PPC::R26, PPC::R25, PPC::R24, PPC::R23, PPC::R22, PPC::R21, PPC::R20, PPC::R19, PPC::R18, PPC::R17, PPC::R16, PPC::R15, PPC::R14, PPC::R13, PPC::R31, PPC::R0, PPC::R1, PPC::FP, PPC::BP, PPC::R2 };
4278  const MCRegisterClass &MCR = PPCMCRegisterClasses[PPC::GPRCRegClassID];
4279  const ArrayRef<MCPhysReg> Order[] = {
4280    makeArrayRef(MCR.begin(), MCR.getNumRegs()),
4281    makeArrayRef(AltOrder1)
4282  };
4283  const unsigned Select = GPRCAltOrderSelect(MF);
4284  assert(Select < 2);
4285  return Order[Select];
4286}
4287
4288static inline unsigned GPRC_NOR0AltOrderSelect(const MachineFunction &MF) {
4289    return MF.getSubtarget<PPCSubtarget>().is64BitELFABI();
4290  }
4291
4292static ArrayRef<MCPhysReg> GPRC_NOR0GetRawAllocationOrder(const MachineFunction &MF) {
4293  static const MCPhysReg AltOrder1[] = { PPC::R3, PPC::R4, PPC::R5, PPC::R6, PPC::R7, PPC::R8, PPC::R9, PPC::R10, PPC::R11, PPC::R12, PPC::R30, PPC::R29, PPC::R28, PPC::R27, PPC::R26, PPC::R25, PPC::R24, PPC::R23, PPC::R22, PPC::R21, PPC::R20, PPC::R19, PPC::R18, PPC::R17, PPC::R16, PPC::R15, PPC::R14, PPC::R13, PPC::R31, PPC::R1, PPC::FP, PPC::BP, PPC::ZERO, PPC::R2 };
4294  const MCRegisterClass &MCR = PPCMCRegisterClasses[PPC::GPRC_NOR0RegClassID];
4295  const ArrayRef<MCPhysReg> Order[] = {
4296    makeArrayRef(MCR.begin(), MCR.getNumRegs()),
4297    makeArrayRef(AltOrder1)
4298  };
4299  const unsigned Select = GPRC_NOR0AltOrderSelect(MF);
4300  assert(Select < 2);
4301  return Order[Select];
4302}
4303
4304static inline unsigned GPRC_and_GPRC_NOR0AltOrderSelect(const MachineFunction &MF) {
4305    return MF.getSubtarget<PPCSubtarget>().is64BitELFABI();
4306  }
4307
4308static ArrayRef<MCPhysReg> GPRC_and_GPRC_NOR0GetRawAllocationOrder(const MachineFunction &MF) {
4309  static const MCPhysReg AltOrder1[] = { PPC::R3, PPC::R4, PPC::R5, PPC::R6, PPC::R7, PPC::R8, PPC::R9, PPC::R10, PPC::R11, PPC::R12, PPC::R30, PPC::R29, PPC::R28, PPC::R27, PPC::R26, PPC::R25, PPC::R24, PPC::R23, PPC::R22, PPC::R21, PPC::R20, PPC::R19, PPC::R18, PPC::R17, PPC::R16, PPC::R15, PPC::R14, PPC::R13, PPC::R31, PPC::R1, PPC::FP, PPC::BP, PPC::R2 };
4310  const MCRegisterClass &MCR = PPCMCRegisterClasses[PPC::GPRC_and_GPRC_NOR0RegClassID];
4311  const ArrayRef<MCPhysReg> Order[] = {
4312    makeArrayRef(MCR.begin(), MCR.getNumRegs()),
4313    makeArrayRef(AltOrder1)
4314  };
4315  const unsigned Select = GPRC_and_GPRC_NOR0AltOrderSelect(MF);
4316  assert(Select < 2);
4317  return Order[Select];
4318}
4319
4320static inline unsigned G8RCAltOrderSelect(const MachineFunction &MF) {
4321    return MF.getSubtarget<PPCSubtarget>().is64BitELFABI();
4322  }
4323
4324static ArrayRef<MCPhysReg> G8RCGetRawAllocationOrder(const MachineFunction &MF) {
4325  static const MCPhysReg AltOrder1[] = { PPC::X3, PPC::X4, PPC::X5, PPC::X6, PPC::X7, PPC::X8, PPC::X9, PPC::X10, PPC::X11, PPC::X12, PPC::X30, PPC::X29, PPC::X28, PPC::X27, PPC::X26, PPC::X25, PPC::X24, PPC::X23, PPC::X22, PPC::X21, PPC::X20, PPC::X19, PPC::X18, PPC::X17, PPC::X16, PPC::X15, PPC::X14, PPC::X31, PPC::X13, PPC::X0, PPC::X1, PPC::FP8, PPC::BP8, PPC::X2 };
4326  const MCRegisterClass &MCR = PPCMCRegisterClasses[PPC::G8RCRegClassID];
4327  const ArrayRef<MCPhysReg> Order[] = {
4328    makeArrayRef(MCR.begin(), MCR.getNumRegs()),
4329    makeArrayRef(AltOrder1)
4330  };
4331  const unsigned Select = G8RCAltOrderSelect(MF);
4332  assert(Select < 2);
4333  return Order[Select];
4334}
4335
4336static inline unsigned G8RC_NOX0AltOrderSelect(const MachineFunction &MF) {
4337    return MF.getSubtarget<PPCSubtarget>().is64BitELFABI();
4338  }
4339
4340static ArrayRef<MCPhysReg> G8RC_NOX0GetRawAllocationOrder(const MachineFunction &MF) {
4341  static const MCPhysReg AltOrder1[] = { PPC::X3, PPC::X4, PPC::X5, PPC::X6, PPC::X7, PPC::X8, PPC::X9, PPC::X10, PPC::X11, PPC::X12, PPC::X30, PPC::X29, PPC::X28, PPC::X27, PPC::X26, PPC::X25, PPC::X24, PPC::X23, PPC::X22, PPC::X21, PPC::X20, PPC::X19, PPC::X18, PPC::X17, PPC::X16, PPC::X15, PPC::X14, PPC::X31, PPC::X13, PPC::X1, PPC::FP8, PPC::BP8, PPC::ZERO8, PPC::X2 };
4342  const MCRegisterClass &MCR = PPCMCRegisterClasses[PPC::G8RC_NOX0RegClassID];
4343  const ArrayRef<MCPhysReg> Order[] = {
4344    makeArrayRef(MCR.begin(), MCR.getNumRegs()),
4345    makeArrayRef(AltOrder1)
4346  };
4347  const unsigned Select = G8RC_NOX0AltOrderSelect(MF);
4348  assert(Select < 2);
4349  return Order[Select];
4350}
4351
4352static inline unsigned G8RC_and_G8RC_NOX0AltOrderSelect(const MachineFunction &MF) {
4353    return MF.getSubtarget<PPCSubtarget>().is64BitELFABI();
4354  }
4355
4356static ArrayRef<MCPhysReg> G8RC_and_G8RC_NOX0GetRawAllocationOrder(const MachineFunction &MF) {
4357  static const MCPhysReg AltOrder1[] = { PPC::X3, PPC::X4, PPC::X5, PPC::X6, PPC::X7, PPC::X8, PPC::X9, PPC::X10, PPC::X11, PPC::X12, PPC::X30, PPC::X29, PPC::X28, PPC::X27, PPC::X26, PPC::X25, PPC::X24, PPC::X23, PPC::X22, PPC::X21, PPC::X20, PPC::X19, PPC::X18, PPC::X17, PPC::X16, PPC::X15, PPC::X14, PPC::X31, PPC::X13, PPC::X1, PPC::FP8, PPC::BP8, PPC::X2 };
4358  const MCRegisterClass &MCR = PPCMCRegisterClasses[PPC::G8RC_and_G8RC_NOX0RegClassID];
4359  const ArrayRef<MCPhysReg> Order[] = {
4360    makeArrayRef(MCR.begin(), MCR.getNumRegs()),
4361    makeArrayRef(AltOrder1)
4362  };
4363  const unsigned Select = G8RC_and_G8RC_NOX0AltOrderSelect(MF);
4364  assert(Select < 2);
4365  return Order[Select];
4366}
4367
4368namespace PPC {   // Register class instances
4369  extern const TargetRegisterClass VSSRCRegClass = {
4370    &PPCMCRegisterClasses[VSSRCRegClassID],
4371    VSSRCSubClassMask,
4372    SuperRegIdxSeqs + 2,
4373    LaneBitmask(0x00000001),
4374    0,
4375    false, /* HasDisjunctSubRegs */
4376    false, /* CoveredBySubRegs */
4377    NullRegClasses,
4378    nullptr
4379  };
4380
4381  extern const TargetRegisterClass GPRCRegClass = {
4382    &PPCMCRegisterClasses[GPRCRegClassID],
4383    GPRCSubClassMask,
4384    SuperRegIdxSeqs + 0,
4385    LaneBitmask(0x00000001),
4386    0,
4387    false, /* HasDisjunctSubRegs */
4388    false, /* CoveredBySubRegs */
4389    NullRegClasses,
4390    GPRCGetRawAllocationOrder
4391  };
4392
4393  extern const TargetRegisterClass GPRC_NOR0RegClass = {
4394    &PPCMCRegisterClasses[GPRC_NOR0RegClassID],
4395    GPRC_NOR0SubClassMask,
4396    SuperRegIdxSeqs + 0,
4397    LaneBitmask(0x00000001),
4398    0,
4399    false, /* HasDisjunctSubRegs */
4400    false, /* CoveredBySubRegs */
4401    NullRegClasses,
4402    GPRC_NOR0GetRawAllocationOrder
4403  };
4404
4405  extern const TargetRegisterClass GPRC_and_GPRC_NOR0RegClass = {
4406    &PPCMCRegisterClasses[GPRC_and_GPRC_NOR0RegClassID],
4407    GPRC_and_GPRC_NOR0SubClassMask,
4408    SuperRegIdxSeqs + 0,
4409    LaneBitmask(0x00000001),
4410    0,
4411    false, /* HasDisjunctSubRegs */
4412    false, /* CoveredBySubRegs */
4413    GPRC_and_GPRC_NOR0Superclasses,
4414    GPRC_and_GPRC_NOR0GetRawAllocationOrder
4415  };
4416
4417  extern const TargetRegisterClass CRBITRCRegClass = {
4418    &PPCMCRegisterClasses[CRBITRCRegClassID],
4419    CRBITRCSubClassMask,
4420    SuperRegIdxSeqs + 4,
4421    LaneBitmask(0x00000001),
4422    0,
4423    false, /* HasDisjunctSubRegs */
4424    false, /* CoveredBySubRegs */
4425    NullRegClasses,
4426    nullptr
4427  };
4428
4429  extern const TargetRegisterClass F4RCRegClass = {
4430    &PPCMCRegisterClasses[F4RCRegClassID],
4431    F4RCSubClassMask,
4432    SuperRegIdxSeqs + 2,
4433    LaneBitmask(0x00000001),
4434    0,
4435    false, /* HasDisjunctSubRegs */
4436    false, /* CoveredBySubRegs */
4437    F4RCSuperclasses,
4438    nullptr
4439  };
4440
4441  extern const TargetRegisterClass CRRCRegClass = {
4442    &PPCMCRegisterClasses[CRRCRegClassID],
4443    CRRCSubClassMask,
4444    SuperRegIdxSeqs + 1,
4445    LaneBitmask(0x0000003C),
4446    0,
4447    true, /* HasDisjunctSubRegs */
4448    false, /* CoveredBySubRegs */
4449    NullRegClasses,
4450    nullptr
4451  };
4452
4453  extern const TargetRegisterClass CARRYRCRegClass = {
4454    &PPCMCRegisterClasses[CARRYRCRegClassID],
4455    CARRYRCSubClassMask,
4456    SuperRegIdxSeqs + 1,
4457    LaneBitmask(0x00000001),
4458    0,
4459    false, /* HasDisjunctSubRegs */
4460    false, /* CoveredBySubRegs */
4461    NullRegClasses,
4462    nullptr
4463  };
4464
4465  extern const TargetRegisterClass CTRRCRegClass = {
4466    &PPCMCRegisterClasses[CTRRCRegClassID],
4467    CTRRCSubClassMask,
4468    SuperRegIdxSeqs + 1,
4469    LaneBitmask(0x00000001),
4470    0,
4471    false, /* HasDisjunctSubRegs */
4472    false, /* CoveredBySubRegs */
4473    NullRegClasses,
4474    nullptr
4475  };
4476
4477  extern const TargetRegisterClass VRSAVERCRegClass = {
4478    &PPCMCRegisterClasses[VRSAVERCRegClassID],
4479    VRSAVERCSubClassMask,
4480    SuperRegIdxSeqs + 1,
4481    LaneBitmask(0x00000001),
4482    0,
4483    false, /* HasDisjunctSubRegs */
4484    false, /* CoveredBySubRegs */
4485    NullRegClasses,
4486    nullptr
4487  };
4488
4489  extern const TargetRegisterClass SPILLTOVSRRCRegClass = {
4490    &PPCMCRegisterClasses[SPILLTOVSRRCRegClassID],
4491    SPILLTOVSRRCSubClassMask,
4492    SuperRegIdxSeqs + 2,
4493    LaneBitmask(0x00000001),
4494    0,
4495    false, /* HasDisjunctSubRegs */
4496    false, /* CoveredBySubRegs */
4497    NullRegClasses,
4498    nullptr
4499  };
4500
4501  extern const TargetRegisterClass VSFRCRegClass = {
4502    &PPCMCRegisterClasses[VSFRCRegClassID],
4503    VSFRCSubClassMask,
4504    SuperRegIdxSeqs + 2,
4505    LaneBitmask(0x00000001),
4506    0,
4507    false, /* HasDisjunctSubRegs */
4508    false, /* CoveredBySubRegs */
4509    VSFRCSuperclasses,
4510    nullptr
4511  };
4512
4513  extern const TargetRegisterClass G8RCRegClass = {
4514    &PPCMCRegisterClasses[G8RCRegClassID],
4515    G8RCSubClassMask,
4516    SuperRegIdxSeqs + 1,
4517    LaneBitmask(0x00000001),
4518    0,
4519    false, /* HasDisjunctSubRegs */
4520    false, /* CoveredBySubRegs */
4521    G8RCSuperclasses,
4522    G8RCGetRawAllocationOrder
4523  };
4524
4525  extern const TargetRegisterClass G8RC_NOX0RegClass = {
4526    &PPCMCRegisterClasses[G8RC_NOX0RegClassID],
4527    G8RC_NOX0SubClassMask,
4528    SuperRegIdxSeqs + 1,
4529    LaneBitmask(0x00000001),
4530    0,
4531    false, /* HasDisjunctSubRegs */
4532    false, /* CoveredBySubRegs */
4533    NullRegClasses,
4534    G8RC_NOX0GetRawAllocationOrder
4535  };
4536
4537  extern const TargetRegisterClass SPILLTOVSRRC_and_VSFRCRegClass = {
4538    &PPCMCRegisterClasses[SPILLTOVSRRC_and_VSFRCRegClassID],
4539    SPILLTOVSRRC_and_VSFRCSubClassMask,
4540    SuperRegIdxSeqs + 2,
4541    LaneBitmask(0x00000001),
4542    0,
4543    false, /* HasDisjunctSubRegs */
4544    false, /* CoveredBySubRegs */
4545    SPILLTOVSRRC_and_VSFRCSuperclasses,
4546    nullptr
4547  };
4548
4549  extern const TargetRegisterClass G8RC_and_G8RC_NOX0RegClass = {
4550    &PPCMCRegisterClasses[G8RC_and_G8RC_NOX0RegClassID],
4551    G8RC_and_G8RC_NOX0SubClassMask,
4552    SuperRegIdxSeqs + 1,
4553    LaneBitmask(0x00000001),
4554    0,
4555    false, /* HasDisjunctSubRegs */
4556    false, /* CoveredBySubRegs */
4557    G8RC_and_G8RC_NOX0Superclasses,
4558    G8RC_and_G8RC_NOX0GetRawAllocationOrder
4559  };
4560
4561  extern const TargetRegisterClass F8RCRegClass = {
4562    &PPCMCRegisterClasses[F8RCRegClassID],
4563    F8RCSubClassMask,
4564    SuperRegIdxSeqs + 2,
4565    LaneBitmask(0x00000001),
4566    0,
4567    false, /* HasDisjunctSubRegs */
4568    false, /* CoveredBySubRegs */
4569    F8RCSuperclasses,
4570    nullptr
4571  };
4572
4573  extern const TargetRegisterClass SPERCRegClass = {
4574    &PPCMCRegisterClasses[SPERCRegClassID],
4575    SPERCSubClassMask,
4576    SuperRegIdxSeqs + 1,
4577    LaneBitmask(0x00000001),
4578    0,
4579    false, /* HasDisjunctSubRegs */
4580    false, /* CoveredBySubRegs */
4581    NullRegClasses,
4582    nullptr
4583  };
4584
4585  extern const TargetRegisterClass VFRCRegClass = {
4586    &PPCMCRegisterClasses[VFRCRegClassID],
4587    VFRCSubClassMask,
4588    SuperRegIdxSeqs + 2,
4589    LaneBitmask(0x00000001),
4590    0,
4591    false, /* HasDisjunctSubRegs */
4592    false, /* CoveredBySubRegs */
4593    VFRCSuperclasses,
4594    nullptr
4595  };
4596
4597  extern const TargetRegisterClass SPERC_with_sub_32_in_GPRC_NOR0RegClass = {
4598    &PPCMCRegisterClasses[SPERC_with_sub_32_in_GPRC_NOR0RegClassID],
4599    SPERC_with_sub_32_in_GPRC_NOR0SubClassMask,
4600    SuperRegIdxSeqs + 1,
4601    LaneBitmask(0x00000001),
4602    0,
4603    false, /* HasDisjunctSubRegs */
4604    false, /* CoveredBySubRegs */
4605    SPERC_with_sub_32_in_GPRC_NOR0Superclasses,
4606    nullptr
4607  };
4608
4609  extern const TargetRegisterClass SPILLTOVSRRC_and_VFRCRegClass = {
4610    &PPCMCRegisterClasses[SPILLTOVSRRC_and_VFRCRegClassID],
4611    SPILLTOVSRRC_and_VFRCSubClassMask,
4612    SuperRegIdxSeqs + 2,
4613    LaneBitmask(0x00000001),
4614    0,
4615    false, /* HasDisjunctSubRegs */
4616    false, /* CoveredBySubRegs */
4617    SPILLTOVSRRC_and_VFRCSuperclasses,
4618    nullptr
4619  };
4620
4621  extern const TargetRegisterClass SPILLTOVSRRC_and_F4RCRegClass = {
4622    &PPCMCRegisterClasses[SPILLTOVSRRC_and_F4RCRegClassID],
4623    SPILLTOVSRRC_and_F4RCSubClassMask,
4624    SuperRegIdxSeqs + 2,
4625    LaneBitmask(0x00000001),
4626    0,
4627    false, /* HasDisjunctSubRegs */
4628    false, /* CoveredBySubRegs */
4629    SPILLTOVSRRC_and_F4RCSuperclasses,
4630    nullptr
4631  };
4632
4633  extern const TargetRegisterClass CTRRC8RegClass = {
4634    &PPCMCRegisterClasses[CTRRC8RegClassID],
4635    CTRRC8SubClassMask,
4636    SuperRegIdxSeqs + 1,
4637    LaneBitmask(0x00000001),
4638    0,
4639    false, /* HasDisjunctSubRegs */
4640    false, /* CoveredBySubRegs */
4641    NullRegClasses,
4642    nullptr
4643  };
4644
4645  extern const TargetRegisterClass VSRCRegClass = {
4646    &PPCMCRegisterClasses[VSRCRegClassID],
4647    VSRCSubClassMask,
4648    SuperRegIdxSeqs + 1,
4649    LaneBitmask(0x00000002),
4650    0,
4651    false, /* HasDisjunctSubRegs */
4652    false, /* CoveredBySubRegs */
4653    NullRegClasses,
4654    nullptr
4655  };
4656
4657  extern const TargetRegisterClass VSRC_with_sub_64_in_SPILLTOVSRRCRegClass = {
4658    &PPCMCRegisterClasses[VSRC_with_sub_64_in_SPILLTOVSRRCRegClassID],
4659    VSRC_with_sub_64_in_SPILLTOVSRRCSubClassMask,
4660    SuperRegIdxSeqs + 1,
4661    LaneBitmask(0x00000002),
4662    0,
4663    false, /* HasDisjunctSubRegs */
4664    false, /* CoveredBySubRegs */
4665    VSRC_with_sub_64_in_SPILLTOVSRRCSuperclasses,
4666    nullptr
4667  };
4668
4669  extern const TargetRegisterClass QSRCRegClass = {
4670    &PPCMCRegisterClasses[QSRCRegClassID],
4671    QSRCSubClassMask,
4672    SuperRegIdxSeqs + 1,
4673    LaneBitmask(0x00000002),
4674    0,
4675    false, /* HasDisjunctSubRegs */
4676    false, /* CoveredBySubRegs */
4677    NullRegClasses,
4678    nullptr
4679  };
4680
4681  extern const TargetRegisterClass VRRCRegClass = {
4682    &PPCMCRegisterClasses[VRRCRegClassID],
4683    VRRCSubClassMask,
4684    SuperRegIdxSeqs + 1,
4685    LaneBitmask(0x00000002),
4686    0,
4687    false, /* HasDisjunctSubRegs */
4688    false, /* CoveredBySubRegs */
4689    VRRCSuperclasses,
4690    nullptr
4691  };
4692
4693  extern const TargetRegisterClass VSLRCRegClass = {
4694    &PPCMCRegisterClasses[VSLRCRegClassID],
4695    VSLRCSubClassMask,
4696    SuperRegIdxSeqs + 1,
4697    LaneBitmask(0x00000002),
4698    0,
4699    false, /* HasDisjunctSubRegs */
4700    false, /* CoveredBySubRegs */
4701    VSLRCSuperclasses,
4702    nullptr
4703  };
4704
4705  extern const TargetRegisterClass VRRC_with_sub_64_in_SPILLTOVSRRCRegClass = {
4706    &PPCMCRegisterClasses[VRRC_with_sub_64_in_SPILLTOVSRRCRegClassID],
4707    VRRC_with_sub_64_in_SPILLTOVSRRCSubClassMask,
4708    SuperRegIdxSeqs + 1,
4709    LaneBitmask(0x00000002),
4710    0,
4711    false, /* HasDisjunctSubRegs */
4712    false, /* CoveredBySubRegs */
4713    VRRC_with_sub_64_in_SPILLTOVSRRCSuperclasses,
4714    nullptr
4715  };
4716
4717  extern const TargetRegisterClass QSRC_with_sub_64_in_SPILLTOVSRRCRegClass = {
4718    &PPCMCRegisterClasses[QSRC_with_sub_64_in_SPILLTOVSRRCRegClassID],
4719    QSRC_with_sub_64_in_SPILLTOVSRRCSubClassMask,
4720    SuperRegIdxSeqs + 1,
4721    LaneBitmask(0x00000002),
4722    0,
4723    false, /* HasDisjunctSubRegs */
4724    false, /* CoveredBySubRegs */
4725    QSRC_with_sub_64_in_SPILLTOVSRRCSuperclasses,
4726    nullptr
4727  };
4728
4729  extern const TargetRegisterClass VSLRC_with_sub_64_in_SPILLTOVSRRCRegClass = {
4730    &PPCMCRegisterClasses[VSLRC_with_sub_64_in_SPILLTOVSRRCRegClassID],
4731    VSLRC_with_sub_64_in_SPILLTOVSRRCSubClassMask,
4732    SuperRegIdxSeqs + 1,
4733    LaneBitmask(0x00000002),
4734    0,
4735    false, /* HasDisjunctSubRegs */
4736    false, /* CoveredBySubRegs */
4737    VSLRC_with_sub_64_in_SPILLTOVSRRCSuperclasses,
4738    nullptr
4739  };
4740
4741  extern const TargetRegisterClass QBRCRegClass = {
4742    &PPCMCRegisterClasses[QBRCRegClassID],
4743    QBRCSubClassMask,
4744    SuperRegIdxSeqs + 1,
4745    LaneBitmask(0x00000002),
4746    0,
4747    false, /* HasDisjunctSubRegs */
4748    false, /* CoveredBySubRegs */
4749    QBRCSuperclasses,
4750    nullptr
4751  };
4752
4753  extern const TargetRegisterClass QFRCRegClass = {
4754    &PPCMCRegisterClasses[QFRCRegClassID],
4755    QFRCSubClassMask,
4756    SuperRegIdxSeqs + 1,
4757    LaneBitmask(0x00000002),
4758    0,
4759    false, /* HasDisjunctSubRegs */
4760    false, /* CoveredBySubRegs */
4761    QFRCSuperclasses,
4762    nullptr
4763  };
4764
4765  extern const TargetRegisterClass QBRC_with_sub_64_in_SPILLTOVSRRCRegClass = {
4766    &PPCMCRegisterClasses[QBRC_with_sub_64_in_SPILLTOVSRRCRegClassID],
4767    QBRC_with_sub_64_in_SPILLTOVSRRCSubClassMask,
4768    SuperRegIdxSeqs + 1,
4769    LaneBitmask(0x00000002),
4770    0,
4771    false, /* HasDisjunctSubRegs */
4772    false, /* CoveredBySubRegs */
4773    QBRC_with_sub_64_in_SPILLTOVSRRCSuperclasses,
4774    nullptr
4775  };
4776
4777} // end namespace PPC
4778
4779namespace {
4780  const TargetRegisterClass* const RegisterClasses[] = {
4781    &PPC::VSSRCRegClass,
4782    &PPC::GPRCRegClass,
4783    &PPC::GPRC_NOR0RegClass,
4784    &PPC::GPRC_and_GPRC_NOR0RegClass,
4785    &PPC::CRBITRCRegClass,
4786    &PPC::F4RCRegClass,
4787    &PPC::CRRCRegClass,
4788    &PPC::CARRYRCRegClass,
4789    &PPC::CTRRCRegClass,
4790    &PPC::VRSAVERCRegClass,
4791    &PPC::SPILLTOVSRRCRegClass,
4792    &PPC::VSFRCRegClass,
4793    &PPC::G8RCRegClass,
4794    &PPC::G8RC_NOX0RegClass,
4795    &PPC::SPILLTOVSRRC_and_VSFRCRegClass,
4796    &PPC::G8RC_and_G8RC_NOX0RegClass,
4797    &PPC::F8RCRegClass,
4798    &PPC::SPERCRegClass,
4799    &PPC::VFRCRegClass,
4800    &PPC::SPERC_with_sub_32_in_GPRC_NOR0RegClass,
4801    &PPC::SPILLTOVSRRC_and_VFRCRegClass,
4802    &PPC::SPILLTOVSRRC_and_F4RCRegClass,
4803    &PPC::CTRRC8RegClass,
4804    &PPC::VSRCRegClass,
4805    &PPC::VSRC_with_sub_64_in_SPILLTOVSRRCRegClass,
4806    &PPC::QSRCRegClass,
4807    &PPC::VRRCRegClass,
4808    &PPC::VSLRCRegClass,
4809    &PPC::VRRC_with_sub_64_in_SPILLTOVSRRCRegClass,
4810    &PPC::QSRC_with_sub_64_in_SPILLTOVSRRCRegClass,
4811    &PPC::VSLRC_with_sub_64_in_SPILLTOVSRRCRegClass,
4812    &PPC::QBRCRegClass,
4813    &PPC::QFRCRegClass,
4814    &PPC::QBRC_with_sub_64_in_SPILLTOVSRRCRegClass,
4815  };
4816} // end anonymous namespace
4817
4818static const TargetRegisterInfoDesc PPCRegInfoDesc[] = { // Extra Descriptors
4819  { 0, false },
4820  { 0, true },
4821  { 0, true },
4822  { 0, false },
4823  { 0, true },
4824  { 0, false },
4825  { 0, false },
4826  { 0, false },
4827  { 0, true },
4828  { 0, true },
4829  { 0, true },
4830  { 0, true },
4831  { 0, true },
4832  { 0, true },
4833  { 0, true },
4834  { 0, true },
4835  { 0, true },
4836  { 0, true },
4837  { 0, true },
4838  { 0, true },
4839  { 0, false },
4840  { 0, true },
4841  { 0, true },
4842  { 0, true },
4843  { 0, true },
4844  { 0, true },
4845  { 0, true },
4846  { 0, true },
4847  { 0, true },
4848  { 0, true },
4849  { 0, true },
4850  { 0, true },
4851  { 0, true },
4852  { 0, true },
4853  { 0, true },
4854  { 0, true },
4855  { 0, true },
4856  { 0, true },
4857  { 0, true },
4858  { 0, true },
4859  { 0, true },
4860  { 0, true },
4861  { 0, true },
4862  { 0, true },
4863  { 0, true },
4864  { 0, true },
4865  { 0, true },
4866  { 0, true },
4867  { 0, true },
4868  { 0, true },
4869  { 0, true },
4870  { 0, true },
4871  { 0, true },
4872  { 0, true },
4873  { 0, false },
4874  { 0, true },
4875  { 0, true },
4876  { 0, true },
4877  { 0, true },
4878  { 0, true },
4879  { 0, true },
4880  { 0, true },
4881  { 0, true },
4882  { 0, true },
4883  { 0, true },
4884  { 0, true },
4885  { 0, true },
4886  { 0, true },
4887  { 0, true },
4888  { 0, true },
4889  { 0, true },
4890  { 0, true },
4891  { 0, true },
4892  { 0, true },
4893  { 0, true },
4894  { 0, true },
4895  { 0, true },
4896  { 0, true },
4897  { 0, true },
4898  { 0, true },
4899  { 0, true },
4900  { 0, true },
4901  { 0, true },
4902  { 0, true },
4903  { 0, true },
4904  { 0, true },
4905  { 0, true },
4906  { 0, true },
4907  { 0, true },
4908  { 0, true },
4909  { 0, true },
4910  { 0, true },
4911  { 0, true },
4912  { 0, true },
4913  { 0, true },
4914  { 0, true },
4915  { 0, true },
4916  { 0, true },
4917  { 0, true },
4918  { 0, true },
4919  { 0, true },
4920  { 0, true },
4921  { 0, true },
4922  { 0, true },
4923  { 0, true },
4924  { 0, true },
4925  { 0, true },
4926  { 0, true },
4927  { 0, true },
4928  { 0, true },
4929  { 0, true },
4930  { 0, true },
4931  { 0, true },
4932  { 0, true },
4933  { 0, true },
4934  { 0, true },
4935  { 0, true },
4936  { 0, true },
4937  { 0, true },
4938  { 0, true },
4939  { 0, true },
4940  { 0, true },
4941  { 0, true },
4942  { 0, true },
4943  { 0, true },
4944  { 0, true },
4945  { 0, true },
4946  { 0, true },
4947  { 0, true },
4948  { 0, true },
4949  { 0, true },
4950  { 0, true },
4951  { 0, true },
4952  { 0, true },
4953  { 0, true },
4954  { 0, true },
4955  { 0, true },
4956  { 0, true },
4957  { 0, true },
4958  { 0, true },
4959  { 0, true },
4960  { 0, true },
4961  { 0, true },
4962  { 0, true },
4963  { 0, true },
4964  { 0, true },
4965  { 0, true },
4966  { 0, true },
4967  { 0, true },
4968  { 0, true },
4969  { 0, true },
4970  { 0, true },
4971  { 0, true },
4972  { 0, true },
4973  { 0, true },
4974  { 0, true },
4975  { 0, true },
4976  { 0, true },
4977  { 0, true },
4978  { 0, true },
4979  { 0, true },
4980  { 0, true },
4981  { 0, true },
4982  { 0, true },
4983  { 0, true },
4984  { 0, true },
4985  { 0, true },
4986  { 0, true },
4987  { 0, true },
4988  { 0, true },
4989  { 0, true },
4990  { 0, true },
4991  { 0, true },
4992  { 0, true },
4993  { 0, true },
4994  { 0, true },
4995  { 0, true },
4996  { 0, true },
4997  { 0, true },
4998  { 0, true },
4999  { 0, true },
5000  { 0, true },
5001  { 0, true },
5002  { 0, true },
5003  { 0, true },
5004  { 0, true },
5005  { 0, true },
5006  { 0, true },
5007  { 0, true },
5008  { 0, true },
5009  { 0, true },
5010  { 0, true },
5011  { 0, true },
5012  { 0, true },
5013  { 0, true },
5014  { 0, true },
5015  { 0, true },
5016  { 0, true },
5017  { 0, true },
5018  { 0, true },
5019  { 0, true },
5020  { 0, true },
5021  { 0, true },
5022  { 0, true },
5023  { 0, true },
5024  { 0, true },
5025  { 0, true },
5026  { 0, true },
5027  { 0, true },
5028  { 0, true },
5029  { 0, true },
5030  { 0, true },
5031  { 0, true },
5032  { 0, true },
5033  { 0, true },
5034  { 0, true },
5035  { 0, true },
5036  { 0, true },
5037  { 0, true },
5038  { 0, true },
5039  { 0, true },
5040  { 0, true },
5041  { 0, true },
5042  { 0, true },
5043  { 0, true },
5044  { 0, true },
5045  { 0, true },
5046  { 0, true },
5047  { 0, true },
5048  { 0, true },
5049  { 0, true },
5050  { 0, true },
5051  { 0, true },
5052  { 0, true },
5053  { 0, true },
5054  { 0, true },
5055  { 0, true },
5056  { 0, true },
5057  { 0, true },
5058  { 0, true },
5059  { 0, true },
5060  { 0, true },
5061  { 0, true },
5062  { 0, true },
5063  { 0, true },
5064  { 0, true },
5065  { 0, true },
5066  { 0, false },
5067  { 0, false },
5068  { 0, false },
5069  { 0, false },
5070  { 0, false },
5071  { 0, false },
5072  { 0, false },
5073  { 0, false },
5074  { 0, false },
5075  { 0, false },
5076  { 0, false },
5077  { 0, false },
5078  { 0, false },
5079  { 0, false },
5080  { 0, false },
5081  { 0, false },
5082  { 0, false },
5083  { 0, false },
5084  { 0, false },
5085  { 0, false },
5086  { 0, false },
5087  { 0, false },
5088  { 0, false },
5089  { 0, false },
5090  { 0, false },
5091  { 0, false },
5092  { 0, false },
5093  { 0, false },
5094  { 0, false },
5095  { 0, false },
5096  { 0, false },
5097  { 0, false },
5098  { 0, true },
5099  { 0, true },
5100  { 0, true },
5101  { 0, true },
5102  { 0, true },
5103  { 0, true },
5104  { 0, true },
5105  { 0, true },
5106  { 0, true },
5107  { 0, true },
5108  { 0, true },
5109  { 0, true },
5110  { 0, true },
5111  { 0, true },
5112  { 0, true },
5113  { 0, true },
5114  { 0, true },
5115  { 0, true },
5116  { 0, true },
5117  { 0, true },
5118  { 0, true },
5119  { 0, true },
5120  { 0, true },
5121  { 0, true },
5122  { 0, true },
5123  { 0, true },
5124  { 0, true },
5125  { 0, true },
5126  { 0, true },
5127  { 0, true },
5128  { 0, true },
5129  { 0, true },
5130  { 0, true },
5131  { 0, true },
5132  { 0, true },
5133  { 0, true },
5134  { 0, true },
5135  { 0, true },
5136  { 0, true },
5137  { 0, true },
5138  { 0, true },
5139  { 0, true },
5140  { 0, true },
5141  { 0, true },
5142  { 0, true },
5143  { 0, true },
5144  { 0, true },
5145  { 0, true },
5146  { 0, true },
5147  { 0, true },
5148  { 0, true },
5149  { 0, true },
5150  { 0, true },
5151  { 0, true },
5152  { 0, true },
5153  { 0, true },
5154  { 0, true },
5155  { 0, true },
5156  { 0, true },
5157  { 0, true },
5158  { 0, true },
5159  { 0, true },
5160  { 0, true },
5161  { 0, true },
5162  { 0, true },
5163};
5164unsigned PPCGenRegisterInfo::composeSubRegIndicesImpl(unsigned IdxA, unsigned IdxB) const {
5165  static const uint8_t Rows[1][6] = {
5166    { 0, 0, 0, 0, 0, 0, },
5167  };
5168
5169  --IdxA; assert(IdxA < 6);
5170  --IdxB; assert(IdxB < 6);
5171  return Rows[0][IdxB];
5172}
5173
5174  struct MaskRolOp {
5175    LaneBitmask Mask;
5176    uint8_t  RotateLeft;
5177  };
5178  static const MaskRolOp LaneMaskComposeSequences[] = {
5179    { LaneBitmask(0xFFFFFFFF),  0 }, { LaneBitmask::getNone(), 0 },   // Sequence 0
5180    { LaneBitmask(0xFFFFFFFF),  1 }, { LaneBitmask::getNone(), 0 },   // Sequence 2
5181    { LaneBitmask(0xFFFFFFFF),  2 }, { LaneBitmask::getNone(), 0 },   // Sequence 4
5182    { LaneBitmask(0xFFFFFFFF),  3 }, { LaneBitmask::getNone(), 0 },   // Sequence 6
5183    { LaneBitmask(0xFFFFFFFF),  4 }, { LaneBitmask::getNone(), 0 },   // Sequence 8
5184    { LaneBitmask(0xFFFFFFFF),  5 }, { LaneBitmask::getNone(), 0 }  // Sequence 10
5185  };
5186  static const MaskRolOp *const CompositeSequences[] = {
5187    &LaneMaskComposeSequences[0], // to sub_32
5188    &LaneMaskComposeSequences[2], // to sub_64
5189    &LaneMaskComposeSequences[4], // to sub_eq
5190    &LaneMaskComposeSequences[6], // to sub_gt
5191    &LaneMaskComposeSequences[8], // to sub_lt
5192    &LaneMaskComposeSequences[10] // to sub_un
5193  };
5194
5195LaneBitmask PPCGenRegisterInfo::composeSubRegIndexLaneMaskImpl(unsigned IdxA, LaneBitmask LaneMask) const {
5196  --IdxA; assert(IdxA < 6 && "Subregister index out of bounds");
5197  LaneBitmask Result;
5198  for (const MaskRolOp *Ops = CompositeSequences[IdxA]; Ops->Mask.any(); ++Ops) {
5199    LaneBitmask::Type M = LaneMask.getAsInteger() & Ops->Mask.getAsInteger();
5200    if (unsigned S = Ops->RotateLeft)
5201      Result |= LaneBitmask((M << S) | (M >> (LaneBitmask::BitWidth - S)));
5202    else
5203      Result |= LaneBitmask(M);
5204  }
5205  return Result;
5206}
5207
5208LaneBitmask PPCGenRegisterInfo::reverseComposeSubRegIndexLaneMaskImpl(unsigned IdxA,  LaneBitmask LaneMask) const {
5209  LaneMask &= getSubRegIndexLaneMask(IdxA);
5210  --IdxA; assert(IdxA < 6 && "Subregister index out of bounds");
5211  LaneBitmask Result;
5212  for (const MaskRolOp *Ops = CompositeSequences[IdxA]; Ops->Mask.any(); ++Ops) {
5213    LaneBitmask::Type M = LaneMask.getAsInteger();
5214    if (unsigned S = Ops->RotateLeft)
5215      Result |= LaneBitmask((M >> S) | (M << (LaneBitmask::BitWidth - S)));
5216    else
5217      Result |= LaneBitmask(M);
5218  }
5219  return Result;
5220}
5221
5222const TargetRegisterClass *PPCGenRegisterInfo::getSubClassWithSubReg(const TargetRegisterClass *RC, unsigned Idx) const {
5223  static const uint8_t Table[34][6] = {
5224    {	// VSSRC
5225      0,	// sub_32
5226      0,	// sub_64
5227      0,	// sub_eq
5228      0,	// sub_gt
5229      0,	// sub_lt
5230      0,	// sub_un
5231    },
5232    {	// GPRC
5233      0,	// sub_32
5234      0,	// sub_64
5235      0,	// sub_eq
5236      0,	// sub_gt
5237      0,	// sub_lt
5238      0,	// sub_un
5239    },
5240    {	// GPRC_NOR0
5241      0,	// sub_32
5242      0,	// sub_64
5243      0,	// sub_eq
5244      0,	// sub_gt
5245      0,	// sub_lt
5246      0,	// sub_un
5247    },
5248    {	// GPRC_and_GPRC_NOR0
5249      0,	// sub_32
5250      0,	// sub_64
5251      0,	// sub_eq
5252      0,	// sub_gt
5253      0,	// sub_lt
5254      0,	// sub_un
5255    },
5256    {	// CRBITRC
5257      0,	// sub_32
5258      0,	// sub_64
5259      0,	// sub_eq
5260      0,	// sub_gt
5261      0,	// sub_lt
5262      0,	// sub_un
5263    },
5264    {	// F4RC
5265      0,	// sub_32
5266      0,	// sub_64
5267      0,	// sub_eq
5268      0,	// sub_gt
5269      0,	// sub_lt
5270      0,	// sub_un
5271    },
5272    {	// CRRC
5273      0,	// sub_32
5274      0,	// sub_64
5275      7,	// sub_eq -> CRRC
5276      7,	// sub_gt -> CRRC
5277      7,	// sub_lt -> CRRC
5278      7,	// sub_un -> CRRC
5279    },
5280    {	// CARRYRC
5281      0,	// sub_32
5282      0,	// sub_64
5283      0,	// sub_eq
5284      0,	// sub_gt
5285      0,	// sub_lt
5286      0,	// sub_un
5287    },
5288    {	// CTRRC
5289      0,	// sub_32
5290      0,	// sub_64
5291      0,	// sub_eq
5292      0,	// sub_gt
5293      0,	// sub_lt
5294      0,	// sub_un
5295    },
5296    {	// VRSAVERC
5297      0,	// sub_32
5298      0,	// sub_64
5299      0,	// sub_eq
5300      0,	// sub_gt
5301      0,	// sub_lt
5302      0,	// sub_un
5303    },
5304    {	// SPILLTOVSRRC
5305      13,	// sub_32 -> G8RC
5306      0,	// sub_64
5307      0,	// sub_eq
5308      0,	// sub_gt
5309      0,	// sub_lt
5310      0,	// sub_un
5311    },
5312    {	// VSFRC
5313      0,	// sub_32
5314      0,	// sub_64
5315      0,	// sub_eq
5316      0,	// sub_gt
5317      0,	// sub_lt
5318      0,	// sub_un
5319    },
5320    {	// G8RC
5321      13,	// sub_32 -> G8RC
5322      0,	// sub_64
5323      0,	// sub_eq
5324      0,	// sub_gt
5325      0,	// sub_lt
5326      0,	// sub_un
5327    },
5328    {	// G8RC_NOX0
5329      14,	// sub_32 -> G8RC_NOX0
5330      0,	// sub_64
5331      0,	// sub_eq
5332      0,	// sub_gt
5333      0,	// sub_lt
5334      0,	// sub_un
5335    },
5336    {	// SPILLTOVSRRC_and_VSFRC
5337      0,	// sub_32
5338      0,	// sub_64
5339      0,	// sub_eq
5340      0,	// sub_gt
5341      0,	// sub_lt
5342      0,	// sub_un
5343    },
5344    {	// G8RC_and_G8RC_NOX0
5345      16,	// sub_32 -> G8RC_and_G8RC_NOX0
5346      0,	// sub_64
5347      0,	// sub_eq
5348      0,	// sub_gt
5349      0,	// sub_lt
5350      0,	// sub_un
5351    },
5352    {	// F8RC
5353      0,	// sub_32
5354      0,	// sub_64
5355      0,	// sub_eq
5356      0,	// sub_gt
5357      0,	// sub_lt
5358      0,	// sub_un
5359    },
5360    {	// SPERC
5361      18,	// sub_32 -> SPERC
5362      0,	// sub_64
5363      0,	// sub_eq
5364      0,	// sub_gt
5365      0,	// sub_lt
5366      0,	// sub_un
5367    },
5368    {	// VFRC
5369      0,	// sub_32
5370      0,	// sub_64
5371      0,	// sub_eq
5372      0,	// sub_gt
5373      0,	// sub_lt
5374      0,	// sub_un
5375    },
5376    {	// SPERC_with_sub_32_in_GPRC_NOR0
5377      20,	// sub_32 -> SPERC_with_sub_32_in_GPRC_NOR0
5378      0,	// sub_64
5379      0,	// sub_eq
5380      0,	// sub_gt
5381      0,	// sub_lt
5382      0,	// sub_un
5383    },
5384    {	// SPILLTOVSRRC_and_VFRC
5385      0,	// sub_32
5386      0,	// sub_64
5387      0,	// sub_eq
5388      0,	// sub_gt
5389      0,	// sub_lt
5390      0,	// sub_un
5391    },
5392    {	// SPILLTOVSRRC_and_F4RC
5393      0,	// sub_32
5394      0,	// sub_64
5395      0,	// sub_eq
5396      0,	// sub_gt
5397      0,	// sub_lt
5398      0,	// sub_un
5399    },
5400    {	// CTRRC8
5401      0,	// sub_32
5402      0,	// sub_64
5403      0,	// sub_eq
5404      0,	// sub_gt
5405      0,	// sub_lt
5406      0,	// sub_un
5407    },
5408    {	// VSRC
5409      0,	// sub_32
5410      24,	// sub_64 -> VSRC
5411      0,	// sub_eq
5412      0,	// sub_gt
5413      0,	// sub_lt
5414      0,	// sub_un
5415    },
5416    {	// VSRC_with_sub_64_in_SPILLTOVSRRC
5417      0,	// sub_32
5418      25,	// sub_64 -> VSRC_with_sub_64_in_SPILLTOVSRRC
5419      0,	// sub_eq
5420      0,	// sub_gt
5421      0,	// sub_lt
5422      0,	// sub_un
5423    },
5424    {	// QSRC
5425      0,	// sub_32
5426      26,	// sub_64 -> QSRC
5427      0,	// sub_eq
5428      0,	// sub_gt
5429      0,	// sub_lt
5430      0,	// sub_un
5431    },
5432    {	// VRRC
5433      0,	// sub_32
5434      27,	// sub_64 -> VRRC
5435      0,	// sub_eq
5436      0,	// sub_gt
5437      0,	// sub_lt
5438      0,	// sub_un
5439    },
5440    {	// VSLRC
5441      0,	// sub_32
5442      28,	// sub_64 -> VSLRC
5443      0,	// sub_eq
5444      0,	// sub_gt
5445      0,	// sub_lt
5446      0,	// sub_un
5447    },
5448    {	// VRRC_with_sub_64_in_SPILLTOVSRRC
5449      0,	// sub_32
5450      29,	// sub_64 -> VRRC_with_sub_64_in_SPILLTOVSRRC
5451      0,	// sub_eq
5452      0,	// sub_gt
5453      0,	// sub_lt
5454      0,	// sub_un
5455    },
5456    {	// QSRC_with_sub_64_in_SPILLTOVSRRC
5457      0,	// sub_32
5458      30,	// sub_64 -> QSRC_with_sub_64_in_SPILLTOVSRRC
5459      0,	// sub_eq
5460      0,	// sub_gt
5461      0,	// sub_lt
5462      0,	// sub_un
5463    },
5464    {	// VSLRC_with_sub_64_in_SPILLTOVSRRC
5465      0,	// sub_32
5466      31,	// sub_64 -> VSLRC_with_sub_64_in_SPILLTOVSRRC
5467      0,	// sub_eq
5468      0,	// sub_gt
5469      0,	// sub_lt
5470      0,	// sub_un
5471    },
5472    {	// QBRC
5473      0,	// sub_32
5474      32,	// sub_64 -> QBRC
5475      0,	// sub_eq
5476      0,	// sub_gt
5477      0,	// sub_lt
5478      0,	// sub_un
5479    },
5480    {	// QFRC
5481      0,	// sub_32
5482      33,	// sub_64 -> QFRC
5483      0,	// sub_eq
5484      0,	// sub_gt
5485      0,	// sub_lt
5486      0,	// sub_un
5487    },
5488    {	// QBRC_with_sub_64_in_SPILLTOVSRRC
5489      0,	// sub_32
5490      34,	// sub_64 -> QBRC_with_sub_64_in_SPILLTOVSRRC
5491      0,	// sub_eq
5492      0,	// sub_gt
5493      0,	// sub_lt
5494      0,	// sub_un
5495    },
5496  };
5497  assert(RC && "Missing regclass");
5498  if (!Idx) return RC;
5499  --Idx;
5500  assert(Idx < 6 && "Bad subreg");
5501  unsigned TV = Table[RC->getID()][Idx];
5502  return TV ? getRegClass(TV - 1) : nullptr;
5503}
5504
5505/// Get the weight in units of pressure for this register class.
5506const RegClassWeight &PPCGenRegisterInfo::
5507getRegClassWeight(const TargetRegisterClass *RC) const {
5508  static const RegClassWeight RCWeightTable[] = {
5509    {1, 64},  	// VSSRC
5510    {1, 34},  	// GPRC
5511    {1, 34},  	// GPRC_NOR0
5512    {1, 33},  	// GPRC_and_GPRC_NOR0
5513    {1, 32},  	// CRBITRC
5514    {1, 32},  	// F4RC
5515    {4, 32},  	// CRRC
5516    {1, 1},  	// CARRYRC
5517    {0, 0},  	// CTRRC
5518    {1, 1},  	// VRSAVERC
5519    {1, 68},  	// SPILLTOVSRRC
5520    {1, 64},  	// VSFRC
5521    {1, 34},  	// G8RC
5522    {1, 34},  	// G8RC_NOX0
5523    {1, 34},  	// SPILLTOVSRRC_and_VSFRC
5524    {1, 33},  	// G8RC_and_G8RC_NOX0
5525    {1, 32},  	// F8RC
5526    {1, 32},  	// SPERC
5527    {1, 32},  	// VFRC
5528    {1, 31},  	// SPERC_with_sub_32_in_GPRC_NOR0
5529    {1, 20},  	// SPILLTOVSRRC_and_VFRC
5530    {1, 14},  	// SPILLTOVSRRC_and_F4RC
5531    {0, 0},  	// CTRRC8
5532    {1, 64},  	// VSRC
5533    {1, 34},  	// VSRC_with_sub_64_in_SPILLTOVSRRC
5534    {1, 32},  	// QSRC
5535    {1, 32},  	// VRRC
5536    {1, 32},  	// VSLRC
5537    {1, 20},  	// VRRC_with_sub_64_in_SPILLTOVSRRC
5538    {1, 14},  	// QSRC_with_sub_64_in_SPILLTOVSRRC
5539    {1, 14},  	// VSLRC_with_sub_64_in_SPILLTOVSRRC
5540    {1, 32},  	// QBRC
5541    {1, 32},  	// QFRC
5542    {1, 14},  	// QBRC_with_sub_64_in_SPILLTOVSRRC
5543  };
5544  return RCWeightTable[RC->getID()];
5545}
5546
5547/// Get the weight in units of pressure for this register unit.
5548unsigned PPCGenRegisterInfo::
5549getRegUnitWeight(unsigned RegUnit) const {
5550  assert(RegUnit < 171 && "invalid register unit");
5551  // All register units have unit weight.
5552  return 1;
5553}
5554
5555
5556// Get the number of dimensions of register pressure.
5557unsigned PPCGenRegisterInfo::getNumRegPressureSets() const {
5558  return 16;
5559}
5560
5561// Get the name of this register unit pressure set.
5562const char *PPCGenRegisterInfo::
5563getRegPressureSetName(unsigned Idx) const {
5564  static const char *const PressureNameTable[] = {
5565    "CARRYRC",
5566    "VRSAVERC",
5567    "SPILLTOVSRRC_and_F4RC",
5568    "SPILLTOVSRRC_and_VFRC",
5569    "CRBITRC",
5570    "F4RC",
5571    "VFRC",
5572    "SPILLTOVSRRC_and_VSFRC",
5573    "GPRC",
5574    "SPILLTOVSRRC_and_VSFRC+VFRC",
5575    "F4RC+SPILLTOVSRRC_and_VSFRC",
5576    "VSSRC",
5577    "SPILLTOVSRRC",
5578    "SPILLTOVSRRC+VFRC",
5579    "F4RC+SPILLTOVSRRC",
5580    "VSSRC+SPILLTOVSRRC",
5581  };
5582  return PressureNameTable[Idx];
5583}
5584
5585// Get the register unit pressure limit for this dimension.
5586// This limit must be adjusted dynamically for reserved registers.
5587unsigned PPCGenRegisterInfo::
5588getRegPressureSetLimit(const MachineFunction &MF, unsigned Idx) const {
5589  static const uint8_t PressureLimitTable[] = {
5590    1,  	// 0: CARRYRC
5591    1,  	// 1: VRSAVERC
5592    14,  	// 2: SPILLTOVSRRC_and_F4RC
5593    20,  	// 3: SPILLTOVSRRC_and_VFRC
5594    32,  	// 4: CRBITRC
5595    32,  	// 5: F4RC
5596    32,  	// 6: VFRC
5597    34,  	// 7: SPILLTOVSRRC_and_VSFRC
5598    35,  	// 8: GPRC
5599    46,  	// 9: SPILLTOVSRRC_and_VSFRC+VFRC
5600    52,  	// 10: F4RC+SPILLTOVSRRC_and_VSFRC
5601    64,  	// 11: VSSRC
5602    69,  	// 12: SPILLTOVSRRC
5603    80,  	// 13: SPILLTOVSRRC+VFRC
5604    86,  	// 14: F4RC+SPILLTOVSRRC
5605    98,  	// 15: VSSRC+SPILLTOVSRRC
5606  };
5607  return PressureLimitTable[Idx];
5608}
5609
5610/// Table of pressure sets per register class or unit.
5611static const int RCSetsTable[] = {
5612  /* 0 */ 0, -1,
5613  /* 2 */ 1, -1,
5614  /* 4 */ 4, -1,
5615  /* 6 */ 8, 12, -1,
5616  /* 9 */ 11, 15, -1,
5617  /* 12 */ 6, 9, 11, 13, 15, -1,
5618  /* 18 */ 5, 10, 11, 14, 15, -1,
5619  /* 24 */ 8, 12, 13, 14, 15, -1,
5620  /* 30 */ 2, 5, 7, 9, 10, 11, 12, 13, 14, 15, -1,
5621  /* 41 */ 3, 6, 7, 9, 10, 11, 12, 13, 14, 15, -1,
5622};
5623
5624/// Get the dimensions of register pressure impacted by this register class.
5625/// Returns a -1 terminated array of pressure set IDs
5626const int* PPCGenRegisterInfo::
5627getRegClassPressureSets(const TargetRegisterClass *RC) const {
5628  static const uint8_t RCSetStartTable[] = {
5629    9,24,6,24,4,18,4,0,1,2,25,9,24,6,32,24,18,24,12,24,41,30,1,9,32,18,12,18,41,30,30,18,18,30,};
5630  return &RCSetsTable[RCSetStartTable[RC->getID()]];
5631}
5632
5633/// Get the dimensions of register pressure impacted by this register unit.
5634/// Returns a -1 terminated array of pressure set IDs
5635const int* PPCGenRegisterInfo::
5636getRegUnitPressureSets(unsigned RegUnit) const {
5637  assert(RegUnit < 171 && "invalid register unit");
5638  static const uint8_t RUSetStartTable[] = {
5639    24,0,1,24,1,1,1,2,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,30,30,30,30,30,30,30,30,30,30,30,30,30,30,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,1,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,12,12,12,12,12,12,12,12,12,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,};
5640  return &RCSetsTable[RUSetStartTable[RegUnit]];
5641}
5642
5643extern const MCRegisterDesc PPCRegDesc[];
5644extern const MCPhysReg PPCRegDiffLists[];
5645extern const LaneBitmask PPCLaneMaskLists[];
5646extern const char PPCRegStrings[];
5647extern const char PPCRegClassStrings[];
5648extern const MCPhysReg PPCRegUnitRoots[][2];
5649extern const uint16_t PPCSubRegIdxLists[];
5650extern const MCRegisterInfo::SubRegCoveredBits PPCSubRegIdxRanges[];
5651extern const uint16_t PPCRegEncodingTable[];
5652// PPC Dwarf<->LLVM register mappings.
5653extern const MCRegisterInfo::DwarfLLVMRegPair PPCDwarfFlavour0Dwarf2L[];
5654extern const unsigned PPCDwarfFlavour0Dwarf2LSize;
5655
5656extern const MCRegisterInfo::DwarfLLVMRegPair PPCDwarfFlavour1Dwarf2L[];
5657extern const unsigned PPCDwarfFlavour1Dwarf2LSize;
5658
5659extern const MCRegisterInfo::DwarfLLVMRegPair PPCEHFlavour0Dwarf2L[];
5660extern const unsigned PPCEHFlavour0Dwarf2LSize;
5661
5662extern const MCRegisterInfo::DwarfLLVMRegPair PPCEHFlavour1Dwarf2L[];
5663extern const unsigned PPCEHFlavour1Dwarf2LSize;
5664
5665extern const MCRegisterInfo::DwarfLLVMRegPair PPCDwarfFlavour0L2Dwarf[];
5666extern const unsigned PPCDwarfFlavour0L2DwarfSize;
5667
5668extern const MCRegisterInfo::DwarfLLVMRegPair PPCDwarfFlavour1L2Dwarf[];
5669extern const unsigned PPCDwarfFlavour1L2DwarfSize;
5670
5671extern const MCRegisterInfo::DwarfLLVMRegPair PPCEHFlavour0L2Dwarf[];
5672extern const unsigned PPCEHFlavour0L2DwarfSize;
5673
5674extern const MCRegisterInfo::DwarfLLVMRegPair PPCEHFlavour1L2Dwarf[];
5675extern const unsigned PPCEHFlavour1L2DwarfSize;
5676
5677PPCGenRegisterInfo::
5678PPCGenRegisterInfo(unsigned RA, unsigned DwarfFlavour, unsigned EHFlavour,
5679      unsigned PC, unsigned HwMode)
5680  : TargetRegisterInfo(PPCRegInfoDesc, RegisterClasses, RegisterClasses+34,
5681             SubRegIndexNameTable, SubRegIndexLaneMaskTable,
5682             LaneBitmask(0xFFFFFFC0), RegClassInfos, HwMode) {
5683  InitMCRegisterInfo(PPCRegDesc, 344, RA, PC,
5684                     PPCMCRegisterClasses, 34,
5685                     PPCRegUnitRoots,
5686                     171,
5687                     PPCRegDiffLists,
5688                     PPCLaneMaskLists,
5689                     PPCRegStrings,
5690                     PPCRegClassStrings,
5691                     PPCSubRegIdxLists,
5692                     7,
5693                     PPCSubRegIdxRanges,
5694                     PPCRegEncodingTable);
5695
5696  switch (DwarfFlavour) {
5697  default:
5698    llvm_unreachable("Unknown DWARF flavour");
5699  case 0:
5700    mapDwarfRegsToLLVMRegs(PPCDwarfFlavour0Dwarf2L, PPCDwarfFlavour0Dwarf2LSize, false);
5701    break;
5702  case 1:
5703    mapDwarfRegsToLLVMRegs(PPCDwarfFlavour1Dwarf2L, PPCDwarfFlavour1Dwarf2LSize, false);
5704    break;
5705  }
5706  switch (EHFlavour) {
5707  default:
5708    llvm_unreachable("Unknown DWARF flavour");
5709  case 0:
5710    mapDwarfRegsToLLVMRegs(PPCEHFlavour0Dwarf2L, PPCEHFlavour0Dwarf2LSize, true);
5711    break;
5712  case 1:
5713    mapDwarfRegsToLLVMRegs(PPCEHFlavour1Dwarf2L, PPCEHFlavour1Dwarf2LSize, true);
5714    break;
5715  }
5716  switch (DwarfFlavour) {
5717  default:
5718    llvm_unreachable("Unknown DWARF flavour");
5719  case 0:
5720    mapLLVMRegsToDwarfRegs(PPCDwarfFlavour0L2Dwarf, PPCDwarfFlavour0L2DwarfSize, false);
5721    break;
5722  case 1:
5723    mapLLVMRegsToDwarfRegs(PPCDwarfFlavour1L2Dwarf, PPCDwarfFlavour1L2DwarfSize, false);
5724    break;
5725  }
5726  switch (EHFlavour) {
5727  default:
5728    llvm_unreachable("Unknown DWARF flavour");
5729  case 0:
5730    mapLLVMRegsToDwarfRegs(PPCEHFlavour0L2Dwarf, PPCEHFlavour0L2DwarfSize, true);
5731    break;
5732  case 1:
5733    mapLLVMRegsToDwarfRegs(PPCEHFlavour1L2Dwarf, PPCEHFlavour1L2DwarfSize, true);
5734    break;
5735  }
5736}
5737
5738static const MCPhysReg CSR_64_AllRegs_SaveList[] = { PPC::X0, PPC::X3, PPC::X4, PPC::X5, PPC::X6, PPC::X7, PPC::X8, PPC::X9, PPC::X10, PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F0, PPC::F1, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR0, PPC::CR1, PPC::CR2, PPC::CR3, PPC::CR4, PPC::CR5, PPC::CR6, PPC::CR7, 0 };
5739static const uint32_t CSR_64_AllRegs_RegMask[] = { 0xffeff000, 0x001fffff, 0xfc800000, 0x007fffe3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xfc800000, 0xff7fffe3, 0x00ffffff, };
5740static const MCPhysReg CSR_64_AllRegs_Altivec_SaveList[] = { PPC::X0, PPC::X3, PPC::X4, PPC::X5, PPC::X6, PPC::X7, PPC::X8, PPC::X9, PPC::X10, PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F0, PPC::F1, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR0, PPC::CR1, PPC::CR2, PPC::CR3, PPC::CR4, PPC::CR5, PPC::CR6, PPC::CR7, PPC::V0, PPC::V1, PPC::V2, PPC::V3, PPC::V4, PPC::V5, PPC::V6, PPC::V7, PPC::V8, PPC::V9, PPC::V10, PPC::V11, PPC::V12, PPC::V13, PPC::V14, PPC::V15, PPC::V16, PPC::V17, PPC::V18, PPC::V19, PPC::V20, PPC::V21, PPC::V22, PPC::V23, PPC::V24, PPC::V25, PPC::V26, PPC::V27, PPC::V28, PPC::V29, PPC::V30, PPC::V31, 0 };
5741static const uint32_t CSR_64_AllRegs_Altivec_RegMask[] = { 0xffeff000, 0x001fffff, 0xfc800000, 0x007fffe3, 0xff800000, 0xffffffff, 0x007fffff, 0x00000000, 0xfc800000, 0xff7fffe3, 0x00ffffff, };
5742static const MCPhysReg CSR_64_AllRegs_VSX_SaveList[] = { PPC::X0, PPC::X3, PPC::X4, PPC::X5, PPC::X6, PPC::X7, PPC::X8, PPC::X9, PPC::X10, PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F0, PPC::F1, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR0, PPC::CR1, PPC::CR2, PPC::CR3, PPC::CR4, PPC::CR5, PPC::CR6, PPC::CR7, PPC::V0, PPC::V1, PPC::V2, PPC::V3, PPC::V4, PPC::V5, PPC::V6, PPC::V7, PPC::V8, PPC::V9, PPC::V10, PPC::V11, PPC::V12, PPC::V13, PPC::V14, PPC::V15, PPC::V16, PPC::V17, PPC::V18, PPC::V19, PPC::V20, PPC::V21, PPC::V22, PPC::V23, PPC::V24, PPC::V25, PPC::V26, PPC::V27, PPC::V28, PPC::V29, PPC::V30, PPC::V31, PPC::VSL0, PPC::VSL1, PPC::VSL2, PPC::VSL3, PPC::VSL4, PPC::VSL5, PPC::VSL6, PPC::VSL7, PPC::VSL8, PPC::VSL9, PPC::VSL10, PPC::VSL11, PPC::VSL12, PPC::VSL13, PPC::VSL14, PPC::VSL15, PPC::VSL16, PPC::VSL17, PPC::VSL18, PPC::VSL19, PPC::VSL20, PPC::VSL21, PPC::VSL22, PPC::VSL23, PPC::VSL24, PPC::VSL25, PPC::VSL26, PPC::VSL27, PPC::VSL28, PPC::VSL29, PPC::VSL30, PPC::VSL31, 0 };
5743static const uint32_t CSR_64_AllRegs_VSX_RegMask[] = { 0xffeff000, 0x001fffff, 0xfc800000, 0x007fffe3, 0xff800000, 0xffffffff, 0xffffffff, 0x007fffff, 0xfc800000, 0xff7fffe3, 0x00ffffff, };
5744static const MCPhysReg CSR_AIX32_SaveList[] = { PPC::R13, PPC::R14, PPC::R15, PPC::R16, PPC::R17, PPC::R18, PPC::R19, PPC::R20, PPC::R21, PPC::R22, PPC::R23, PPC::R24, PPC::R25, PPC::R26, PPC::R27, PPC::R28, PPC::R29, PPC::R30, PPC::R31, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR2, PPC::CR3, PPC::CR4, 0 };
5745static const uint32_t CSR_AIX32_RegMask[] = { 0x0001c000, 0x001ffff8, 0x00000000, 0x007ffff0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1c000000, 0x001c1c1c, };
5746static const MCPhysReg CSR_AIX64_SaveList[] = { PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR2, PPC::CR3, PPC::CR4, 0 };
5747static const uint32_t CSR_AIX64_RegMask[] = { 0x0001c000, 0x001ffff8, 0x00000000, 0x007fffe0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1c7fffe0, 0x001c1c1c, };
5748static const MCPhysReg CSR_Altivec_SaveList[] = { PPC::V20, PPC::V21, PPC::V22, PPC::V23, PPC::V24, PPC::V25, PPC::V26, PPC::V27, PPC::V28, PPC::V29, PPC::V30, PPC::V31, 0 };
5749static const uint32_t CSR_Altivec_RegMask[] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007ff800, 0x007ff800, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
5750static const MCPhysReg CSR_Darwin32_SaveList[] = { PPC::R13, PPC::R14, PPC::R15, PPC::R16, PPC::R17, PPC::R18, PPC::R19, PPC::R20, PPC::R21, PPC::R22, PPC::R23, PPC::R24, PPC::R25, PPC::R26, PPC::R27, PPC::R28, PPC::R29, PPC::R30, PPC::R31, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR2, PPC::CR3, PPC::CR4, 0 };
5751static const uint32_t CSR_Darwin32_RegMask[] = { 0x0001c000, 0x001ffff8, 0x00000000, 0x007ffff0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1c000000, 0x001c1c1c, };
5752static const MCPhysReg CSR_Darwin32_Altivec_SaveList[] = { PPC::R13, PPC::R14, PPC::R15, PPC::R16, PPC::R17, PPC::R18, PPC::R19, PPC::R20, PPC::R21, PPC::R22, PPC::R23, PPC::R24, PPC::R25, PPC::R26, PPC::R27, PPC::R28, PPC::R29, PPC::R30, PPC::R31, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR2, PPC::CR3, PPC::CR4, PPC::V20, PPC::V21, PPC::V22, PPC::V23, PPC::V24, PPC::V25, PPC::V26, PPC::V27, PPC::V28, PPC::V29, PPC::V30, PPC::V31, 0 };
5753static const uint32_t CSR_Darwin32_Altivec_RegMask[] = { 0x0001c000, 0x001ffff8, 0x00000000, 0x007ffff0, 0x00000000, 0x007ff800, 0x007ff800, 0x00000000, 0x00000000, 0x1c000000, 0x001c1c1c, };
5754static const MCPhysReg CSR_Darwin64_SaveList[] = { PPC::X13, PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR2, PPC::CR3, PPC::CR4, 0 };
5755static const uint32_t CSR_Darwin64_RegMask[] = { 0x0001c000, 0x001ffff8, 0x00000000, 0x007ffff0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1c7ffff0, 0x001c1c1c, };
5756static const MCPhysReg CSR_Darwin64_Altivec_SaveList[] = { PPC::X13, PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR2, PPC::CR3, PPC::CR4, PPC::V20, PPC::V21, PPC::V22, PPC::V23, PPC::V24, PPC::V25, PPC::V26, PPC::V27, PPC::V28, PPC::V29, PPC::V30, PPC::V31, 0 };
5757static const uint32_t CSR_Darwin64_Altivec_RegMask[] = { 0x0001c000, 0x001ffff8, 0x00000000, 0x007ffff0, 0x00000000, 0x007ff800, 0x007ff800, 0x00000000, 0x00000000, 0x1c7ffff0, 0x001c1c1c, };
5758static const MCPhysReg CSR_NoRegs_SaveList[] = { 0 };
5759static const uint32_t CSR_NoRegs_RegMask[] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
5760static const MCPhysReg CSR_SPE_SaveList[] = { PPC::S14, PPC::S15, PPC::S16, PPC::S17, PPC::S18, PPC::S19, PPC::S20, PPC::S21, PPC::S22, PPC::S23, PPC::S24, PPC::S25, PPC::S26, PPC::S27, PPC::S28, PPC::S29, PPC::S30, PPC::S31, 0 };
5761static const uint32_t CSR_SPE_RegMask[] = { 0x00000000, 0x00000000, 0x00000000, 0x007fffe0, 0x007fffe0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
5762static const MCPhysReg CSR_SRV464_TLS_PE_SaveList[] = { 0 };
5763static const uint32_t CSR_SRV464_TLS_PE_RegMask[] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
5764static const MCPhysReg CSR_SVR32_ColdCC_SaveList[] = { PPC::R4, PPC::R5, PPC::R6, PPC::R7, PPC::R8, PPC::R9, PPC::R10, PPC::R14, PPC::R15, PPC::R16, PPC::R17, PPC::R18, PPC::R19, PPC::R20, PPC::R21, PPC::R22, PPC::R23, PPC::R24, PPC::R25, PPC::R26, PPC::R27, PPC::R28, PPC::R29, PPC::R30, PPC::R31, PPC::CR0, PPC::CR1, PPC::CR2, PPC::CR3, PPC::CR4, PPC::CR5, PPC::CR6, PPC::CR7, PPC::F0, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, 0 };
5765static const uint32_t CSR_SVR32_ColdCC_RegMask[] = { 0xffaff000, 0x001fffff, 0xf8000000, 0x007fffe3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00ffffff, };
5766static const MCPhysReg CSR_SVR32_ColdCC_Altivec_SaveList[] = { PPC::R4, PPC::R5, PPC::R6, PPC::R7, PPC::R8, PPC::R9, PPC::R10, PPC::R14, PPC::R15, PPC::R16, PPC::R17, PPC::R18, PPC::R19, PPC::R20, PPC::R21, PPC::R22, PPC::R23, PPC::R24, PPC::R25, PPC::R26, PPC::R27, PPC::R28, PPC::R29, PPC::R30, PPC::R31, PPC::CR0, PPC::CR1, PPC::CR2, PPC::CR3, PPC::CR4, PPC::CR5, PPC::CR6, PPC::CR7, PPC::F0, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::V0, PPC::V1, PPC::V3, PPC::V4, PPC::V5, PPC::V6, PPC::V7, PPC::V8, PPC::V9, PPC::V10, PPC::V11, PPC::V12, PPC::V13, PPC::V14, PPC::V15, PPC::V16, PPC::V17, PPC::V18, PPC::V19, PPC::V20, PPC::V21, PPC::V22, PPC::V23, PPC::V24, PPC::V25, PPC::V26, PPC::V27, PPC::V28, PPC::V29, PPC::V30, PPC::V31, 0 };
5767static const uint32_t CSR_SVR32_ColdCC_Altivec_RegMask[] = { 0xffaff000, 0x001fffff, 0xf8000000, 0x007fffe3, 0xfd800000, 0xfdffffff, 0x007fffff, 0x00000000, 0x00000000, 0xff000000, 0x00ffffff, };
5768static const MCPhysReg CSR_SVR32_ColdCC_Common_SaveList[] = { PPC::R4, PPC::R5, PPC::R6, PPC::R7, PPC::R8, PPC::R9, PPC::R10, PPC::R14, PPC::R15, PPC::R16, PPC::R17, PPC::R18, PPC::R19, PPC::R20, PPC::R21, PPC::R22, PPC::R23, PPC::R24, PPC::R25, PPC::R26, PPC::R27, PPC::R28, PPC::R29, PPC::R30, PPC::R31, PPC::CR0, PPC::CR1, PPC::CR2, PPC::CR3, PPC::CR4, PPC::CR5, PPC::CR6, PPC::CR7, 0 };
5769static const uint32_t CSR_SVR32_ColdCC_Common_RegMask[] = { 0x000ff000, 0x00000000, 0xf8000000, 0x007fffe3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00ffffff, };
5770static const MCPhysReg CSR_SVR32_ColdCC_SPE_SaveList[] = { PPC::R4, PPC::R5, PPC::R6, PPC::R7, PPC::R8, PPC::R9, PPC::R10, PPC::R14, PPC::R15, PPC::R16, PPC::R17, PPC::R18, PPC::R19, PPC::R20, PPC::R21, PPC::R22, PPC::R23, PPC::R24, PPC::R25, PPC::R26, PPC::R27, PPC::R28, PPC::R29, PPC::R30, PPC::R31, PPC::CR0, PPC::CR1, PPC::CR2, PPC::CR3, PPC::CR4, PPC::CR5, PPC::CR6, PPC::CR7, PPC::S4, PPC::S5, PPC::S6, PPC::S7, PPC::S8, PPC::S9, PPC::S10, PPC::S14, PPC::S15, PPC::S16, PPC::S17, PPC::S18, PPC::S19, PPC::S20, PPC::S21, PPC::S22, PPC::S23, PPC::S24, PPC::S25, PPC::S26, PPC::S27, PPC::S28, PPC::S29, PPC::S30, PPC::S31, 0 };
5771static const uint32_t CSR_SVR32_ColdCC_SPE_RegMask[] = { 0x000ff000, 0x00000000, 0xf8000000, 0xf87fffe3, 0x007fffe3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00ffffff, };
5772static const MCPhysReg CSR_SVR432_SaveList[] = { PPC::R14, PPC::R15, PPC::R16, PPC::R17, PPC::R18, PPC::R19, PPC::R20, PPC::R21, PPC::R22, PPC::R23, PPC::R24, PPC::R25, PPC::R26, PPC::R27, PPC::R28, PPC::R29, PPC::R30, PPC::R31, PPC::CR2, PPC::CR3, PPC::CR4, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, 0 };
5773static const uint32_t CSR_SVR432_RegMask[] = { 0x0001c000, 0x001ffff8, 0x00000000, 0x007fffe0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1c000000, 0x001c1c1c, };
5774static const MCPhysReg CSR_SVR432_Altivec_SaveList[] = { PPC::R14, PPC::R15, PPC::R16, PPC::R17, PPC::R18, PPC::R19, PPC::R20, PPC::R21, PPC::R22, PPC::R23, PPC::R24, PPC::R25, PPC::R26, PPC::R27, PPC::R28, PPC::R29, PPC::R30, PPC::R31, PPC::CR2, PPC::CR3, PPC::CR4, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::V20, PPC::V21, PPC::V22, PPC::V23, PPC::V24, PPC::V25, PPC::V26, PPC::V27, PPC::V28, PPC::V29, PPC::V30, PPC::V31, 0 };
5775static const uint32_t CSR_SVR432_Altivec_RegMask[] = { 0x0001c000, 0x001ffff8, 0x00000000, 0x007fffe0, 0x00000000, 0x007ff800, 0x007ff800, 0x00000000, 0x00000000, 0x1c000000, 0x001c1c1c, };
5776static const MCPhysReg CSR_SVR432_COMM_SaveList[] = { PPC::R14, PPC::R15, PPC::R16, PPC::R17, PPC::R18, PPC::R19, PPC::R20, PPC::R21, PPC::R22, PPC::R23, PPC::R24, PPC::R25, PPC::R26, PPC::R27, PPC::R28, PPC::R29, PPC::R30, PPC::R31, PPC::CR2, PPC::CR3, PPC::CR4, 0 };
5777static const uint32_t CSR_SVR432_COMM_RegMask[] = { 0x0001c000, 0x00000000, 0x00000000, 0x007fffe0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1c000000, 0x001c1c1c, };
5778static const MCPhysReg CSR_SVR432_SPE_SaveList[] = { PPC::R14, PPC::R15, PPC::R16, PPC::R17, PPC::R18, PPC::R19, PPC::R20, PPC::R21, PPC::R22, PPC::R23, PPC::R24, PPC::R25, PPC::R26, PPC::R27, PPC::R28, PPC::R29, PPC::R30, PPC::R31, PPC::CR2, PPC::CR3, PPC::CR4, PPC::S14, PPC::S15, PPC::S16, PPC::S17, PPC::S18, PPC::S19, PPC::S20, PPC::S21, PPC::S22, PPC::S23, PPC::S24, PPC::S25, PPC::S26, PPC::S27, PPC::S28, PPC::S29, PPC::S30, PPC::S31, 0 };
5779static const uint32_t CSR_SVR432_SPE_RegMask[] = { 0x0001c000, 0x00000000, 0x00000000, 0x007fffe0, 0x007fffe0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1c000000, 0x001c1c1c, };
5780static const MCPhysReg CSR_SVR464_SaveList[] = { PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR2, PPC::CR3, PPC::CR4, 0 };
5781static const uint32_t CSR_SVR464_RegMask[] = { 0x0001c000, 0x001ffff8, 0x00000000, 0x007fffe0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1c7fffe0, 0x001c1c1c, };
5782static const MCPhysReg CSR_SVR464_Altivec_SaveList[] = { PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR2, PPC::CR3, PPC::CR4, PPC::V20, PPC::V21, PPC::V22, PPC::V23, PPC::V24, PPC::V25, PPC::V26, PPC::V27, PPC::V28, PPC::V29, PPC::V30, PPC::V31, 0 };
5783static const uint32_t CSR_SVR464_Altivec_RegMask[] = { 0x0001c000, 0x001ffff8, 0x00000000, 0x007fffe0, 0x00000000, 0x007ff800, 0x007ff800, 0x00000000, 0x00000000, 0x1c7fffe0, 0x001c1c1c, };
5784static const MCPhysReg CSR_SVR464_Altivec_ViaCopy_SaveList[] = { PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR2, PPC::CR3, PPC::CR4, PPC::V20, PPC::V21, PPC::V22, PPC::V23, PPC::V24, PPC::V25, PPC::V26, PPC::V27, PPC::V28, PPC::V29, PPC::V30, PPC::V31, 0 };
5785static const uint32_t CSR_SVR464_Altivec_ViaCopy_RegMask[] = { 0x0001c000, 0x001ffff8, 0x00000000, 0x007fffe0, 0x00000000, 0x007ff800, 0x007ff800, 0x00000000, 0x00000000, 0x1c7fffe0, 0x001c1c1c, };
5786static const MCPhysReg CSR_SVR464_R2_SaveList[] = { PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR2, PPC::CR3, PPC::CR4, PPC::X2, 0 };
5787static const uint32_t CSR_SVR464_R2_RegMask[] = { 0x0001c000, 0x001ffff8, 0x02000000, 0x007fffe0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02000000, 0x1c7fffe0, 0x001c1c1c, };
5788static const MCPhysReg CSR_SVR464_R2_Altivec_SaveList[] = { PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR2, PPC::CR3, PPC::CR4, PPC::V20, PPC::V21, PPC::V22, PPC::V23, PPC::V24, PPC::V25, PPC::V26, PPC::V27, PPC::V28, PPC::V29, PPC::V30, PPC::V31, PPC::X2, 0 };
5789static const uint32_t CSR_SVR464_R2_Altivec_RegMask[] = { 0x0001c000, 0x001ffff8, 0x02000000, 0x007fffe0, 0x00000000, 0x007ff800, 0x007ff800, 0x00000000, 0x02000000, 0x1c7fffe0, 0x001c1c1c, };
5790static const MCPhysReg CSR_SVR464_R2_Altivec_ViaCopy_SaveList[] = { PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR2, PPC::CR3, PPC::CR4, PPC::V20, PPC::V21, PPC::V22, PPC::V23, PPC::V24, PPC::V25, PPC::V26, PPC::V27, PPC::V28, PPC::V29, PPC::V30, PPC::V31, PPC::X2, 0 };
5791static const uint32_t CSR_SVR464_R2_Altivec_ViaCopy_RegMask[] = { 0x0001c000, 0x001ffff8, 0x02000000, 0x007fffe0, 0x00000000, 0x007ff800, 0x007ff800, 0x00000000, 0x02000000, 0x1c7fffe0, 0x001c1c1c, };
5792static const MCPhysReg CSR_SVR464_R2_ViaCopy_SaveList[] = { PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR2, PPC::CR3, PPC::CR4, PPC::X2, 0 };
5793static const uint32_t CSR_SVR464_R2_ViaCopy_RegMask[] = { 0x0001c000, 0x001ffff8, 0x02000000, 0x007fffe0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02000000, 0x1c7fffe0, 0x001c1c1c, };
5794static const MCPhysReg CSR_SVR464_ViaCopy_SaveList[] = { PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR2, PPC::CR3, PPC::CR4, 0 };
5795static const uint32_t CSR_SVR464_ViaCopy_RegMask[] = { 0x0001c000, 0x001ffff8, 0x00000000, 0x007fffe0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1c7fffe0, 0x001c1c1c, };
5796static const MCPhysReg CSR_SVR64_ColdCC_SaveList[] = { PPC::X4, PPC::X5, PPC::X6, PPC::X7, PPC::X8, PPC::X9, PPC::X10, PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F0, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR0, PPC::CR1, PPC::CR2, PPC::CR3, PPC::CR4, PPC::CR5, PPC::CR6, PPC::CR7, 0 };
5797static const uint32_t CSR_SVR64_ColdCC_RegMask[] = { 0xffaff000, 0x001fffff, 0xf8000000, 0x007fffe3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xf8000000, 0xff7fffe3, 0x00ffffff, };
5798static const MCPhysReg CSR_SVR64_ColdCC_Altivec_SaveList[] = { PPC::X4, PPC::X5, PPC::X6, PPC::X7, PPC::X8, PPC::X9, PPC::X10, PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F0, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR0, PPC::CR1, PPC::CR2, PPC::CR3, PPC::CR4, PPC::CR5, PPC::CR6, PPC::CR7, PPC::V0, PPC::V1, PPC::V3, PPC::V4, PPC::V5, PPC::V6, PPC::V7, PPC::V8, PPC::V9, PPC::V10, PPC::V11, PPC::V12, PPC::V13, PPC::V14, PPC::V15, PPC::V16, PPC::V17, PPC::V18, PPC::V19, PPC::V20, PPC::V21, PPC::V22, PPC::V23, PPC::V24, PPC::V25, PPC::V26, PPC::V27, PPC::V28, PPC::V29, PPC::V30, PPC::V31, 0 };
5799static const uint32_t CSR_SVR64_ColdCC_Altivec_RegMask[] = { 0xffaff000, 0x001fffff, 0xf8000000, 0x007fffe3, 0xfd800000, 0xfdffffff, 0x007fffff, 0x00000000, 0xf8000000, 0xff7fffe3, 0x00ffffff, };
5800static const MCPhysReg CSR_SVR64_ColdCC_R2_SaveList[] = { PPC::X4, PPC::X5, PPC::X6, PPC::X7, PPC::X8, PPC::X9, PPC::X10, PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F0, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR0, PPC::CR1, PPC::CR2, PPC::CR3, PPC::CR4, PPC::CR5, PPC::CR6, PPC::CR7, PPC::X2, 0 };
5801static const uint32_t CSR_SVR64_ColdCC_R2_RegMask[] = { 0xffaff000, 0x001fffff, 0xfa000000, 0x007fffe3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xfa000000, 0xff7fffe3, 0x00ffffff, };
5802static const MCPhysReg CSR_SVR64_ColdCC_R2_Altivec_SaveList[] = { PPC::X4, PPC::X5, PPC::X6, PPC::X7, PPC::X8, PPC::X9, PPC::X10, PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31, PPC::F0, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR0, PPC::CR1, PPC::CR2, PPC::CR3, PPC::CR4, PPC::CR5, PPC::CR6, PPC::CR7, PPC::V0, PPC::V1, PPC::V3, PPC::V4, PPC::V5, PPC::V6, PPC::V7, PPC::V8, PPC::V9, PPC::V10, PPC::V11, PPC::V12, PPC::V13, PPC::V14, PPC::V15, PPC::V16, PPC::V17, PPC::V18, PPC::V19, PPC::V20, PPC::V21, PPC::V22, PPC::V23, PPC::V24, PPC::V25, PPC::V26, PPC::V27, PPC::V28, PPC::V29, PPC::V30, PPC::V31, PPC::X2, 0 };
5803static const uint32_t CSR_SVR64_ColdCC_R2_Altivec_RegMask[] = { 0xffaff000, 0x001fffff, 0xfa000000, 0x007fffe3, 0xfd800000, 0xfdffffff, 0x007fffff, 0x00000000, 0xfa000000, 0xff7fffe3, 0x00ffffff, };
5804
5805
5806ArrayRef<const uint32_t *> PPCGenRegisterInfo::getRegMasks() const {
5807  static const uint32_t *const Masks[] = {
5808    CSR_64_AllRegs_RegMask,
5809    CSR_64_AllRegs_Altivec_RegMask,
5810    CSR_64_AllRegs_VSX_RegMask,
5811    CSR_AIX32_RegMask,
5812    CSR_AIX64_RegMask,
5813    CSR_Altivec_RegMask,
5814    CSR_Darwin32_RegMask,
5815    CSR_Darwin32_Altivec_RegMask,
5816    CSR_Darwin64_RegMask,
5817    CSR_Darwin64_Altivec_RegMask,
5818    CSR_NoRegs_RegMask,
5819    CSR_SPE_RegMask,
5820    CSR_SRV464_TLS_PE_RegMask,
5821    CSR_SVR32_ColdCC_RegMask,
5822    CSR_SVR32_ColdCC_Altivec_RegMask,
5823    CSR_SVR32_ColdCC_Common_RegMask,
5824    CSR_SVR32_ColdCC_SPE_RegMask,
5825    CSR_SVR432_RegMask,
5826    CSR_SVR432_Altivec_RegMask,
5827    CSR_SVR432_COMM_RegMask,
5828    CSR_SVR432_SPE_RegMask,
5829    CSR_SVR464_RegMask,
5830    CSR_SVR464_Altivec_RegMask,
5831    CSR_SVR464_Altivec_ViaCopy_RegMask,
5832    CSR_SVR464_R2_RegMask,
5833    CSR_SVR464_R2_Altivec_RegMask,
5834    CSR_SVR464_R2_Altivec_ViaCopy_RegMask,
5835    CSR_SVR464_R2_ViaCopy_RegMask,
5836    CSR_SVR464_ViaCopy_RegMask,
5837    CSR_SVR64_ColdCC_RegMask,
5838    CSR_SVR64_ColdCC_Altivec_RegMask,
5839    CSR_SVR64_ColdCC_R2_RegMask,
5840    CSR_SVR64_ColdCC_R2_Altivec_RegMask,
5841  };
5842  return makeArrayRef(Masks);
5843}
5844
5845ArrayRef<const char *> PPCGenRegisterInfo::getRegMaskNames() const {
5846  static const char *const Names[] = {
5847    "CSR_64_AllRegs",
5848    "CSR_64_AllRegs_Altivec",
5849    "CSR_64_AllRegs_VSX",
5850    "CSR_AIX32",
5851    "CSR_AIX64",
5852    "CSR_Altivec",
5853    "CSR_Darwin32",
5854    "CSR_Darwin32_Altivec",
5855    "CSR_Darwin64",
5856    "CSR_Darwin64_Altivec",
5857    "CSR_NoRegs",
5858    "CSR_SPE",
5859    "CSR_SRV464_TLS_PE",
5860    "CSR_SVR32_ColdCC",
5861    "CSR_SVR32_ColdCC_Altivec",
5862    "CSR_SVR32_ColdCC_Common",
5863    "CSR_SVR32_ColdCC_SPE",
5864    "CSR_SVR432",
5865    "CSR_SVR432_Altivec",
5866    "CSR_SVR432_COMM",
5867    "CSR_SVR432_SPE",
5868    "CSR_SVR464",
5869    "CSR_SVR464_Altivec",
5870    "CSR_SVR464_Altivec_ViaCopy",
5871    "CSR_SVR464_R2",
5872    "CSR_SVR464_R2_Altivec",
5873    "CSR_SVR464_R2_Altivec_ViaCopy",
5874    "CSR_SVR464_R2_ViaCopy",
5875    "CSR_SVR464_ViaCopy",
5876    "CSR_SVR64_ColdCC",
5877    "CSR_SVR64_ColdCC_Altivec",
5878    "CSR_SVR64_ColdCC_R2",
5879    "CSR_SVR64_ColdCC_R2_Altivec",
5880  };
5881  return makeArrayRef(Names);
5882}
5883
5884const PPCFrameLowering *
5885PPCGenRegisterInfo::getFrameLowering(const MachineFunction &MF) {
5886  return static_cast<const PPCFrameLowering *>(
5887      MF.getSubtarget().getFrameLowering());
5888}
5889
5890} // end namespace llvm
5891
5892#endif // GET_REGINFO_TARGET_DESC
5893
5894