Coverage Report

Created: 2024-01-17 10:31

/src/build/lib/Target/Hexagon/HexagonGenRegisterInfo.inc
Line
Count
Source (jump to first uncovered line)
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
13
namespace llvm {
14
15
class MCRegisterClass;
16
extern const MCRegisterClass HexagonMCRegisterClasses[];
17
18
namespace Hexagon {
19
enum {
20
  NoRegister,
21
  BADVA = 1,
22
  CCR = 2,
23
  CFGBASE = 3,
24
  CS = 4,
25
  DIAG = 5,
26
  ELR = 6,
27
  EVB = 7,
28
  FRAMEKEY = 8,
29
  FRAMELIMIT = 9,
30
  GELR = 10,
31
  GOSP = 11,
32
  GP = 12,
33
  GPCYCLEHI = 13,
34
  GPCYCLELO = 14,
35
  GSR = 15,
36
  HTID = 16,
37
  IMASK = 17,
38
  ISDBEN = 18,
39
  ISDBGPR = 19,
40
  ISDBMBXIN = 20,
41
  ISDBMBXOUT = 21,
42
  ISDBST = 22,
43
  MODECTL = 23,
44
  PC = 24,
45
  PCYCLEHI = 25,
46
  PCYCLELO = 26,
47
  PKTCOUNT = 27,
48
  PKTCOUNTHI = 28,
49
  PKTCOUNTLO = 29,
50
  PMUCFG = 30,
51
  PMUEVTCFG = 31,
52
  REV = 32,
53
  SSR = 33,
54
  STID = 34,
55
  SYSCFG = 35,
56
  UGP = 36,
57
  UPCYCLE = 37,
58
  UPCYCLEHI = 38,
59
  UPCYCLELO = 39,
60
  USR = 40,
61
  USR_OVF = 41,
62
  UTIMER = 42,
63
  UTIMERHI = 43,
64
  UTIMERLO = 44,
65
  VID = 45,
66
  VTMP = 46,
67
  BADVA0 = 47,
68
  BADVA1 = 48,
69
  BRKPTCFG0 = 49,
70
  BRKPTCFG1 = 50,
71
  BRKPTPC0 = 51,
72
  BRKPTPC1 = 52,
73
  C5 = 53,
74
  C8 = 54,
75
  CS0 = 55,
76
  CS1 = 56,
77
  D0 = 57,
78
  D1 = 58,
79
  D2 = 59,
80
  D3 = 60,
81
  D4 = 61,
82
  D5 = 62,
83
  D6 = 63,
84
  D7 = 64,
85
  D8 = 65,
86
  D9 = 66,
87
  D10 = 67,
88
  D11 = 68,
89
  D12 = 69,
90
  D13 = 70,
91
  D14 = 71,
92
  D15 = 72,
93
  G3 = 73,
94
  G4 = 74,
95
  G5 = 75,
96
  G6 = 76,
97
  G7 = 77,
98
  G8 = 78,
99
  G9 = 79,
100
  G10 = 80,
101
  G11 = 81,
102
  G12 = 82,
103
  G13 = 83,
104
  G14 = 84,
105
  G15 = 85,
106
  G20 = 86,
107
  G21 = 87,
108
  G22 = 88,
109
  G23 = 89,
110
  G30 = 90,
111
  G31 = 91,
112
  GPMUCNT0 = 92,
113
  GPMUCNT1 = 93,
114
  GPMUCNT2 = 94,
115
  GPMUCNT3 = 95,
116
  GPMUCNT4 = 96,
117
  GPMUCNT5 = 97,
118
  GPMUCNT6 = 98,
119
  GPMUCNT7 = 99,
120
  ISDBCFG0 = 100,
121
  ISDBCFG1 = 101,
122
  LC0 = 102,
123
  LC1 = 103,
124
  M0 = 104,
125
  M1 = 105,
126
  P0 = 106,
127
  P1 = 107,
128
  P2 = 108,
129
  P3 = 109,
130
  PMUCNT0 = 110,
131
  PMUCNT1 = 111,
132
  PMUCNT2 = 112,
133
  PMUCNT3 = 113,
134
  Q0 = 114,
135
  Q1 = 115,
136
  Q2 = 116,
137
  Q3 = 117,
138
  R0 = 118,
139
  R1 = 119,
140
  R2 = 120,
141
  R3 = 121,
142
  R4 = 122,
143
  R5 = 123,
144
  R6 = 124,
145
  R7 = 125,
146
  R8 = 126,
147
  R9 = 127,
148
  R10 = 128,
149
  R11 = 129,
150
  R12 = 130,
151
  R13 = 131,
152
  R14 = 132,
153
  R15 = 133,
154
  R16 = 134,
155
  R17 = 135,
156
  R18 = 136,
157
  R19 = 137,
158
  R20 = 138,
159
  R21 = 139,
160
  R22 = 140,
161
  R23 = 141,
162
  R24 = 142,
163
  R25 = 143,
164
  R26 = 144,
165
  R27 = 145,
166
  R28 = 146,
167
  R29 = 147,
168
  R30 = 148,
169
  R31 = 149,
170
  S11 = 150,
171
  S12 = 151,
172
  S13 = 152,
173
  S14 = 153,
174
  S15 = 154,
175
  S19 = 155,
176
  S20 = 156,
177
  S22 = 157,
178
  S23 = 158,
179
  S24 = 159,
180
  S25 = 160,
181
  S26 = 161,
182
  S35 = 162,
183
  S44 = 163,
184
  S45 = 164,
185
  S46 = 165,
186
  S47 = 166,
187
  S54 = 167,
188
  S55 = 168,
189
  S56 = 169,
190
  S57 = 170,
191
  S58 = 171,
192
  S59 = 172,
193
  S60 = 173,
194
  S61 = 174,
195
  S62 = 175,
196
  S63 = 176,
197
  S64 = 177,
198
  S65 = 178,
199
  S66 = 179,
200
  S67 = 180,
201
  S68 = 181,
202
  S69 = 182,
203
  S70 = 183,
204
  S71 = 184,
205
  S72 = 185,
206
  S73 = 186,
207
  S74 = 187,
208
  S75 = 188,
209
  S76 = 189,
210
  S77 = 190,
211
  S78 = 191,
212
  S79 = 192,
213
  S80 = 193,
214
  SA0 = 194,
215
  SA1 = 195,
216
  SGP0 = 196,
217
  SGP1 = 197,
218
  V0 = 198,
219
  V1 = 199,
220
  V2 = 200,
221
  V3 = 201,
222
  V4 = 202,
223
  V5 = 203,
224
  V6 = 204,
225
  V7 = 205,
226
  V8 = 206,
227
  V9 = 207,
228
  V10 = 208,
229
  V11 = 209,
230
  V12 = 210,
231
  V13 = 211,
232
  V14 = 212,
233
  V15 = 213,
234
  V16 = 214,
235
  V17 = 215,
236
  V18 = 216,
237
  V19 = 217,
238
  V20 = 218,
239
  V21 = 219,
240
  V22 = 220,
241
  V23 = 221,
242
  V24 = 222,
243
  V25 = 223,
244
  V26 = 224,
245
  V27 = 225,
246
  V28 = 226,
247
  V29 = 227,
248
  V30 = 228,
249
  V31 = 229,
250
  VF0 = 230,
251
  VF1 = 231,
252
  VF2 = 232,
253
  VF3 = 233,
254
  VF4 = 234,
255
  VF5 = 235,
256
  VF6 = 236,
257
  VF7 = 237,
258
  VF8 = 238,
259
  VF9 = 239,
260
  VF10 = 240,
261
  VF11 = 241,
262
  VF12 = 242,
263
  VF13 = 243,
264
  VF14 = 244,
265
  VF15 = 245,
266
  VF16 = 246,
267
  VF17 = 247,
268
  VF18 = 248,
269
  VF19 = 249,
270
  VF20 = 250,
271
  VF21 = 251,
272
  VF22 = 252,
273
  VF23 = 253,
274
  VF24 = 254,
275
  VF25 = 255,
276
  VF26 = 256,
277
  VF27 = 257,
278
  VF28 = 258,
279
  VF29 = 259,
280
  VF30 = 260,
281
  VF31 = 261,
282
  VFR0 = 262,
283
  VFR1 = 263,
284
  VFR2 = 264,
285
  VFR3 = 265,
286
  VFR4 = 266,
287
  VFR5 = 267,
288
  VFR6 = 268,
289
  VFR7 = 269,
290
  VFR8 = 270,
291
  VFR9 = 271,
292
  VFR10 = 272,
293
  VFR11 = 273,
294
  VFR12 = 274,
295
  VFR13 = 275,
296
  VFR14 = 276,
297
  VFR15 = 277,
298
  VFR16 = 278,
299
  VFR17 = 279,
300
  VFR18 = 280,
301
  VFR19 = 281,
302
  VFR20 = 282,
303
  VFR21 = 283,
304
  VFR22 = 284,
305
  VFR23 = 285,
306
  VFR24 = 286,
307
  VFR25 = 287,
308
  VFR26 = 288,
309
  VFR27 = 289,
310
  VFR28 = 290,
311
  VFR29 = 291,
312
  VFR30 = 292,
313
  VFR31 = 293,
314
  VQ0 = 294,
315
  VQ1 = 295,
316
  VQ2 = 296,
317
  VQ3 = 297,
318
  VQ4 = 298,
319
  VQ5 = 299,
320
  VQ6 = 300,
321
  VQ7 = 301,
322
  W0 = 302,
323
  W1 = 303,
324
  W2 = 304,
325
  W3 = 305,
326
  W4 = 306,
327
  W5 = 307,
328
  W6 = 308,
329
  W7 = 309,
330
  W8 = 310,
331
  W9 = 311,
332
  W10 = 312,
333
  W11 = 313,
334
  W12 = 314,
335
  W13 = 315,
336
  W14 = 316,
337
  W15 = 317,
338
  WR0 = 318,
339
  WR1 = 319,
340
  WR2 = 320,
341
  WR3 = 321,
342
  WR4 = 322,
343
  WR5 = 323,
344
  WR6 = 324,
345
  WR7 = 325,
346
  WR8 = 326,
347
  WR9 = 327,
348
  WR10 = 328,
349
  WR11 = 329,
350
  WR12 = 330,
351
  WR13 = 331,
352
  WR14 = 332,
353
  WR15 = 333,
354
  C1_0 = 334,
355
  C3_2 = 335,
356
  C5_4 = 336,
357
  C7_6 = 337,
358
  C9_8 = 338,
359
  C11_10 = 339,
360
  C17_16 = 340,
361
  G1_0 = 341,
362
  G3_2 = 342,
363
  G5_4 = 343,
364
  G7_6 = 344,
365
  G9_8 = 345,
366
  G11_10 = 346,
367
  G13_12 = 347,
368
  G15_14 = 348,
369
  G17_16 = 349,
370
  G19_18 = 350,
371
  G21_20 = 351,
372
  G23_22 = 352,
373
  G25_24 = 353,
374
  G27_26 = 354,
375
  G29_28 = 355,
376
  G31_30 = 356,
377
  P3_0 = 357,
378
  S3_2 = 358,
379
  S5_4 = 359,
380
  S7_6 = 360,
381
  S9_8 = 361,
382
  S11_10 = 362,
383
  S13_12 = 363,
384
  S15_14 = 364,
385
  S17_16 = 365,
386
  S19_18 = 366,
387
  S21_20 = 367,
388
  S23_22 = 368,
389
  S25_24 = 369,
390
  S27_26 = 370,
391
  S29_28 = 371,
392
  S31_30 = 372,
393
  S33_32 = 373,
394
  S35_34 = 374,
395
  S37_36 = 375,
396
  S39_38 = 376,
397
  S41_40 = 377,
398
  S43_42 = 378,
399
  S45_44 = 379,
400
  S47_46 = 380,
401
  S49_48 = 381,
402
  S51_50 = 382,
403
  S53_52 = 383,
404
  S55_54 = 384,
405
  S57_56 = 385,
406
  S59_58 = 386,
407
  S61_60 = 387,
408
  S63_62 = 388,
409
  S65_64 = 389,
410
  S67_66 = 390,
411
  S69_68 = 391,
412
  S71_70 = 392,
413
  S73_72 = 393,
414
  S75_74 = 394,
415
  S77_76 = 395,
416
  S79_78 = 396,
417
  SGP1_0 = 397,
418
  NUM_TARGET_REGS // 398
419
};
420
} // end namespace Hexagon
421
422
// Register classes
423
424
namespace Hexagon {
425
enum {
426
  UsrBitsRegClassID = 0,
427
  SysRegsRegClassID = 1,
428
  GuestRegsRegClassID = 2,
429
  IntRegsRegClassID = 3,
430
  CtrRegsRegClassID = 4,
431
  GeneralSubRegsRegClassID = 5,
432
  V62RegsRegClassID = 6,
433
  IntRegsLow8RegClassID = 7,
434
  CtrRegs_and_V62RegsRegClassID = 8,
435
  PredRegsRegClassID = 9,
436
  V62Regs_with_isub_hiRegClassID = 10,
437
  ModRegsRegClassID = 11,
438
  CtrRegs_with_subreg_overflowRegClassID = 12,
439
  V65RegsRegClassID = 13,
440
  SysRegs64RegClassID = 14,
441
  DoubleRegsRegClassID = 15,
442
  GuestRegs64RegClassID = 16,
443
  VectRegRevRegClassID = 17,
444
  CtrRegs64RegClassID = 18,
445
  GeneralDoubleLow8RegsRegClassID = 19,
446
  DoubleRegs_with_isub_hi_in_IntRegsLow8RegClassID = 20,
447
  CtrRegs64_and_V62RegsRegClassID = 21,
448
  CtrRegs64_with_isub_hi_in_ModRegsRegClassID = 22,
449
  HvxQRRegClassID = 23,
450
  HvxVRRegClassID = 24,
451
  HvxVR_and_V65RegsRegClassID = 25,
452
  HvxWRRegClassID = 26,
453
  HvxWR_and_VectRegRevRegClassID = 27,
454
  HvxVQRRegClassID = 28,
455
456
};
457
} // end namespace Hexagon
458
459
460
// Subregister indices
461
462
namespace Hexagon {
463
enum : uint16_t {
464
  NoSubRegister,
465
  isub_hi,  // 1
466
  isub_lo,  // 2
467
  subreg_overflow,  // 3
468
  vsub_fake,  // 4
469
  vsub_hi,  // 5
470
  vsub_lo,  // 6
471
  wsub_hi,  // 7
472
  wsub_lo,  // 8
473
  wsub_hi_then_vsub_fake, // 9
474
  wsub_hi_then_vsub_hi, // 10
475
  wsub_hi_then_vsub_lo, // 11
476
  NUM_TARGET_SUBREGS
477
};
478
} // end namespace Hexagon
479
480
// Register pressure sets enum.
481
namespace Hexagon {
482
enum RegisterPressureSets {
483
  HvxVR_and_V65Regs = 0,
484
  ModRegs = 1,
485
  PredRegs = 2,
486
  HvxQR = 3,
487
  IntRegsLow8 = 4,
488
  GeneralSubRegs = 5,
489
  IntRegs = 6,
490
  HvxVR = 7,
491
};
492
} // end namespace Hexagon
493
494
} // end namespace llvm
495
496
#endif // GET_REGINFO_ENUM
497
498
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
499
|*                                                                            *|
500
|* MC Register Information                                                    *|
501
|*                                                                            *|
502
|* Automatically generated file, do not edit!                                 *|
503
|*                                                                            *|
504
\*===----------------------------------------------------------------------===*/
505
506
507
#ifdef GET_REGINFO_MC_DESC
508
#undef GET_REGINFO_MC_DESC
509
510
namespace llvm {
511
512
extern const int16_t HexagonRegDiffLists[] = {
513
  /* 0 */ 21, -304, 0,
514
  /* 3 */ -209, -158, 0,
515
  /* 6 */ -211, -111, 0,
516
  /* 9 */ -140, -92, 0,
517
  /* 12 */ -77, 0,
518
  /* 14 */ -76, 0,
519
  /* 16 */ -75, 0,
520
  /* 18 */ -74, 0,
521
  /* 20 */ -73, 0,
522
  /* 22 */ -72, 0,
523
  /* 24 */ -71, 0,
524
  /* 26 */ -70, 0,
525
  /* 28 */ -69, 0,
526
  /* 30 */ -68, 0,
527
  /* 32 */ -67, 0,
528
  /* 34 */ -66, 0,
529
  /* 36 */ -65, 0,
530
  /* 38 */ -64, 0,
531
  /* 40 */ -63, 0,
532
  /* 42 */ -62, 0,
533
  /* 44 */ -61, 0,
534
  /* 46 */ -52, 0,
535
  /* 48 */ -51, 0,
536
  /* 50 */ -327, -31, 0,
537
  /* 53 */ -284, -30, 0,
538
  /* 56 */ -324, -28, 0,
539
  /* 59 */ -303, -24, 0,
540
  /* 62 */ -21, 0,
541
  /* 64 */ 72, -16, 0,
542
  /* 67 */ -345, -15, 0,
543
  /* 70 */ 72, -15, 0,
544
  /* 73 */ 72, -14, 0,
545
  /* 76 */ 72, -13, 0,
546
  /* 79 */ 72, -12, 0,
547
  /* 82 */ 72, -11, 0,
548
  /* 85 */ 72, -10, 0,
549
  /* 88 */ 72, -9, 0,
550
  /* 91 */ 72, -8, 0,
551
  /* 94 */ -324, -2, 0,
552
  /* 97 */ -352, -1, 0,
553
  /* 100 */ -346, -1, 0,
554
  /* 103 */ -339, -1, 0,
555
  /* 106 */ -331, -1, 0,
556
  /* 109 */ -205, -1, 0,
557
  /* 112 */ -204, -1, 0,
558
  /* 115 */ 2, -1, 0,
559
  /* 118 */ -360, 1, 0,
560
  /* 121 */ -357, 1, 0,
561
  /* 124 */ -312, 1, 0,
562
  /* 127 */ -271, 1, 0,
563
  /* 130 */ -270, 1, 0,
564
  /* 133 */ -269, 1, 0,
565
  /* 136 */ -268, 1, 0,
566
  /* 139 */ -267, 1, 0,
567
  /* 142 */ -266, 1, 0,
568
  /* 145 */ -265, 1, 0,
569
  /* 148 */ -264, 1, 0,
570
  /* 151 */ -262, 1, 0,
571
  /* 154 */ -261, 1, 0,
572
  /* 157 */ -253, 1, 0,
573
  /* 160 */ -252, 1, 0,
574
  /* 163 */ -233, 1, 0,
575
  /* 166 */ -217, 1, 0,
576
  /* 169 */ -216, 1, 0,
577
  /* 172 */ -215, 1, 0,
578
  /* 175 */ -214, 1, 0,
579
  /* 178 */ -213, 1, 0,
580
  /* 181 */ -212, 1, 0,
581
  /* 184 */ -211, 1, 0,
582
  /* 187 */ -210, 1, 0,
583
  /* 190 */ -209, 1, 0,
584
  /* 193 */ -208, 1, 0,
585
  /* 196 */ -207, 1, 0,
586
  /* 199 */ -201, 1, 0,
587
  /* 202 */ 66, 1, 1, 1, 0,
588
  /* 207 */ 1, 1, 1, 15, 1, 0,
589
  /* 213 */ 1, 1, 1, 17, 1, 0,
590
  /* 219 */ 1, 1, 1, 19, 1, 0,
591
  /* 225 */ 1, 1, 1, 21, 1, 0,
592
  /* 231 */ 1, 1, 1, 23, 1, 0,
593
  /* 237 */ 1, 1, 1, 25, 1, 0,
594
  /* 243 */ 1, 1, 1, 27, 1, 0,
595
  /* 249 */ 1, 1, 1, 29, 1, 0,
596
  /* 255 */ 51, 1, 0,
597
  /* 258 */ 61, 1, 0,
598
  /* 261 */ 62, 1, 0,
599
  /* 264 */ 63, 1, 0,
600
  /* 267 */ 64, 1, 0,
601
  /* 270 */ 65, 1, 0,
602
  /* 273 */ 66, 1, 0,
603
  /* 276 */ 67, 1, 0,
604
  /* 279 */ 68, 1, 0,
605
  /* 282 */ 69, 1, 0,
606
  /* 285 */ 70, 1, 0,
607
  /* 288 */ 71, 1, 0,
608
  /* 291 */ 72, 1, 0,
609
  /* 294 */ 73, 1, 0,
610
  /* 297 */ 74, 1, 0,
611
  /* 300 */ 75, 1, 0,
612
  /* 303 */ 76, 1, 0,
613
  /* 306 */ 2, 0,
614
  /* 308 */ -331, 5, 0,
615
  /* 311 */ 15, 0,
616
  /* 313 */ -358, 16, 0,
617
  /* 316 */ 15, -90, 1, 17, 73, -89, 1, 16, 0,
618
  /* 325 */ -90, 1, 17, 0,
619
  /* 329 */ 14, -92, 1, 19, 73, -91, 1, 18, 0,
620
  /* 338 */ -92, 1, 19, 0,
621
  /* 342 */ 13, -94, 1, 21, 73, -93, 1, 20, 0,
622
  /* 351 */ -94, 1, 21, 0,
623
  /* 355 */ 12, -96, 1, 23, 73, -95, 1, 22, 0,
624
  /* 364 */ -96, 1, 23, 0,
625
  /* 368 */ 103, -8, 24, 0,
626
  /* 372 */ 104, -8, 24, 0,
627
  /* 376 */ 11, -98, 1, 25, 73, -97, 1, 24, 0,
628
  /* 385 */ 101, -9, 25, 0,
629
  /* 389 */ 102, -9, 25, 0,
630
  /* 393 */ 103, -9, 25, 0,
631
  /* 397 */ -98, 1, 25, 0,
632
  /* 401 */ 99, -10, 26, 0,
633
  /* 405 */ 100, -10, 26, 0,
634
  /* 409 */ 101, -10, 26, 0,
635
  /* 413 */ 10, -100, 1, 27, 73, -99, 1, 26, 0,
636
  /* 422 */ -366, 27, 0,
637
  /* 425 */ 97, -11, 27, 0,
638
  /* 429 */ 98, -11, 27, 0,
639
  /* 433 */ 99, -11, 27, 0,
640
  /* 437 */ -100, 1, 27, 0,
641
  /* 441 */ 95, -12, 28, 0,
642
  /* 445 */ 96, -12, 28, 0,
643
  /* 449 */ 97, -12, 28, 0,
644
  /* 453 */ 9, -102, 1, 29, 73, -101, 1, 28, 0,
645
  /* 462 */ 93, -13, 29, 0,
646
  /* 466 */ 94, -13, 29, 0,
647
  /* 470 */ 95, -13, 29, 0,
648
  /* 474 */ -102, 1, 29, 0,
649
  /* 478 */ 91, -14, 30, 0,
650
  /* 482 */ 92, -14, 30, 0,
651
  /* 486 */ 93, -14, 30, 0,
652
  /* 490 */ 8, -104, 1, 31, 73, -103, 1, 30, 0,
653
  /* 499 */ 89, -15, 31, 0,
654
  /* 503 */ 90, -15, 31, 0,
655
  /* 507 */ 91, -15, 31, 0,
656
  /* 511 */ -104, 1, 31, 0,
657
  /* 515 */ 88, -16, 32, 0,
658
  /* 519 */ 89, -16, 32, 0,
659
  /* 523 */ -105, 1, 48, 0,
660
  /* 527 */ -106, 1, 49, 0,
661
  /* 531 */ -107, 1, 50, 0,
662
  /* 535 */ -108, 1, 51, 0,
663
  /* 539 */ -109, 1, 52, 0,
664
  /* 543 */ -110, 1, 53, 0,
665
  /* 547 */ -111, 1, 54, 0,
666
  /* 551 */ -112, 1, 55, 0,
667
  /* 555 */ -113, 1, 56, 0,
668
  /* 559 */ -114, 1, 57, 0,
669
  /* 563 */ -115, 1, 58, 0,
670
  /* 567 */ -116, 1, 59, 0,
671
  /* 571 */ -117, 1, 60, 0,
672
  /* 575 */ -273, 61, 0,
673
  /* 578 */ -118, 1, 61, 0,
674
  /* 582 */ -331, 62, 0,
675
  /* 585 */ -119, 1, 62, 0,
676
  /* 589 */ -120, 1, 63, 0,
677
  /* 593 */ 72, 0,
678
  /* 595 */ -351, 78, 0,
679
  /* 598 */ 88, 0,
680
  /* 600 */ 92, 0,
681
  /* 602 */ 99, 0,
682
  /* 604 */ 111, 0,
683
  /* 606 */ -331, 120, 0,
684
  /* 609 */ -345, 133, 0,
685
  /* 612 */ 137, 0,
686
  /* 614 */ 140, 0,
687
  /* 616 */ 200, 0,
688
  /* 618 */ 201, 0,
689
  /* 620 */ 204, 0,
690
  /* 622 */ 205, 0,
691
  /* 624 */ 206, 0,
692
  /* 626 */ 207, 0,
693
  /* 628 */ 208, 0,
694
  /* 630 */ 209, 0,
695
  /* 632 */ 210, 0,
696
  /* 634 */ 211, 0,
697
  /* 636 */ 212, 0,
698
  /* 638 */ 213, 0,
699
  /* 640 */ 214, 0,
700
  /* 642 */ 215, 0,
701
  /* 644 */ 216, 0,
702
  /* 646 */ 217, 0,
703
  /* 648 */ 232, 0,
704
  /* 650 */ 233, 0,
705
  /* 652 */ 251, 0,
706
  /* 654 */ 252, 0,
707
  /* 656 */ 253, 0,
708
  /* 658 */ 260, 0,
709
  /* 660 */ 261, 0,
710
  /* 662 */ 262, 0,
711
  /* 664 */ 263, 0,
712
  /* 666 */ 264, 0,
713
  /* 668 */ 265, 0,
714
  /* 670 */ 266, 0,
715
  /* 672 */ 267, 0,
716
  /* 674 */ 268, 0,
717
  /* 676 */ 269, 0,
718
  /* 678 */ 270, 0,
719
  /* 680 */ 271, 0,
720
  /* 682 */ 273, 0,
721
  /* 684 */ 283, 0,
722
  /* 686 */ 284, 0,
723
  /* 688 */ 303, 0,
724
  /* 690 */ 311, 0,
725
  /* 692 */ 312, 0,
726
  /* 694 */ 314, 0,
727
  /* 696 */ 322, 0,
728
  /* 698 */ 324, 0,
729
  /* 700 */ 326, 0,
730
  /* 702 */ 327, 0,
731
  /* 704 */ 331, 0,
732
  /* 706 */ 332, 0,
733
  /* 708 */ 339, 0,
734
  /* 710 */ 340, 0,
735
  /* 712 */ 342, 0,
736
  /* 714 */ 345, 0,
737
  /* 716 */ 346, 0,
738
  /* 718 */ 347, 0,
739
  /* 720 */ 351, 0,
740
  /* 722 */ 352, 0,
741
  /* 724 */ 353, 0,
742
  /* 726 */ 356, 0,
743
  /* 728 */ 357, 0,
744
  /* 730 */ 358, 0,
745
  /* 732 */ 359, 0,
746
  /* 734 */ 360, 0,
747
  /* 736 */ 366, 0,
748
  /* 738 */ 367, 0,
749
};
750
751
extern const LaneBitmask HexagonLaneMaskLists[] = {
752
  /* 0 */ LaneBitmask(0x0000000000000002), LaneBitmask(0x0000000000000001), LaneBitmask::getAll(),
753
  /* 3 */ LaneBitmask(0x0000000000000001), LaneBitmask(0x0000000000000002), LaneBitmask::getAll(),
754
  /* 6 */ LaneBitmask(0x0000000000000001), LaneBitmask(0x0000000000000002), LaneBitmask(0x0000000000000002), LaneBitmask(0x0000000000000002), LaneBitmask(0x0000000000000002), LaneBitmask::getAll(),
755
  /* 12 */ LaneBitmask(0x0000000000000020), LaneBitmask(0x0000000000000010), LaneBitmask(0x0000000000000008), LaneBitmask::getAll(),
756
  /* 16 */ LaneBitmask(0x0000000000000020), LaneBitmask(0x0000000000000010), LaneBitmask(0x0000000000000100), LaneBitmask(0x0000000000000080), LaneBitmask(0x0000000000000008), LaneBitmask(0x0000000000000040), LaneBitmask::getAll(),
757
  /* 23 */ LaneBitmask(0x0000000000000004), LaneBitmask(0xFFFFFFFFFFFFFFFF), LaneBitmask::getAll(),
758
  /* 26 */ LaneBitmask(0xFFFFFFFFFFFFFFFF), LaneBitmask(0xFFFFFFFFFFFFFFFF), LaneBitmask(0xFFFFFFFFFFFFFFFF), LaneBitmask(0xFFFFFFFFFFFFFFFF), LaneBitmask::getAll(),
759
};
760
761
extern const uint16_t HexagonSubRegIdxLists[] = {
762
  /* 0 */ 2, 1, 0,
763
  /* 3 */ 3, 0,
764
  /* 5 */ 6, 5, 4, 0,
765
  /* 9 */ 8, 6, 5, 4, 7, 11, 10, 9, 0,
766
};
767
768
extern const MCRegisterInfo::SubRegCoveredBits HexagonSubRegIdxRanges[] = {
769
  { 65535, 65535 },
770
  { 32, 32 }, // isub_hi
771
  { 0, 32 },  // isub_lo
772
  { 0, 1 }, // subreg_overflow
773
  { 65535, 65535 }, // vsub_fake
774
  { 65535, 65535 }, // vsub_hi
775
  { 65535, 65535 }, // vsub_lo
776
  { 65535, 65535 }, // wsub_hi
777
  { 65535, 65535 }, // wsub_lo
778
  { 65535, 65535 }, // wsub_hi_then_vsub_fake
779
  { 65535, 65535 }, // wsub_hi_then_vsub_hi
780
  { 65535, 65535 }, // wsub_hi_then_vsub_lo
781
};
782
783
784
#ifdef __GNUC__
785
#pragma GCC diagnostic push
786
#pragma GCC diagnostic ignored "-Woverlength-strings"
787
#endif
788
extern const char HexagonRegStrings[] = {
789
  /* 0 */ "D10\0"
790
  /* 4 */ "VF10\0"
791
  /* 9 */ "G10\0"
792
  /* 13 */ "VFR10\0"
793
  /* 19 */ "WR10\0"
794
  /* 24 */ "V10\0"
795
  /* 28 */ "W10\0"
796
  /* 32 */ "C11_10\0"
797
  /* 39 */ "G11_10\0"
798
  /* 46 */ "S11_10\0"
799
  /* 53 */ "VF20\0"
800
  /* 58 */ "G20\0"
801
  /* 62 */ "VFR20\0"
802
  /* 68 */ "S20\0"
803
  /* 72 */ "V20\0"
804
  /* 76 */ "G21_20\0"
805
  /* 83 */ "S21_20\0"
806
  /* 90 */ "VF30\0"
807
  /* 95 */ "G30\0"
808
  /* 99 */ "VFR30\0"
809
  /* 105 */ "V30\0"
810
  /* 109 */ "G31_30\0"
811
  /* 116 */ "S31_30\0"
812
  /* 123 */ "S41_40\0"
813
  /* 130 */ "S51_50\0"
814
  /* 137 */ "S60\0"
815
  /* 141 */ "S61_60\0"
816
  /* 148 */ "S70\0"
817
  /* 152 */ "S71_70\0"
818
  /* 159 */ "S80\0"
819
  /* 163 */ "SA0\0"
820
  /* 167 */ "BADVA0\0"
821
  /* 174 */ "LC0\0"
822
  /* 178 */ "BRKPTPC0\0"
823
  /* 187 */ "D0\0"
824
  /* 190 */ "VF0\0"
825
  /* 194 */ "ISDBCFG0\0"
826
  /* 203 */ "BRKPTCFG0\0"
827
  /* 213 */ "M0\0"
828
  /* 216 */ "SGP0\0"
829
  /* 221 */ "VQ0\0"
830
  /* 225 */ "VFR0\0"
831
  /* 230 */ "WR0\0"
832
  /* 234 */ "CS0\0"
833
  /* 238 */ "GPMUCNT0\0"
834
  /* 247 */ "V0\0"
835
  /* 250 */ "W0\0"
836
  /* 253 */ "C1_0\0"
837
  /* 258 */ "G1_0\0"
838
  /* 263 */ "SGP1_0\0"
839
  /* 270 */ "P3_0\0"
840
  /* 275 */ "D11\0"
841
  /* 279 */ "VF11\0"
842
  /* 284 */ "G11\0"
843
  /* 288 */ "VFR11\0"
844
  /* 294 */ "WR11\0"
845
  /* 299 */ "S11\0"
846
  /* 303 */ "V11\0"
847
  /* 307 */ "W11\0"
848
  /* 311 */ "VF21\0"
849
  /* 316 */ "G21\0"
850
  /* 320 */ "VFR21\0"
851
  /* 326 */ "V21\0"
852
  /* 330 */ "VF31\0"
853
  /* 335 */ "G31\0"
854
  /* 339 */ "VFR31\0"
855
  /* 345 */ "V31\0"
856
  /* 349 */ "S61\0"
857
  /* 353 */ "S71\0"
858
  /* 357 */ "SA1\0"
859
  /* 361 */ "BADVA1\0"
860
  /* 368 */ "LC1\0"
861
  /* 372 */ "BRKPTPC1\0"
862
  /* 381 */ "D1\0"
863
  /* 384 */ "VF1\0"
864
  /* 388 */ "ISDBCFG1\0"
865
  /* 397 */ "BRKPTCFG1\0"
866
  /* 407 */ "M1\0"
867
  /* 410 */ "SGP1\0"
868
  /* 415 */ "VQ1\0"
869
  /* 419 */ "VFR1\0"
870
  /* 424 */ "WR1\0"
871
  /* 428 */ "CS1\0"
872
  /* 432 */ "GPMUCNT1\0"
873
  /* 441 */ "V1\0"
874
  /* 444 */ "W1\0"
875
  /* 447 */ "D12\0"
876
  /* 451 */ "VF12\0"
877
  /* 456 */ "G12\0"
878
  /* 460 */ "VFR12\0"
879
  /* 466 */ "WR12\0"
880
  /* 471 */ "S12\0"
881
  /* 475 */ "V12\0"
882
  /* 479 */ "W12\0"
883
  /* 483 */ "G13_12\0"
884
  /* 490 */ "S13_12\0"
885
  /* 497 */ "VF22\0"
886
  /* 502 */ "G22\0"
887
  /* 506 */ "VFR22\0"
888
  /* 512 */ "S22\0"
889
  /* 516 */ "V22\0"
890
  /* 520 */ "G23_22\0"
891
  /* 527 */ "S23_22\0"
892
  /* 534 */ "S33_32\0"
893
  /* 541 */ "S43_42\0"
894
  /* 548 */ "S53_52\0"
895
  /* 555 */ "S62\0"
896
  /* 559 */ "S63_62\0"
897
  /* 566 */ "S72\0"
898
  /* 570 */ "S73_72\0"
899
  /* 577 */ "D2\0"
900
  /* 580 */ "VF2\0"
901
  /* 584 */ "P2\0"
902
  /* 587 */ "VQ2\0"
903
  /* 591 */ "VFR2\0"
904
  /* 596 */ "WR2\0"
905
  /* 600 */ "GPMUCNT2\0"
906
  /* 609 */ "V2\0"
907
  /* 612 */ "W2\0"
908
  /* 615 */ "C3_2\0"
909
  /* 620 */ "G3_2\0"
910
  /* 625 */ "S3_2\0"
911
  /* 630 */ "D13\0"
912
  /* 634 */ "VF13\0"
913
  /* 639 */ "G13\0"
914
  /* 643 */ "VFR13\0"
915
  /* 649 */ "WR13\0"
916
  /* 654 */ "S13\0"
917
  /* 658 */ "V13\0"
918
  /* 662 */ "W13\0"
919
  /* 666 */ "VF23\0"
920
  /* 671 */ "G23\0"
921
  /* 675 */ "VFR23\0"
922
  /* 681 */ "S23\0"
923
  /* 685 */ "V23\0"
924
  /* 689 */ "S63\0"
925
  /* 693 */ "S73\0"
926
  /* 697 */ "D3\0"
927
  /* 700 */ "VF3\0"
928
  /* 704 */ "G3\0"
929
  /* 707 */ "P3\0"
930
  /* 710 */ "VQ3\0"
931
  /* 714 */ "VFR3\0"
932
  /* 719 */ "WR3\0"
933
  /* 723 */ "GPMUCNT3\0"
934
  /* 732 */ "V3\0"
935
  /* 735 */ "W3\0"
936
  /* 738 */ "D14\0"
937
  /* 742 */ "VF14\0"
938
  /* 747 */ "G14\0"
939
  /* 751 */ "VFR14\0"
940
  /* 757 */ "WR14\0"
941
  /* 762 */ "S14\0"
942
  /* 766 */ "V14\0"
943
  /* 770 */ "W14\0"
944
  /* 774 */ "G15_14\0"
945
  /* 781 */ "S15_14\0"
946
  /* 788 */ "VF24\0"
947
  /* 793 */ "VFR24\0"
948
  /* 799 */ "S24\0"
949
  /* 803 */ "V24\0"
950
  /* 807 */ "G25_24\0"
951
  /* 814 */ "S25_24\0"
952
  /* 821 */ "S35_34\0"
953
  /* 828 */ "S44\0"
954
  /* 832 */ "S45_44\0"
955
  /* 839 */ "S54\0"
956
  /* 843 */ "S55_54\0"
957
  /* 850 */ "S64\0"
958
  /* 854 */ "S65_64\0"
959
  /* 861 */ "S74\0"
960
  /* 865 */ "S75_74\0"
961
  /* 872 */ "D4\0"
962
  /* 875 */ "VF4\0"
963
  /* 879 */ "G4\0"
964
  /* 882 */ "VQ4\0"
965
  /* 886 */ "VFR4\0"
966
  /* 891 */ "WR4\0"
967
  /* 895 */ "GPMUCNT4\0"
968
  /* 904 */ "V4\0"
969
  /* 907 */ "W4\0"
970
  /* 910 */ "C5_4\0"
971
  /* 915 */ "G5_4\0"
972
  /* 920 */ "S5_4\0"
973
  /* 925 */ "D15\0"
974
  /* 929 */ "VF15\0"
975
  /* 934 */ "G15\0"
976
  /* 938 */ "VFR15\0"
977
  /* 944 */ "WR15\0"
978
  /* 949 */ "S15\0"
979
  /* 953 */ "V15\0"
980
  /* 957 */ "W15\0"
981
  /* 961 */ "VF25\0"
982
  /* 966 */ "VFR25\0"
983
  /* 972 */ "S25\0"
984
  /* 976 */ "V25\0"
985
  /* 980 */ "S35\0"
986
  /* 984 */ "S45\0"
987
  /* 988 */ "S55\0"
988
  /* 992 */ "S65\0"
989
  /* 996 */ "S75\0"
990
  /* 1000 */ "C5\0"
991
  /* 1003 */ "D5\0"
992
  /* 1006 */ "VF5\0"
993
  /* 1010 */ "G5\0"
994
  /* 1013 */ "VQ5\0"
995
  /* 1017 */ "VFR5\0"
996
  /* 1022 */ "WR5\0"
997
  /* 1026 */ "GPMUCNT5\0"
998
  /* 1035 */ "V5\0"
999
  /* 1038 */ "W5\0"
1000
  /* 1041 */ "VF16\0"
1001
  /* 1046 */ "VFR16\0"
1002
  /* 1052 */ "V16\0"
1003
  /* 1056 */ "C17_16\0"
1004
  /* 1063 */ "G17_16\0"
1005
  /* 1070 */ "S17_16\0"
1006
  /* 1077 */ "VF26\0"
1007
  /* 1082 */ "VFR26\0"
1008
  /* 1088 */ "S26\0"
1009
  /* 1092 */ "V26\0"
1010
  /* 1096 */ "G27_26\0"
1011
  /* 1103 */ "S27_26\0"
1012
  /* 1110 */ "S37_36\0"
1013
  /* 1117 */ "S46\0"
1014
  /* 1121 */ "S47_46\0"
1015
  /* 1128 */ "S56\0"
1016
  /* 1132 */ "S57_56\0"
1017
  /* 1139 */ "S66\0"
1018
  /* 1143 */ "S67_66\0"
1019
  /* 1150 */ "S76\0"
1020
  /* 1154 */ "S77_76\0"
1021
  /* 1161 */ "D6\0"
1022
  /* 1164 */ "VF6\0"
1023
  /* 1168 */ "G6\0"
1024
  /* 1171 */ "VQ6\0"
1025
  /* 1175 */ "VFR6\0"
1026
  /* 1180 */ "WR6\0"
1027
  /* 1184 */ "GPMUCNT6\0"
1028
  /* 1193 */ "V6\0"
1029
  /* 1196 */ "W6\0"
1030
  /* 1199 */ "C7_6\0"
1031
  /* 1204 */ "G7_6\0"
1032
  /* 1209 */ "S7_6\0"
1033
  /* 1214 */ "VF17\0"
1034
  /* 1219 */ "VFR17\0"
1035
  /* 1225 */ "V17\0"
1036
  /* 1229 */ "VF27\0"
1037
  /* 1234 */ "VFR27\0"
1038
  /* 1240 */ "V27\0"
1039
  /* 1244 */ "S47\0"
1040
  /* 1248 */ "S57\0"
1041
  /* 1252 */ "S67\0"
1042
  /* 1256 */ "S77\0"
1043
  /* 1260 */ "D7\0"
1044
  /* 1263 */ "VF7\0"
1045
  /* 1267 */ "G7\0"
1046
  /* 1270 */ "VQ7\0"
1047
  /* 1274 */ "VFR7\0"
1048
  /* 1279 */ "WR7\0"
1049
  /* 1283 */ "GPMUCNT7\0"
1050
  /* 1292 */ "V7\0"
1051
  /* 1295 */ "W7\0"
1052
  /* 1298 */ "VF18\0"
1053
  /* 1303 */ "VFR18\0"
1054
  /* 1309 */ "V18\0"
1055
  /* 1313 */ "G19_18\0"
1056
  /* 1320 */ "S19_18\0"
1057
  /* 1327 */ "VF28\0"
1058
  /* 1332 */ "VFR28\0"
1059
  /* 1338 */ "V28\0"
1060
  /* 1342 */ "G29_28\0"
1061
  /* 1349 */ "S29_28\0"
1062
  /* 1356 */ "S39_38\0"
1063
  /* 1363 */ "S49_48\0"
1064
  /* 1370 */ "S58\0"
1065
  /* 1374 */ "S59_58\0"
1066
  /* 1381 */ "S68\0"
1067
  /* 1385 */ "S69_68\0"
1068
  /* 1392 */ "S78\0"
1069
  /* 1396 */ "S79_78\0"
1070
  /* 1403 */ "C8\0"
1071
  /* 1406 */ "D8\0"
1072
  /* 1409 */ "VF8\0"
1073
  /* 1413 */ "G8\0"
1074
  /* 1416 */ "VFR8\0"
1075
  /* 1421 */ "WR8\0"
1076
  /* 1425 */ "V8\0"
1077
  /* 1428 */ "W8\0"
1078
  /* 1431 */ "C9_8\0"
1079
  /* 1436 */ "G9_8\0"
1080
  /* 1441 */ "S9_8\0"
1081
  /* 1446 */ "VF19\0"
1082
  /* 1451 */ "VFR19\0"
1083
  /* 1457 */ "S19\0"
1084
  /* 1461 */ "V19\0"
1085
  /* 1465 */ "VF29\0"
1086
  /* 1470 */ "VFR29\0"
1087
  /* 1476 */ "V29\0"
1088
  /* 1480 */ "S59\0"
1089
  /* 1484 */ "S69\0"
1090
  /* 1488 */ "S79\0"
1091
  /* 1492 */ "D9\0"
1092
  /* 1495 */ "VF9\0"
1093
  /* 1499 */ "G9\0"
1094
  /* 1502 */ "VFR9\0"
1095
  /* 1507 */ "WR9\0"
1096
  /* 1511 */ "V9\0"
1097
  /* 1514 */ "W9\0"
1098
  /* 1517 */ "BADVA\0"
1099
  /* 1523 */ "EVB\0"
1100
  /* 1527 */ "PC\0"
1101
  /* 1530 */ "HTID\0"
1102
  /* 1535 */ "STID\0"
1103
  /* 1540 */ "VID\0"
1104
  /* 1544 */ "UPCYCLE\0"
1105
  /* 1552 */ "CFGBASE\0"
1106
  /* 1560 */ "USR_OVF\0"
1107
  /* 1568 */ "DIAG\0"
1108
  /* 1573 */ "SYSCFG\0"
1109
  /* 1580 */ "PMUEVTCFG\0"
1110
  /* 1590 */ "PMUCFG\0"
1111
  /* 1597 */ "GPCYCLEHI\0"
1112
  /* 1607 */ "UPCYCLEHI\0"
1113
  /* 1617 */ "UTIMERHI\0"
1114
  /* 1626 */ "PKTCOUNTHI\0"
1115
  /* 1637 */ "IMASK\0"
1116
  /* 1643 */ "MODECTL\0"
1117
  /* 1651 */ "ISDBEN\0"
1118
  /* 1658 */ "ISDBMBXIN\0"
1119
  /* 1668 */ "GPCYCLELO\0"
1120
  /* 1678 */ "UPCYCLELO\0"
1121
  /* 1688 */ "UTIMERLO\0"
1122
  /* 1697 */ "PKTCOUNTLO\0"
1123
  /* 1708 */ "UGP\0"
1124
  /* 1712 */ "VTMP\0"
1125
  /* 1717 */ "GOSP\0"
1126
  /* 1722 */ "CCR\0"
1127
  /* 1726 */ "UTIMER\0"
1128
  /* 1733 */ "GELR\0"
1129
  /* 1738 */ "ISDBGPR\0"
1130
  /* 1746 */ "GSR\0"
1131
  /* 1750 */ "SSR\0"
1132
  /* 1754 */ "USR\0"
1133
  /* 1758 */ "CS\0"
1134
  /* 1761 */ "FRAMELIMIT\0"
1135
  /* 1772 */ "PKTCOUNT\0"
1136
  /* 1781 */ "ISDBST\0"
1137
  /* 1788 */ "ISDBMBXOUT\0"
1138
  /* 1799 */ "REV\0"
1139
  /* 1803 */ "FRAMEKEY\0"
1140
};
1141
#ifdef __GNUC__
1142
#pragma GCC diagnostic pop
1143
#endif
1144
1145
extern const MCRegisterDesc HexagonRegDesc[] = { // Descriptors
1146
  { 3, 0, 0, 0, 0, 0 },
1147
  { 1517, 2, 734, 2, 8192, 24 },
1148
  { 1722, 2, 730, 2, 8193, 24 },
1149
  { 1552, 2, 738, 2, 8194, 24 },
1150
  { 1758, 255, 2, 0, 487427, 0 },
1151
  { 1568, 2, 736, 2, 8197, 24 },
1152
  { 1734, 2, 722, 2, 8198, 24 },
1153
  { 1523, 2, 730, 2, 8199, 24 },
1154
  { 1803, 2, 706, 2, 8200, 24 },
1155
  { 1761, 2, 704, 2, 8201, 24 },
1156
  { 1733, 2, 704, 2, 8202, 24 },
1157
  { 1717, 2, 704, 2, 8203, 24 },
1158
  { 1709, 2, 702, 2, 8204, 24 },
1159
  { 1597, 2, 710, 2, 8205, 24 },
1160
  { 1668, 2, 708, 2, 8206, 24 },
1161
  { 1746, 2, 700, 2, 8207, 24 },
1162
  { 1530, 2, 714, 2, 8208, 24 },
1163
  { 1637, 2, 714, 2, 8209, 24 },
1164
  { 1651, 2, 734, 2, 8210, 24 },
1165
  { 1738, 2, 732, 2, 8211, 24 },
1166
  { 1658, 2, 728, 2, 8212, 24 },
1167
  { 1788, 2, 726, 2, 8213, 24 },
1168
  { 1781, 2, 720, 2, 8214, 24 },
1169
  { 1643, 2, 712, 2, 8215, 24 },
1170
  { 1527, 2, 694, 2, 8216, 24 },
1171
  { 1598, 2, 718, 2, 8217, 24 },
1172
  { 1669, 2, 716, 2, 8218, 24 },
1173
  { 1772, 115, 2, 0, 487451, 0 },
1174
  { 1626, 2, 98, 2, 8220, 24 },
1175
  { 1697, 2, 95, 2, 8219, 24 },
1176
  { 1590, 2, 724, 2, 8221, 24 },
1177
  { 1580, 2, 722, 2, 8222, 24 },
1178
  { 1799, 2, 708, 2, 8223, 24 },
1179
  { 1750, 2, 702, 2, 8224, 24 },
1180
  { 1535, 2, 698, 2, 8225, 24 },
1181
  { 1573, 2, 704, 2, 8226, 24 },
1182
  { 1708, 2, 688, 2, 8227, 24 },
1183
  { 1544, 115, 2, 0, 487460, 0 },
1184
  { 1607, 2, 98, 2, 8229, 24 },
1185
  { 1678, 2, 95, 2, 8228, 24 },
1186
  { 1754, 119, 2, 3, 487462, 23 },
1187
  { 1560, 2, 98, 2, 8230, 24 },
1188
  { 1726, 115, 2, 0, 487464, 0 },
1189
  { 1617, 2, 98, 2, 8233, 24 },
1190
  { 1688, 2, 95, 2, 8232, 24 },
1191
  { 1540, 2, 696, 2, 8234, 24 },
1192
  { 1712, 2, 2, 2, 8235, 24 },
1193
  { 167, 2, 692, 2, 8236, 24 },
1194
  { 361, 2, 690, 2, 8237, 24 },
1195
  { 203, 2, 700, 2, 8238, 24 },
1196
  { 397, 2, 700, 2, 8239, 24 },
1197
  { 178, 2, 698, 2, 8240, 24 },
1198
  { 372, 2, 698, 2, 8241, 24 },
1199
  { 1000, 2, 684, 2, 8242, 24 },
1200
  { 1403, 2, 686, 2, 8231, 24 },
1201
  { 234, 2, 48, 2, 8195, 24 },
1202
  { 428, 2, 46, 2, 8196, 24 },
1203
  { 187, 258, 2, 0, 487475, 0 },
1204
  { 381, 261, 2, 0, 487477, 0 },
1205
  { 577, 264, 2, 0, 487479, 0 },
1206
  { 697, 267, 2, 0, 487481, 0 },
1207
  { 872, 270, 2, 0, 487483, 0 },
1208
  { 1003, 273, 2, 0, 487485, 0 },
1209
  { 1161, 276, 2, 0, 487487, 0 },
1210
  { 1260, 279, 2, 0, 487489, 0 },
1211
  { 1406, 282, 2, 0, 487491, 0 },
1212
  { 1492, 285, 2, 0, 487493, 0 },
1213
  { 0, 288, 2, 0, 487495, 0 },
1214
  { 275, 291, 2, 0, 487497, 0 },
1215
  { 447, 294, 2, 0, 487499, 0 },
1216
  { 630, 297, 2, 0, 487501, 0 },
1217
  { 738, 300, 2, 0, 487503, 0 },
1218
  { 925, 303, 2, 0, 487505, 0 },
1219
  { 704, 2, 676, 2, 8275, 24 },
1220
  { 879, 2, 676, 2, 8276, 24 },
1221
  { 1010, 2, 674, 2, 8277, 24 },
1222
  { 1168, 2, 674, 2, 8278, 24 },
1223
  { 1267, 2, 672, 2, 8279, 24 },
1224
  { 1413, 2, 672, 2, 8280, 24 },
1225
  { 1499, 2, 670, 2, 8281, 24 },
1226
  { 9, 2, 670, 2, 8282, 24 },
1227
  { 284, 2, 668, 2, 8283, 24 },
1228
  { 456, 2, 668, 2, 8284, 24 },
1229
  { 639, 2, 666, 2, 8285, 24 },
1230
  { 747, 2, 666, 2, 8286, 24 },
1231
  { 934, 2, 664, 2, 8287, 24 },
1232
  { 58, 2, 668, 2, 8288, 24 },
1233
  { 316, 2, 666, 2, 8289, 24 },
1234
  { 502, 2, 666, 2, 8290, 24 },
1235
  { 671, 2, 664, 2, 8291, 24 },
1236
  { 95, 2, 670, 2, 8292, 24 },
1237
  { 335, 2, 668, 2, 8293, 24 },
1238
  { 238, 2, 662, 2, 8294, 24 },
1239
  { 432, 2, 660, 2, 8295, 24 },
1240
  { 600, 2, 660, 2, 8296, 24 },
1241
  { 723, 2, 658, 2, 8297, 24 },
1242
  { 895, 2, 656, 2, 8298, 24 },
1243
  { 1026, 2, 654, 2, 8299, 24 },
1244
  { 1184, 2, 654, 2, 8300, 24 },
1245
  { 1283, 2, 652, 2, 8301, 24 },
1246
  { 194, 2, 682, 2, 8302, 24 },
1247
  { 388, 2, 682, 2, 8303, 24 },
1248
  { 174, 2, 648, 2, 8304, 24 },
1249
  { 368, 2, 648, 2, 8305, 24 },
1250
  { 213, 2, 650, 2, 8306, 24 },
1251
  { 407, 2, 648, 2, 8307, 24 },
1252
  { 218, 2, 2, 2, 8308, 24 },
1253
  { 412, 2, 2, 2, 8309, 24 },
1254
  { 584, 2, 2, 2, 8310, 24 },
1255
  { 707, 2, 2, 2, 8311, 24 },
1256
  { 239, 2, 680, 2, 8312, 24 },
1257
  { 433, 2, 678, 2, 8313, 24 },
1258
  { 601, 2, 678, 2, 8314, 24 },
1259
  { 724, 2, 676, 2, 8315, 24 },
1260
  { 222, 2, 2, 2, 8316, 24 },
1261
  { 416, 2, 2, 2, 8317, 24 },
1262
  { 588, 2, 2, 2, 8318, 24 },
1263
  { 711, 2, 2, 2, 8319, 24 },
1264
  { 227, 2, 44, 2, 8243, 24 },
1265
  { 421, 2, 42, 2, 8244, 24 },
1266
  { 593, 2, 42, 2, 8245, 24 },
1267
  { 716, 2, 40, 2, 8246, 24 },
1268
  { 888, 2, 40, 2, 8247, 24 },
1269
  { 1019, 2, 38, 2, 8248, 24 },
1270
  { 1177, 2, 38, 2, 8249, 24 },
1271
  { 1276, 2, 36, 2, 8250, 24 },
1272
  { 1418, 2, 36, 2, 8251, 24 },
1273
  { 1504, 2, 34, 2, 8252, 24 },
1274
  { 15, 2, 34, 2, 8253, 24 },
1275
  { 290, 2, 32, 2, 8254, 24 },
1276
  { 462, 2, 32, 2, 8255, 24 },
1277
  { 645, 2, 30, 2, 8256, 24 },
1278
  { 753, 2, 30, 2, 8257, 24 },
1279
  { 940, 2, 28, 2, 8258, 24 },
1280
  { 1048, 2, 28, 2, 8259, 24 },
1281
  { 1221, 2, 26, 2, 8260, 24 },
1282
  { 1305, 2, 26, 2, 8261, 24 },
1283
  { 1453, 2, 24, 2, 8262, 24 },
1284
  { 64, 2, 24, 2, 8263, 24 },
1285
  { 322, 2, 22, 2, 8264, 24 },
1286
  { 508, 2, 22, 2, 8265, 24 },
1287
  { 677, 2, 20, 2, 8266, 24 },
1288
  { 795, 2, 20, 2, 8267, 24 },
1289
  { 968, 2, 18, 2, 8268, 24 },
1290
  { 1084, 2, 18, 2, 8269, 24 },
1291
  { 1236, 2, 16, 2, 8270, 24 },
1292
  { 1334, 2, 16, 2, 8271, 24 },
1293
  { 1472, 2, 14, 2, 8272, 24 },
1294
  { 101, 2, 14, 2, 8273, 24 },
1295
  { 341, 2, 12, 2, 8274, 24 },
1296
  { 299, 2, 636, 2, 8320, 24 },
1297
  { 471, 2, 636, 2, 8321, 24 },
1298
  { 654, 2, 634, 2, 8322, 24 },
1299
  { 762, 2, 634, 2, 8323, 24 },
1300
  { 949, 2, 632, 2, 8324, 24 },
1301
  { 1457, 2, 634, 2, 8325, 24 },
1302
  { 68, 2, 634, 2, 8326, 24 },
1303
  { 512, 2, 634, 2, 8327, 24 },
1304
  { 681, 2, 632, 2, 8328, 24 },
1305
  { 799, 2, 632, 2, 8329, 24 },
1306
  { 972, 2, 630, 2, 8330, 24 },
1307
  { 1088, 2, 630, 2, 8331, 24 },
1308
  { 980, 2, 636, 2, 8332, 24 },
1309
  { 828, 2, 644, 2, 8333, 24 },
1310
  { 984, 2, 642, 2, 8334, 24 },
1311
  { 1117, 2, 642, 2, 8335, 24 },
1312
  { 1244, 2, 640, 2, 8336, 24 },
1313
  { 839, 2, 646, 2, 8337, 24 },
1314
  { 988, 2, 644, 2, 8338, 24 },
1315
  { 1128, 2, 644, 2, 8339, 24 },
1316
  { 1248, 2, 642, 2, 8340, 24 },
1317
  { 1370, 2, 642, 2, 8341, 24 },
1318
  { 1480, 2, 640, 2, 8342, 24 },
1319
  { 137, 2, 640, 2, 8343, 24 },
1320
  { 349, 2, 638, 2, 8344, 24 },
1321
  { 555, 2, 638, 2, 8345, 24 },
1322
  { 689, 2, 636, 2, 8346, 24 },
1323
  { 850, 2, 636, 2, 8347, 24 },
1324
  { 992, 2, 634, 2, 8348, 24 },
1325
  { 1139, 2, 634, 2, 8349, 24 },
1326
  { 1252, 2, 632, 2, 8350, 24 },
1327
  { 1381, 2, 632, 2, 8351, 24 },
1328
  { 1484, 2, 630, 2, 8352, 24 },
1329
  { 148, 2, 630, 2, 8353, 24 },
1330
  { 353, 2, 628, 2, 8354, 24 },
1331
  { 566, 2, 628, 2, 8355, 24 },
1332
  { 693, 2, 626, 2, 8356, 24 },
1333
  { 861, 2, 626, 2, 8357, 24 },
1334
  { 996, 2, 624, 2, 8358, 24 },
1335
  { 1150, 2, 624, 2, 8359, 24 },
1336
  { 1256, 2, 622, 2, 8360, 24 },
1337
  { 1392, 2, 622, 2, 8361, 24 },
1338
  { 1488, 2, 620, 2, 8362, 24 },
1339
  { 159, 2, 2, 2, 8363, 24 },
1340
  { 163, 2, 614, 2, 8364, 24 },
1341
  { 357, 2, 614, 2, 8365, 24 },
1342
  { 216, 2, 618, 2, 8366, 24 },
1343
  { 410, 2, 616, 2, 8367, 24 },
1344
  { 247, 2, 372, 2, 8368, 24 },
1345
  { 441, 2, 368, 2, 8369, 24 },
1346
  { 609, 2, 393, 2, 8370, 24 },
1347
  { 732, 2, 389, 2, 8371, 24 },
1348
  { 904, 2, 389, 2, 8372, 24 },
1349
  { 1035, 2, 385, 2, 8373, 24 },
1350
  { 1193, 2, 409, 2, 8374, 24 },
1351
  { 1292, 2, 405, 2, 8375, 24 },
1352
  { 1425, 2, 405, 2, 8376, 24 },
1353
  { 1511, 2, 401, 2, 8377, 24 },
1354
  { 24, 2, 433, 2, 8378, 24 },
1355
  { 303, 2, 429, 2, 8379, 24 },
1356
  { 475, 2, 429, 2, 8380, 24 },
1357
  { 658, 2, 425, 2, 8381, 24 },
1358
  { 766, 2, 449, 2, 8382, 24 },
1359
  { 953, 2, 445, 2, 8383, 24 },
1360
  { 1052, 2, 445, 2, 8384, 24 },
1361
  { 1225, 2, 441, 2, 8385, 24 },
1362
  { 1309, 2, 470, 2, 8386, 24 },
1363
  { 1461, 2, 466, 2, 8387, 24 },
1364
  { 72, 2, 466, 2, 8388, 24 },
1365
  { 326, 2, 462, 2, 8389, 24 },
1366
  { 516, 2, 486, 2, 8390, 24 },
1367
  { 685, 2, 482, 2, 8391, 24 },
1368
  { 803, 2, 482, 2, 8392, 24 },
1369
  { 976, 2, 478, 2, 8393, 24 },
1370
  { 1092, 2, 507, 2, 8394, 24 },
1371
  { 1240, 2, 503, 2, 8395, 24 },
1372
  { 1338, 2, 503, 2, 8396, 24 },
1373
  { 1476, 2, 499, 2, 8397, 24 },
1374
  { 105, 2, 519, 2, 8398, 24 },
1375
  { 345, 2, 515, 2, 8399, 24 },
1376
  { 190, 2, 91, 2, 8400, 24 },
1377
  { 384, 2, 88, 2, 8401, 24 },
1378
  { 580, 2, 88, 2, 8402, 24 },
1379
  { 700, 2, 85, 2, 8403, 24 },
1380
  { 875, 2, 85, 2, 8404, 24 },
1381
  { 1006, 2, 82, 2, 8405, 24 },
1382
  { 1164, 2, 82, 2, 8406, 24 },
1383
  { 1263, 2, 79, 2, 8407, 24 },
1384
  { 1409, 2, 79, 2, 8408, 24 },
1385
  { 1495, 2, 76, 2, 8409, 24 },
1386
  { 4, 2, 76, 2, 8410, 24 },
1387
  { 279, 2, 73, 2, 8411, 24 },
1388
  { 451, 2, 73, 2, 8412, 24 },
1389
  { 634, 2, 70, 2, 8413, 24 },
1390
  { 742, 2, 70, 2, 8414, 24 },
1391
  { 929, 2, 64, 2, 8415, 24 },
1392
  { 1041, 2, 2, 2, 8416, 24 },
1393
  { 1214, 2, 2, 2, 8417, 24 },
1394
  { 1298, 2, 2, 2, 8418, 24 },
1395
  { 1446, 2, 2, 2, 8419, 24 },
1396
  { 53, 2, 2, 2, 8420, 24 },
1397
  { 311, 2, 2, 2, 8421, 24 },
1398
  { 497, 2, 2, 2, 8422, 24 },
1399
  { 666, 2, 2, 2, 8423, 24 },
1400
  { 788, 2, 2, 2, 8424, 24 },
1401
  { 961, 2, 2, 2, 8425, 24 },
1402
  { 1077, 2, 2, 2, 8426, 24 },
1403
  { 1229, 2, 2, 2, 8427, 24 },
1404
  { 1327, 2, 2, 2, 8428, 24 },
1405
  { 1465, 2, 2, 2, 8429, 24 },
1406
  { 90, 2, 2, 2, 8430, 24 },
1407
  { 330, 2, 2, 2, 8431, 24 },
1408
  { 225, 2, 557, 2, 8432, 24 },
1409
  { 419, 2, 557, 2, 8433, 24 },
1410
  { 591, 2, 557, 2, 8434, 24 },
1411
  { 714, 2, 557, 2, 8435, 24 },
1412
  { 886, 2, 557, 2, 8436, 24 },
1413
  { 1017, 2, 557, 2, 8437, 24 },
1414
  { 1175, 2, 557, 2, 8438, 24 },
1415
  { 1274, 2, 557, 2, 8439, 24 },
1416
  { 1416, 2, 557, 2, 8440, 24 },
1417
  { 1502, 2, 557, 2, 8441, 24 },
1418
  { 13, 2, 557, 2, 8442, 24 },
1419
  { 288, 2, 557, 2, 8443, 24 },
1420
  { 460, 2, 557, 2, 8444, 24 },
1421
  { 643, 2, 557, 2, 8445, 24 },
1422
  { 751, 2, 557, 2, 8446, 24 },
1423
  { 938, 2, 557, 2, 8447, 24 },
1424
  { 1046, 2, 2, 2, 8448, 24 },
1425
  { 1219, 2, 2, 2, 8449, 24 },
1426
  { 1303, 2, 2, 2, 8450, 24 },
1427
  { 1451, 2, 2, 2, 8451, 24 },
1428
  { 62, 2, 2, 2, 8452, 24 },
1429
  { 320, 2, 2, 2, 8453, 24 },
1430
  { 506, 2, 2, 2, 8454, 24 },
1431
  { 675, 2, 2, 2, 8455, 24 },
1432
  { 793, 2, 2, 2, 8456, 24 },
1433
  { 966, 2, 2, 2, 8457, 24 },
1434
  { 1082, 2, 2, 2, 8458, 24 },
1435
  { 1234, 2, 2, 2, 8459, 24 },
1436
  { 1332, 2, 2, 2, 8460, 24 },
1437
  { 1470, 2, 2, 2, 8461, 24 },
1438
  { 99, 2, 2, 2, 8462, 24 },
1439
  { 339, 2, 2, 2, 8463, 24 },
1440
  { 221, 490, 2, 9, 1020080, 16 },
1441
  { 415, 453, 2, 9, 995508, 16 },
1442
  { 587, 413, 2, 9, 970936, 16 },
1443
  { 710, 376, 2, 9, 946364, 16 },
1444
  { 882, 355, 2, 9, 921792, 16 },
1445
  { 1013, 342, 2, 9, 897220, 16 },
1446
  { 1171, 329, 2, 9, 872648, 16 },
1447
  { 1270, 316, 2, 9, 848076, 16 },
1448
  { 250, 511, 92, 5, 2097328, 12 },
1449
  { 444, 495, 89, 5, 2031794, 12 },
1450
  { 612, 474, 89, 5, 1945780, 12 },
1451
  { 735, 458, 86, 5, 1880246, 12 },
1452
  { 907, 437, 86, 5, 1794232, 12 },
1453
  { 1038, 418, 83, 5, 1716410, 12 },
1454
  { 1196, 397, 83, 5, 1630396, 12 },
1455
  { 1295, 381, 80, 5, 1564862, 12 },
1456
  { 1428, 364, 80, 5, 1495232, 12 },
1457
  { 1514, 360, 77, 5, 1478850, 12 },
1458
  { 28, 351, 77, 5, 1441988, 12 },
1459
  { 307, 347, 74, 5, 1425606, 12 },
1460
  { 479, 338, 74, 5, 1388744, 12 },
1461
  { 662, 334, 68, 5, 1372362, 12 },
1462
  { 770, 325, 68, 5, 1335500, 12 },
1463
  { 957, 321, 65, 5, 1319118, 12 },
1464
  { 230, 589, 2, 5, 2416816, 12 },
1465
  { 424, 585, 2, 5, 2400434, 12 },
1466
  { 596, 578, 2, 5, 2371764, 12 },
1467
  { 719, 571, 2, 5, 2343094, 12 },
1468
  { 891, 567, 2, 5, 2326712, 12 },
1469
  { 1022, 563, 2, 5, 2310330, 12 },
1470
  { 1180, 559, 2, 5, 2293948, 12 },
1471
  { 1279, 555, 2, 5, 2277566, 12 },
1472
  { 1421, 551, 2, 5, 2261184, 12 },
1473
  { 1507, 547, 2, 5, 2244802, 12 },
1474
  { 19, 543, 2, 5, 2228420, 12 },
1475
  { 294, 539, 2, 5, 2212038, 12 },
1476
  { 466, 535, 2, 5, 2195656, 12 },
1477
  { 649, 531, 2, 5, 2179274, 12 },
1478
  { 757, 527, 2, 5, 2162892, 12 },
1479
  { 944, 523, 2, 5, 2146510, 12 },
1480
  { 253, 9, 2, 0, 2347120, 3 },
1481
  { 615, 9, 2, 0, 2347121, 3 },
1482
  { 910, 0, 2, 0, 827442, 6 },
1483
  { 1199, 163, 2, 0, 487538, 0 },
1484
  { 1431, 53, 2, 0, 1273880, 3 },
1485
  { 32, 59, 2, 0, 1499148, 3 },
1486
  { 1056, 106, 2, 0, 487432, 3 },
1487
  { 258, 308, 2, 0, 1265674, 0 },
1488
  { 620, 582, 2, 0, 2428939, 0 },
1489
  { 915, 133, 2, 0, 487508, 0 },
1490
  { 1204, 136, 2, 0, 487510, 0 },
1491
  { 1436, 139, 2, 0, 487512, 0 },
1492
  { 39, 142, 2, 0, 487514, 0 },
1493
  { 483, 145, 2, 0, 487516, 0 },
1494
  { 774, 148, 2, 0, 487518, 0 },
1495
  { 1063, 157, 2, 0, 487530, 0 },
1496
  { 1313, 160, 2, 0, 487532, 0 },
1497
  { 76, 145, 2, 0, 487520, 0 },
1498
  { 520, 148, 2, 0, 487522, 0 },
1499
  { 807, 103, 2, 0, 487437, 3 },
1500
  { 1096, 151, 2, 0, 487526, 0 },
1501
  { 1342, 154, 2, 0, 487528, 0 },
1502
  { 109, 142, 2, 0, 487524, 0 },
1503
  { 270, 2, 62, 2, 831604, 26 },
1504
  { 625, 56, 2, 0, 1732614, 3 },
1505
  { 920, 124, 2, 0, 487468, 0 },
1506
  { 1209, 50, 2, 0, 2052097, 3 },
1507
  { 1441, 67, 2, 0, 1286144, 3 },
1508
  { 46, 609, 2, 0, 2474001, 0 },
1509
  { 490, 181, 2, 0, 487553, 0 },
1510
  { 781, 184, 2, 0, 487555, 0 },
1511
  { 1070, 313, 2, 0, 1286151, 0 },
1512
  { 1320, 606, 2, 0, 2465826, 0 },
1513
  { 83, 6, 2, 0, 2457642, 3 },
1514
  { 527, 184, 2, 0, 487559, 0 },
1515
  { 814, 187, 2, 0, 487561, 0 },
1516
  { 1103, 3, 2, 0, 2506754, 3 },
1517
  { 1349, 422, 2, 0, 1650693, 0 },
1518
  { 116, 100, 2, 0, 487449, 3 },
1519
  { 534, 595, 2, 0, 2449430, 0 },
1520
  { 821, 575, 2, 0, 1900655, 0 },
1521
  { 1110, 94, 2, 0, 1253422, 3 },
1522
  { 1356, 94, 2, 0, 1253423, 3 },
1523
  { 123, 121, 2, 0, 487444, 0 },
1524
  { 541, 118, 2, 0, 487442, 0 },
1525
  { 832, 169, 2, 0, 487565, 0 },
1526
  { 1121, 172, 2, 0, 487567, 0 },
1527
  { 1363, 127, 2, 0, 487544, 0 },
1528
  { 130, 130, 2, 0, 487546, 0 },
1529
  { 548, 97, 2, 0, 487453, 3 },
1530
  { 843, 166, 2, 0, 487569, 0 },
1531
  { 1132, 169, 2, 0, 487571, 0 },
1532
  { 1374, 172, 2, 0, 487573, 0 },
1533
  { 141, 175, 2, 0, 487575, 0 },
1534
  { 559, 178, 2, 0, 487577, 0 },
1535
  { 854, 181, 2, 0, 487579, 0 },
1536
  { 1143, 184, 2, 0, 487581, 0 },
1537
  { 1385, 187, 2, 0, 487583, 0 },
1538
  { 152, 190, 2, 0, 487585, 0 },
1539
  { 570, 193, 2, 0, 487587, 0 },
1540
  { 865, 196, 2, 0, 487589, 0 },
1541
  { 1154, 109, 2, 0, 487591, 3 },
1542
  { 1396, 112, 2, 0, 487593, 3 },
1543
  { 263, 199, 2, 0, 487598, 0 },
1544
};
1545
1546
extern const MCPhysReg HexagonRegUnitRoots[][2] = {
1547
  { Hexagon::BADVA },
1548
  { Hexagon::CCR },
1549
  { Hexagon::CFGBASE },
1550
  { Hexagon::CS0 },
1551
  { Hexagon::CS1 },
1552
  { Hexagon::DIAG },
1553
  { Hexagon::ELR },
1554
  { Hexagon::EVB },
1555
  { Hexagon::FRAMEKEY },
1556
  { Hexagon::FRAMELIMIT },
1557
  { Hexagon::GELR },
1558
  { Hexagon::GOSP },
1559
  { Hexagon::GP },
1560
  { Hexagon::GPCYCLEHI },
1561
  { Hexagon::GPCYCLELO },
1562
  { Hexagon::GSR },
1563
  { Hexagon::HTID },
1564
  { Hexagon::IMASK },
1565
  { Hexagon::ISDBEN },
1566
  { Hexagon::ISDBGPR },
1567
  { Hexagon::ISDBMBXIN },
1568
  { Hexagon::ISDBMBXOUT },
1569
  { Hexagon::ISDBST },
1570
  { Hexagon::MODECTL },
1571
  { Hexagon::PC },
1572
  { Hexagon::PCYCLEHI },
1573
  { Hexagon::PCYCLELO },
1574
  { Hexagon::PKTCOUNTLO },
1575
  { Hexagon::PKTCOUNTHI },
1576
  { Hexagon::PMUCFG },
1577
  { Hexagon::PMUEVTCFG },
1578
  { Hexagon::REV },
1579
  { Hexagon::SSR },
1580
  { Hexagon::STID },
1581
  { Hexagon::SYSCFG },
1582
  { Hexagon::UGP },
1583
  { Hexagon::UPCYCLELO },
1584
  { Hexagon::UPCYCLEHI },
1585
  { Hexagon::USR_OVF },
1586
  { Hexagon::USR, Hexagon::C8 },
1587
  { Hexagon::UTIMERLO },
1588
  { Hexagon::UTIMERHI },
1589
  { Hexagon::VID },
1590
  { Hexagon::VTMP },
1591
  { Hexagon::BADVA0 },
1592
  { Hexagon::BADVA1 },
1593
  { Hexagon::BRKPTCFG0 },
1594
  { Hexagon::BRKPTCFG1 },
1595
  { Hexagon::BRKPTPC0 },
1596
  { Hexagon::BRKPTPC1 },
1597
  { Hexagon::C5 },
1598
  { Hexagon::R0 },
1599
  { Hexagon::R1 },
1600
  { Hexagon::R2 },
1601
  { Hexagon::R3 },
1602
  { Hexagon::R4 },
1603
  { Hexagon::R5 },
1604
  { Hexagon::R6 },
1605
  { Hexagon::R7 },
1606
  { Hexagon::R8 },
1607
  { Hexagon::R9 },
1608
  { Hexagon::R10 },
1609
  { Hexagon::R11 },
1610
  { Hexagon::R12 },
1611
  { Hexagon::R13 },
1612
  { Hexagon::R14 },
1613
  { Hexagon::R15 },
1614
  { Hexagon::R16 },
1615
  { Hexagon::R17 },
1616
  { Hexagon::R18 },
1617
  { Hexagon::R19 },
1618
  { Hexagon::R20 },
1619
  { Hexagon::R21 },
1620
  { Hexagon::R22 },
1621
  { Hexagon::R23 },
1622
  { Hexagon::R24 },
1623
  { Hexagon::R25 },
1624
  { Hexagon::R26 },
1625
  { Hexagon::R27 },
1626
  { Hexagon::R28 },
1627
  { Hexagon::R29 },
1628
  { Hexagon::R30 },
1629
  { Hexagon::R31 },
1630
  { Hexagon::G3 },
1631
  { Hexagon::G4 },
1632
  { Hexagon::G5 },
1633
  { Hexagon::G6 },
1634
  { Hexagon::G7 },
1635
  { Hexagon::G8 },
1636
  { Hexagon::G9 },
1637
  { Hexagon::G10 },
1638
  { Hexagon::G11 },
1639
  { Hexagon::G12 },
1640
  { Hexagon::G13 },
1641
  { Hexagon::G14 },
1642
  { Hexagon::G15 },
1643
  { Hexagon::G20 },
1644
  { Hexagon::G21 },
1645
  { Hexagon::G22 },
1646
  { Hexagon::G23 },
1647
  { Hexagon::G30 },
1648
  { Hexagon::G31 },
1649
  { Hexagon::GPMUCNT0 },
1650
  { Hexagon::GPMUCNT1 },
1651
  { Hexagon::GPMUCNT2 },
1652
  { Hexagon::GPMUCNT3 },
1653
  { Hexagon::GPMUCNT4 },
1654
  { Hexagon::GPMUCNT5 },
1655
  { Hexagon::GPMUCNT6 },
1656
  { Hexagon::GPMUCNT7 },
1657
  { Hexagon::ISDBCFG0 },
1658
  { Hexagon::ISDBCFG1 },
1659
  { Hexagon::LC0 },
1660
  { Hexagon::LC1 },
1661
  { Hexagon::M0 },
1662
  { Hexagon::M1 },
1663
  { Hexagon::P0, Hexagon::P3_0 },
1664
  { Hexagon::P1, Hexagon::P3_0 },
1665
  { Hexagon::P2, Hexagon::P3_0 },
1666
  { Hexagon::P3, Hexagon::P3_0 },
1667
  { Hexagon::PMUCNT0 },
1668
  { Hexagon::PMUCNT1 },
1669
  { Hexagon::PMUCNT2 },
1670
  { Hexagon::PMUCNT3 },
1671
  { Hexagon::Q0 },
1672
  { Hexagon::Q1 },
1673
  { Hexagon::Q2 },
1674
  { Hexagon::Q3 },
1675
  { Hexagon::S11 },
1676
  { Hexagon::S12 },
1677
  { Hexagon::S13 },
1678
  { Hexagon::S14 },
1679
  { Hexagon::S15 },
1680
  { Hexagon::S19 },
1681
  { Hexagon::S20 },
1682
  { Hexagon::S22 },
1683
  { Hexagon::S23 },
1684
  { Hexagon::S24 },
1685
  { Hexagon::S25 },
1686
  { Hexagon::S26 },
1687
  { Hexagon::S35 },
1688
  { Hexagon::S44 },
1689
  { Hexagon::S45 },
1690
  { Hexagon::S46 },
1691
  { Hexagon::S47 },
1692
  { Hexagon::S54 },
1693
  { Hexagon::S55 },
1694
  { Hexagon::S56 },
1695
  { Hexagon::S57 },
1696
  { Hexagon::S58 },
1697
  { Hexagon::S59 },
1698
  { Hexagon::S60 },
1699
  { Hexagon::S61 },
1700
  { Hexagon::S62 },
1701
  { Hexagon::S63 },
1702
  { Hexagon::S64 },
1703
  { Hexagon::S65 },
1704
  { Hexagon::S66 },
1705
  { Hexagon::S67 },
1706
  { Hexagon::S68 },
1707
  { Hexagon::S69 },
1708
  { Hexagon::S70 },
1709
  { Hexagon::S71 },
1710
  { Hexagon::S72 },
1711
  { Hexagon::S73 },
1712
  { Hexagon::S74 },
1713
  { Hexagon::S75 },
1714
  { Hexagon::S76 },
1715
  { Hexagon::S77 },
1716
  { Hexagon::S78 },
1717
  { Hexagon::S79 },
1718
  { Hexagon::S80 },
1719
  { Hexagon::SA0 },
1720
  { Hexagon::SA1 },
1721
  { Hexagon::SGP0 },
1722
  { Hexagon::SGP1 },
1723
  { Hexagon::V0 },
1724
  { Hexagon::V1 },
1725
  { Hexagon::V2 },
1726
  { Hexagon::V3 },
1727
  { Hexagon::V4 },
1728
  { Hexagon::V5 },
1729
  { Hexagon::V6 },
1730
  { Hexagon::V7 },
1731
  { Hexagon::V8 },
1732
  { Hexagon::V9 },
1733
  { Hexagon::V10 },
1734
  { Hexagon::V11 },
1735
  { Hexagon::V12 },
1736
  { Hexagon::V13 },
1737
  { Hexagon::V14 },
1738
  { Hexagon::V15 },
1739
  { Hexagon::V16 },
1740
  { Hexagon::V17 },
1741
  { Hexagon::V18 },
1742
  { Hexagon::V19 },
1743
  { Hexagon::V20 },
1744
  { Hexagon::V21 },
1745
  { Hexagon::V22 },
1746
  { Hexagon::V23 },
1747
  { Hexagon::V24 },
1748
  { Hexagon::V25 },
1749
  { Hexagon::V26 },
1750
  { Hexagon::V27 },
1751
  { Hexagon::V28 },
1752
  { Hexagon::V29 },
1753
  { Hexagon::V30 },
1754
  { Hexagon::V31 },
1755
  { Hexagon::VF0 },
1756
  { Hexagon::VF1 },
1757
  { Hexagon::VF2 },
1758
  { Hexagon::VF3 },
1759
  { Hexagon::VF4 },
1760
  { Hexagon::VF5 },
1761
  { Hexagon::VF6 },
1762
  { Hexagon::VF7 },
1763
  { Hexagon::VF8 },
1764
  { Hexagon::VF9 },
1765
  { Hexagon::VF10 },
1766
  { Hexagon::VF11 },
1767
  { Hexagon::VF12 },
1768
  { Hexagon::VF13 },
1769
  { Hexagon::VF14 },
1770
  { Hexagon::VF15 },
1771
  { Hexagon::VF16 },
1772
  { Hexagon::VF17 },
1773
  { Hexagon::VF18 },
1774
  { Hexagon::VF19 },
1775
  { Hexagon::VF20 },
1776
  { Hexagon::VF21 },
1777
  { Hexagon::VF22 },
1778
  { Hexagon::VF23 },
1779
  { Hexagon::VF24 },
1780
  { Hexagon::VF25 },
1781
  { Hexagon::VF26 },
1782
  { Hexagon::VF27 },
1783
  { Hexagon::VF28 },
1784
  { Hexagon::VF29 },
1785
  { Hexagon::VF30 },
1786
  { Hexagon::VF31 },
1787
  { Hexagon::VFR0 },
1788
  { Hexagon::VFR1 },
1789
  { Hexagon::VFR2 },
1790
  { Hexagon::VFR3 },
1791
  { Hexagon::VFR4 },
1792
  { Hexagon::VFR5 },
1793
  { Hexagon::VFR6 },
1794
  { Hexagon::VFR7 },
1795
  { Hexagon::VFR8 },
1796
  { Hexagon::VFR9 },
1797
  { Hexagon::VFR10 },
1798
  { Hexagon::VFR11 },
1799
  { Hexagon::VFR12 },
1800
  { Hexagon::VFR13 },
1801
  { Hexagon::VFR14 },
1802
  { Hexagon::VFR15 },
1803
  { Hexagon::VFR16 },
1804
  { Hexagon::VFR17 },
1805
  { Hexagon::VFR18 },
1806
  { Hexagon::VFR19 },
1807
  { Hexagon::VFR20 },
1808
  { Hexagon::VFR21 },
1809
  { Hexagon::VFR22 },
1810
  { Hexagon::VFR23 },
1811
  { Hexagon::VFR24 },
1812
  { Hexagon::VFR25 },
1813
  { Hexagon::VFR26 },
1814
  { Hexagon::VFR27 },
1815
  { Hexagon::VFR28 },
1816
  { Hexagon::VFR29 },
1817
  { Hexagon::VFR30 },
1818
  { Hexagon::VFR31 },
1819
};
1820
1821
namespace {     // Register classes...
1822
  // UsrBits Register Class...
1823
  const MCPhysReg UsrBits[] = {
1824
    Hexagon::USR_OVF, 
1825
  };
1826
1827
  // UsrBits Bit set.
1828
  const uint8_t UsrBitsBits[] = {
1829
    0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 
1830
  };
1831
1832
  // SysRegs Register Class...
1833
  const MCPhysReg SysRegs[] = {
1834
    Hexagon::SGP0, Hexagon::SGP1, Hexagon::STID, Hexagon::ELR, Hexagon::BADVA0, Hexagon::BADVA1, Hexagon::SSR, Hexagon::CCR, Hexagon::HTID, Hexagon::BADVA, Hexagon::IMASK, Hexagon::S11, Hexagon::S12, Hexagon::S13, Hexagon::S14, Hexagon::S15, Hexagon::S19, Hexagon::S23, Hexagon::S25, Hexagon::EVB, Hexagon::MODECTL, Hexagon::SYSCFG, Hexagon::S20, Hexagon::VID, Hexagon::S22, Hexagon::S24, Hexagon::S26, Hexagon::CFGBASE, Hexagon::DIAG, Hexagon::REV, Hexagon::PCYCLEHI, Hexagon::PCYCLELO, Hexagon::ISDBST, Hexagon::ISDBCFG0, Hexagon::ISDBCFG1, Hexagon::S35, Hexagon::BRKPTPC0, Hexagon::BRKPTCFG0, Hexagon::BRKPTPC1, Hexagon::BRKPTCFG1, Hexagon::ISDBMBXIN, Hexagon::ISDBMBXOUT, Hexagon::ISDBEN, Hexagon::ISDBGPR, Hexagon::S44, Hexagon::S45, Hexagon::S46, Hexagon::S47, Hexagon::PMUCNT0, Hexagon::PMUCNT1, Hexagon::PMUCNT2, Hexagon::PMUCNT3, Hexagon::PMUEVTCFG, Hexagon::PMUCFG, Hexagon::S54, Hexagon::S55, Hexagon::S56, Hexagon::S57, Hexagon::S58, Hexagon::S59, Hexagon::S60, Hexagon::S61, Hexagon::S62, Hexagon::S63, Hexagon::S64, Hexagon::S65, Hexagon::S66, Hexagon::S67, Hexagon::S68, Hexagon::S69, Hexagon::S70, Hexagon::S71, Hexagon::S72, Hexagon::S73, Hexagon::S74, Hexagon::S75, Hexagon::S76, Hexagon::S77, Hexagon::S78, Hexagon::S79, Hexagon::S80, 
1835
  };
1836
1837
  // SysRegs Bit set.
1838
  const uint8_t SysRegsBits[] = {
1839
    0xee, 0x00, 0xff, 0xc6, 0x0f, 0xa0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 
1840
  };
1841
1842
  // GuestRegs Register Class...
1843
  const MCPhysReg GuestRegs[] = {
1844
    Hexagon::GELR, Hexagon::GSR, Hexagon::GOSP, Hexagon::G3, Hexagon::G4, Hexagon::G5, Hexagon::G6, Hexagon::G7, Hexagon::G8, Hexagon::G9, Hexagon::G10, Hexagon::G11, Hexagon::G12, Hexagon::G13, Hexagon::G14, Hexagon::G15, Hexagon::GPMUCNT4, Hexagon::GPMUCNT5, Hexagon::GPMUCNT6, Hexagon::GPMUCNT7, Hexagon::G20, Hexagon::G21, Hexagon::G22, Hexagon::G23, Hexagon::GPCYCLELO, Hexagon::GPCYCLEHI, Hexagon::GPMUCNT0, Hexagon::GPMUCNT1, Hexagon::GPMUCNT2, Hexagon::GPMUCNT3, Hexagon::G30, Hexagon::G31, 
1845
  };
1846
1847
  // GuestRegs Bit set.
1848
  const uint8_t GuestRegsBits[] = {
1849
    0x00, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x0f, 
1850
  };
1851
1852
  // IntRegs Register Class...
1853
  const MCPhysReg IntRegs[] = {
1854
    Hexagon::R0, Hexagon::R1, Hexagon::R2, Hexagon::R3, Hexagon::R4, Hexagon::R5, Hexagon::R6, Hexagon::R7, Hexagon::R8, Hexagon::R9, Hexagon::R12, Hexagon::R13, Hexagon::R14, Hexagon::R15, Hexagon::R16, Hexagon::R17, Hexagon::R18, Hexagon::R19, Hexagon::R20, Hexagon::R21, Hexagon::R22, Hexagon::R23, Hexagon::R24, Hexagon::R25, Hexagon::R26, Hexagon::R27, Hexagon::R28, Hexagon::R10, Hexagon::R11, Hexagon::R29, Hexagon::R30, Hexagon::R31, 
1855
  };
1856
1857
  // IntRegs Bit set.
1858
  const uint8_t IntRegsBits[] = {
1859
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x3f, 
1860
  };
1861
1862
  // CtrRegs Register Class...
1863
  const MCPhysReg CtrRegs[] = {
1864
    Hexagon::LC0, Hexagon::SA0, Hexagon::LC1, Hexagon::SA1, Hexagon::P3_0, Hexagon::C5, Hexagon::C8, Hexagon::PC, Hexagon::UGP, Hexagon::GP, Hexagon::CS0, Hexagon::CS1, Hexagon::UPCYCLELO, Hexagon::UPCYCLEHI, Hexagon::FRAMELIMIT, Hexagon::FRAMEKEY, Hexagon::PKTCOUNTLO, Hexagon::PKTCOUNTHI, Hexagon::UTIMERLO, Hexagon::UTIMERHI, Hexagon::M0, Hexagon::M1, Hexagon::USR, 
1865
  };
1866
1867
  // CtrRegs Bit set.
1868
  const uint8_t CtrRegsBits[] = {
1869
    0x00, 0x13, 0x00, 0x31, 0xd0, 0x19, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 
1870
  };
1871
1872
  // GeneralSubRegs Register Class...
1873
  const MCPhysReg GeneralSubRegs[] = {
1874
    Hexagon::R23, Hexagon::R22, Hexagon::R21, Hexagon::R20, Hexagon::R19, Hexagon::R18, Hexagon::R17, Hexagon::R16, Hexagon::R7, Hexagon::R6, Hexagon::R5, Hexagon::R4, Hexagon::R3, Hexagon::R2, Hexagon::R1, Hexagon::R0, 
1875
  };
1876
1877
  // GeneralSubRegs Bit set.
1878
  const uint8_t GeneralSubRegsBits[] = {
1879
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0xc0, 0x3f, 
1880
  };
1881
1882
  // V62Regs Register Class...
1883
  const MCPhysReg V62Regs[] = {
1884
    Hexagon::FRAMELIMIT, Hexagon::FRAMEKEY, Hexagon::C17_16, Hexagon::PKTCOUNTLO, Hexagon::PKTCOUNTHI, Hexagon::PKTCOUNT, Hexagon::UTIMERLO, Hexagon::UTIMERHI, Hexagon::UTIMER, 
1885
  };
1886
1887
  // V62Regs Bit set.
1888
  const uint8_t V62RegsBits[] = {
1889
    0x00, 0x03, 0x00, 0x38, 0x00, 0x1c, 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, 0x10, 
1890
  };
1891
1892
  // IntRegsLow8 Register Class...
1893
  const MCPhysReg IntRegsLow8[] = {
1894
    Hexagon::R7, Hexagon::R6, Hexagon::R5, Hexagon::R4, Hexagon::R3, Hexagon::R2, Hexagon::R1, Hexagon::R0, 
1895
  };
1896
1897
  // IntRegsLow8 Bit set.
1898
  const uint8_t IntRegsLow8Bits[] = {
1899
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 
1900
  };
1901
1902
  // CtrRegs_and_V62Regs Register Class...
1903
  const MCPhysReg CtrRegs_and_V62Regs[] = {
1904
    Hexagon::FRAMELIMIT, Hexagon::FRAMEKEY, Hexagon::PKTCOUNTLO, Hexagon::PKTCOUNTHI, Hexagon::UTIMERLO, Hexagon::UTIMERHI, 
1905
  };
1906
1907
  // CtrRegs_and_V62Regs Bit set.
1908
  const uint8_t CtrRegs_and_V62RegsBits[] = {
1909
    0x00, 0x03, 0x00, 0x30, 0x00, 0x18, 
1910
  };
1911
1912
  // PredRegs Register Class...
1913
  const MCPhysReg PredRegs[] = {
1914
    Hexagon::P0, Hexagon::P1, Hexagon::P2, Hexagon::P3, 
1915
  };
1916
1917
  // PredRegs Bit set.
1918
  const uint8_t PredRegsBits[] = {
1919
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 
1920
  };
1921
1922
  // V62Regs_with_isub_hi Register Class...
1923
  const MCPhysReg V62Regs_with_isub_hi[] = {
1924
    Hexagon::C17_16, Hexagon::PKTCOUNT, Hexagon::UTIMER, 
1925
  };
1926
1927
  // V62Regs_with_isub_hi Bit set.
1928
  const uint8_t V62Regs_with_isub_hiBits[] = {
1929
    0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 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, 0x10, 
1930
  };
1931
1932
  // ModRegs Register Class...
1933
  const MCPhysReg ModRegs[] = {
1934
    Hexagon::M0, Hexagon::M1, 
1935
  };
1936
1937
  // ModRegs Bit set.
1938
  const uint8_t ModRegsBits[] = {
1939
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 
1940
  };
1941
1942
  // CtrRegs_with_subreg_overflow Register Class...
1943
  const MCPhysReg CtrRegs_with_subreg_overflow[] = {
1944
    Hexagon::USR, 
1945
  };
1946
1947
  // CtrRegs_with_subreg_overflow Bit set.
1948
  const uint8_t CtrRegs_with_subreg_overflowBits[] = {
1949
    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
1950
  };
1951
1952
  // V65Regs Register Class...
1953
  const MCPhysReg V65Regs[] = {
1954
    Hexagon::VTMP, 
1955
  };
1956
1957
  // V65Regs Bit set.
1958
  const uint8_t V65RegsBits[] = {
1959
    0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 
1960
  };
1961
1962
  // SysRegs64 Register Class...
1963
  const MCPhysReg SysRegs64[] = {
1964
    Hexagon::SGP1_0, Hexagon::S3_2, Hexagon::S5_4, Hexagon::S7_6, Hexagon::S9_8, Hexagon::S11_10, Hexagon::S13_12, Hexagon::S15_14, Hexagon::S17_16, Hexagon::S19_18, Hexagon::S21_20, Hexagon::S23_22, Hexagon::S25_24, Hexagon::S27_26, Hexagon::S29_28, Hexagon::S31_30, Hexagon::S33_32, Hexagon::S35_34, Hexagon::S37_36, Hexagon::S39_38, Hexagon::S41_40, Hexagon::S43_42, Hexagon::S45_44, Hexagon::S47_46, Hexagon::S49_48, Hexagon::S51_50, Hexagon::S53_52, Hexagon::S55_54, Hexagon::S57_56, Hexagon::S59_58, Hexagon::S61_60, Hexagon::S63_62, Hexagon::S65_64, Hexagon::S67_66, Hexagon::S69_68, Hexagon::S71_70, Hexagon::S73_72, Hexagon::S75_74, Hexagon::S77_76, Hexagon::S79_78, 
1965
  };
1966
1967
  // SysRegs64 Bit set.
1968
  const uint8_t SysRegs64Bits[] = {
1969
    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, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x3f, 
1970
  };
1971
1972
  // DoubleRegs Register Class...
1973
  const MCPhysReg DoubleRegs[] = {
1974
    Hexagon::D0, Hexagon::D1, Hexagon::D2, Hexagon::D3, Hexagon::D4, Hexagon::D6, Hexagon::D7, Hexagon::D8, Hexagon::D9, Hexagon::D10, Hexagon::D11, Hexagon::D12, Hexagon::D13, Hexagon::D5, Hexagon::D14, Hexagon::D15, 
1975
  };
1976
1977
  // DoubleRegs Bit set.
1978
  const uint8_t DoubleRegsBits[] = {
1979
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 
1980
  };
1981
1982
  // GuestRegs64 Register Class...
1983
  const MCPhysReg GuestRegs64[] = {
1984
    Hexagon::G1_0, Hexagon::G3_2, Hexagon::G5_4, Hexagon::G7_6, Hexagon::G9_8, Hexagon::G11_10, Hexagon::G13_12, Hexagon::G15_14, Hexagon::G17_16, Hexagon::G19_18, Hexagon::G21_20, Hexagon::G23_22, Hexagon::G25_24, Hexagon::G27_26, Hexagon::G29_28, Hexagon::G31_30, 
1985
  };
1986
1987
  // GuestRegs64 Bit set.
1988
  const uint8_t GuestRegs64Bits[] = {
1989
    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, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f, 
1990
  };
1991
1992
  // VectRegRev Register Class...
1993
  const MCPhysReg VectRegRev[] = {
1994
    Hexagon::WR0, Hexagon::WR1, Hexagon::WR2, Hexagon::WR3, Hexagon::WR4, Hexagon::WR5, Hexagon::WR6, Hexagon::WR7, Hexagon::WR8, Hexagon::WR9, Hexagon::WR10, Hexagon::WR11, Hexagon::WR12, Hexagon::WR13, Hexagon::WR14, Hexagon::WR15, 
1995
  };
1996
1997
  // VectRegRev Bit set.
1998
  const uint8_t VectRegRevBits[] = {
1999
    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, 0xc0, 0xff, 0x3f, 
2000
  };
2001
2002
  // CtrRegs64 Register Class...
2003
  const MCPhysReg CtrRegs64[] = {
2004
    Hexagon::C1_0, Hexagon::C3_2, Hexagon::C5_4, Hexagon::C7_6, Hexagon::C9_8, Hexagon::C11_10, Hexagon::CS, Hexagon::UPCYCLE, Hexagon::C17_16, Hexagon::PKTCOUNT, Hexagon::UTIMER, 
2005
  };
2006
2007
  // CtrRegs64 Bit set.
2008
  const uint8_t CtrRegs64Bits[] = {
2009
    0x10, 0x00, 0x00, 0x08, 0x20, 0x04, 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, 0xc0, 0x1f, 
2010
  };
2011
2012
  // GeneralDoubleLow8Regs Register Class...
2013
  const MCPhysReg GeneralDoubleLow8Regs[] = {
2014
    Hexagon::D11, Hexagon::D10, Hexagon::D9, Hexagon::D8, Hexagon::D3, Hexagon::D2, Hexagon::D1, Hexagon::D0, 
2015
  };
2016
2017
  // GeneralDoubleLow8Regs Bit set.
2018
  const uint8_t GeneralDoubleLow8RegsBits[] = {
2019
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 
2020
  };
2021
2022
  // DoubleRegs_with_isub_hi_in_IntRegsLow8 Register Class...
2023
  const MCPhysReg DoubleRegs_with_isub_hi_in_IntRegsLow8[] = {
2024
    Hexagon::D3, Hexagon::D2, Hexagon::D1, Hexagon::D0, 
2025
  };
2026
2027
  // DoubleRegs_with_isub_hi_in_IntRegsLow8 Bit set.
2028
  const uint8_t DoubleRegs_with_isub_hi_in_IntRegsLow8Bits[] = {
2029
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 
2030
  };
2031
2032
  // CtrRegs64_and_V62Regs Register Class...
2033
  const MCPhysReg CtrRegs64_and_V62Regs[] = {
2034
    Hexagon::C17_16, Hexagon::PKTCOUNT, Hexagon::UTIMER, 
2035
  };
2036
2037
  // CtrRegs64_and_V62Regs Bit set.
2038
  const uint8_t CtrRegs64_and_V62RegsBits[] = {
2039
    0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 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, 0x10, 
2040
  };
2041
2042
  // CtrRegs64_with_isub_hi_in_ModRegs Register Class...
2043
  const MCPhysReg CtrRegs64_with_isub_hi_in_ModRegs[] = {
2044
    Hexagon::C7_6, 
2045
  };
2046
2047
  // CtrRegs64_with_isub_hi_in_ModRegs Bit set.
2048
  const uint8_t CtrRegs64_with_isub_hi_in_ModRegsBits[] = {
2049
    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, 0x00, 0x00, 0x00, 0x02, 
2050
  };
2051
2052
  // HvxQR Register Class...
2053
  const MCPhysReg HvxQR[] = {
2054
    Hexagon::Q0, Hexagon::Q1, Hexagon::Q2, Hexagon::Q3, 
2055
  };
2056
2057
  // HvxQR Bit set.
2058
  const uint8_t HvxQRBits[] = {
2059
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 
2060
  };
2061
2062
  // HvxVR Register Class...
2063
  const MCPhysReg HvxVR[] = {
2064
    Hexagon::V0, Hexagon::V1, Hexagon::V2, Hexagon::V3, Hexagon::V4, Hexagon::V5, Hexagon::V6, Hexagon::V7, Hexagon::V8, Hexagon::V9, Hexagon::V10, Hexagon::V11, Hexagon::V12, Hexagon::V13, Hexagon::V14, Hexagon::V15, Hexagon::V16, Hexagon::V17, Hexagon::V18, Hexagon::V19, Hexagon::V20, Hexagon::V21, Hexagon::V22, Hexagon::V23, Hexagon::V24, Hexagon::V25, Hexagon::V26, Hexagon::V27, Hexagon::V28, Hexagon::V29, Hexagon::V30, Hexagon::V31, Hexagon::VTMP, 
2065
  };
2066
2067
  // HvxVR Bit set.
2068
  const uint8_t HvxVRBits[] = {
2069
    0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x3f, 
2070
  };
2071
2072
  // HvxVR_and_V65Regs Register Class...
2073
  const MCPhysReg HvxVR_and_V65Regs[] = {
2074
    Hexagon::VTMP, 
2075
  };
2076
2077
  // HvxVR_and_V65Regs Bit set.
2078
  const uint8_t HvxVR_and_V65RegsBits[] = {
2079
    0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 
2080
  };
2081
2082
  // HvxWR Register Class...
2083
  const MCPhysReg HvxWR[] = {
2084
    Hexagon::W0, Hexagon::W1, Hexagon::W2, Hexagon::W3, Hexagon::W4, Hexagon::W5, Hexagon::W6, Hexagon::W7, Hexagon::W8, Hexagon::W9, Hexagon::W10, Hexagon::W11, Hexagon::W12, Hexagon::W13, Hexagon::W14, Hexagon::W15, Hexagon::WR0, Hexagon::WR1, Hexagon::WR2, Hexagon::WR3, Hexagon::WR4, Hexagon::WR5, Hexagon::WR6, Hexagon::WR7, Hexagon::WR8, Hexagon::WR9, Hexagon::WR10, Hexagon::WR11, Hexagon::WR12, Hexagon::WR13, Hexagon::WR14, Hexagon::WR15, 
2085
  };
2086
2087
  // HvxWR Bit set.
2088
  const uint8_t HvxWRBits[] = {
2089
    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, 0xc0, 0xff, 0xff, 0xff, 0x3f, 
2090
  };
2091
2092
  // HvxWR_and_VectRegRev Register Class...
2093
  const MCPhysReg HvxWR_and_VectRegRev[] = {
2094
    Hexagon::WR0, Hexagon::WR1, Hexagon::WR2, Hexagon::WR3, Hexagon::WR4, Hexagon::WR5, Hexagon::WR6, Hexagon::WR7, Hexagon::WR8, Hexagon::WR9, Hexagon::WR10, Hexagon::WR11, Hexagon::WR12, Hexagon::WR13, Hexagon::WR14, Hexagon::WR15, 
2095
  };
2096
2097
  // HvxWR_and_VectRegRev Bit set.
2098
  const uint8_t HvxWR_and_VectRegRevBits[] = {
2099
    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, 0xc0, 0xff, 0x3f, 
2100
  };
2101
2102
  // HvxVQR Register Class...
2103
  const MCPhysReg HvxVQR[] = {
2104
    Hexagon::VQ0, Hexagon::VQ1, Hexagon::VQ2, Hexagon::VQ3, Hexagon::VQ4, Hexagon::VQ5, Hexagon::VQ6, Hexagon::VQ7, 
2105
  };
2106
2107
  // HvxVQR Bit set.
2108
  const uint8_t HvxVQRBits[] = {
2109
    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, 0xc0, 0x3f, 
2110
  };
2111
2112
} // end anonymous namespace
2113
2114
2115
#ifdef __GNUC__
2116
#pragma GCC diagnostic push
2117
#pragma GCC diagnostic ignored "-Woverlength-strings"
2118
#endif
2119
extern const char HexagonRegClassStrings[] = {
2120
  /* 0 */ "CtrRegs64\0"
2121
  /* 10 */ "SysRegs64\0"
2122
  /* 20 */ "GuestRegs64\0"
2123
  /* 32 */ "DoubleRegs_with_isub_hi_in_IntRegsLow8\0"
2124
  /* 71 */ "HvxVQR\0"
2125
  /* 78 */ "HvxQR\0"
2126
  /* 84 */ "HvxVR\0"
2127
  /* 90 */ "HvxWR\0"
2128
  /* 96 */ "V62Regs_with_isub_hi\0"
2129
  /* 117 */ "CtrRegs64_and_V62Regs\0"
2130
  /* 139 */ "CtrRegs_and_V62Regs\0"
2131
  /* 159 */ "HvxVR_and_V65Regs\0"
2132
  /* 177 */ "GeneralDoubleLow8Regs\0"
2133
  /* 199 */ "GeneralSubRegs\0"
2134
  /* 214 */ "PredRegs\0"
2135
  /* 223 */ "CtrRegs64_with_isub_hi_in_ModRegs\0"
2136
  /* 257 */ "DoubleRegs\0"
2137
  /* 268 */ "CtrRegs\0"
2138
  /* 276 */ "SysRegs\0"
2139
  /* 284 */ "IntRegs\0"
2140
  /* 292 */ "GuestRegs\0"
2141
  /* 302 */ "UsrBits\0"
2142
  /* 310 */ "HvxWR_and_VectRegRev\0"
2143
  /* 331 */ "CtrRegs_with_subreg_overflow\0"
2144
};
2145
#ifdef __GNUC__
2146
#pragma GCC diagnostic pop
2147
#endif
2148
2149
extern const MCRegisterClass HexagonMCRegisterClasses[] = {
2150
  { UsrBits, UsrBitsBits, 302, 1, sizeof(UsrBitsBits), Hexagon::UsrBitsRegClassID, 1, 1, false },
2151
  { SysRegs, SysRegsBits, 276, 81, sizeof(SysRegsBits), Hexagon::SysRegsRegClassID, 32, 1, false },
2152
  { GuestRegs, GuestRegsBits, 292, 32, sizeof(GuestRegsBits), Hexagon::GuestRegsRegClassID, 32, 1, false },
2153
  { IntRegs, IntRegsBits, 284, 32, sizeof(IntRegsBits), Hexagon::IntRegsRegClassID, 32, 1, true },
2154
  { CtrRegs, CtrRegsBits, 268, 23, sizeof(CtrRegsBits), Hexagon::CtrRegsRegClassID, 32, 1, false },
2155
  { GeneralSubRegs, GeneralSubRegsBits, 199, 16, sizeof(GeneralSubRegsBits), Hexagon::GeneralSubRegsRegClassID, 32, 1, true },
2156
  { V62Regs, V62RegsBits, 131, 9, sizeof(V62RegsBits), Hexagon::V62RegsRegClassID, 32, 1, false },
2157
  { IntRegsLow8, IntRegsLow8Bits, 59, 8, sizeof(IntRegsLow8Bits), Hexagon::IntRegsLow8RegClassID, 32, 1, true },
2158
  { CtrRegs_and_V62Regs, CtrRegs_and_V62RegsBits, 139, 6, sizeof(CtrRegs_and_V62RegsBits), Hexagon::CtrRegs_and_V62RegsRegClassID, 32, 1, false },
2159
  { PredRegs, PredRegsBits, 214, 4, sizeof(PredRegsBits), Hexagon::PredRegsRegClassID, 32, 1, true },
2160
  { V62Regs_with_isub_hi, V62Regs_with_isub_hiBits, 96, 3, sizeof(V62Regs_with_isub_hiBits), Hexagon::V62Regs_with_isub_hiRegClassID, 32, 1, false },
2161
  { ModRegs, ModRegsBits, 249, 2, sizeof(ModRegsBits), Hexagon::ModRegsRegClassID, 32, 1, true },
2162
  { CtrRegs_with_subreg_overflow, CtrRegs_with_subreg_overflowBits, 331, 1, sizeof(CtrRegs_with_subreg_overflowBits), Hexagon::CtrRegs_with_subreg_overflowRegClassID, 32, 1, false },
2163
  { V65Regs, V65RegsBits, 169, 1, sizeof(V65RegsBits), Hexagon::V65RegsRegClassID, 32, 1, false },
2164
  { SysRegs64, SysRegs64Bits, 10, 40, sizeof(SysRegs64Bits), Hexagon::SysRegs64RegClassID, 64, 1, false },
2165
  { DoubleRegs, DoubleRegsBits, 257, 16, sizeof(DoubleRegsBits), Hexagon::DoubleRegsRegClassID, 64, 1, true },
2166
  { GuestRegs64, GuestRegs64Bits, 20, 16, sizeof(GuestRegs64Bits), Hexagon::GuestRegs64RegClassID, 64, 1, false },
2167
  { VectRegRev, VectRegRevBits, 320, 16, sizeof(VectRegRevBits), Hexagon::VectRegRevRegClassID, 64, 1, true },
2168
  { CtrRegs64, CtrRegs64Bits, 0, 11, sizeof(CtrRegs64Bits), Hexagon::CtrRegs64RegClassID, 64, 1, false },
2169
  { GeneralDoubleLow8Regs, GeneralDoubleLow8RegsBits, 177, 8, sizeof(GeneralDoubleLow8RegsBits), Hexagon::GeneralDoubleLow8RegsRegClassID, 64, 1, true },
2170
  { DoubleRegs_with_isub_hi_in_IntRegsLow8, DoubleRegs_with_isub_hi_in_IntRegsLow8Bits, 32, 4, sizeof(DoubleRegs_with_isub_hi_in_IntRegsLow8Bits), Hexagon::DoubleRegs_with_isub_hi_in_IntRegsLow8RegClassID, 64, 1, true },
2171
  { CtrRegs64_and_V62Regs, CtrRegs64_and_V62RegsBits, 117, 3, sizeof(CtrRegs64_and_V62RegsBits), Hexagon::CtrRegs64_and_V62RegsRegClassID, 64, 1, false },
2172
  { CtrRegs64_with_isub_hi_in_ModRegs, CtrRegs64_with_isub_hi_in_ModRegsBits, 223, 1, sizeof(CtrRegs64_with_isub_hi_in_ModRegsBits), Hexagon::CtrRegs64_with_isub_hi_in_ModRegsRegClassID, 64, 1, false },
2173
  { HvxQR, HvxQRBits, 78, 4, sizeof(HvxQRBits), Hexagon::HvxQRRegClassID, 0, 1, true },
2174
  { HvxVR, HvxVRBits, 84, 33, sizeof(HvxVRBits), Hexagon::HvxVRRegClassID, 0, 1, true },
2175
  { HvxVR_and_V65Regs, HvxVR_and_V65RegsBits, 159, 1, sizeof(HvxVR_and_V65RegsBits), Hexagon::HvxVR_and_V65RegsRegClassID, 0, 1, true },
2176
  { HvxWR, HvxWRBits, 90, 32, sizeof(HvxWRBits), Hexagon::HvxWRRegClassID, 0, 1, true },
2177
  { HvxWR_and_VectRegRev, HvxWR_and_VectRegRevBits, 310, 16, sizeof(HvxWR_and_VectRegRevBits), Hexagon::HvxWR_and_VectRegRevRegClassID, 0, 1, true },
2178
  { HvxVQR, HvxVQRBits, 71, 8, sizeof(HvxVQRBits), Hexagon::HvxVQRRegClassID, 0, 1, true },
2179
};
2180
2181
// Hexagon Dwarf<->LLVM register mappings.
2182
extern const MCRegisterInfo::DwarfLLVMRegPair HexagonDwarfFlavour0Dwarf2L[] = {
2183
  { 0U, Hexagon::R0 },
2184
  { 1U, Hexagon::R1 },
2185
  { 2U, Hexagon::R2 },
2186
  { 3U, Hexagon::R3 },
2187
  { 4U, Hexagon::R4 },
2188
  { 5U, Hexagon::R5 },
2189
  { 6U, Hexagon::R6 },
2190
  { 7U, Hexagon::R7 },
2191
  { 8U, Hexagon::R8 },
2192
  { 9U, Hexagon::R9 },
2193
  { 10U, Hexagon::R10 },
2194
  { 11U, Hexagon::R11 },
2195
  { 12U, Hexagon::R12 },
2196
  { 13U, Hexagon::R13 },
2197
  { 14U, Hexagon::R14 },
2198
  { 15U, Hexagon::R15 },
2199
  { 16U, Hexagon::R16 },
2200
  { 17U, Hexagon::R17 },
2201
  { 18U, Hexagon::R18 },
2202
  { 19U, Hexagon::R19 },
2203
  { 20U, Hexagon::R20 },
2204
  { 21U, Hexagon::R21 },
2205
  { 22U, Hexagon::R22 },
2206
  { 23U, Hexagon::R23 },
2207
  { 24U, Hexagon::R24 },
2208
  { 25U, Hexagon::R25 },
2209
  { 26U, Hexagon::R26 },
2210
  { 27U, Hexagon::R27 },
2211
  { 28U, Hexagon::R28 },
2212
  { 29U, Hexagon::R29 },
2213
  { 30U, Hexagon::R30 },
2214
  { 31U, Hexagon::R31 },
2215
  { 32U, Hexagon::D0 },
2216
  { 34U, Hexagon::D1 },
2217
  { 36U, Hexagon::D2 },
2218
  { 38U, Hexagon::D3 },
2219
  { 40U, Hexagon::D4 },
2220
  { 42U, Hexagon::D5 },
2221
  { 44U, Hexagon::D6 },
2222
  { 46U, Hexagon::D7 },
2223
  { 48U, Hexagon::D8 },
2224
  { 50U, Hexagon::D9 },
2225
  { 52U, Hexagon::D10 },
2226
  { 54U, Hexagon::D11 },
2227
  { 56U, Hexagon::D12 },
2228
  { 58U, Hexagon::D13 },
2229
  { 60U, Hexagon::D14 },
2230
  { 62U, Hexagon::D15 },
2231
  { 63U, Hexagon::P0 },
2232
  { 64U, Hexagon::P1 },
2233
  { 65U, Hexagon::P2 },
2234
  { 66U, Hexagon::P3 },
2235
  { 67U, Hexagon::C1_0 },
2236
  { 68U, Hexagon::LC0 },
2237
  { 69U, Hexagon::C3_2 },
2238
  { 70U, Hexagon::LC1 },
2239
  { 71U, Hexagon::P3_0 },
2240
  { 72U, Hexagon::C7_6 },
2241
  { 73U, Hexagon::M0 },
2242
  { 74U, Hexagon::C9_8 },
2243
  { 75U, Hexagon::C8 },
2244
  { 76U, Hexagon::C11_10 },
2245
  { 77U, Hexagon::UGP },
2246
  { 78U, Hexagon::GP },
2247
  { 79U, Hexagon::CS0 },
2248
  { 80U, Hexagon::CS1 },
2249
  { 81U, Hexagon::UPCYCLELO },
2250
  { 82U, Hexagon::UPCYCLEHI },
2251
  { 83U, Hexagon::C17_16 },
2252
  { 84U, Hexagon::FRAMEKEY },
2253
  { 85U, Hexagon::PKTCOUNTLO },
2254
  { 86U, Hexagon::PKTCOUNTHI },
2255
  { 97U, Hexagon::UTIMERLO },
2256
  { 98U, Hexagon::UTIMERHI },
2257
  { 99U, Hexagon::W0 },
2258
  { 100U, Hexagon::V1 },
2259
  { 101U, Hexagon::W1 },
2260
  { 102U, Hexagon::V3 },
2261
  { 103U, Hexagon::W2 },
2262
  { 104U, Hexagon::V5 },
2263
  { 105U, Hexagon::W3 },
2264
  { 106U, Hexagon::V7 },
2265
  { 107U, Hexagon::W4 },
2266
  { 108U, Hexagon::V9 },
2267
  { 109U, Hexagon::W5 },
2268
  { 110U, Hexagon::V11 },
2269
  { 111U, Hexagon::W6 },
2270
  { 112U, Hexagon::V13 },
2271
  { 113U, Hexagon::W7 },
2272
  { 114U, Hexagon::V15 },
2273
  { 115U, Hexagon::W8 },
2274
  { 116U, Hexagon::V17 },
2275
  { 117U, Hexagon::W9 },
2276
  { 118U, Hexagon::V19 },
2277
  { 119U, Hexagon::W10 },
2278
  { 120U, Hexagon::V21 },
2279
  { 121U, Hexagon::W11 },
2280
  { 122U, Hexagon::V23 },
2281
  { 123U, Hexagon::W12 },
2282
  { 124U, Hexagon::V25 },
2283
  { 125U, Hexagon::W13 },
2284
  { 126U, Hexagon::V27 },
2285
  { 127U, Hexagon::W14 },
2286
  { 128U, Hexagon::V29 },
2287
  { 129U, Hexagon::W15 },
2288
  { 130U, Hexagon::V31 },
2289
  { 131U, Hexagon::Q0 },
2290
  { 132U, Hexagon::Q1 },
2291
  { 133U, Hexagon::Q2 },
2292
  { 134U, Hexagon::Q3 },
2293
  { 144U, Hexagon::SGP1_0 },
2294
  { 145U, Hexagon::SGP1 },
2295
  { 146U, Hexagon::S3_2 },
2296
  { 147U, Hexagon::ELR },
2297
  { 148U, Hexagon::S5_4 },
2298
  { 149U, Hexagon::BADVA1 },
2299
  { 150U, Hexagon::S7_6 },
2300
  { 151U, Hexagon::CCR },
2301
  { 152U, Hexagon::S9_8 },
2302
  { 153U, Hexagon::BADVA },
2303
  { 154U, Hexagon::S11_10 },
2304
  { 155U, Hexagon::S11 },
2305
  { 156U, Hexagon::S13_12 },
2306
  { 157U, Hexagon::S13 },
2307
  { 158U, Hexagon::S15_14 },
2308
  { 159U, Hexagon::S15 },
2309
  { 160U, Hexagon::S17_16 },
2310
  { 161U, Hexagon::WR0 },
2311
  { 162U, Hexagon::S19_18 },
2312
  { 163U, Hexagon::WR2 },
2313
  { 164U, Hexagon::S21_20 },
2314
  { 165U, Hexagon::WR4 },
2315
  { 166U, Hexagon::S23_22 },
2316
  { 167U, Hexagon::WR6 },
2317
  { 168U, Hexagon::S25_24 },
2318
  { 169U, Hexagon::WR8 },
2319
  { 170U, Hexagon::S27_26 },
2320
  { 171U, Hexagon::WR10 },
2321
  { 172U, Hexagon::S29_28 },
2322
  { 173U, Hexagon::WR12 },
2323
  { 174U, Hexagon::S31_30 },
2324
  { 175U, Hexagon::WR14 },
2325
  { 176U, Hexagon::S33_32 },
2326
  { 177U, Hexagon::ISDBCFG0 },
2327
  { 178U, Hexagon::S35_34 },
2328
  { 179U, Hexagon::S35 },
2329
  { 180U, Hexagon::S37_36 },
2330
  { 181U, Hexagon::BRKPTCFG0 },
2331
  { 182U, Hexagon::S39_38 },
2332
  { 183U, Hexagon::BRKPTCFG1 },
2333
  { 184U, Hexagon::S41_40 },
2334
  { 185U, Hexagon::ISDBMBXOUT },
2335
  { 186U, Hexagon::S43_42 },
2336
  { 187U, Hexagon::ISDBGPR },
2337
  { 188U, Hexagon::S45_44 },
2338
  { 189U, Hexagon::S45 },
2339
  { 190U, Hexagon::S47_46 },
2340
  { 191U, Hexagon::S47 },
2341
  { 192U, Hexagon::S49_48 },
2342
  { 193U, Hexagon::PMUCNT1 },
2343
  { 194U, Hexagon::S51_50 },
2344
  { 195U, Hexagon::PMUCNT3 },
2345
  { 196U, Hexagon::S53_52 },
2346
  { 197U, Hexagon::PMUCFG },
2347
  { 198U, Hexagon::S55_54 },
2348
  { 199U, Hexagon::S55 },
2349
  { 200U, Hexagon::S57_56 },
2350
  { 201U, Hexagon::S57 },
2351
  { 202U, Hexagon::S59_58 },
2352
  { 203U, Hexagon::S59 },
2353
  { 204U, Hexagon::S61_60 },
2354
  { 205U, Hexagon::S61 },
2355
  { 206U, Hexagon::S63_62 },
2356
  { 207U, Hexagon::S63 },
2357
  { 208U, Hexagon::S65_64 },
2358
  { 209U, Hexagon::S65 },
2359
  { 210U, Hexagon::S67_66 },
2360
  { 211U, Hexagon::S67 },
2361
  { 212U, Hexagon::S69_68 },
2362
  { 213U, Hexagon::S69 },
2363
  { 214U, Hexagon::S71_70 },
2364
  { 215U, Hexagon::S71 },
2365
  { 216U, Hexagon::S73_72 },
2366
  { 217U, Hexagon::S73 },
2367
  { 218U, Hexagon::S75_74 },
2368
  { 219U, Hexagon::S77_76 },
2369
  { 220U, Hexagon::S79_78 },
2370
  { 221U, Hexagon::S77 },
2371
  { 222U, Hexagon::G3_2 },
2372
  { 223U, Hexagon::S79 },
2373
  { 224U, Hexagon::G5_4 },
2374
  { 225U, Hexagon::G5 },
2375
  { 226U, Hexagon::G7_6 },
2376
  { 227U, Hexagon::G7 },
2377
  { 228U, Hexagon::G9_8 },
2378
  { 229U, Hexagon::G9 },
2379
  { 230U, Hexagon::G11_10 },
2380
  { 231U, Hexagon::G11 },
2381
  { 232U, Hexagon::G13_12 },
2382
  { 233U, Hexagon::G13 },
2383
  { 234U, Hexagon::G15_14 },
2384
  { 235U, Hexagon::G15 },
2385
  { 236U, Hexagon::G17_16 },
2386
  { 237U, Hexagon::GPMUCNT5 },
2387
  { 238U, Hexagon::G19_18 },
2388
  { 239U, Hexagon::GPMUCNT7 },
2389
  { 240U, Hexagon::G21_20 },
2390
  { 241U, Hexagon::G21 },
2391
  { 242U, Hexagon::G23_22 },
2392
  { 243U, Hexagon::G23 },
2393
  { 244U, Hexagon::G25_24 },
2394
  { 245U, Hexagon::GPCYCLEHI },
2395
  { 246U, Hexagon::G27_26 },
2396
  { 247U, Hexagon::GPMUCNT1 },
2397
  { 248U, Hexagon::G29_28 },
2398
  { 249U, Hexagon::GPMUCNT3 },
2399
  { 250U, Hexagon::G31_30 },
2400
  { 251U, Hexagon::G31 },
2401
  { 252U, Hexagon::VQ0 },
2402
  { 253U, Hexagon::VQ1 },
2403
  { 254U, Hexagon::VQ2 },
2404
  { 255U, Hexagon::VQ3 },
2405
  { 256U, Hexagon::VQ4 },
2406
  { 257U, Hexagon::VQ5 },
2407
  { 258U, Hexagon::VQ6 },
2408
  { 259U, Hexagon::VQ7 },
2409
  { 999999U, Hexagon::VF0 },
2410
  { 1000000U, Hexagon::VF1 },
2411
  { 1000001U, Hexagon::VF2 },
2412
  { 1000002U, Hexagon::VF3 },
2413
  { 1000003U, Hexagon::VF4 },
2414
  { 1000004U, Hexagon::VF5 },
2415
  { 1000005U, Hexagon::VF6 },
2416
  { 1000006U, Hexagon::VF7 },
2417
  { 1000007U, Hexagon::VF8 },
2418
  { 1000008U, Hexagon::VF9 },
2419
  { 1000009U, Hexagon::VF10 },
2420
  { 1000010U, Hexagon::VF11 },
2421
  { 1000011U, Hexagon::VF12 },
2422
  { 1000012U, Hexagon::VF13 },
2423
  { 1000013U, Hexagon::VF14 },
2424
  { 1000014U, Hexagon::VF15 },
2425
  { 1000015U, Hexagon::VF16 },
2426
  { 1000016U, Hexagon::VF17 },
2427
  { 1000017U, Hexagon::VF18 },
2428
  { 1000018U, Hexagon::VF19 },
2429
  { 1000019U, Hexagon::VF20 },
2430
  { 1000020U, Hexagon::VF21 },
2431
  { 1000021U, Hexagon::VF22 },
2432
  { 1000022U, Hexagon::VF23 },
2433
  { 1000023U, Hexagon::VF24 },
2434
  { 1000024U, Hexagon::VF25 },
2435
  { 1000025U, Hexagon::VF26 },
2436
  { 1000026U, Hexagon::VF27 },
2437
  { 1000027U, Hexagon::VF28 },
2438
  { 1000028U, Hexagon::VF29 },
2439
  { 1000029U, Hexagon::VF30 },
2440
  { 1000030U, Hexagon::VF31 },
2441
  { 9999999U, Hexagon::VFR0 },
2442
  { 10000000U, Hexagon::VFR1 },
2443
  { 10000001U, Hexagon::VFR2 },
2444
  { 10000002U, Hexagon::VFR3 },
2445
  { 10000003U, Hexagon::VFR4 },
2446
  { 10000004U, Hexagon::VFR5 },
2447
  { 10000005U, Hexagon::VFR6 },
2448
  { 10000006U, Hexagon::VFR7 },
2449
  { 10000007U, Hexagon::VFR8 },
2450
  { 10000008U, Hexagon::VFR9 },
2451
  { 10000009U, Hexagon::VFR10 },
2452
  { 10000010U, Hexagon::VFR11 },
2453
  { 10000011U, Hexagon::VFR12 },
2454
  { 10000012U, Hexagon::VFR13 },
2455
  { 10000013U, Hexagon::VFR14 },
2456
  { 10000014U, Hexagon::VFR15 },
2457
  { 10000015U, Hexagon::VFR16 },
2458
  { 10000016U, Hexagon::VFR17 },
2459
  { 10000017U, Hexagon::VFR18 },
2460
  { 10000018U, Hexagon::VFR19 },
2461
  { 10000019U, Hexagon::VFR20 },
2462
  { 10000020U, Hexagon::VFR21 },
2463
  { 10000021U, Hexagon::VFR22 },
2464
  { 10000022U, Hexagon::VFR23 },
2465
  { 10000023U, Hexagon::VFR24 },
2466
  { 10000024U, Hexagon::VFR25 },
2467
  { 10000025U, Hexagon::VFR26 },
2468
  { 10000026U, Hexagon::VFR27 },
2469
  { 10000027U, Hexagon::VFR28 },
2470
  { 10000028U, Hexagon::VFR29 },
2471
  { 10000029U, Hexagon::VFR30 },
2472
  { 10000030U, Hexagon::VFR31 },
2473
};
2474
extern const unsigned HexagonDwarfFlavour0Dwarf2LSize = std::size(HexagonDwarfFlavour0Dwarf2L);
2475
2476
extern const MCRegisterInfo::DwarfLLVMRegPair HexagonEHFlavour0Dwarf2L[] = {
2477
  { 0U, Hexagon::R0 },
2478
  { 1U, Hexagon::R1 },
2479
  { 2U, Hexagon::R2 },
2480
  { 3U, Hexagon::R3 },
2481
  { 4U, Hexagon::R4 },
2482
  { 5U, Hexagon::R5 },
2483
  { 6U, Hexagon::R6 },
2484
  { 7U, Hexagon::R7 },
2485
  { 8U, Hexagon::R8 },
2486
  { 9U, Hexagon::R9 },
2487
  { 10U, Hexagon::R10 },
2488
  { 11U, Hexagon::R11 },
2489
  { 12U, Hexagon::R12 },
2490
  { 13U, Hexagon::R13 },
2491
  { 14U, Hexagon::R14 },
2492
  { 15U, Hexagon::R15 },
2493
  { 16U, Hexagon::R16 },
2494
  { 17U, Hexagon::R17 },
2495
  { 18U, Hexagon::R18 },
2496
  { 19U, Hexagon::R19 },
2497
  { 20U, Hexagon::R20 },
2498
  { 21U, Hexagon::R21 },
2499
  { 22U, Hexagon::R22 },
2500
  { 23U, Hexagon::R23 },
2501
  { 24U, Hexagon::R24 },
2502
  { 25U, Hexagon::R25 },
2503
  { 26U, Hexagon::R26 },
2504
  { 27U, Hexagon::R27 },
2505
  { 28U, Hexagon::R28 },
2506
  { 29U, Hexagon::R29 },
2507
  { 30U, Hexagon::R30 },
2508
  { 31U, Hexagon::R31 },
2509
  { 32U, Hexagon::D0 },
2510
  { 34U, Hexagon::D1 },
2511
  { 36U, Hexagon::D2 },
2512
  { 38U, Hexagon::D3 },
2513
  { 40U, Hexagon::D4 },
2514
  { 42U, Hexagon::D5 },
2515
  { 44U, Hexagon::D6 },
2516
  { 46U, Hexagon::D7 },
2517
  { 48U, Hexagon::D8 },
2518
  { 50U, Hexagon::D9 },
2519
  { 52U, Hexagon::D10 },
2520
  { 54U, Hexagon::D11 },
2521
  { 56U, Hexagon::D12 },
2522
  { 58U, Hexagon::D13 },
2523
  { 60U, Hexagon::D14 },
2524
  { 62U, Hexagon::D15 },
2525
  { 63U, Hexagon::P0 },
2526
  { 64U, Hexagon::P1 },
2527
  { 65U, Hexagon::P2 },
2528
  { 66U, Hexagon::P3 },
2529
  { 67U, Hexagon::C1_0 },
2530
  { 68U, Hexagon::LC0 },
2531
  { 69U, Hexagon::C3_2 },
2532
  { 70U, Hexagon::LC1 },
2533
  { 71U, Hexagon::P3_0 },
2534
  { 72U, Hexagon::C7_6 },
2535
  { 73U, Hexagon::M0 },
2536
  { 74U, Hexagon::C9_8 },
2537
  { 75U, Hexagon::C8 },
2538
  { 76U, Hexagon::C11_10 },
2539
  { 77U, Hexagon::UGP },
2540
  { 78U, Hexagon::GP },
2541
  { 79U, Hexagon::CS0 },
2542
  { 80U, Hexagon::CS1 },
2543
  { 81U, Hexagon::UPCYCLELO },
2544
  { 82U, Hexagon::UPCYCLEHI },
2545
  { 83U, Hexagon::C17_16 },
2546
  { 84U, Hexagon::FRAMEKEY },
2547
  { 85U, Hexagon::PKTCOUNTLO },
2548
  { 86U, Hexagon::PKTCOUNTHI },
2549
  { 97U, Hexagon::UTIMERLO },
2550
  { 98U, Hexagon::UTIMERHI },
2551
  { 99U, Hexagon::W0 },
2552
  { 100U, Hexagon::V1 },
2553
  { 101U, Hexagon::W1 },
2554
  { 102U, Hexagon::V3 },
2555
  { 103U, Hexagon::W2 },
2556
  { 104U, Hexagon::V5 },
2557
  { 105U, Hexagon::W3 },
2558
  { 106U, Hexagon::V7 },
2559
  { 107U, Hexagon::W4 },
2560
  { 108U, Hexagon::V9 },
2561
  { 109U, Hexagon::W5 },
2562
  { 110U, Hexagon::V11 },
2563
  { 111U, Hexagon::W6 },
2564
  { 112U, Hexagon::V13 },
2565
  { 113U, Hexagon::W7 },
2566
  { 114U, Hexagon::V15 },
2567
  { 115U, Hexagon::W8 },
2568
  { 116U, Hexagon::V17 },
2569
  { 117U, Hexagon::W9 },
2570
  { 118U, Hexagon::V19 },
2571
  { 119U, Hexagon::W10 },
2572
  { 120U, Hexagon::V21 },
2573
  { 121U, Hexagon::W11 },
2574
  { 122U, Hexagon::V23 },
2575
  { 123U, Hexagon::W12 },
2576
  { 124U, Hexagon::V25 },
2577
  { 125U, Hexagon::W13 },
2578
  { 126U, Hexagon::V27 },
2579
  { 127U, Hexagon::W14 },
2580
  { 128U, Hexagon::V29 },
2581
  { 129U, Hexagon::W15 },
2582
  { 130U, Hexagon::V31 },
2583
  { 131U, Hexagon::Q0 },
2584
  { 132U, Hexagon::Q1 },
2585
  { 133U, Hexagon::Q2 },
2586
  { 134U, Hexagon::Q3 },
2587
  { 144U, Hexagon::SGP1_0 },
2588
  { 145U, Hexagon::SGP1 },
2589
  { 146U, Hexagon::S3_2 },
2590
  { 147U, Hexagon::ELR },
2591
  { 148U, Hexagon::S5_4 },
2592
  { 149U, Hexagon::BADVA1 },
2593
  { 150U, Hexagon::S7_6 },
2594
  { 151U, Hexagon::CCR },
2595
  { 152U, Hexagon::S9_8 },
2596
  { 153U, Hexagon::BADVA },
2597
  { 154U, Hexagon::S11_10 },
2598
  { 155U, Hexagon::S11 },
2599
  { 156U, Hexagon::S13_12 },
2600
  { 157U, Hexagon::S13 },
2601
  { 158U, Hexagon::S15_14 },
2602
  { 159U, Hexagon::S15 },
2603
  { 160U, Hexagon::S17_16 },
2604
  { 161U, Hexagon::WR0 },
2605
  { 162U, Hexagon::S19_18 },
2606
  { 163U, Hexagon::WR2 },
2607
  { 164U, Hexagon::S21_20 },
2608
  { 165U, Hexagon::WR4 },
2609
  { 166U, Hexagon::S23_22 },
2610
  { 167U, Hexagon::WR6 },
2611
  { 168U, Hexagon::S25_24 },
2612
  { 169U, Hexagon::WR8 },
2613
  { 170U, Hexagon::S27_26 },
2614
  { 171U, Hexagon::WR10 },
2615
  { 172U, Hexagon::S29_28 },
2616
  { 173U, Hexagon::WR12 },
2617
  { 174U, Hexagon::S31_30 },
2618
  { 175U, Hexagon::WR14 },
2619
  { 176U, Hexagon::S33_32 },
2620
  { 177U, Hexagon::ISDBCFG0 },
2621
  { 178U, Hexagon::S35_34 },
2622
  { 179U, Hexagon::S35 },
2623
  { 180U, Hexagon::S37_36 },
2624
  { 181U, Hexagon::BRKPTCFG0 },
2625
  { 182U, Hexagon::S39_38 },
2626
  { 183U, Hexagon::BRKPTCFG1 },
2627
  { 184U, Hexagon::S41_40 },
2628
  { 185U, Hexagon::ISDBMBXOUT },
2629
  { 186U, Hexagon::S43_42 },
2630
  { 187U, Hexagon::ISDBGPR },
2631
  { 188U, Hexagon::S45_44 },
2632
  { 189U, Hexagon::S45 },
2633
  { 190U, Hexagon::S47_46 },
2634
  { 191U, Hexagon::S47 },
2635
  { 192U, Hexagon::S49_48 },
2636
  { 193U, Hexagon::PMUCNT1 },
2637
  { 194U, Hexagon::S51_50 },
2638
  { 195U, Hexagon::PMUCNT3 },
2639
  { 196U, Hexagon::S53_52 },
2640
  { 197U, Hexagon::PMUCFG },
2641
  { 198U, Hexagon::S55_54 },
2642
  { 199U, Hexagon::S55 },
2643
  { 200U, Hexagon::S57_56 },
2644
  { 201U, Hexagon::S57 },
2645
  { 202U, Hexagon::S59_58 },
2646
  { 203U, Hexagon::S59 },
2647
  { 204U, Hexagon::S61_60 },
2648
  { 205U, Hexagon::S61 },
2649
  { 206U, Hexagon::S63_62 },
2650
  { 207U, Hexagon::S63 },
2651
  { 208U, Hexagon::S65_64 },
2652
  { 209U, Hexagon::S65 },
2653
  { 210U, Hexagon::S67_66 },
2654
  { 211U, Hexagon::S67 },
2655
  { 212U, Hexagon::S69_68 },
2656
  { 213U, Hexagon::S69 },
2657
  { 214U, Hexagon::S71_70 },
2658
  { 215U, Hexagon::S71 },
2659
  { 216U, Hexagon::S73_72 },
2660
  { 217U, Hexagon::S73 },
2661
  { 218U, Hexagon::S75_74 },
2662
  { 219U, Hexagon::S77_76 },
2663
  { 220U, Hexagon::S79_78 },
2664
  { 221U, Hexagon::S77 },
2665
  { 222U, Hexagon::G3_2 },
2666
  { 223U, Hexagon::S79 },
2667
  { 224U, Hexagon::G5_4 },
2668
  { 225U, Hexagon::G5 },
2669
  { 226U, Hexagon::G7_6 },
2670
  { 227U, Hexagon::G7 },
2671
  { 228U, Hexagon::G9_8 },
2672
  { 229U, Hexagon::G9 },
2673
  { 230U, Hexagon::G11_10 },
2674
  { 231U, Hexagon::G11 },
2675
  { 232U, Hexagon::G13_12 },
2676
  { 233U, Hexagon::G13 },
2677
  { 234U, Hexagon::G15_14 },
2678
  { 235U, Hexagon::G15 },
2679
  { 236U, Hexagon::G17_16 },
2680
  { 237U, Hexagon::GPMUCNT5 },
2681
  { 238U, Hexagon::G19_18 },
2682
  { 239U, Hexagon::GPMUCNT7 },
2683
  { 240U, Hexagon::G21_20 },
2684
  { 241U, Hexagon::G21 },
2685
  { 242U, Hexagon::G23_22 },
2686
  { 243U, Hexagon::G23 },
2687
  { 244U, Hexagon::G25_24 },
2688
  { 245U, Hexagon::GPCYCLEHI },
2689
  { 246U, Hexagon::G27_26 },
2690
  { 247U, Hexagon::GPMUCNT1 },
2691
  { 248U, Hexagon::G29_28 },
2692
  { 249U, Hexagon::GPMUCNT3 },
2693
  { 250U, Hexagon::G31_30 },
2694
  { 251U, Hexagon::G31 },
2695
  { 252U, Hexagon::VQ0 },
2696
  { 253U, Hexagon::VQ1 },
2697
  { 254U, Hexagon::VQ2 },
2698
  { 255U, Hexagon::VQ3 },
2699
  { 256U, Hexagon::VQ4 },
2700
  { 257U, Hexagon::VQ5 },
2701
  { 258U, Hexagon::VQ6 },
2702
  { 259U, Hexagon::VQ7 },
2703
  { 999999U, Hexagon::VF0 },
2704
  { 1000000U, Hexagon::VF1 },
2705
  { 1000001U, Hexagon::VF2 },
2706
  { 1000002U, Hexagon::VF3 },
2707
  { 1000003U, Hexagon::VF4 },
2708
  { 1000004U, Hexagon::VF5 },
2709
  { 1000005U, Hexagon::VF6 },
2710
  { 1000006U, Hexagon::VF7 },
2711
  { 1000007U, Hexagon::VF8 },
2712
  { 1000008U, Hexagon::VF9 },
2713
  { 1000009U, Hexagon::VF10 },
2714
  { 1000010U, Hexagon::VF11 },
2715
  { 1000011U, Hexagon::VF12 },
2716
  { 1000012U, Hexagon::VF13 },
2717
  { 1000013U, Hexagon::VF14 },
2718
  { 1000014U, Hexagon::VF15 },
2719
  { 1000015U, Hexagon::VF16 },
2720
  { 1000016U, Hexagon::VF17 },
2721
  { 1000017U, Hexagon::VF18 },
2722
  { 1000018U, Hexagon::VF19 },
2723
  { 1000019U, Hexagon::VF20 },
2724
  { 1000020U, Hexagon::VF21 },
2725
  { 1000021U, Hexagon::VF22 },
2726
  { 1000022U, Hexagon::VF23 },
2727
  { 1000023U, Hexagon::VF24 },
2728
  { 1000024U, Hexagon::VF25 },
2729
  { 1000025U, Hexagon::VF26 },
2730
  { 1000026U, Hexagon::VF27 },
2731
  { 1000027U, Hexagon::VF28 },
2732
  { 1000028U, Hexagon::VF29 },
2733
  { 1000029U, Hexagon::VF30 },
2734
  { 1000030U, Hexagon::VF31 },
2735
  { 9999999U, Hexagon::VFR0 },
2736
  { 10000000U, Hexagon::VFR1 },
2737
  { 10000001U, Hexagon::VFR2 },
2738
  { 10000002U, Hexagon::VFR3 },
2739
  { 10000003U, Hexagon::VFR4 },
2740
  { 10000004U, Hexagon::VFR5 },
2741
  { 10000005U, Hexagon::VFR6 },
2742
  { 10000006U, Hexagon::VFR7 },
2743
  { 10000007U, Hexagon::VFR8 },
2744
  { 10000008U, Hexagon::VFR9 },
2745
  { 10000009U, Hexagon::VFR10 },
2746
  { 10000010U, Hexagon::VFR11 },
2747
  { 10000011U, Hexagon::VFR12 },
2748
  { 10000012U, Hexagon::VFR13 },
2749
  { 10000013U, Hexagon::VFR14 },
2750
  { 10000014U, Hexagon::VFR15 },
2751
  { 10000015U, Hexagon::VFR16 },
2752
  { 10000016U, Hexagon::VFR17 },
2753
  { 10000017U, Hexagon::VFR18 },
2754
  { 10000018U, Hexagon::VFR19 },
2755
  { 10000019U, Hexagon::VFR20 },
2756
  { 10000020U, Hexagon::VFR21 },
2757
  { 10000021U, Hexagon::VFR22 },
2758
  { 10000022U, Hexagon::VFR23 },
2759
  { 10000023U, Hexagon::VFR24 },
2760
  { 10000024U, Hexagon::VFR25 },
2761
  { 10000025U, Hexagon::VFR26 },
2762
  { 10000026U, Hexagon::VFR27 },
2763
  { 10000027U, Hexagon::VFR28 },
2764
  { 10000028U, Hexagon::VFR29 },
2765
  { 10000029U, Hexagon::VFR30 },
2766
  { 10000030U, Hexagon::VFR31 },
2767
};
2768
extern const unsigned HexagonEHFlavour0Dwarf2LSize = std::size(HexagonEHFlavour0Dwarf2L);
2769
2770
extern const MCRegisterInfo::DwarfLLVMRegPair HexagonDwarfFlavour0L2Dwarf[] = {
2771
  { Hexagon::BADVA, 153U },
2772
  { Hexagon::CCR, 151U },
2773
  { Hexagon::CFGBASE, 171U },
2774
  { Hexagon::CS, 78U },
2775
  { Hexagon::DIAG, 172U },
2776
  { Hexagon::ELR, 147U },
2777
  { Hexagon::EVB, 160U },
2778
  { Hexagon::FRAMEKEY, 84U },
2779
  { Hexagon::FRAMELIMIT, 83U },
2780
  { Hexagon::GELR, 220U },
2781
  { Hexagon::GOSP, 222U },
2782
  { Hexagon::GP, 78U },
2783
  { Hexagon::GPCYCLEHI, 245U },
2784
  { Hexagon::GPCYCLELO, 244U },
2785
  { Hexagon::GSR, 221U },
2786
  { Hexagon::HTID, 152U },
2787
  { Hexagon::IMASK, 154U },
2788
  { Hexagon::ISDBEN, 186U },
2789
  { Hexagon::ISDBGPR, 187U },
2790
  { Hexagon::ISDBMBXIN, 184U },
2791
  { Hexagon::ISDBMBXOUT, 185U },
2792
  { Hexagon::ISDBST, 176U },
2793
  { Hexagon::MODECTL, 161U },
2794
  { Hexagon::PC, 76U },
2795
  { Hexagon::PCYCLEHI, 175U },
2796
  { Hexagon::PCYCLELO, 174U },
2797
  { Hexagon::PKTCOUNT, 85U },
2798
  { Hexagon::PKTCOUNTHI, 86U },
2799
  { Hexagon::PKTCOUNTLO, 85U },
2800
  { Hexagon::PMUCFG, 197U },
2801
  { Hexagon::PMUEVTCFG, 196U },
2802
  { Hexagon::REV, 173U },
2803
  { Hexagon::SSR, 150U },
2804
  { Hexagon::STID, 146U },
2805
  { Hexagon::SYSCFG, 162U },
2806
  { Hexagon::UGP, 77U },
2807
  { Hexagon::UPCYCLE, 80U },
2808
  { Hexagon::UPCYCLEHI, 82U },
2809
  { Hexagon::UPCYCLELO, 81U },
2810
  { Hexagon::USR, 75U },
2811
  { Hexagon::UTIMER, 97U },
2812
  { Hexagon::UTIMERHI, 98U },
2813
  { Hexagon::UTIMERLO, 97U },
2814
  { Hexagon::VID, 165U },
2815
  { Hexagon::VTMP, 131U },
2816
  { Hexagon::BADVA0, 148U },
2817
  { Hexagon::BADVA1, 149U },
2818
  { Hexagon::BRKPTCFG0, 181U },
2819
  { Hexagon::BRKPTCFG1, 183U },
2820
  { Hexagon::BRKPTPC0, 180U },
2821
  { Hexagon::BRKPTPC1, 182U },
2822
  { Hexagon::C5, 72U },
2823
  { Hexagon::C8, 75U },
2824
  { Hexagon::CS0, 79U },
2825
  { Hexagon::CS1, 80U },
2826
  { Hexagon::D0, 32U },
2827
  { Hexagon::D1, 34U },
2828
  { Hexagon::D2, 36U },
2829
  { Hexagon::D3, 38U },
2830
  { Hexagon::D4, 40U },
2831
  { Hexagon::D5, 42U },
2832
  { Hexagon::D6, 44U },
2833
  { Hexagon::D7, 46U },
2834
  { Hexagon::D8, 48U },
2835
  { Hexagon::D9, 50U },
2836
  { Hexagon::D10, 52U },
2837
  { Hexagon::D11, 54U },
2838
  { Hexagon::D12, 56U },
2839
  { Hexagon::D13, 58U },
2840
  { Hexagon::D14, 60U },
2841
  { Hexagon::D15, 62U },
2842
  { Hexagon::G3, 223U },
2843
  { Hexagon::G4, 224U },
2844
  { Hexagon::G5, 225U },
2845
  { Hexagon::G6, 226U },
2846
  { Hexagon::G7, 227U },
2847
  { Hexagon::G8, 228U },
2848
  { Hexagon::G9, 229U },
2849
  { Hexagon::G10, 230U },
2850
  { Hexagon::G11, 231U },
2851
  { Hexagon::G12, 232U },
2852
  { Hexagon::G13, 233U },
2853
  { Hexagon::G14, 234U },
2854
  { Hexagon::G15, 235U },
2855
  { Hexagon::G20, 240U },
2856
  { Hexagon::G21, 241U },
2857
  { Hexagon::G22, 242U },
2858
  { Hexagon::G23, 243U },
2859
  { Hexagon::G30, 250U },
2860
  { Hexagon::G31, 251U },
2861
  { Hexagon::GPMUCNT0, 246U },
2862
  { Hexagon::GPMUCNT1, 247U },
2863
  { Hexagon::GPMUCNT2, 248U },
2864
  { Hexagon::GPMUCNT3, 249U },
2865
  { Hexagon::GPMUCNT4, 236U },
2866
  { Hexagon::GPMUCNT5, 237U },
2867
  { Hexagon::GPMUCNT6, 238U },
2868
  { Hexagon::GPMUCNT7, 239U },
2869
  { Hexagon::ISDBCFG0, 177U },
2870
  { Hexagon::ISDBCFG1, 178U },
2871
  { Hexagon::LC0, 68U },
2872
  { Hexagon::LC1, 70U },
2873
  { Hexagon::M0, 73U },
2874
  { Hexagon::M1, 74U },
2875
  { Hexagon::P0, 63U },
2876
  { Hexagon::P1, 64U },
2877
  { Hexagon::P2, 65U },
2878
  { Hexagon::P3, 66U },
2879
  { Hexagon::PMUCNT0, 192U },
2880
  { Hexagon::PMUCNT1, 193U },
2881
  { Hexagon::PMUCNT2, 194U },
2882
  { Hexagon::PMUCNT3, 195U },
2883
  { Hexagon::Q0, 131U },
2884
  { Hexagon::Q1, 132U },
2885
  { Hexagon::Q2, 133U },
2886
  { Hexagon::Q3, 134U },
2887
  { Hexagon::R0, 0U },
2888
  { Hexagon::R1, 1U },
2889
  { Hexagon::R2, 2U },
2890
  { Hexagon::R3, 3U },
2891
  { Hexagon::R4, 4U },
2892
  { Hexagon::R5, 5U },
2893
  { Hexagon::R6, 6U },
2894
  { Hexagon::R7, 7U },
2895
  { Hexagon::R8, 8U },
2896
  { Hexagon::R9, 9U },
2897
  { Hexagon::R10, 10U },
2898
  { Hexagon::R11, 11U },
2899
  { Hexagon::R12, 12U },
2900
  { Hexagon::R13, 13U },
2901
  { Hexagon::R14, 14U },
2902
  { Hexagon::R15, 15U },
2903
  { Hexagon::R16, 16U },
2904
  { Hexagon::R17, 17U },
2905
  { Hexagon::R18, 18U },
2906
  { Hexagon::R19, 19U },
2907
  { Hexagon::R20, 20U },
2908
  { Hexagon::R21, 21U },
2909
  { Hexagon::R22, 22U },
2910
  { Hexagon::R23, 23U },
2911
  { Hexagon::R24, 24U },
2912
  { Hexagon::R25, 25U },
2913
  { Hexagon::R26, 26U },
2914
  { Hexagon::R27, 27U },
2915
  { Hexagon::R28, 28U },
2916
  { Hexagon::R29, 29U },
2917
  { Hexagon::R30, 30U },
2918
  { Hexagon::R31, 31U },
2919
  { Hexagon::S11, 155U },
2920
  { Hexagon::S12, 156U },
2921
  { Hexagon::S13, 157U },
2922
  { Hexagon::S14, 158U },
2923
  { Hexagon::S15, 159U },
2924
  { Hexagon::S19, 163U },
2925
  { Hexagon::S20, 164U },
2926
  { Hexagon::S22, 166U },
2927
  { Hexagon::S23, 167U },
2928
  { Hexagon::S24, 168U },
2929
  { Hexagon::S25, 169U },
2930
  { Hexagon::S26, 170U },
2931
  { Hexagon::S35, 179U },
2932
  { Hexagon::S44, 188U },
2933
  { Hexagon::S45, 189U },
2934
  { Hexagon::S46, 190U },
2935
  { Hexagon::S47, 191U },
2936
  { Hexagon::S54, 198U },
2937
  { Hexagon::S55, 199U },
2938
  { Hexagon::S56, 200U },
2939
  { Hexagon::S57, 201U },
2940
  { Hexagon::S58, 202U },
2941
  { Hexagon::S59, 203U },
2942
  { Hexagon::S60, 204U },
2943
  { Hexagon::S61, 205U },
2944
  { Hexagon::S62, 206U },
2945
  { Hexagon::S63, 207U },
2946
  { Hexagon::S64, 208U },
2947
  { Hexagon::S65, 209U },
2948
  { Hexagon::S66, 210U },
2949
  { Hexagon::S67, 211U },
2950
  { Hexagon::S68, 212U },
2951
  { Hexagon::S69, 213U },
2952
  { Hexagon::S70, 214U },
2953
  { Hexagon::S71, 215U },
2954
  { Hexagon::S72, 216U },
2955
  { Hexagon::S73, 217U },
2956
  { Hexagon::S74, 218U },
2957
  { Hexagon::S75, 219U },
2958
  { Hexagon::S76, 220U },
2959
  { Hexagon::S77, 221U },
2960
  { Hexagon::S78, 222U },
2961
  { Hexagon::S79, 223U },
2962
  { Hexagon::S80, 224U },
2963
  { Hexagon::SA0, 67U },
2964
  { Hexagon::SA1, 69U },
2965
  { Hexagon::SGP0, 144U },
2966
  { Hexagon::SGP1, 145U },
2967
  { Hexagon::V0, 99U },
2968
  { Hexagon::V1, 100U },
2969
  { Hexagon::V2, 101U },
2970
  { Hexagon::V3, 102U },
2971
  { Hexagon::V4, 103U },
2972
  { Hexagon::V5, 104U },
2973
  { Hexagon::V6, 105U },
2974
  { Hexagon::V7, 106U },
2975
  { Hexagon::V8, 107U },
2976
  { Hexagon::V9, 108U },
2977
  { Hexagon::V10, 109U },
2978
  { Hexagon::V11, 110U },
2979
  { Hexagon::V12, 111U },
2980
  { Hexagon::V13, 112U },
2981
  { Hexagon::V14, 113U },
2982
  { Hexagon::V15, 114U },
2983
  { Hexagon::V16, 115U },
2984
  { Hexagon::V17, 116U },
2985
  { Hexagon::V18, 117U },
2986
  { Hexagon::V19, 118U },
2987
  { Hexagon::V20, 119U },
2988
  { Hexagon::V21, 120U },
2989
  { Hexagon::V22, 121U },
2990
  { Hexagon::V23, 122U },
2991
  { Hexagon::V24, 123U },
2992
  { Hexagon::V25, 124U },
2993
  { Hexagon::V26, 125U },
2994
  { Hexagon::V27, 126U },
2995
  { Hexagon::V28, 127U },
2996
  { Hexagon::V29, 128U },
2997
  { Hexagon::V30, 129U },
2998
  { Hexagon::V31, 130U },
2999
  { Hexagon::VF0, 999999U },
3000
  { Hexagon::VF1, 1000000U },
3001
  { Hexagon::VF2, 1000001U },
3002
  { Hexagon::VF3, 1000002U },
3003
  { Hexagon::VF4, 1000003U },
3004
  { Hexagon::VF5, 1000004U },
3005
  { Hexagon::VF6, 1000005U },
3006
  { Hexagon::VF7, 1000006U },
3007
  { Hexagon::VF8, 1000007U },
3008
  { Hexagon::VF9, 1000008U },
3009
  { Hexagon::VF10, 1000009U },
3010
  { Hexagon::VF11, 1000010U },
3011
  { Hexagon::VF12, 1000011U },
3012
  { Hexagon::VF13, 1000012U },
3013
  { Hexagon::VF14, 1000013U },
3014
  { Hexagon::VF15, 1000014U },
3015
  { Hexagon::VF16, 1000015U },
3016
  { Hexagon::VF17, 1000016U },
3017
  { Hexagon::VF18, 1000017U },
3018
  { Hexagon::VF19, 1000018U },
3019
  { Hexagon::VF20, 1000019U },
3020
  { Hexagon::VF21, 1000020U },
3021
  { Hexagon::VF22, 1000021U },
3022
  { Hexagon::VF23, 1000022U },
3023
  { Hexagon::VF24, 1000023U },
3024
  { Hexagon::VF25, 1000024U },
3025
  { Hexagon::VF26, 1000025U },
3026
  { Hexagon::VF27, 1000026U },
3027
  { Hexagon::VF28, 1000027U },
3028
  { Hexagon::VF29, 1000028U },
3029
  { Hexagon::VF30, 1000029U },
3030
  { Hexagon::VF31, 1000030U },
3031
  { Hexagon::VFR0, 9999999U },
3032
  { Hexagon::VFR1, 10000000U },
3033
  { Hexagon::VFR2, 10000001U },
3034
  { Hexagon::VFR3, 10000002U },
3035
  { Hexagon::VFR4, 10000003U },
3036
  { Hexagon::VFR5, 10000004U },
3037
  { Hexagon::VFR6, 10000005U },
3038
  { Hexagon::VFR7, 10000006U },
3039
  { Hexagon::VFR8, 10000007U },
3040
  { Hexagon::VFR9, 10000008U },
3041
  { Hexagon::VFR10, 10000009U },
3042
  { Hexagon::VFR11, 10000010U },
3043
  { Hexagon::VFR12, 10000011U },
3044
  { Hexagon::VFR13, 10000012U },
3045
  { Hexagon::VFR14, 10000013U },
3046
  { Hexagon::VFR15, 10000014U },
3047
  { Hexagon::VFR16, 10000015U },
3048
  { Hexagon::VFR17, 10000016U },
3049
  { Hexagon::VFR18, 10000017U },
3050
  { Hexagon::VFR19, 10000018U },
3051
  { Hexagon::VFR20, 10000019U },
3052
  { Hexagon::VFR21, 10000020U },
3053
  { Hexagon::VFR22, 10000021U },
3054
  { Hexagon::VFR23, 10000022U },
3055
  { Hexagon::VFR24, 10000023U },
3056
  { Hexagon::VFR25, 10000024U },
3057
  { Hexagon::VFR26, 10000025U },
3058
  { Hexagon::VFR27, 10000026U },
3059
  { Hexagon::VFR28, 10000027U },
3060
  { Hexagon::VFR29, 10000028U },
3061
  { Hexagon::VFR30, 10000029U },
3062
  { Hexagon::VFR31, 10000030U },
3063
  { Hexagon::VQ0, 252U },
3064
  { Hexagon::VQ1, 253U },
3065
  { Hexagon::VQ2, 254U },
3066
  { Hexagon::VQ3, 255U },
3067
  { Hexagon::VQ4, 256U },
3068
  { Hexagon::VQ5, 257U },
3069
  { Hexagon::VQ6, 258U },
3070
  { Hexagon::VQ7, 259U },
3071
  { Hexagon::W0, 99U },
3072
  { Hexagon::W1, 101U },
3073
  { Hexagon::W2, 103U },
3074
  { Hexagon::W3, 105U },
3075
  { Hexagon::W4, 107U },
3076
  { Hexagon::W5, 109U },
3077
  { Hexagon::W6, 111U },
3078
  { Hexagon::W7, 113U },
3079
  { Hexagon::W8, 115U },
3080
  { Hexagon::W9, 117U },
3081
  { Hexagon::W10, 119U },
3082
  { Hexagon::W11, 121U },
3083
  { Hexagon::W12, 123U },
3084
  { Hexagon::W13, 125U },
3085
  { Hexagon::W14, 127U },
3086
  { Hexagon::W15, 129U },
3087
  { Hexagon::WR0, 161U },
3088
  { Hexagon::WR1, 162U },
3089
  { Hexagon::WR2, 163U },
3090
  { Hexagon::WR3, 164U },
3091
  { Hexagon::WR4, 165U },
3092
  { Hexagon::WR5, 166U },
3093
  { Hexagon::WR6, 167U },
3094
  { Hexagon::WR7, 168U },
3095
  { Hexagon::WR8, 169U },
3096
  { Hexagon::WR9, 170U },
3097
  { Hexagon::WR10, 171U },
3098
  { Hexagon::WR11, 172U },
3099
  { Hexagon::WR12, 173U },
3100
  { Hexagon::WR13, 174U },
3101
  { Hexagon::WR14, 175U },
3102
  { Hexagon::WR15, 176U },
3103
  { Hexagon::C1_0, 67U },
3104
  { Hexagon::C3_2, 69U },
3105
  { Hexagon::C5_4, 71U },
3106
  { Hexagon::C7_6, 72U },
3107
  { Hexagon::C9_8, 74U },
3108
  { Hexagon::C11_10, 76U },
3109
  { Hexagon::C17_16, 83U },
3110
  { Hexagon::G1_0, 220U },
3111
  { Hexagon::G3_2, 222U },
3112
  { Hexagon::G5_4, 224U },
3113
  { Hexagon::G7_6, 226U },
3114
  { Hexagon::G9_8, 228U },
3115
  { Hexagon::G11_10, 230U },
3116
  { Hexagon::G13_12, 232U },
3117
  { Hexagon::G15_14, 234U },
3118
  { Hexagon::G17_16, 236U },
3119
  { Hexagon::G19_18, 238U },
3120
  { Hexagon::G21_20, 240U },
3121
  { Hexagon::G23_22, 242U },
3122
  { Hexagon::G25_24, 244U },
3123
  { Hexagon::G27_26, 246U },
3124
  { Hexagon::G29_28, 248U },
3125
  { Hexagon::G31_30, 250U },
3126
  { Hexagon::P3_0, 71U },
3127
  { Hexagon::S3_2, 146U },
3128
  { Hexagon::S5_4, 148U },
3129
  { Hexagon::S7_6, 150U },
3130
  { Hexagon::S9_8, 152U },
3131
  { Hexagon::S11_10, 154U },
3132
  { Hexagon::S13_12, 156U },
3133
  { Hexagon::S15_14, 158U },
3134
  { Hexagon::S17_16, 160U },
3135
  { Hexagon::S19_18, 162U },
3136
  { Hexagon::S21_20, 164U },
3137
  { Hexagon::S23_22, 166U },
3138
  { Hexagon::S25_24, 168U },
3139
  { Hexagon::S27_26, 170U },
3140
  { Hexagon::S29_28, 172U },
3141
  { Hexagon::S31_30, 174U },
3142
  { Hexagon::S33_32, 176U },
3143
  { Hexagon::S35_34, 178U },
3144
  { Hexagon::S37_36, 180U },
3145
  { Hexagon::S39_38, 182U },
3146
  { Hexagon::S41_40, 184U },
3147
  { Hexagon::S43_42, 186U },
3148
  { Hexagon::S45_44, 188U },
3149
  { Hexagon::S47_46, 190U },
3150
  { Hexagon::S49_48, 192U },
3151
  { Hexagon::S51_50, 194U },
3152
  { Hexagon::S53_52, 196U },
3153
  { Hexagon::S55_54, 198U },
3154
  { Hexagon::S57_56, 200U },
3155
  { Hexagon::S59_58, 202U },
3156
  { Hexagon::S61_60, 204U },
3157
  { Hexagon::S63_62, 206U },
3158
  { Hexagon::S65_64, 208U },
3159
  { Hexagon::S67_66, 210U },
3160
  { Hexagon::S69_68, 212U },
3161
  { Hexagon::S71_70, 214U },
3162
  { Hexagon::S73_72, 216U },
3163
  { Hexagon::S75_74, 218U },
3164
  { Hexagon::S77_76, 219U },
3165
  { Hexagon::S79_78, 220U },
3166
  { Hexagon::SGP1_0, 144U },
3167
};
3168
extern const unsigned HexagonDwarfFlavour0L2DwarfSize = std::size(HexagonDwarfFlavour0L2Dwarf);
3169
3170
extern const MCRegisterInfo::DwarfLLVMRegPair HexagonEHFlavour0L2Dwarf[] = {
3171
  { Hexagon::BADVA, 153U },
3172
  { Hexagon::CCR, 151U },
3173
  { Hexagon::CFGBASE, 171U },
3174
  { Hexagon::CS, 78U },
3175
  { Hexagon::DIAG, 172U },
3176
  { Hexagon::ELR, 147U },
3177
  { Hexagon::EVB, 160U },
3178
  { Hexagon::FRAMEKEY, 84U },
3179
  { Hexagon::FRAMELIMIT, 83U },
3180
  { Hexagon::GELR, 220U },
3181
  { Hexagon::GOSP, 222U },
3182
  { Hexagon::GP, 78U },
3183
  { Hexagon::GPCYCLEHI, 245U },
3184
  { Hexagon::GPCYCLELO, 244U },
3185
  { Hexagon::GSR, 221U },
3186
  { Hexagon::HTID, 152U },
3187
  { Hexagon::IMASK, 154U },
3188
  { Hexagon::ISDBEN, 186U },
3189
  { Hexagon::ISDBGPR, 187U },
3190
  { Hexagon::ISDBMBXIN, 184U },
3191
  { Hexagon::ISDBMBXOUT, 185U },
3192
  { Hexagon::ISDBST, 176U },
3193
  { Hexagon::MODECTL, 161U },
3194
  { Hexagon::PC, 76U },
3195
  { Hexagon::PCYCLEHI, 175U },
3196
  { Hexagon::PCYCLELO, 174U },
3197
  { Hexagon::PKTCOUNT, 85U },
3198
  { Hexagon::PKTCOUNTHI, 86U },
3199
  { Hexagon::PKTCOUNTLO, 85U },
3200
  { Hexagon::PMUCFG, 197U },
3201
  { Hexagon::PMUEVTCFG, 196U },
3202
  { Hexagon::REV, 173U },
3203
  { Hexagon::SSR, 150U },
3204
  { Hexagon::STID, 146U },
3205
  { Hexagon::SYSCFG, 162U },
3206
  { Hexagon::UGP, 77U },
3207
  { Hexagon::UPCYCLE, 80U },
3208
  { Hexagon::UPCYCLEHI, 82U },
3209
  { Hexagon::UPCYCLELO, 81U },
3210
  { Hexagon::USR, 75U },
3211
  { Hexagon::UTIMER, 97U },
3212
  { Hexagon::UTIMERHI, 98U },
3213
  { Hexagon::UTIMERLO, 97U },
3214
  { Hexagon::VID, 165U },
3215
  { Hexagon::VTMP, 131U },
3216
  { Hexagon::BADVA0, 148U },
3217
  { Hexagon::BADVA1, 149U },
3218
  { Hexagon::BRKPTCFG0, 181U },
3219
  { Hexagon::BRKPTCFG1, 183U },
3220
  { Hexagon::BRKPTPC0, 180U },
3221
  { Hexagon::BRKPTPC1, 182U },
3222
  { Hexagon::C5, 72U },
3223
  { Hexagon::C8, 75U },
3224
  { Hexagon::CS0, 79U },
3225
  { Hexagon::CS1, 80U },
3226
  { Hexagon::D0, 32U },
3227
  { Hexagon::D1, 34U },
3228
  { Hexagon::D2, 36U },
3229
  { Hexagon::D3, 38U },
3230
  { Hexagon::D4, 40U },
3231
  { Hexagon::D5, 42U },
3232
  { Hexagon::D6, 44U },
3233
  { Hexagon::D7, 46U },
3234
  { Hexagon::D8, 48U },
3235
  { Hexagon::D9, 50U },
3236
  { Hexagon::D10, 52U },
3237
  { Hexagon::D11, 54U },
3238
  { Hexagon::D12, 56U },
3239
  { Hexagon::D13, 58U },
3240
  { Hexagon::D14, 60U },
3241
  { Hexagon::D15, 62U },
3242
  { Hexagon::G3, 223U },
3243
  { Hexagon::G4, 224U },
3244
  { Hexagon::G5, 225U },
3245
  { Hexagon::G6, 226U },
3246
  { Hexagon::G7, 227U },
3247
  { Hexagon::G8, 228U },
3248
  { Hexagon::G9, 229U },
3249
  { Hexagon::G10, 230U },
3250
  { Hexagon::G11, 231U },
3251
  { Hexagon::G12, 232U },
3252
  { Hexagon::G13, 233U },
3253
  { Hexagon::G14, 234U },
3254
  { Hexagon::G15, 235U },
3255
  { Hexagon::G20, 240U },
3256
  { Hexagon::G21, 241U },
3257
  { Hexagon::G22, 242U },
3258
  { Hexagon::G23, 243U },
3259
  { Hexagon::G30, 250U },
3260
  { Hexagon::G31, 251U },
3261
  { Hexagon::GPMUCNT0, 246U },
3262
  { Hexagon::GPMUCNT1, 247U },
3263
  { Hexagon::GPMUCNT2, 248U },
3264
  { Hexagon::GPMUCNT3, 249U },
3265
  { Hexagon::GPMUCNT4, 236U },
3266
  { Hexagon::GPMUCNT5, 237U },
3267
  { Hexagon::GPMUCNT6, 238U },
3268
  { Hexagon::GPMUCNT7, 239U },
3269
  { Hexagon::ISDBCFG0, 177U },
3270
  { Hexagon::ISDBCFG1, 178U },
3271
  { Hexagon::LC0, 68U },
3272
  { Hexagon::LC1, 70U },
3273
  { Hexagon::M0, 73U },
3274
  { Hexagon::M1, 74U },
3275
  { Hexagon::P0, 63U },
3276
  { Hexagon::P1, 64U },
3277
  { Hexagon::P2, 65U },
3278
  { Hexagon::P3, 66U },
3279
  { Hexagon::PMUCNT0, 192U },
3280
  { Hexagon::PMUCNT1, 193U },
3281
  { Hexagon::PMUCNT2, 194U },
3282
  { Hexagon::PMUCNT3, 195U },
3283
  { Hexagon::Q0, 131U },
3284
  { Hexagon::Q1, 132U },
3285
  { Hexagon::Q2, 133U },
3286
  { Hexagon::Q3, 134U },
3287
  { Hexagon::R0, 0U },
3288
  { Hexagon::R1, 1U },
3289
  { Hexagon::R2, 2U },
3290
  { Hexagon::R3, 3U },
3291
  { Hexagon::R4, 4U },
3292
  { Hexagon::R5, 5U },
3293
  { Hexagon::R6, 6U },
3294
  { Hexagon::R7, 7U },
3295
  { Hexagon::R8, 8U },
3296
  { Hexagon::R9, 9U },
3297
  { Hexagon::R10, 10U },
3298
  { Hexagon::R11, 11U },
3299
  { Hexagon::R12, 12U },
3300
  { Hexagon::R13, 13U },
3301
  { Hexagon::R14, 14U },
3302
  { Hexagon::R15, 15U },
3303
  { Hexagon::R16, 16U },
3304
  { Hexagon::R17, 17U },
3305
  { Hexagon::R18, 18U },
3306
  { Hexagon::R19, 19U },
3307
  { Hexagon::R20, 20U },
3308
  { Hexagon::R21, 21U },
3309
  { Hexagon::R22, 22U },
3310
  { Hexagon::R23, 23U },
3311
  { Hexagon::R24, 24U },
3312
  { Hexagon::R25, 25U },
3313
  { Hexagon::R26, 26U },
3314
  { Hexagon::R27, 27U },
3315
  { Hexagon::R28, 28U },
3316
  { Hexagon::R29, 29U },
3317
  { Hexagon::R30, 30U },
3318
  { Hexagon::R31, 31U },
3319
  { Hexagon::S11, 155U },
3320
  { Hexagon::S12, 156U },
3321
  { Hexagon::S13, 157U },
3322
  { Hexagon::S14, 158U },
3323
  { Hexagon::S15, 159U },
3324
  { Hexagon::S19, 163U },
3325
  { Hexagon::S20, 164U },
3326
  { Hexagon::S22, 166U },
3327
  { Hexagon::S23, 167U },
3328
  { Hexagon::S24, 168U },
3329
  { Hexagon::S25, 169U },
3330
  { Hexagon::S26, 170U },
3331
  { Hexagon::S35, 179U },
3332
  { Hexagon::S44, 188U },
3333
  { Hexagon::S45, 189U },
3334
  { Hexagon::S46, 190U },
3335
  { Hexagon::S47, 191U },
3336
  { Hexagon::S54, 198U },
3337
  { Hexagon::S55, 199U },
3338
  { Hexagon::S56, 200U },
3339
  { Hexagon::S57, 201U },
3340
  { Hexagon::S58, 202U },
3341
  { Hexagon::S59, 203U },
3342
  { Hexagon::S60, 204U },
3343
  { Hexagon::S61, 205U },
3344
  { Hexagon::S62, 206U },
3345
  { Hexagon::S63, 207U },
3346
  { Hexagon::S64, 208U },
3347
  { Hexagon::S65, 209U },
3348
  { Hexagon::S66, 210U },
3349
  { Hexagon::S67, 211U },
3350
  { Hexagon::S68, 212U },
3351
  { Hexagon::S69, 213U },
3352
  { Hexagon::S70, 214U },
3353
  { Hexagon::S71, 215U },
3354
  { Hexagon::S72, 216U },
3355
  { Hexagon::S73, 217U },
3356
  { Hexagon::S74, 218U },
3357
  { Hexagon::S75, 219U },
3358
  { Hexagon::S76, 220U },
3359
  { Hexagon::S77, 221U },
3360
  { Hexagon::S78, 222U },
3361
  { Hexagon::S79, 223U },
3362
  { Hexagon::S80, 224U },
3363
  { Hexagon::SA0, 67U },
3364
  { Hexagon::SA1, 69U },
3365
  { Hexagon::SGP0, 144U },
3366
  { Hexagon::SGP1, 145U },
3367
  { Hexagon::V0, 99U },
3368
  { Hexagon::V1, 100U },
3369
  { Hexagon::V2, 101U },
3370
  { Hexagon::V3, 102U },
3371
  { Hexagon::V4, 103U },
3372
  { Hexagon::V5, 104U },
3373
  { Hexagon::V6, 105U },
3374
  { Hexagon::V7, 106U },
3375
  { Hexagon::V8, 107U },
3376
  { Hexagon::V9, 108U },
3377
  { Hexagon::V10, 109U },
3378
  { Hexagon::V11, 110U },
3379
  { Hexagon::V12, 111U },
3380
  { Hexagon::V13, 112U },
3381
  { Hexagon::V14, 113U },
3382
  { Hexagon::V15, 114U },
3383
  { Hexagon::V16, 115U },
3384
  { Hexagon::V17, 116U },
3385
  { Hexagon::V18, 117U },
3386
  { Hexagon::V19, 118U },
3387
  { Hexagon::V20, 119U },
3388
  { Hexagon::V21, 120U },
3389
  { Hexagon::V22, 121U },
3390
  { Hexagon::V23, 122U },
3391
  { Hexagon::V24, 123U },
3392
  { Hexagon::V25, 124U },
3393
  { Hexagon::V26, 125U },
3394
  { Hexagon::V27, 126U },
3395
  { Hexagon::V28, 127U },
3396
  { Hexagon::V29, 128U },
3397
  { Hexagon::V30, 129U },
3398
  { Hexagon::V31, 130U },
3399
  { Hexagon::VF0, 999999U },
3400
  { Hexagon::VF1, 1000000U },
3401
  { Hexagon::VF2, 1000001U },
3402
  { Hexagon::VF3, 1000002U },
3403
  { Hexagon::VF4, 1000003U },
3404
  { Hexagon::VF5, 1000004U },
3405
  { Hexagon::VF6, 1000005U },
3406
  { Hexagon::VF7, 1000006U },
3407
  { Hexagon::VF8, 1000007U },
3408
  { Hexagon::VF9, 1000008U },
3409
  { Hexagon::VF10, 1000009U },
3410
  { Hexagon::VF11, 1000010U },
3411
  { Hexagon::VF12, 1000011U },
3412
  { Hexagon::VF13, 1000012U },
3413
  { Hexagon::VF14, 1000013U },
3414
  { Hexagon::VF15, 1000014U },
3415
  { Hexagon::VF16, 1000015U },
3416
  { Hexagon::VF17, 1000016U },
3417
  { Hexagon::VF18, 1000017U },
3418
  { Hexagon::VF19, 1000018U },
3419
  { Hexagon::VF20, 1000019U },
3420
  { Hexagon::VF21, 1000020U },
3421
  { Hexagon::VF22, 1000021U },
3422
  { Hexagon::VF23, 1000022U },
3423
  { Hexagon::VF24, 1000023U },
3424
  { Hexagon::VF25, 1000024U },
3425
  { Hexagon::VF26, 1000025U },
3426
  { Hexagon::VF27, 1000026U },
3427
  { Hexagon::VF28, 1000027U },
3428
  { Hexagon::VF29, 1000028U },
3429
  { Hexagon::VF30, 1000029U },
3430
  { Hexagon::VF31, 1000030U },
3431
  { Hexagon::VFR0, 9999999U },
3432
  { Hexagon::VFR1, 10000000U },
3433
  { Hexagon::VFR2, 10000001U },
3434
  { Hexagon::VFR3, 10000002U },
3435
  { Hexagon::VFR4, 10000003U },
3436
  { Hexagon::VFR5, 10000004U },
3437
  { Hexagon::VFR6, 10000005U },
3438
  { Hexagon::VFR7, 10000006U },
3439
  { Hexagon::VFR8, 10000007U },
3440
  { Hexagon::VFR9, 10000008U },
3441
  { Hexagon::VFR10, 10000009U },
3442
  { Hexagon::VFR11, 10000010U },
3443
  { Hexagon::VFR12, 10000011U },
3444
  { Hexagon::VFR13, 10000012U },
3445
  { Hexagon::VFR14, 10000013U },
3446
  { Hexagon::VFR15, 10000014U },
3447
  { Hexagon::VFR16, 10000015U },
3448
  { Hexagon::VFR17, 10000016U },
3449
  { Hexagon::VFR18, 10000017U },
3450
  { Hexagon::VFR19, 10000018U },
3451
  { Hexagon::VFR20, 10000019U },
3452
  { Hexagon::VFR21, 10000020U },
3453
  { Hexagon::VFR22, 10000021U },
3454
  { Hexagon::VFR23, 10000022U },
3455
  { Hexagon::VFR24, 10000023U },
3456
  { Hexagon::VFR25, 10000024U },
3457
  { Hexagon::VFR26, 10000025U },
3458
  { Hexagon::VFR27, 10000026U },
3459
  { Hexagon::VFR28, 10000027U },
3460
  { Hexagon::VFR29, 10000028U },
3461
  { Hexagon::VFR30, 10000029U },
3462
  { Hexagon::VFR31, 10000030U },
3463
  { Hexagon::VQ0, 252U },
3464
  { Hexagon::VQ1, 253U },
3465
  { Hexagon::VQ2, 254U },
3466
  { Hexagon::VQ3, 255U },
3467
  { Hexagon::VQ4, 256U },
3468
  { Hexagon::VQ5, 257U },
3469
  { Hexagon::VQ6, 258U },
3470
  { Hexagon::VQ7, 259U },
3471
  { Hexagon::W0, 99U },
3472
  { Hexagon::W1, 101U },
3473
  { Hexagon::W2, 103U },
3474
  { Hexagon::W3, 105U },
3475
  { Hexagon::W4, 107U },
3476
  { Hexagon::W5, 109U },
3477
  { Hexagon::W6, 111U },
3478
  { Hexagon::W7, 113U },
3479
  { Hexagon::W8, 115U },
3480
  { Hexagon::W9, 117U },
3481
  { Hexagon::W10, 119U },
3482
  { Hexagon::W11, 121U },
3483
  { Hexagon::W12, 123U },
3484
  { Hexagon::W13, 125U },
3485
  { Hexagon::W14, 127U },
3486
  { Hexagon::W15, 129U },
3487
  { Hexagon::WR0, 161U },
3488
  { Hexagon::WR1, 162U },
3489
  { Hexagon::WR2, 163U },
3490
  { Hexagon::WR3, 164U },
3491
  { Hexagon::WR4, 165U },
3492
  { Hexagon::WR5, 166U },
3493
  { Hexagon::WR6, 167U },
3494
  { Hexagon::WR7, 168U },
3495
  { Hexagon::WR8, 169U },
3496
  { Hexagon::WR9, 170U },
3497
  { Hexagon::WR10, 171U },
3498
  { Hexagon::WR11, 172U },
3499
  { Hexagon::WR12, 173U },
3500
  { Hexagon::WR13, 174U },
3501
  { Hexagon::WR14, 175U },
3502
  { Hexagon::WR15, 176U },
3503
  { Hexagon::C1_0, 67U },
3504
  { Hexagon::C3_2, 69U },
3505
  { Hexagon::C5_4, 71U },
3506
  { Hexagon::C7_6, 72U },
3507
  { Hexagon::C9_8, 74U },
3508
  { Hexagon::C11_10, 76U },
3509
  { Hexagon::C17_16, 83U },
3510
  { Hexagon::G1_0, 220U },
3511
  { Hexagon::G3_2, 222U },
3512
  { Hexagon::G5_4, 224U },
3513
  { Hexagon::G7_6, 226U },
3514
  { Hexagon::G9_8, 228U },
3515
  { Hexagon::G11_10, 230U },
3516
  { Hexagon::G13_12, 232U },
3517
  { Hexagon::G15_14, 234U },
3518
  { Hexagon::G17_16, 236U },
3519
  { Hexagon::G19_18, 238U },
3520
  { Hexagon::G21_20, 240U },
3521
  { Hexagon::G23_22, 242U },
3522
  { Hexagon::G25_24, 244U },
3523
  { Hexagon::G27_26, 246U },
3524
  { Hexagon::G29_28, 248U },
3525
  { Hexagon::G31_30, 250U },
3526
  { Hexagon::P3_0, 71U },
3527
  { Hexagon::S3_2, 146U },
3528
  { Hexagon::S5_4, 148U },
3529
  { Hexagon::S7_6, 150U },
3530
  { Hexagon::S9_8, 152U },
3531
  { Hexagon::S11_10, 154U },
3532
  { Hexagon::S13_12, 156U },
3533
  { Hexagon::S15_14, 158U },
3534
  { Hexagon::S17_16, 160U },
3535
  { Hexagon::S19_18, 162U },
3536
  { Hexagon::S21_20, 164U },
3537
  { Hexagon::S23_22, 166U },
3538
  { Hexagon::S25_24, 168U },
3539
  { Hexagon::S27_26, 170U },
3540
  { Hexagon::S29_28, 172U },
3541
  { Hexagon::S31_30, 174U },
3542
  { Hexagon::S33_32, 176U },
3543
  { Hexagon::S35_34, 178U },
3544
  { Hexagon::S37_36, 180U },
3545
  { Hexagon::S39_38, 182U },
3546
  { Hexagon::S41_40, 184U },
3547
  { Hexagon::S43_42, 186U },
3548
  { Hexagon::S45_44, 188U },
3549
  { Hexagon::S47_46, 190U },
3550
  { Hexagon::S49_48, 192U },
3551
  { Hexagon::S51_50, 194U },
3552
  { Hexagon::S53_52, 196U },
3553
  { Hexagon::S55_54, 198U },
3554
  { Hexagon::S57_56, 200U },
3555
  { Hexagon::S59_58, 202U },
3556
  { Hexagon::S61_60, 204U },
3557
  { Hexagon::S63_62, 206U },
3558
  { Hexagon::S65_64, 208U },
3559
  { Hexagon::S67_66, 210U },
3560
  { Hexagon::S69_68, 212U },
3561
  { Hexagon::S71_70, 214U },
3562
  { Hexagon::S73_72, 216U },
3563
  { Hexagon::S75_74, 218U },
3564
  { Hexagon::S77_76, 219U },
3565
  { Hexagon::S79_78, 220U },
3566
  { Hexagon::SGP1_0, 144U },
3567
};
3568
extern const unsigned HexagonEHFlavour0L2DwarfSize = std::size(HexagonEHFlavour0L2Dwarf);
3569
3570
extern const uint16_t HexagonRegEncodingTable[] = {
3571
  0,
3572
  9,
3573
  7,
3574
  27,
3575
  12,
3576
  28,
3577
  3,
3578
  16,
3579
  17,
3580
  16,
3581
  0,
3582
  2,
3583
  11,
3584
  25,
3585
  24,
3586
  1,
3587
  8,
3588
  10,
3589
  42,
3590
  43,
3591
  40,
3592
  41,
3593
  32,
3594
  17,
3595
  9,
3596
  31,
3597
  30,
3598
  18,
3599
  19,
3600
  18,
3601
  53,
3602
  52,
3603
  29,
3604
  6,
3605
  2,
3606
  18,
3607
  10,
3608
  14,
3609
  15,
3610
  14,
3611
  8,
3612
  0,
3613
  30,
3614
  31,
3615
  30,
3616
  21,
3617
  0,
3618
  4,
3619
  5,
3620
  37,
3621
  39,
3622
  36,
3623
  38,
3624
  5,
3625
  8,
3626
  12,
3627
  13,
3628
  0,
3629
  2,
3630
  4,
3631
  6,
3632
  8,
3633
  10,
3634
  12,
3635
  14,
3636
  16,
3637
  18,
3638
  20,
3639
  22,
3640
  24,
3641
  26,
3642
  28,
3643
  30,
3644
  3,
3645
  4,
3646
  5,
3647
  6,
3648
  7,
3649
  8,
3650
  9,
3651
  10,
3652
  11,
3653
  12,
3654
  13,
3655
  14,
3656
  15,
3657
  20,
3658
  21,
3659
  22,
3660
  23,
3661
  30,
3662
  31,
3663
  26,
3664
  27,
3665
  28,
3666
  29,
3667
  16,
3668
  17,
3669
  18,
3670
  19,
3671
  33,
3672
  34,
3673
  1,
3674
  3,
3675
  6,
3676
  7,
3677
  0,
3678
  1,
3679
  2,
3680
  3,
3681
  48,
3682
  49,
3683
  50,
3684
  51,
3685
  0,
3686
  1,
3687
  2,
3688
  3,
3689
  0,
3690
  1,
3691
  2,
3692
  3,
3693
  4,
3694
  5,
3695
  6,
3696
  7,
3697
  8,
3698
  9,
3699
  10,
3700
  11,
3701
  12,
3702
  13,
3703
  14,
3704
  15,
3705
  16,
3706
  17,
3707
  18,
3708
  19,
3709
  20,
3710
  21,
3711
  22,
3712
  23,
3713
  24,
3714
  25,
3715
  26,
3716
  27,
3717
  28,
3718
  29,
3719
  30,
3720
  31,
3721
  11,
3722
  12,
3723
  13,
3724
  14,
3725
  15,
3726
  19,
3727
  20,
3728
  22,
3729
  23,
3730
  24,
3731
  25,
3732
  26,
3733
  35,
3734
  44,
3735
  45,
3736
  46,
3737
  47,
3738
  54,
3739
  55,
3740
  56,
3741
  57,
3742
  58,
3743
  59,
3744
  60,
3745
  61,
3746
  62,
3747
  63,
3748
  64,
3749
  65,
3750
  66,
3751
  67,
3752
  68,
3753
  69,
3754
  70,
3755
  71,
3756
  72,
3757
  73,
3758
  74,
3759
  75,
3760
  76,
3761
  77,
3762
  78,
3763
  79,
3764
  80,
3765
  0,
3766
  2,
3767
  0,
3768
  1,
3769
  0,
3770
  1,
3771
  2,
3772
  3,
3773
  4,
3774
  5,
3775
  6,
3776
  7,
3777
  8,
3778
  9,
3779
  10,
3780
  11,
3781
  12,
3782
  13,
3783
  14,
3784
  15,
3785
  16,
3786
  17,
3787
  18,
3788
  19,
3789
  20,
3790
  21,
3791
  22,
3792
  23,
3793
  24,
3794
  25,
3795
  26,
3796
  27,
3797
  28,
3798
  29,
3799
  30,
3800
  31,
3801
  0,
3802
  0,
3803
  0,
3804
  0,
3805
  0,
3806
  0,
3807
  0,
3808
  0,
3809
  0,
3810
  0,
3811
  0,
3812
  0,
3813
  0,
3814
  0,
3815
  0,
3816
  0,
3817
  0,
3818
  0,
3819
  0,
3820
  0,
3821
  0,
3822
  0,
3823
  0,
3824
  0,
3825
  0,
3826
  0,
3827
  0,
3828
  0,
3829
  0,
3830
  0,
3831
  0,
3832
  0,
3833
  0,
3834
  0,
3835
  0,
3836
  0,
3837
  0,
3838
  0,
3839
  0,
3840
  0,
3841
  0,
3842
  0,
3843
  0,
3844
  0,
3845
  0,
3846
  0,
3847
  0,
3848
  0,
3849
  0,
3850
  0,
3851
  0,
3852
  0,
3853
  0,
3854
  0,
3855
  0,
3856
  0,
3857
  0,
3858
  0,
3859
  0,
3860
  0,
3861
  0,
3862
  0,
3863
  0,
3864
  0,
3865
  0,
3866
  4,
3867
  8,
3868
  12,
3869
  16,
3870
  20,
3871
  24,
3872
  28,
3873
  0,
3874
  2,
3875
  4,
3876
  6,
3877
  8,
3878
  10,
3879
  12,
3880
  14,
3881
  16,
3882
  18,
3883
  20,
3884
  22,
3885
  24,
3886
  26,
3887
  28,
3888
  30,
3889
  1,
3890
  3,
3891
  5,
3892
  7,
3893
  9,
3894
  11,
3895
  13,
3896
  15,
3897
  17,
3898
  19,
3899
  21,
3900
  23,
3901
  25,
3902
  27,
3903
  29,
3904
  31,
3905
  0,
3906
  2,
3907
  4,
3908
  6,
3909
  8,
3910
  10,
3911
  16,
3912
  0,
3913
  2,
3914
  4,
3915
  6,
3916
  8,
3917
  10,
3918
  12,
3919
  14,
3920
  16,
3921
  18,
3922
  20,
3923
  22,
3924
  24,
3925
  26,
3926
  28,
3927
  30,
3928
  4,
3929
  2,
3930
  4,
3931
  6,
3932
  8,
3933
  10,
3934
  12,
3935
  14,
3936
  16,
3937
  18,
3938
  20,
3939
  22,
3940
  24,
3941
  26,
3942
  28,
3943
  30,
3944
  32,
3945
  34,
3946
  36,
3947
  38,
3948
  40,
3949
  42,
3950
  44,
3951
  46,
3952
  48,
3953
  50,
3954
  52,
3955
  54,
3956
  56,
3957
  58,
3958
  60,
3959
  62,
3960
  64,
3961
  66,
3962
  68,
3963
  70,
3964
  72,
3965
  74,
3966
  76,
3967
  78,
3968
  0,
3969
};
3970
2
static inline void InitHexagonMCRegisterInfo(MCRegisterInfo *RI, unsigned RA, unsigned DwarfFlavour = 0, unsigned EHFlavour = 0, unsigned PC = 0) {
3971
2
  RI->InitMCRegisterInfo(HexagonRegDesc, 398, RA, PC, HexagonMCRegisterClasses, 29, HexagonRegUnitRoots, 272, HexagonRegDiffLists, HexagonLaneMaskLists, HexagonRegStrings, HexagonRegClassStrings, HexagonSubRegIdxLists, 12,
3972
2
HexagonSubRegIdxRanges, HexagonRegEncodingTable);
3973
3974
2
  switch (DwarfFlavour) {
3975
0
  default:
3976
0
    llvm_unreachable("Unknown DWARF flavour");
3977
2
  case 0:
3978
2
    RI->mapDwarfRegsToLLVMRegs(HexagonDwarfFlavour0Dwarf2L, HexagonDwarfFlavour0Dwarf2LSize, false);
3979
2
    break;
3980
2
  }
3981
2
  switch (EHFlavour) {
3982
0
  default:
3983
0
    llvm_unreachable("Unknown DWARF flavour");
3984
2
  case 0:
3985
2
    RI->mapDwarfRegsToLLVMRegs(HexagonEHFlavour0Dwarf2L, HexagonEHFlavour0Dwarf2LSize, true);
3986
2
    break;
3987
2
  }
3988
2
  switch (DwarfFlavour) {
3989
0
  default:
3990
0
    llvm_unreachable("Unknown DWARF flavour");
3991
2
  case 0:
3992
2
    RI->mapLLVMRegsToDwarfRegs(HexagonDwarfFlavour0L2Dwarf, HexagonDwarfFlavour0L2DwarfSize, false);
3993
2
    break;
3994
2
  }
3995
2
  switch (EHFlavour) {
3996
0
  default:
3997
0
    llvm_unreachable("Unknown DWARF flavour");
3998
2
  case 0:
3999
2
    RI->mapLLVMRegsToDwarfRegs(HexagonEHFlavour0L2Dwarf, HexagonEHFlavour0L2DwarfSize, true);
4000
2
    break;
4001
2
  }
4002
2
}
4003
4004
} // end namespace llvm
4005
4006
#endif // GET_REGINFO_MC_DESC
4007
4008
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
4009
|*                                                                            *|
4010
|* Register Information Header Fragment                                       *|
4011
|*                                                                            *|
4012
|* Automatically generated file, do not edit!                                 *|
4013
|*                                                                            *|
4014
\*===----------------------------------------------------------------------===*/
4015
4016
4017
#ifdef GET_REGINFO_HEADER
4018
#undef GET_REGINFO_HEADER
4019
4020
#include "llvm/CodeGen/TargetRegisterInfo.h"
4021
4022
namespace llvm {
4023
4024
class HexagonFrameLowering;
4025
4026
struct HexagonGenRegisterInfo : public TargetRegisterInfo {
4027
  explicit HexagonGenRegisterInfo(unsigned RA, unsigned D = 0, unsigned E = 0,
4028
      unsigned PC = 0, unsigned HwMode = 0);
4029
  unsigned composeSubRegIndicesImpl(unsigned, unsigned) const override;
4030
  LaneBitmask composeSubRegIndexLaneMaskImpl(unsigned, LaneBitmask) const override;
4031
  LaneBitmask reverseComposeSubRegIndexLaneMaskImpl(unsigned, LaneBitmask) const override;
4032
  const TargetRegisterClass *getSubClassWithSubReg(const TargetRegisterClass *, unsigned) const override;
4033
  const TargetRegisterClass *getSubRegisterClass(const TargetRegisterClass *, unsigned) const override;
4034
  const RegClassWeight &getRegClassWeight(const TargetRegisterClass *RC) const override;
4035
  unsigned getRegUnitWeight(unsigned RegUnit) const override;
4036
  unsigned getNumRegPressureSets() const override;
4037
  const char *getRegPressureSetName(unsigned Idx) const override;
4038
  unsigned getRegPressureSetLimit(const MachineFunction &MF, unsigned Idx) const override;
4039
  const int *getRegClassPressureSets(const TargetRegisterClass *RC) const override;
4040
  const int *getRegUnitPressureSets(unsigned RegUnit) const override;
4041
  ArrayRef<const char *> getRegMaskNames() const override;
4042
  ArrayRef<const uint32_t *> getRegMasks() const override;
4043
  bool isGeneralPurposeRegister(const MachineFunction &, MCRegister) const override;
4044
  bool isFixedRegister(const MachineFunction &, MCRegister) const override;
4045
  bool isArgumentRegister(const MachineFunction &, MCRegister) const override;
4046
  bool isConstantPhysReg(MCRegister PhysReg) const override final;
4047
  /// Devirtualized TargetFrameLowering.
4048
  static const HexagonFrameLowering *getFrameLowering(
4049
      const MachineFunction &MF);
4050
};
4051
4052
namespace Hexagon { // Register classes
4053
  extern const TargetRegisterClass UsrBitsRegClass;
4054
  extern const TargetRegisterClass SysRegsRegClass;
4055
  extern const TargetRegisterClass GuestRegsRegClass;
4056
  extern const TargetRegisterClass IntRegsRegClass;
4057
  extern const TargetRegisterClass CtrRegsRegClass;
4058
  extern const TargetRegisterClass GeneralSubRegsRegClass;
4059
  extern const TargetRegisterClass V62RegsRegClass;
4060
  extern const TargetRegisterClass IntRegsLow8RegClass;
4061
  extern const TargetRegisterClass CtrRegs_and_V62RegsRegClass;
4062
  extern const TargetRegisterClass PredRegsRegClass;
4063
  extern const TargetRegisterClass V62Regs_with_isub_hiRegClass;
4064
  extern const TargetRegisterClass ModRegsRegClass;
4065
  extern const TargetRegisterClass CtrRegs_with_subreg_overflowRegClass;
4066
  extern const TargetRegisterClass V65RegsRegClass;
4067
  extern const TargetRegisterClass SysRegs64RegClass;
4068
  extern const TargetRegisterClass DoubleRegsRegClass;
4069
  extern const TargetRegisterClass GuestRegs64RegClass;
4070
  extern const TargetRegisterClass VectRegRevRegClass;
4071
  extern const TargetRegisterClass CtrRegs64RegClass;
4072
  extern const TargetRegisterClass GeneralDoubleLow8RegsRegClass;
4073
  extern const TargetRegisterClass DoubleRegs_with_isub_hi_in_IntRegsLow8RegClass;
4074
  extern const TargetRegisterClass CtrRegs64_and_V62RegsRegClass;
4075
  extern const TargetRegisterClass CtrRegs64_with_isub_hi_in_ModRegsRegClass;
4076
  extern const TargetRegisterClass HvxQRRegClass;
4077
  extern const TargetRegisterClass HvxVRRegClass;
4078
  extern const TargetRegisterClass HvxVR_and_V65RegsRegClass;
4079
  extern const TargetRegisterClass HvxWRRegClass;
4080
  extern const TargetRegisterClass HvxWR_and_VectRegRevRegClass;
4081
  extern const TargetRegisterClass HvxVQRRegClass;
4082
} // end namespace Hexagon
4083
4084
} // end namespace llvm
4085
4086
#endif // GET_REGINFO_HEADER
4087
4088
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
4089
|*                                                                            *|
4090
|* Target Register and Register Classes Information                           *|
4091
|*                                                                            *|
4092
|* Automatically generated file, do not edit!                                 *|
4093
|*                                                                            *|
4094
\*===----------------------------------------------------------------------===*/
4095
4096
4097
#ifdef GET_REGINFO_TARGET_DESC
4098
#undef GET_REGINFO_TARGET_DESC
4099
4100
namespace llvm {
4101
4102
extern const MCRegisterClass HexagonMCRegisterClasses[];
4103
4104
static const MVT::SimpleValueType VTLists[] = {
4105
  /* 0 */ MVT::i1, MVT::Other,
4106
  /* 2 */ MVT::i1, MVT::v2i1, MVT::v4i1, MVT::v8i1, MVT::v4i8, MVT::v2i16, MVT::i32, MVT::Other,
4107
  /* 10 */ MVT::i64, MVT::Other,
4108
  /* 12 */ MVT::v64i1, MVT::v64i1, MVT::v32i1, MVT::v16i1, MVT::Other,
4109
  /* 17 */ MVT::v128i1, MVT::v128i1, MVT::v64i1, MVT::v32i1, MVT::Other,
4110
  /* 22 */ MVT::i32, MVT::f32, MVT::v4i8, MVT::v2i16, MVT::Other,
4111
  /* 27 */ MVT::i64, MVT::f64, MVT::v8i8, MVT::v4i16, MVT::v2i32, MVT::Other,
4112
  /* 33 */ MVT::v64i8, MVT::v32i16, MVT::v16i32, MVT::v32f16, MVT::v16f32, MVT::Other,
4113
  /* 39 */ MVT::v128i8, MVT::v64i16, MVT::v32i32, MVT::v64f16, MVT::v32f32, MVT::Other,
4114
  /* 45 */ MVT::v256i8, MVT::v128i16, MVT::v64i32, MVT::v128f16, MVT::v64f32, MVT::Other,
4115
  /* 51 */ MVT::Untyped, MVT::Other,
4116
};
4117
4118
static const char *SubRegIndexNameTable[] = { "isub_hi", "isub_lo", "subreg_overflow", "vsub_fake", "vsub_hi", "vsub_lo", "wsub_hi", "wsub_lo", "wsub_hi_then_vsub_fake", "wsub_hi_then_vsub_hi", "wsub_hi_then_vsub_lo", "" };
4119
4120
4121
static const LaneBitmask SubRegIndexLaneMaskTable[] = {
4122
  LaneBitmask::getAll(),
4123
  LaneBitmask(0x0000000000000001), // isub_hi
4124
  LaneBitmask(0x0000000000000002), // isub_lo
4125
  LaneBitmask(0x0000000000000004), // subreg_overflow
4126
  LaneBitmask(0x0000000000000008), // vsub_fake
4127
  LaneBitmask(0x0000000000000010), // vsub_hi
4128
  LaneBitmask(0x0000000000000020), // vsub_lo
4129
  LaneBitmask(0x00000000000001C0), // wsub_hi
4130
  LaneBitmask(0x0000000000000038), // wsub_lo
4131
  LaneBitmask(0x0000000000000040), // wsub_hi_then_vsub_fake
4132
  LaneBitmask(0x0000000000000080), // wsub_hi_then_vsub_hi
4133
  LaneBitmask(0x0000000000000100), // wsub_hi_then_vsub_lo
4134
 };
4135
4136
4137
4138
static const TargetRegisterInfo::RegClassInfo RegClassInfos[] = {
4139
  // Mode = 0 (Default)
4140
  { 1, 1, 0, /*VTLists+*/0 },    // UsrBits
4141
  { 32, 32, 32, /*VTLists+*/8 },    // SysRegs
4142
  { 32, 32, 32, /*VTLists+*/8 },    // GuestRegs
4143
  { 32, 32, 32, /*VTLists+*/22 },    // IntRegs
4144
  { 32, 32, 32, /*VTLists+*/8 },    // CtrRegs
4145
  { 32, 32, 32, /*VTLists+*/8 },    // GeneralSubRegs
4146
  { 32, 32, 32, /*VTLists+*/8 },    // V62Regs
4147
  { 32, 32, 32, /*VTLists+*/8 },    // IntRegsLow8
4148
  { 32, 32, 32, /*VTLists+*/8 },    // CtrRegs_and_V62Regs
4149
  { 32, 32, 32, /*VTLists+*/2 },    // PredRegs
4150
  { 32, 32, 32, /*VTLists+*/8 },    // V62Regs_with_isub_hi
4151
  { 32, 32, 32, /*VTLists+*/8 },    // ModRegs
4152
  { 32, 32, 32, /*VTLists+*/8 },    // CtrRegs_with_subreg_overflow
4153
  { 32, 32, 32, /*VTLists+*/8 },    // V65Regs
4154
  { 64, 64, 64, /*VTLists+*/10 },    // SysRegs64
4155
  { 64, 64, 64, /*VTLists+*/27 },    // DoubleRegs
4156
  { 64, 64, 64, /*VTLists+*/10 },    // GuestRegs64
4157
  { 64, 64, 64, /*VTLists+*/10 },    // VectRegRev
4158
  { 64, 64, 64, /*VTLists+*/10 },    // CtrRegs64
4159
  { 64, 64, 64, /*VTLists+*/10 },    // GeneralDoubleLow8Regs
4160
  { 64, 64, 64, /*VTLists+*/10 },    // DoubleRegs_with_isub_hi_in_IntRegsLow8
4161
  { 64, 64, 64, /*VTLists+*/10 },    // CtrRegs64_and_V62Regs
4162
  { 64, 64, 64, /*VTLists+*/10 },    // CtrRegs64_with_isub_hi_in_ModRegs
4163
  { 64, 512, 512, /*VTLists+*/12 },    // HvxQR
4164
  { 512, 512, 512, /*VTLists+*/33 },    // HvxVR
4165
  { 512, 512, 512, /*VTLists+*/33 },    // HvxVR_and_V65Regs
4166
  { 1024, 1024, 512, /*VTLists+*/39 },    // HvxWR
4167
  { 1024, 1024, 512, /*VTLists+*/39 },    // HvxWR_and_VectRegRev
4168
  { 2048, 2048, 512, /*VTLists+*/51 },    // HvxVQR
4169
  // Mode = 1 (Hvx64)
4170
  { 1, 1, 0, /*VTLists+*/0 },    // UsrBits
4171
  { 32, 32, 32, /*VTLists+*/8 },    // SysRegs
4172
  { 32, 32, 32, /*VTLists+*/8 },    // GuestRegs
4173
  { 32, 32, 32, /*VTLists+*/22 },    // IntRegs
4174
  { 32, 32, 32, /*VTLists+*/8 },    // CtrRegs
4175
  { 32, 32, 32, /*VTLists+*/8 },    // GeneralSubRegs
4176
  { 32, 32, 32, /*VTLists+*/8 },    // V62Regs
4177
  { 32, 32, 32, /*VTLists+*/8 },    // IntRegsLow8
4178
  { 32, 32, 32, /*VTLists+*/8 },    // CtrRegs_and_V62Regs
4179
  { 32, 32, 32, /*VTLists+*/2 },    // PredRegs
4180
  { 32, 32, 32, /*VTLists+*/8 },    // V62Regs_with_isub_hi
4181
  { 32, 32, 32, /*VTLists+*/8 },    // ModRegs
4182
  { 32, 32, 32, /*VTLists+*/8 },    // CtrRegs_with_subreg_overflow
4183
  { 32, 32, 32, /*VTLists+*/8 },    // V65Regs
4184
  { 64, 64, 64, /*VTLists+*/10 },    // SysRegs64
4185
  { 64, 64, 64, /*VTLists+*/27 },    // DoubleRegs
4186
  { 64, 64, 64, /*VTLists+*/10 },    // GuestRegs64
4187
  { 64, 64, 64, /*VTLists+*/10 },    // VectRegRev
4188
  { 64, 64, 64, /*VTLists+*/10 },    // CtrRegs64
4189
  { 64, 64, 64, /*VTLists+*/10 },    // GeneralDoubleLow8Regs
4190
  { 64, 64, 64, /*VTLists+*/10 },    // DoubleRegs_with_isub_hi_in_IntRegsLow8
4191
  { 64, 64, 64, /*VTLists+*/10 },    // CtrRegs64_and_V62Regs
4192
  { 64, 64, 64, /*VTLists+*/10 },    // CtrRegs64_with_isub_hi_in_ModRegs
4193
  { 64, 512, 512, /*VTLists+*/12 },    // HvxQR
4194
  { 512, 512, 512, /*VTLists+*/33 },    // HvxVR
4195
  { 512, 512, 512, /*VTLists+*/33 },    // HvxVR_and_V65Regs
4196
  { 1024, 1024, 512, /*VTLists+*/39 },    // HvxWR
4197
  { 1024, 1024, 512, /*VTLists+*/39 },    // HvxWR_and_VectRegRev
4198
  { 2048, 2048, 512, /*VTLists+*/51 },    // HvxVQR
4199
  // Mode = 2 (Hvx128)
4200
  { 1, 1, 0, /*VTLists+*/0 },    // UsrBits
4201
  { 32, 32, 32, /*VTLists+*/8 },    // SysRegs
4202
  { 32, 32, 32, /*VTLists+*/8 },    // GuestRegs
4203
  { 32, 32, 32, /*VTLists+*/22 },    // IntRegs
4204
  { 32, 32, 32, /*VTLists+*/8 },    // CtrRegs
4205
  { 32, 32, 32, /*VTLists+*/8 },    // GeneralSubRegs
4206
  { 32, 32, 32, /*VTLists+*/8 },    // V62Regs
4207
  { 32, 32, 32, /*VTLists+*/8 },    // IntRegsLow8
4208
  { 32, 32, 32, /*VTLists+*/8 },    // CtrRegs_and_V62Regs
4209
  { 32, 32, 32, /*VTLists+*/2 },    // PredRegs
4210
  { 32, 32, 32, /*VTLists+*/8 },    // V62Regs_with_isub_hi
4211
  { 32, 32, 32, /*VTLists+*/8 },    // ModRegs
4212
  { 32, 32, 32, /*VTLists+*/8 },    // CtrRegs_with_subreg_overflow
4213
  { 32, 32, 32, /*VTLists+*/8 },    // V65Regs
4214
  { 64, 64, 64, /*VTLists+*/10 },    // SysRegs64
4215
  { 64, 64, 64, /*VTLists+*/27 },    // DoubleRegs
4216
  { 64, 64, 64, /*VTLists+*/10 },    // GuestRegs64
4217
  { 64, 64, 64, /*VTLists+*/10 },    // VectRegRev
4218
  { 64, 64, 64, /*VTLists+*/10 },    // CtrRegs64
4219
  { 64, 64, 64, /*VTLists+*/10 },    // GeneralDoubleLow8Regs
4220
  { 64, 64, 64, /*VTLists+*/10 },    // DoubleRegs_with_isub_hi_in_IntRegsLow8
4221
  { 64, 64, 64, /*VTLists+*/10 },    // CtrRegs64_and_V62Regs
4222
  { 64, 64, 64, /*VTLists+*/10 },    // CtrRegs64_with_isub_hi_in_ModRegs
4223
  { 128, 1024, 1024, /*VTLists+*/17 },    // HvxQR
4224
  { 1024, 1024, 1024, /*VTLists+*/39 },    // HvxVR
4225
  { 1024, 1024, 1024, /*VTLists+*/39 },    // HvxVR_and_V65Regs
4226
  { 2048, 2048, 1024, /*VTLists+*/45 },    // HvxWR
4227
  { 2048, 2048, 1024, /*VTLists+*/45 },    // HvxWR_and_VectRegRev
4228
  { 4096, 4096, 1024, /*VTLists+*/51 },    // HvxVQR
4229
};
4230
4231
static const TargetRegisterClass *const NullRegClasses[] = { nullptr };
4232
4233
static const uint32_t UsrBitsSubClassMask[] = {
4234
  0x00000001, 
4235
  0x00001000, // subreg_overflow
4236
};
4237
4238
static const uint32_t SysRegsSubClassMask[] = {
4239
  0x00000002, 
4240
  0x00004000, // isub_hi
4241
  0x00004000, // isub_lo
4242
};
4243
4244
static const uint32_t GuestRegsSubClassMask[] = {
4245
  0x00000004, 
4246
  0x00010000, // isub_hi
4247
  0x00010000, // isub_lo
4248
};
4249
4250
static const uint32_t IntRegsSubClassMask[] = {
4251
  0x000000a8, 
4252
  0x00188000, // isub_hi
4253
  0x00188000, // isub_lo
4254
};
4255
4256
static const uint32_t CtrRegsSubClassMask[] = {
4257
  0x00001910, 
4258
  0x00640400, // isub_hi
4259
  0x00640400, // isub_lo
4260
};
4261
4262
static const uint32_t GeneralSubRegsSubClassMask[] = {
4263
  0x000000a0, 
4264
  0x00180000, // isub_hi
4265
  0x00180000, // isub_lo
4266
};
4267
4268
static const uint32_t V62RegsSubClassMask[] = {
4269
  0x00200540, 
4270
  0x00200400, // isub_hi
4271
  0x00200400, // isub_lo
4272
};
4273
4274
static const uint32_t IntRegsLow8SubClassMask[] = {
4275
  0x00000080, 
4276
  0x00100000, // isub_hi
4277
  0x00100000, // isub_lo
4278
};
4279
4280
static const uint32_t CtrRegs_and_V62RegsSubClassMask[] = {
4281
  0x00000100, 
4282
  0x00200400, // isub_hi
4283
  0x00200400, // isub_lo
4284
};
4285
4286
static const uint32_t PredRegsSubClassMask[] = {
4287
  0x00000200, 
4288
};
4289
4290
static const uint32_t V62Regs_with_isub_hiSubClassMask[] = {
4291
  0x00200400, 
4292
};
4293
4294
static const uint32_t ModRegsSubClassMask[] = {
4295
  0x00000800, 
4296
  0x00400000, // isub_hi
4297
  0x00400000, // isub_lo
4298
};
4299
4300
static const uint32_t CtrRegs_with_subreg_overflowSubClassMask[] = {
4301
  0x00001000, 
4302
};
4303
4304
static const uint32_t V65RegsSubClassMask[] = {
4305
  0x02002000, 
4306
};
4307
4308
static const uint32_t SysRegs64SubClassMask[] = {
4309
  0x00004000, 
4310
};
4311
4312
static const uint32_t DoubleRegsSubClassMask[] = {
4313
  0x00188000, 
4314
};
4315
4316
static const uint32_t GuestRegs64SubClassMask[] = {
4317
  0x00010000, 
4318
};
4319
4320
static const uint32_t VectRegRevSubClassMask[] = {
4321
  0x08020000, 
4322
};
4323
4324
static const uint32_t CtrRegs64SubClassMask[] = {
4325
  0x00640000, 
4326
};
4327
4328
static const uint32_t GeneralDoubleLow8RegsSubClassMask[] = {
4329
  0x00180000, 
4330
};
4331
4332
static const uint32_t DoubleRegs_with_isub_hi_in_IntRegsLow8SubClassMask[] = {
4333
  0x00100000, 
4334
};
4335
4336
static const uint32_t CtrRegs64_and_V62RegsSubClassMask[] = {
4337
  0x00200000, 
4338
};
4339
4340
static const uint32_t CtrRegs64_with_isub_hi_in_ModRegsSubClassMask[] = {
4341
  0x00400000, 
4342
};
4343
4344
static const uint32_t HvxQRSubClassMask[] = {
4345
  0x00800000, 
4346
};
4347
4348
static const uint32_t HvxVRSubClassMask[] = {
4349
  0x03000000, 
4350
  0x1c020000, // vsub_hi
4351
  0x1c020000, // vsub_lo
4352
  0x10000000, // wsub_hi_then_vsub_hi
4353
  0x10000000, // wsub_hi_then_vsub_lo
4354
};
4355
4356
static const uint32_t HvxVR_and_V65RegsSubClassMask[] = {
4357
  0x02000000, 
4358
};
4359
4360
static const uint32_t HvxWRSubClassMask[] = {
4361
  0x0c000000, 
4362
  0x10000000, // wsub_hi
4363
  0x10000000, // wsub_lo
4364
};
4365
4366
static const uint32_t HvxWR_and_VectRegRevSubClassMask[] = {
4367
  0x08000000, 
4368
};
4369
4370
static const uint32_t HvxVQRSubClassMask[] = {
4371
  0x10000000, 
4372
};
4373
4374
static const uint16_t SuperRegIdxSeqs[] = {
4375
  /* 0 */ 1, 2, 0,
4376
  /* 3 */ 3, 0,
4377
  /* 5 */ 7, 8, 0,
4378
  /* 8 */ 5, 6, 10, 11, 0,
4379
};
4380
4381
static const TargetRegisterClass *const GeneralSubRegsSuperclasses[] = {
4382
  &Hexagon::IntRegsRegClass,
4383
  nullptr
4384
};
4385
4386
static const TargetRegisterClass *const IntRegsLow8Superclasses[] = {
4387
  &Hexagon::IntRegsRegClass,
4388
  &Hexagon::GeneralSubRegsRegClass,
4389
  nullptr
4390
};
4391
4392
static const TargetRegisterClass *const CtrRegs_and_V62RegsSuperclasses[] = {
4393
  &Hexagon::CtrRegsRegClass,
4394
  &Hexagon::V62RegsRegClass,
4395
  nullptr
4396
};
4397
4398
static const TargetRegisterClass *const V62Regs_with_isub_hiSuperclasses[] = {
4399
  &Hexagon::V62RegsRegClass,
4400
  nullptr
4401
};
4402
4403
static const TargetRegisterClass *const ModRegsSuperclasses[] = {
4404
  &Hexagon::CtrRegsRegClass,
4405
  nullptr
4406
};
4407
4408
static const TargetRegisterClass *const CtrRegs_with_subreg_overflowSuperclasses[] = {
4409
  &Hexagon::CtrRegsRegClass,
4410
  nullptr
4411
};
4412
4413
static const TargetRegisterClass *const GeneralDoubleLow8RegsSuperclasses[] = {
4414
  &Hexagon::DoubleRegsRegClass,
4415
  nullptr
4416
};
4417
4418
static const TargetRegisterClass *const DoubleRegs_with_isub_hi_in_IntRegsLow8Superclasses[] = {
4419
  &Hexagon::DoubleRegsRegClass,
4420
  &Hexagon::GeneralDoubleLow8RegsRegClass,
4421
  nullptr
4422
};
4423
4424
static const TargetRegisterClass *const CtrRegs64_and_V62RegsSuperclasses[] = {
4425
  &Hexagon::V62RegsRegClass,
4426
  &Hexagon::V62Regs_with_isub_hiRegClass,
4427
  &Hexagon::CtrRegs64RegClass,
4428
  nullptr
4429
};
4430
4431
static const TargetRegisterClass *const CtrRegs64_with_isub_hi_in_ModRegsSuperclasses[] = {
4432
  &Hexagon::CtrRegs64RegClass,
4433
  nullptr
4434
};
4435
4436
static const TargetRegisterClass *const HvxVR_and_V65RegsSuperclasses[] = {
4437
  &Hexagon::V65RegsRegClass,
4438
  &Hexagon::HvxVRRegClass,
4439
  nullptr
4440
};
4441
4442
static const TargetRegisterClass *const HvxWR_and_VectRegRevSuperclasses[] = {
4443
  &Hexagon::VectRegRevRegClass,
4444
  &Hexagon::HvxWRRegClass,
4445
  nullptr
4446
};
4447
4448
4449
namespace Hexagon {   // Register class instances
4450
  extern const TargetRegisterClass UsrBitsRegClass = {
4451
    &HexagonMCRegisterClasses[UsrBitsRegClassID],
4452
    UsrBitsSubClassMask,
4453
    SuperRegIdxSeqs + 3,
4454
    LaneBitmask(0x0000000000000001),
4455
    0,
4456
    false,
4457
    0x00, /* TSFlags */
4458
    false, /* HasDisjunctSubRegs */
4459
    false, /* CoveredBySubRegs */
4460
    NullRegClasses,
4461
    nullptr
4462
  };
4463
4464
  extern const TargetRegisterClass SysRegsRegClass = {
4465
    &HexagonMCRegisterClasses[SysRegsRegClassID],
4466
    SysRegsSubClassMask,
4467
    SuperRegIdxSeqs + 0,
4468
    LaneBitmask(0x0000000000000001),
4469
    0,
4470
    false,
4471
    0x00, /* TSFlags */
4472
    false, /* HasDisjunctSubRegs */
4473
    false, /* CoveredBySubRegs */
4474
    NullRegClasses,
4475
    nullptr
4476
  };
4477
4478
  extern const TargetRegisterClass GuestRegsRegClass = {
4479
    &HexagonMCRegisterClasses[GuestRegsRegClassID],
4480
    GuestRegsSubClassMask,
4481
    SuperRegIdxSeqs + 0,
4482
    LaneBitmask(0x0000000000000001),
4483
    0,
4484
    false,
4485
    0x00, /* TSFlags */
4486
    false, /* HasDisjunctSubRegs */
4487
    false, /* CoveredBySubRegs */
4488
    NullRegClasses,
4489
    nullptr
4490
  };
4491
4492
  extern const TargetRegisterClass IntRegsRegClass = {
4493
    &HexagonMCRegisterClasses[IntRegsRegClassID],
4494
    IntRegsSubClassMask,
4495
    SuperRegIdxSeqs + 0,
4496
    LaneBitmask(0x0000000000000001),
4497
    0,
4498
    false,
4499
    0x00, /* TSFlags */
4500
    false, /* HasDisjunctSubRegs */
4501
    false, /* CoveredBySubRegs */
4502
    NullRegClasses,
4503
    nullptr
4504
  };
4505
4506
  extern const TargetRegisterClass CtrRegsRegClass = {
4507
    &HexagonMCRegisterClasses[CtrRegsRegClassID],
4508
    CtrRegsSubClassMask,
4509
    SuperRegIdxSeqs + 0,
4510
    LaneBitmask(0x0000000000000004),
4511
    0,
4512
    false,
4513
    0x00, /* TSFlags */
4514
    false, /* HasDisjunctSubRegs */
4515
    false, /* CoveredBySubRegs */
4516
    NullRegClasses,
4517
    nullptr
4518
  };
4519
4520
  extern const TargetRegisterClass GeneralSubRegsRegClass = {
4521
    &HexagonMCRegisterClasses[GeneralSubRegsRegClassID],
4522
    GeneralSubRegsSubClassMask,
4523
    SuperRegIdxSeqs + 0,
4524
    LaneBitmask(0x0000000000000001),
4525
    0,
4526
    false,
4527
    0x00, /* TSFlags */
4528
    false, /* HasDisjunctSubRegs */
4529
    false, /* CoveredBySubRegs */
4530
    GeneralSubRegsSuperclasses,
4531
    nullptr
4532
  };
4533
4534
  extern const TargetRegisterClass V62RegsRegClass = {
4535
    &HexagonMCRegisterClasses[V62RegsRegClassID],
4536
    V62RegsSubClassMask,
4537
    SuperRegIdxSeqs + 0,
4538
    LaneBitmask(0x0000000000000003),
4539
    0,
4540
    false,
4541
    0x00, /* TSFlags */
4542
    true, /* HasDisjunctSubRegs */
4543
    false, /* CoveredBySubRegs */
4544
    NullRegClasses,
4545
    nullptr
4546
  };
4547
4548
  extern const TargetRegisterClass IntRegsLow8RegClass = {
4549
    &HexagonMCRegisterClasses[IntRegsLow8RegClassID],
4550
    IntRegsLow8SubClassMask,
4551
    SuperRegIdxSeqs + 0,
4552
    LaneBitmask(0x0000000000000001),
4553
    0,
4554
    false,
4555
    0x00, /* TSFlags */
4556
    false, /* HasDisjunctSubRegs */
4557
    false, /* CoveredBySubRegs */
4558
    IntRegsLow8Superclasses,
4559
    nullptr
4560
  };
4561
4562
  extern const TargetRegisterClass CtrRegs_and_V62RegsRegClass = {
4563
    &HexagonMCRegisterClasses[CtrRegs_and_V62RegsRegClassID],
4564
    CtrRegs_and_V62RegsSubClassMask,
4565
    SuperRegIdxSeqs + 0,
4566
    LaneBitmask(0x0000000000000001),
4567
    0,
4568
    false,
4569
    0x00, /* TSFlags */
4570
    false, /* HasDisjunctSubRegs */
4571
    false, /* CoveredBySubRegs */
4572
    CtrRegs_and_V62RegsSuperclasses,
4573
    nullptr
4574
  };
4575
4576
  extern const TargetRegisterClass PredRegsRegClass = {
4577
    &HexagonMCRegisterClasses[PredRegsRegClassID],
4578
    PredRegsSubClassMask,
4579
    SuperRegIdxSeqs + 2,
4580
    LaneBitmask(0x0000000000000001),
4581
    0,
4582
    false,
4583
    0x00, /* TSFlags */
4584
    false, /* HasDisjunctSubRegs */
4585
    false, /* CoveredBySubRegs */
4586
    NullRegClasses,
4587
    nullptr
4588
  };
4589
4590
  extern const TargetRegisterClass V62Regs_with_isub_hiRegClass = {
4591
    &HexagonMCRegisterClasses[V62Regs_with_isub_hiRegClassID],
4592
    V62Regs_with_isub_hiSubClassMask,
4593
    SuperRegIdxSeqs + 2,
4594
    LaneBitmask(0x0000000000000003),
4595
    0,
4596
    false,
4597
    0x00, /* TSFlags */
4598
    true, /* HasDisjunctSubRegs */
4599
    true, /* CoveredBySubRegs */
4600
    V62Regs_with_isub_hiSuperclasses,
4601
    nullptr
4602
  };
4603
4604
  extern const TargetRegisterClass ModRegsRegClass = {
4605
    &HexagonMCRegisterClasses[ModRegsRegClassID],
4606
    ModRegsSubClassMask,
4607
    SuperRegIdxSeqs + 0,
4608
    LaneBitmask(0x0000000000000001),
4609
    0,
4610
    false,
4611
    0x00, /* TSFlags */
4612
    false, /* HasDisjunctSubRegs */
4613
    false, /* CoveredBySubRegs */
4614
    ModRegsSuperclasses,
4615
    nullptr
4616
  };
4617
4618
  extern const TargetRegisterClass CtrRegs_with_subreg_overflowRegClass = {
4619
    &HexagonMCRegisterClasses[CtrRegs_with_subreg_overflowRegClassID],
4620
    CtrRegs_with_subreg_overflowSubClassMask,
4621
    SuperRegIdxSeqs + 2,
4622
    LaneBitmask(0x0000000000000004),
4623
    0,
4624
    false,
4625
    0x00, /* TSFlags */
4626
    false, /* HasDisjunctSubRegs */
4627
    false, /* CoveredBySubRegs */
4628
    CtrRegs_with_subreg_overflowSuperclasses,
4629
    nullptr
4630
  };
4631
4632
  extern const TargetRegisterClass V65RegsRegClass = {
4633
    &HexagonMCRegisterClasses[V65RegsRegClassID],
4634
    V65RegsSubClassMask,
4635
    SuperRegIdxSeqs + 2,
4636
    LaneBitmask(0x0000000000000001),
4637
    0,
4638
    false,
4639
    0x00, /* TSFlags */
4640
    false, /* HasDisjunctSubRegs */
4641
    false, /* CoveredBySubRegs */
4642
    NullRegClasses,
4643
    nullptr
4644
  };
4645
4646
  extern const TargetRegisterClass SysRegs64RegClass = {
4647
    &HexagonMCRegisterClasses[SysRegs64RegClassID],
4648
    SysRegs64SubClassMask,
4649
    SuperRegIdxSeqs + 2,
4650
    LaneBitmask(0x0000000000000003),
4651
    0,
4652
    false,
4653
    0x00, /* TSFlags */
4654
    true, /* HasDisjunctSubRegs */
4655
    true, /* CoveredBySubRegs */
4656
    NullRegClasses,
4657
    nullptr
4658
  };
4659
4660
  extern const TargetRegisterClass DoubleRegsRegClass = {
4661
    &HexagonMCRegisterClasses[DoubleRegsRegClassID],
4662
    DoubleRegsSubClassMask,
4663
    SuperRegIdxSeqs + 2,
4664
    LaneBitmask(0x0000000000000003),
4665
    0,
4666
    false,
4667
    0x00, /* TSFlags */
4668
    true, /* HasDisjunctSubRegs */
4669
    true, /* CoveredBySubRegs */
4670
    NullRegClasses,
4671
    nullptr
4672
  };
4673
4674
  extern const TargetRegisterClass GuestRegs64RegClass = {
4675
    &HexagonMCRegisterClasses[GuestRegs64RegClassID],
4676
    GuestRegs64SubClassMask,
4677
    SuperRegIdxSeqs + 2,
4678
    LaneBitmask(0x0000000000000003),
4679
    0,
4680
    false,
4681
    0x00, /* TSFlags */
4682
    true, /* HasDisjunctSubRegs */
4683
    true, /* CoveredBySubRegs */
4684
    NullRegClasses,
4685
    nullptr
4686
  };
4687
4688
  extern const TargetRegisterClass VectRegRevRegClass = {
4689
    &HexagonMCRegisterClasses[VectRegRevRegClassID],
4690
    VectRegRevSubClassMask,
4691
    SuperRegIdxSeqs + 2,
4692
    LaneBitmask(0x0000000000000030),
4693
    0,
4694
    false,
4695
    0x00, /* TSFlags */
4696
    true, /* HasDisjunctSubRegs */
4697
    true, /* CoveredBySubRegs */
4698
    NullRegClasses,
4699
    nullptr
4700
  };
4701
4702
  extern const TargetRegisterClass CtrRegs64RegClass = {
4703
    &HexagonMCRegisterClasses[CtrRegs64RegClassID],
4704
    CtrRegs64SubClassMask,
4705
    SuperRegIdxSeqs + 2,
4706
    LaneBitmask(0x0000000000000003),
4707
    0,
4708
    false,
4709
    0x00, /* TSFlags */
4710
    true, /* HasDisjunctSubRegs */
4711
    true, /* CoveredBySubRegs */
4712
    NullRegClasses,
4713
    nullptr
4714
  };
4715
4716
  extern const TargetRegisterClass GeneralDoubleLow8RegsRegClass = {
4717
    &HexagonMCRegisterClasses[GeneralDoubleLow8RegsRegClassID],
4718
    GeneralDoubleLow8RegsSubClassMask,
4719
    SuperRegIdxSeqs + 2,
4720
    LaneBitmask(0x0000000000000003),
4721
    0,
4722
    false,
4723
    0x00, /* TSFlags */
4724
    true, /* HasDisjunctSubRegs */
4725
    true, /* CoveredBySubRegs */
4726
    GeneralDoubleLow8RegsSuperclasses,
4727
    nullptr
4728
  };
4729
4730
  extern const TargetRegisterClass DoubleRegs_with_isub_hi_in_IntRegsLow8RegClass = {
4731
    &HexagonMCRegisterClasses[DoubleRegs_with_isub_hi_in_IntRegsLow8RegClassID],
4732
    DoubleRegs_with_isub_hi_in_IntRegsLow8SubClassMask,
4733
    SuperRegIdxSeqs + 2,
4734
    LaneBitmask(0x0000000000000003),
4735
    0,
4736
    false,
4737
    0x00, /* TSFlags */
4738
    true, /* HasDisjunctSubRegs */
4739
    true, /* CoveredBySubRegs */
4740
    DoubleRegs_with_isub_hi_in_IntRegsLow8Superclasses,
4741
    nullptr
4742
  };
4743
4744
  extern const TargetRegisterClass CtrRegs64_and_V62RegsRegClass = {
4745
    &HexagonMCRegisterClasses[CtrRegs64_and_V62RegsRegClassID],
4746
    CtrRegs64_and_V62RegsSubClassMask,
4747
    SuperRegIdxSeqs + 2,
4748
    LaneBitmask(0x0000000000000003),
4749
    0,
4750
    false,
4751
    0x00, /* TSFlags */
4752
    true, /* HasDisjunctSubRegs */
4753
    true, /* CoveredBySubRegs */
4754
    CtrRegs64_and_V62RegsSuperclasses,
4755
    nullptr
4756
  };
4757
4758
  extern const TargetRegisterClass CtrRegs64_with_isub_hi_in_ModRegsRegClass = {
4759
    &HexagonMCRegisterClasses[CtrRegs64_with_isub_hi_in_ModRegsRegClassID],
4760
    CtrRegs64_with_isub_hi_in_ModRegsSubClassMask,
4761
    SuperRegIdxSeqs + 2,
4762
    LaneBitmask(0x0000000000000003),
4763
    0,
4764
    false,
4765
    0x00, /* TSFlags */
4766
    true, /* HasDisjunctSubRegs */
4767
    true, /* CoveredBySubRegs */
4768
    CtrRegs64_with_isub_hi_in_ModRegsSuperclasses,
4769
    nullptr
4770
  };
4771
4772
  extern const TargetRegisterClass HvxQRRegClass = {
4773
    &HexagonMCRegisterClasses[HvxQRRegClassID],
4774
    HvxQRSubClassMask,
4775
    SuperRegIdxSeqs + 2,
4776
    LaneBitmask(0x0000000000000001),
4777
    0,
4778
    false,
4779
    0x00, /* TSFlags */
4780
    false, /* HasDisjunctSubRegs */
4781
    false, /* CoveredBySubRegs */
4782
    NullRegClasses,
4783
    nullptr
4784
  };
4785
4786
  extern const TargetRegisterClass HvxVRRegClass = {
4787
    &HexagonMCRegisterClasses[HvxVRRegClassID],
4788
    HvxVRSubClassMask,
4789
    SuperRegIdxSeqs + 8,
4790
    LaneBitmask(0x0000000000000001),
4791
    0,
4792
    false,
4793
    0x00, /* TSFlags */
4794
    false, /* HasDisjunctSubRegs */
4795
    false, /* CoveredBySubRegs */
4796
    NullRegClasses,
4797
    nullptr
4798
  };
4799
4800
  extern const TargetRegisterClass HvxVR_and_V65RegsRegClass = {
4801
    &HexagonMCRegisterClasses[HvxVR_and_V65RegsRegClassID],
4802
    HvxVR_and_V65RegsSubClassMask,
4803
    SuperRegIdxSeqs + 2,
4804
    LaneBitmask(0x0000000000000001),
4805
    0,
4806
    false,
4807
    0x00, /* TSFlags */
4808
    false, /* HasDisjunctSubRegs */
4809
    false, /* CoveredBySubRegs */
4810
    HvxVR_and_V65RegsSuperclasses,
4811
    nullptr
4812
  };
4813
4814
  extern const TargetRegisterClass HvxWRRegClass = {
4815
    &HexagonMCRegisterClasses[HvxWRRegClassID],
4816
    HvxWRSubClassMask,
4817
    SuperRegIdxSeqs + 5,
4818
    LaneBitmask(0x0000000000000030),
4819
    0,
4820
    false,
4821
    0x00, /* TSFlags */
4822
    true, /* HasDisjunctSubRegs */
4823
    true, /* CoveredBySubRegs */
4824
    NullRegClasses,
4825
    nullptr
4826
  };
4827
4828
  extern const TargetRegisterClass HvxWR_and_VectRegRevRegClass = {
4829
    &HexagonMCRegisterClasses[HvxWR_and_VectRegRevRegClassID],
4830
    HvxWR_and_VectRegRevSubClassMask,
4831
    SuperRegIdxSeqs + 2,
4832
    LaneBitmask(0x0000000000000030),
4833
    0,
4834
    false,
4835
    0x00, /* TSFlags */
4836
    true, /* HasDisjunctSubRegs */
4837
    true, /* CoveredBySubRegs */
4838
    HvxWR_and_VectRegRevSuperclasses,
4839
    nullptr
4840
  };
4841
4842
  extern const TargetRegisterClass HvxVQRRegClass = {
4843
    &HexagonMCRegisterClasses[HvxVQRRegClassID],
4844
    HvxVQRSubClassMask,
4845
    SuperRegIdxSeqs + 2,
4846
    LaneBitmask(0x00000000000001F8),
4847
    0,
4848
    false,
4849
    0x00, /* TSFlags */
4850
    true, /* HasDisjunctSubRegs */
4851
    true, /* CoveredBySubRegs */
4852
    NullRegClasses,
4853
    nullptr
4854
  };
4855
4856
} // end namespace Hexagon
4857
4858
namespace {
4859
  const TargetRegisterClass *const RegisterClasses[] = {
4860
    &Hexagon::UsrBitsRegClass,
4861
    &Hexagon::SysRegsRegClass,
4862
    &Hexagon::GuestRegsRegClass,
4863
    &Hexagon::IntRegsRegClass,
4864
    &Hexagon::CtrRegsRegClass,
4865
    &Hexagon::GeneralSubRegsRegClass,
4866
    &Hexagon::V62RegsRegClass,
4867
    &Hexagon::IntRegsLow8RegClass,
4868
    &Hexagon::CtrRegs_and_V62RegsRegClass,
4869
    &Hexagon::PredRegsRegClass,
4870
    &Hexagon::V62Regs_with_isub_hiRegClass,
4871
    &Hexagon::ModRegsRegClass,
4872
    &Hexagon::CtrRegs_with_subreg_overflowRegClass,
4873
    &Hexagon::V65RegsRegClass,
4874
    &Hexagon::SysRegs64RegClass,
4875
    &Hexagon::DoubleRegsRegClass,
4876
    &Hexagon::GuestRegs64RegClass,
4877
    &Hexagon::VectRegRevRegClass,
4878
    &Hexagon::CtrRegs64RegClass,
4879
    &Hexagon::GeneralDoubleLow8RegsRegClass,
4880
    &Hexagon::DoubleRegs_with_isub_hi_in_IntRegsLow8RegClass,
4881
    &Hexagon::CtrRegs64_and_V62RegsRegClass,
4882
    &Hexagon::CtrRegs64_with_isub_hi_in_ModRegsRegClass,
4883
    &Hexagon::HvxQRRegClass,
4884
    &Hexagon::HvxVRRegClass,
4885
    &Hexagon::HvxVR_and_V65RegsRegClass,
4886
    &Hexagon::HvxWRRegClass,
4887
    &Hexagon::HvxWR_and_VectRegRevRegClass,
4888
    &Hexagon::HvxVQRRegClass,
4889
  };
4890
} // end anonymous namespace
4891
4892
static const uint8_t CostPerUseTable[] = { 
4893
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, };
4894
4895
4896
static const bool InAllocatableClassTable[] = { 
4897
false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, };
4898
4899
4900
static const TargetRegisterInfoDesc HexagonRegInfoDesc = { // Extra Descriptors
4901
CostPerUseTable, 1, InAllocatableClassTable};
4902
4903
0
unsigned HexagonGenRegisterInfo::composeSubRegIndicesImpl(unsigned IdxA, unsigned IdxB) const {
4904
0
  static const uint8_t RowMap[11] = {
4905
0
    0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 
4906
0
  };
4907
0
  static const uint8_t Rows[2][11] = {
4908
0
    { 0, 0, 0, Hexagon::wsub_hi_then_vsub_fake, Hexagon::wsub_hi_then_vsub_hi, Hexagon::wsub_hi_then_vsub_lo, 0, 0, 0, 0, 0, },
4909
0
    { 0, 0, 0, Hexagon::vsub_fake, Hexagon::vsub_hi, Hexagon::vsub_lo, 0, 0, 0, 0, 0, },
4910
0
  };
4911
4912
0
  --IdxA; assert(IdxA < 11); (void) IdxA;
4913
0
  --IdxB; assert(IdxB < 11);
4914
0
  return Rows[RowMap[IdxA]][IdxB];
4915
0
}
4916
4917
  struct MaskRolOp {
4918
    LaneBitmask Mask;
4919
    uint8_t  RotateLeft;
4920
  };
4921
  static const MaskRolOp LaneMaskComposeSequences[] = {
4922
    { LaneBitmask(0xFFFFFFFFFFFFFFFF),  0 }, { LaneBitmask::getNone(), 0 },   // Sequence 0
4923
    { LaneBitmask(0xFFFFFFFFFFFFFFFF),  1 }, { LaneBitmask::getNone(), 0 },   // Sequence 2
4924
    { LaneBitmask(0xFFFFFFFFFFFFFFFF),  2 }, { LaneBitmask::getNone(), 0 },   // Sequence 4
4925
    { LaneBitmask(0xFFFFFFFFFFFFFFFF),  3 }, { LaneBitmask::getNone(), 0 },   // Sequence 6
4926
    { LaneBitmask(0xFFFFFFFFFFFFFFFF),  4 }, { LaneBitmask::getNone(), 0 },   // Sequence 8
4927
    { LaneBitmask(0xFFFFFFFFFFFFFFFF),  5 }, { LaneBitmask::getNone(), 0 },   // Sequence 10
4928
    { LaneBitmask(0xFFFFFFFFFFFFFFFF),  6 }, { LaneBitmask::getNone(), 0 },   // Sequence 12
4929
    { LaneBitmask(0xFFFFFFFFFFFFFFFF),  7 }, { LaneBitmask::getNone(), 0 },   // Sequence 14
4930
    { LaneBitmask(0xFFFFFFFFFFFFFFFF),  8 }, { LaneBitmask::getNone(), 0 }  // Sequence 16
4931
  };
4932
  static const uint8_t CompositeSequences[] = {
4933
    0, // to isub_hi
4934
    2, // to isub_lo
4935
    4, // to subreg_overflow
4936
    6, // to vsub_fake
4937
    8, // to vsub_hi
4938
    10, // to vsub_lo
4939
    6, // to wsub_hi
4940
    0, // to wsub_lo
4941
    12, // to wsub_hi_then_vsub_fake
4942
    14, // to wsub_hi_then_vsub_hi
4943
    16 // to wsub_hi_then_vsub_lo
4944
  };
4945
4946
24.8k
LaneBitmask HexagonGenRegisterInfo::composeSubRegIndexLaneMaskImpl(unsigned IdxA, LaneBitmask LaneMask) const {
4947
24.8k
  --IdxA; assert(IdxA < 11 && "Subregister index out of bounds");
4948
0
  LaneBitmask Result;
4949
24.8k
  for (const MaskRolOp *Ops =
4950
24.8k
       &LaneMaskComposeSequences[CompositeSequences[IdxA]];
4951
49.7k
       Ops->Mask.any(); ++Ops) {
4952
24.8k
    LaneBitmask::Type M = LaneMask.getAsInteger() & Ops->Mask.getAsInteger();
4953
24.8k
    if (unsigned S = Ops->RotateLeft)
4954
11.5k
      Result |= LaneBitmask((M << S) | (M >> (LaneBitmask::BitWidth - S)));
4955
13.2k
    else
4956
13.2k
      Result |= LaneBitmask(M);
4957
24.8k
  }
4958
24.8k
  return Result;
4959
24.8k
}
4960
4961
64.2k
LaneBitmask HexagonGenRegisterInfo::reverseComposeSubRegIndexLaneMaskImpl(unsigned IdxA,  LaneBitmask LaneMask) const {
4962
64.2k
  LaneMask &= getSubRegIndexLaneMask(IdxA);
4963
64.2k
  --IdxA; assert(IdxA < 11 && "Subregister index out of bounds");
4964
0
  LaneBitmask Result;
4965
64.2k
  for (const MaskRolOp *Ops =
4966
64.2k
       &LaneMaskComposeSequences[CompositeSequences[IdxA]];
4967
128k
       Ops->Mask.any(); ++Ops) {
4968
64.2k
    LaneBitmask::Type M = LaneMask.getAsInteger();
4969
64.2k
    if (unsigned S = Ops->RotateLeft)
4970
34.2k
      Result |= LaneBitmask((M >> S) | (M << (LaneBitmask::BitWidth - S)));
4971
29.9k
    else
4972
29.9k
      Result |= LaneBitmask(M);
4973
64.2k
  }
4974
64.2k
  return Result;
4975
64.2k
}
4976
4977
20.5k
const TargetRegisterClass *HexagonGenRegisterInfo::getSubClassWithSubReg(const TargetRegisterClass *RC, unsigned Idx) const {
4978
20.5k
  static const uint8_t Table[29][11] = {
4979
20.5k
    { // UsrBits
4980
20.5k
      0,  // isub_hi
4981
20.5k
      0,  // isub_lo
4982
20.5k
      0,  // subreg_overflow
4983
20.5k
      0,  // vsub_fake
4984
20.5k
      0,  // vsub_hi
4985
20.5k
      0,  // vsub_lo
4986
20.5k
      0,  // wsub_hi
4987
20.5k
      0,  // wsub_lo
4988
20.5k
      0,  // wsub_hi_then_vsub_fake
4989
20.5k
      0,  // wsub_hi_then_vsub_hi
4990
20.5k
      0,  // wsub_hi_then_vsub_lo
4991
20.5k
    },
4992
20.5k
    { // SysRegs
4993
20.5k
      0,  // isub_hi
4994
20.5k
      0,  // isub_lo
4995
20.5k
      0,  // subreg_overflow
4996
20.5k
      0,  // vsub_fake
4997
20.5k
      0,  // vsub_hi
4998
20.5k
      0,  // vsub_lo
4999
20.5k
      0,  // wsub_hi
5000
20.5k
      0,  // wsub_lo
5001
20.5k
      0,  // wsub_hi_then_vsub_fake
5002
20.5k
      0,  // wsub_hi_then_vsub_hi
5003
20.5k
      0,  // wsub_hi_then_vsub_lo
5004
20.5k
    },
5005
20.5k
    { // GuestRegs
5006
20.5k
      0,  // isub_hi
5007
20.5k
      0,  // isub_lo
5008
20.5k
      0,  // subreg_overflow
5009
20.5k
      0,  // vsub_fake
5010
20.5k
      0,  // vsub_hi
5011
20.5k
      0,  // vsub_lo
5012
20.5k
      0,  // wsub_hi
5013
20.5k
      0,  // wsub_lo
5014
20.5k
      0,  // wsub_hi_then_vsub_fake
5015
20.5k
      0,  // wsub_hi_then_vsub_hi
5016
20.5k
      0,  // wsub_hi_then_vsub_lo
5017
20.5k
    },
5018
20.5k
    { // IntRegs
5019
20.5k
      0,  // isub_hi
5020
20.5k
      0,  // isub_lo
5021
20.5k
      0,  // subreg_overflow
5022
20.5k
      0,  // vsub_fake
5023
20.5k
      0,  // vsub_hi
5024
20.5k
      0,  // vsub_lo
5025
20.5k
      0,  // wsub_hi
5026
20.5k
      0,  // wsub_lo
5027
20.5k
      0,  // wsub_hi_then_vsub_fake
5028
20.5k
      0,  // wsub_hi_then_vsub_hi
5029
20.5k
      0,  // wsub_hi_then_vsub_lo
5030
20.5k
    },
5031
20.5k
    { // CtrRegs
5032
20.5k
      0,  // isub_hi
5033
20.5k
      0,  // isub_lo
5034
20.5k
      13, // subreg_overflow -> CtrRegs_with_subreg_overflow
5035
20.5k
      0,  // vsub_fake
5036
20.5k
      0,  // vsub_hi
5037
20.5k
      0,  // vsub_lo
5038
20.5k
      0,  // wsub_hi
5039
20.5k
      0,  // wsub_lo
5040
20.5k
      0,  // wsub_hi_then_vsub_fake
5041
20.5k
      0,  // wsub_hi_then_vsub_hi
5042
20.5k
      0,  // wsub_hi_then_vsub_lo
5043
20.5k
    },
5044
20.5k
    { // GeneralSubRegs
5045
20.5k
      0,  // isub_hi
5046
20.5k
      0,  // isub_lo
5047
20.5k
      0,  // subreg_overflow
5048
20.5k
      0,  // vsub_fake
5049
20.5k
      0,  // vsub_hi
5050
20.5k
      0,  // vsub_lo
5051
20.5k
      0,  // wsub_hi
5052
20.5k
      0,  // wsub_lo
5053
20.5k
      0,  // wsub_hi_then_vsub_fake
5054
20.5k
      0,  // wsub_hi_then_vsub_hi
5055
20.5k
      0,  // wsub_hi_then_vsub_lo
5056
20.5k
    },
5057
20.5k
    { // V62Regs
5058
20.5k
      11, // isub_hi -> V62Regs_with_isub_hi
5059
20.5k
      11, // isub_lo -> V62Regs_with_isub_hi
5060
20.5k
      0,  // subreg_overflow
5061
20.5k
      0,  // vsub_fake
5062
20.5k
      0,  // vsub_hi
5063
20.5k
      0,  // vsub_lo
5064
20.5k
      0,  // wsub_hi
5065
20.5k
      0,  // wsub_lo
5066
20.5k
      0,  // wsub_hi_then_vsub_fake
5067
20.5k
      0,  // wsub_hi_then_vsub_hi
5068
20.5k
      0,  // wsub_hi_then_vsub_lo
5069
20.5k
    },
5070
20.5k
    { // IntRegsLow8
5071
20.5k
      0,  // isub_hi
5072
20.5k
      0,  // isub_lo
5073
20.5k
      0,  // subreg_overflow
5074
20.5k
      0,  // vsub_fake
5075
20.5k
      0,  // vsub_hi
5076
20.5k
      0,  // vsub_lo
5077
20.5k
      0,  // wsub_hi
5078
20.5k
      0,  // wsub_lo
5079
20.5k
      0,  // wsub_hi_then_vsub_fake
5080
20.5k
      0,  // wsub_hi_then_vsub_hi
5081
20.5k
      0,  // wsub_hi_then_vsub_lo
5082
20.5k
    },
5083
20.5k
    { // CtrRegs_and_V62Regs
5084
20.5k
      0,  // isub_hi
5085
20.5k
      0,  // isub_lo
5086
20.5k
      0,  // subreg_overflow
5087
20.5k
      0,  // vsub_fake
5088
20.5k
      0,  // vsub_hi
5089
20.5k
      0,  // vsub_lo
5090
20.5k
      0,  // wsub_hi
5091
20.5k
      0,  // wsub_lo
5092
20.5k
      0,  // wsub_hi_then_vsub_fake
5093
20.5k
      0,  // wsub_hi_then_vsub_hi
5094
20.5k
      0,  // wsub_hi_then_vsub_lo
5095
20.5k
    },
5096
20.5k
    { // PredRegs
5097
20.5k
      0,  // isub_hi
5098
20.5k
      0,  // isub_lo
5099
20.5k
      0,  // subreg_overflow
5100
20.5k
      0,  // vsub_fake
5101
20.5k
      0,  // vsub_hi
5102
20.5k
      0,  // vsub_lo
5103
20.5k
      0,  // wsub_hi
5104
20.5k
      0,  // wsub_lo
5105
20.5k
      0,  // wsub_hi_then_vsub_fake
5106
20.5k
      0,  // wsub_hi_then_vsub_hi
5107
20.5k
      0,  // wsub_hi_then_vsub_lo
5108
20.5k
    },
5109
20.5k
    { // V62Regs_with_isub_hi
5110
20.5k
      11, // isub_hi -> V62Regs_with_isub_hi
5111
20.5k
      11, // isub_lo -> V62Regs_with_isub_hi
5112
20.5k
      0,  // subreg_overflow
5113
20.5k
      0,  // vsub_fake
5114
20.5k
      0,  // vsub_hi
5115
20.5k
      0,  // vsub_lo
5116
20.5k
      0,  // wsub_hi
5117
20.5k
      0,  // wsub_lo
5118
20.5k
      0,  // wsub_hi_then_vsub_fake
5119
20.5k
      0,  // wsub_hi_then_vsub_hi
5120
20.5k
      0,  // wsub_hi_then_vsub_lo
5121
20.5k
    },
5122
20.5k
    { // ModRegs
5123
20.5k
      0,  // isub_hi
5124
20.5k
      0,  // isub_lo
5125
20.5k
      0,  // subreg_overflow
5126
20.5k
      0,  // vsub_fake
5127
20.5k
      0,  // vsub_hi
5128
20.5k
      0,  // vsub_lo
5129
20.5k
      0,  // wsub_hi
5130
20.5k
      0,  // wsub_lo
5131
20.5k
      0,  // wsub_hi_then_vsub_fake
5132
20.5k
      0,  // wsub_hi_then_vsub_hi
5133
20.5k
      0,  // wsub_hi_then_vsub_lo
5134
20.5k
    },
5135
20.5k
    { // CtrRegs_with_subreg_overflow
5136
20.5k
      0,  // isub_hi
5137
20.5k
      0,  // isub_lo
5138
20.5k
      13, // subreg_overflow -> CtrRegs_with_subreg_overflow
5139
20.5k
      0,  // vsub_fake
5140
20.5k
      0,  // vsub_hi
5141
20.5k
      0,  // vsub_lo
5142
20.5k
      0,  // wsub_hi
5143
20.5k
      0,  // wsub_lo
5144
20.5k
      0,  // wsub_hi_then_vsub_fake
5145
20.5k
      0,  // wsub_hi_then_vsub_hi
5146
20.5k
      0,  // wsub_hi_then_vsub_lo
5147
20.5k
    },
5148
20.5k
    { // V65Regs
5149
20.5k
      0,  // isub_hi
5150
20.5k
      0,  // isub_lo
5151
20.5k
      0,  // subreg_overflow
5152
20.5k
      0,  // vsub_fake
5153
20.5k
      0,  // vsub_hi
5154
20.5k
      0,  // vsub_lo
5155
20.5k
      0,  // wsub_hi
5156
20.5k
      0,  // wsub_lo
5157
20.5k
      0,  // wsub_hi_then_vsub_fake
5158
20.5k
      0,  // wsub_hi_then_vsub_hi
5159
20.5k
      0,  // wsub_hi_then_vsub_lo
5160
20.5k
    },
5161
20.5k
    { // SysRegs64
5162
20.5k
      15, // isub_hi -> SysRegs64
5163
20.5k
      15, // isub_lo -> SysRegs64
5164
20.5k
      0,  // subreg_overflow
5165
20.5k
      0,  // vsub_fake
5166
20.5k
      0,  // vsub_hi
5167
20.5k
      0,  // vsub_lo
5168
20.5k
      0,  // wsub_hi
5169
20.5k
      0,  // wsub_lo
5170
20.5k
      0,  // wsub_hi_then_vsub_fake
5171
20.5k
      0,  // wsub_hi_then_vsub_hi
5172
20.5k
      0,  // wsub_hi_then_vsub_lo
5173
20.5k
    },
5174
20.5k
    { // DoubleRegs
5175
20.5k
      16, // isub_hi -> DoubleRegs
5176
20.5k
      16, // isub_lo -> DoubleRegs
5177
20.5k
      0,  // subreg_overflow
5178
20.5k
      0,  // vsub_fake
5179
20.5k
      0,  // vsub_hi
5180
20.5k
      0,  // vsub_lo
5181
20.5k
      0,  // wsub_hi
5182
20.5k
      0,  // wsub_lo
5183
20.5k
      0,  // wsub_hi_then_vsub_fake
5184
20.5k
      0,  // wsub_hi_then_vsub_hi
5185
20.5k
      0,  // wsub_hi_then_vsub_lo
5186
20.5k
    },
5187
20.5k
    { // GuestRegs64
5188
20.5k
      17, // isub_hi -> GuestRegs64
5189
20.5k
      17, // isub_lo -> GuestRegs64
5190
20.5k
      0,  // subreg_overflow
5191
20.5k
      0,  // vsub_fake
5192
20.5k
      0,  // vsub_hi
5193
20.5k
      0,  // vsub_lo
5194
20.5k
      0,  // wsub_hi
5195
20.5k
      0,  // wsub_lo
5196
20.5k
      0,  // wsub_hi_then_vsub_fake
5197
20.5k
      0,  // wsub_hi_then_vsub_hi
5198
20.5k
      0,  // wsub_hi_then_vsub_lo
5199
20.5k
    },
5200
20.5k
    { // VectRegRev
5201
20.5k
      0,  // isub_hi
5202
20.5k
      0,  // isub_lo
5203
20.5k
      0,  // subreg_overflow
5204
20.5k
      0,  // vsub_fake
5205
20.5k
      18, // vsub_hi -> VectRegRev
5206
20.5k
      18, // vsub_lo -> VectRegRev
5207
20.5k
      0,  // wsub_hi
5208
20.5k
      0,  // wsub_lo
5209
20.5k
      0,  // wsub_hi_then_vsub_fake
5210
20.5k
      0,  // wsub_hi_then_vsub_hi
5211
20.5k
      0,  // wsub_hi_then_vsub_lo
5212
20.5k
    },
5213
20.5k
    { // CtrRegs64
5214
20.5k
      19, // isub_hi -> CtrRegs64
5215
20.5k
      19, // isub_lo -> CtrRegs64
5216
20.5k
      0,  // subreg_overflow
5217
20.5k
      0,  // vsub_fake
5218
20.5k
      0,  // vsub_hi
5219
20.5k
      0,  // vsub_lo
5220
20.5k
      0,  // wsub_hi
5221
20.5k
      0,  // wsub_lo
5222
20.5k
      0,  // wsub_hi_then_vsub_fake
5223
20.5k
      0,  // wsub_hi_then_vsub_hi
5224
20.5k
      0,  // wsub_hi_then_vsub_lo
5225
20.5k
    },
5226
20.5k
    { // GeneralDoubleLow8Regs
5227
20.5k
      20, // isub_hi -> GeneralDoubleLow8Regs
5228
20.5k
      20, // isub_lo -> GeneralDoubleLow8Regs
5229
20.5k
      0,  // subreg_overflow
5230
20.5k
      0,  // vsub_fake
5231
20.5k
      0,  // vsub_hi
5232
20.5k
      0,  // vsub_lo
5233
20.5k
      0,  // wsub_hi
5234
20.5k
      0,  // wsub_lo
5235
20.5k
      0,  // wsub_hi_then_vsub_fake
5236
20.5k
      0,  // wsub_hi_then_vsub_hi
5237
20.5k
      0,  // wsub_hi_then_vsub_lo
5238
20.5k
    },
5239
20.5k
    { // DoubleRegs_with_isub_hi_in_IntRegsLow8
5240
20.5k
      21, // isub_hi -> DoubleRegs_with_isub_hi_in_IntRegsLow8
5241
20.5k
      21, // isub_lo -> DoubleRegs_with_isub_hi_in_IntRegsLow8
5242
20.5k
      0,  // subreg_overflow
5243
20.5k
      0,  // vsub_fake
5244
20.5k
      0,  // vsub_hi
5245
20.5k
      0,  // vsub_lo
5246
20.5k
      0,  // wsub_hi
5247
20.5k
      0,  // wsub_lo
5248
20.5k
      0,  // wsub_hi_then_vsub_fake
5249
20.5k
      0,  // wsub_hi_then_vsub_hi
5250
20.5k
      0,  // wsub_hi_then_vsub_lo
5251
20.5k
    },
5252
20.5k
    { // CtrRegs64_and_V62Regs
5253
20.5k
      22, // isub_hi -> CtrRegs64_and_V62Regs
5254
20.5k
      22, // isub_lo -> CtrRegs64_and_V62Regs
5255
20.5k
      0,  // subreg_overflow
5256
20.5k
      0,  // vsub_fake
5257
20.5k
      0,  // vsub_hi
5258
20.5k
      0,  // vsub_lo
5259
20.5k
      0,  // wsub_hi
5260
20.5k
      0,  // wsub_lo
5261
20.5k
      0,  // wsub_hi_then_vsub_fake
5262
20.5k
      0,  // wsub_hi_then_vsub_hi
5263
20.5k
      0,  // wsub_hi_then_vsub_lo
5264
20.5k
    },
5265
20.5k
    { // CtrRegs64_with_isub_hi_in_ModRegs
5266
20.5k
      23, // isub_hi -> CtrRegs64_with_isub_hi_in_ModRegs
5267
20.5k
      23, // isub_lo -> CtrRegs64_with_isub_hi_in_ModRegs
5268
20.5k
      0,  // subreg_overflow
5269
20.5k
      0,  // vsub_fake
5270
20.5k
      0,  // vsub_hi
5271
20.5k
      0,  // vsub_lo
5272
20.5k
      0,  // wsub_hi
5273
20.5k
      0,  // wsub_lo
5274
20.5k
      0,  // wsub_hi_then_vsub_fake
5275
20.5k
      0,  // wsub_hi_then_vsub_hi
5276
20.5k
      0,  // wsub_hi_then_vsub_lo
5277
20.5k
    },
5278
20.5k
    { // HvxQR
5279
20.5k
      0,  // isub_hi
5280
20.5k
      0,  // isub_lo
5281
20.5k
      0,  // subreg_overflow
5282
20.5k
      0,  // vsub_fake
5283
20.5k
      0,  // vsub_hi
5284
20.5k
      0,  // vsub_lo
5285
20.5k
      0,  // wsub_hi
5286
20.5k
      0,  // wsub_lo
5287
20.5k
      0,  // wsub_hi_then_vsub_fake
5288
20.5k
      0,  // wsub_hi_then_vsub_hi
5289
20.5k
      0,  // wsub_hi_then_vsub_lo
5290
20.5k
    },
5291
20.5k
    { // HvxVR
5292
20.5k
      0,  // isub_hi
5293
20.5k
      0,  // isub_lo
5294
20.5k
      0,  // subreg_overflow
5295
20.5k
      0,  // vsub_fake
5296
20.5k
      0,  // vsub_hi
5297
20.5k
      0,  // vsub_lo
5298
20.5k
      0,  // wsub_hi
5299
20.5k
      0,  // wsub_lo
5300
20.5k
      0,  // wsub_hi_then_vsub_fake
5301
20.5k
      0,  // wsub_hi_then_vsub_hi
5302
20.5k
      0,  // wsub_hi_then_vsub_lo
5303
20.5k
    },
5304
20.5k
    { // HvxVR_and_V65Regs
5305
20.5k
      0,  // isub_hi
5306
20.5k
      0,  // isub_lo
5307
20.5k
      0,  // subreg_overflow
5308
20.5k
      0,  // vsub_fake
5309
20.5k
      0,  // vsub_hi
5310
20.5k
      0,  // vsub_lo
5311
20.5k
      0,  // wsub_hi
5312
20.5k
      0,  // wsub_lo
5313
20.5k
      0,  // wsub_hi_then_vsub_fake
5314
20.5k
      0,  // wsub_hi_then_vsub_hi
5315
20.5k
      0,  // wsub_hi_then_vsub_lo
5316
20.5k
    },
5317
20.5k
    { // HvxWR
5318
20.5k
      0,  // isub_hi
5319
20.5k
      0,  // isub_lo
5320
20.5k
      0,  // subreg_overflow
5321
20.5k
      0,  // vsub_fake
5322
20.5k
      27, // vsub_hi -> HvxWR
5323
20.5k
      27, // vsub_lo -> HvxWR
5324
20.5k
      0,  // wsub_hi
5325
20.5k
      0,  // wsub_lo
5326
20.5k
      0,  // wsub_hi_then_vsub_fake
5327
20.5k
      0,  // wsub_hi_then_vsub_hi
5328
20.5k
      0,  // wsub_hi_then_vsub_lo
5329
20.5k
    },
5330
20.5k
    { // HvxWR_and_VectRegRev
5331
20.5k
      0,  // isub_hi
5332
20.5k
      0,  // isub_lo
5333
20.5k
      0,  // subreg_overflow
5334
20.5k
      0,  // vsub_fake
5335
20.5k
      28, // vsub_hi -> HvxWR_and_VectRegRev
5336
20.5k
      28, // vsub_lo -> HvxWR_and_VectRegRev
5337
20.5k
      0,  // wsub_hi
5338
20.5k
      0,  // wsub_lo
5339
20.5k
      0,  // wsub_hi_then_vsub_fake
5340
20.5k
      0,  // wsub_hi_then_vsub_hi
5341
20.5k
      0,  // wsub_hi_then_vsub_lo
5342
20.5k
    },
5343
20.5k
    { // HvxVQR
5344
20.5k
      0,  // isub_hi
5345
20.5k
      0,  // isub_lo
5346
20.5k
      0,  // subreg_overflow
5347
20.5k
      0,  // vsub_fake
5348
20.5k
      29, // vsub_hi -> HvxVQR
5349
20.5k
      29, // vsub_lo -> HvxVQR
5350
20.5k
      29, // wsub_hi -> HvxVQR
5351
20.5k
      29, // wsub_lo -> HvxVQR
5352
20.5k
      0,  // wsub_hi_then_vsub_fake
5353
20.5k
      29, // wsub_hi_then_vsub_hi -> HvxVQR
5354
20.5k
      29, // wsub_hi_then_vsub_lo -> HvxVQR
5355
20.5k
    },
5356
20.5k
  };
5357
20.5k
  assert(RC && "Missing regclass");
5358
20.5k
  if (!Idx) return RC;
5359
20.5k
  --Idx;
5360
20.5k
  assert(Idx < 11 && "Bad subreg");
5361
0
  unsigned TV = Table[RC->getID()][Idx];
5362
20.5k
  return TV ? getRegClass(TV - 1) : nullptr;
5363
20.5k
}
5364
5365
0
const TargetRegisterClass *HexagonGenRegisterInfo::getSubRegisterClass(const TargetRegisterClass *RC, unsigned Idx) const {
5366
0
  static const uint8_t Table[29][11] = {
5367
0
    { // UsrBits
5368
0
      0,  // UsrBits:isub_hi
5369
0
      0,  // UsrBits:isub_lo
5370
0
      0,  // UsrBits:subreg_overflow
5371
0
      0,  // UsrBits:vsub_fake
5372
0
      0,  // UsrBits:vsub_hi
5373
0
      0,  // UsrBits:vsub_lo
5374
0
      0,  // UsrBits:wsub_hi
5375
0
      0,  // UsrBits:wsub_lo
5376
0
      0,  // UsrBits:wsub_hi_then_vsub_fake
5377
0
      0,  // UsrBits:wsub_hi_then_vsub_hi
5378
0
      0,  // UsrBits:wsub_hi_then_vsub_lo
5379
0
    },
5380
0
    { // SysRegs
5381
0
      0,  // SysRegs:isub_hi
5382
0
      0,  // SysRegs:isub_lo
5383
0
      0,  // SysRegs:subreg_overflow
5384
0
      0,  // SysRegs:vsub_fake
5385
0
      0,  // SysRegs:vsub_hi
5386
0
      0,  // SysRegs:vsub_lo
5387
0
      0,  // SysRegs:wsub_hi
5388
0
      0,  // SysRegs:wsub_lo
5389
0
      0,  // SysRegs:wsub_hi_then_vsub_fake
5390
0
      0,  // SysRegs:wsub_hi_then_vsub_hi
5391
0
      0,  // SysRegs:wsub_hi_then_vsub_lo
5392
0
    },
5393
0
    { // GuestRegs
5394
0
      0,  // GuestRegs:isub_hi
5395
0
      0,  // GuestRegs:isub_lo
5396
0
      0,  // GuestRegs:subreg_overflow
5397
0
      0,  // GuestRegs:vsub_fake
5398
0
      0,  // GuestRegs:vsub_hi
5399
0
      0,  // GuestRegs:vsub_lo
5400
0
      0,  // GuestRegs:wsub_hi
5401
0
      0,  // GuestRegs:wsub_lo
5402
0
      0,  // GuestRegs:wsub_hi_then_vsub_fake
5403
0
      0,  // GuestRegs:wsub_hi_then_vsub_hi
5404
0
      0,  // GuestRegs:wsub_hi_then_vsub_lo
5405
0
    },
5406
0
    { // IntRegs
5407
0
      0,  // IntRegs:isub_hi
5408
0
      0,  // IntRegs:isub_lo
5409
0
      0,  // IntRegs:subreg_overflow
5410
0
      0,  // IntRegs:vsub_fake
5411
0
      0,  // IntRegs:vsub_hi
5412
0
      0,  // IntRegs:vsub_lo
5413
0
      0,  // IntRegs:wsub_hi
5414
0
      0,  // IntRegs:wsub_lo
5415
0
      0,  // IntRegs:wsub_hi_then_vsub_fake
5416
0
      0,  // IntRegs:wsub_hi_then_vsub_hi
5417
0
      0,  // IntRegs:wsub_hi_then_vsub_lo
5418
0
    },
5419
0
    { // CtrRegs
5420
0
      0,  // CtrRegs:isub_hi
5421
0
      0,  // CtrRegs:isub_lo
5422
0
      1,  // CtrRegs:subreg_overflow -> UsrBits
5423
0
      0,  // CtrRegs:vsub_fake
5424
0
      0,  // CtrRegs:vsub_hi
5425
0
      0,  // CtrRegs:vsub_lo
5426
0
      0,  // CtrRegs:wsub_hi
5427
0
      0,  // CtrRegs:wsub_lo
5428
0
      0,  // CtrRegs:wsub_hi_then_vsub_fake
5429
0
      0,  // CtrRegs:wsub_hi_then_vsub_hi
5430
0
      0,  // CtrRegs:wsub_hi_then_vsub_lo
5431
0
    },
5432
0
    { // GeneralSubRegs
5433
0
      0,  // GeneralSubRegs:isub_hi
5434
0
      0,  // GeneralSubRegs:isub_lo
5435
0
      0,  // GeneralSubRegs:subreg_overflow
5436
0
      0,  // GeneralSubRegs:vsub_fake
5437
0
      0,  // GeneralSubRegs:vsub_hi
5438
0
      0,  // GeneralSubRegs:vsub_lo
5439
0
      0,  // GeneralSubRegs:wsub_hi
5440
0
      0,  // GeneralSubRegs:wsub_lo
5441
0
      0,  // GeneralSubRegs:wsub_hi_then_vsub_fake
5442
0
      0,  // GeneralSubRegs:wsub_hi_then_vsub_hi
5443
0
      0,  // GeneralSubRegs:wsub_hi_then_vsub_lo
5444
0
    },
5445
0
    { // V62Regs
5446
0
      9,  // V62Regs:isub_hi -> CtrRegs_and_V62Regs
5447
0
      9,  // V62Regs:isub_lo -> CtrRegs_and_V62Regs
5448
0
      0,  // V62Regs:subreg_overflow
5449
0
      0,  // V62Regs:vsub_fake
5450
0
      0,  // V62Regs:vsub_hi
5451
0
      0,  // V62Regs:vsub_lo
5452
0
      0,  // V62Regs:wsub_hi
5453
0
      0,  // V62Regs:wsub_lo
5454
0
      0,  // V62Regs:wsub_hi_then_vsub_fake
5455
0
      0,  // V62Regs:wsub_hi_then_vsub_hi
5456
0
      0,  // V62Regs:wsub_hi_then_vsub_lo
5457
0
    },
5458
0
    { // IntRegsLow8
5459
0
      0,  // IntRegsLow8:isub_hi
5460
0
      0,  // IntRegsLow8:isub_lo
5461
0
      0,  // IntRegsLow8:subreg_overflow
5462
0
      0,  // IntRegsLow8:vsub_fake
5463
0
      0,  // IntRegsLow8:vsub_hi
5464
0
      0,  // IntRegsLow8:vsub_lo
5465
0
      0,  // IntRegsLow8:wsub_hi
5466
0
      0,  // IntRegsLow8:wsub_lo
5467
0
      0,  // IntRegsLow8:wsub_hi_then_vsub_fake
5468
0
      0,  // IntRegsLow8:wsub_hi_then_vsub_hi
5469
0
      0,  // IntRegsLow8:wsub_hi_then_vsub_lo
5470
0
    },
5471
0
    { // CtrRegs_and_V62Regs
5472
0
      0,  // CtrRegs_and_V62Regs:isub_hi
5473
0
      0,  // CtrRegs_and_V62Regs:isub_lo
5474
0
      0,  // CtrRegs_and_V62Regs:subreg_overflow
5475
0
      0,  // CtrRegs_and_V62Regs:vsub_fake
5476
0
      0,  // CtrRegs_and_V62Regs:vsub_hi
5477
0
      0,  // CtrRegs_and_V62Regs:vsub_lo
5478
0
      0,  // CtrRegs_and_V62Regs:wsub_hi
5479
0
      0,  // CtrRegs_and_V62Regs:wsub_lo
5480
0
      0,  // CtrRegs_and_V62Regs:wsub_hi_then_vsub_fake
5481
0
      0,  // CtrRegs_and_V62Regs:wsub_hi_then_vsub_hi
5482
0
      0,  // CtrRegs_and_V62Regs:wsub_hi_then_vsub_lo
5483
0
    },
5484
0
    { // PredRegs
5485
0
      0,  // PredRegs:isub_hi
5486
0
      0,  // PredRegs:isub_lo
5487
0
      0,  // PredRegs:subreg_overflow
5488
0
      0,  // PredRegs:vsub_fake
5489
0
      0,  // PredRegs:vsub_hi
5490
0
      0,  // PredRegs:vsub_lo
5491
0
      0,  // PredRegs:wsub_hi
5492
0
      0,  // PredRegs:wsub_lo
5493
0
      0,  // PredRegs:wsub_hi_then_vsub_fake
5494
0
      0,  // PredRegs:wsub_hi_then_vsub_hi
5495
0
      0,  // PredRegs:wsub_hi_then_vsub_lo
5496
0
    },
5497
0
    { // V62Regs_with_isub_hi
5498
0
      9,  // V62Regs_with_isub_hi:isub_hi -> CtrRegs_and_V62Regs
5499
0
      9,  // V62Regs_with_isub_hi:isub_lo -> CtrRegs_and_V62Regs
5500
0
      0,  // V62Regs_with_isub_hi:subreg_overflow
5501
0
      0,  // V62Regs_with_isub_hi:vsub_fake
5502
0
      0,  // V62Regs_with_isub_hi:vsub_hi
5503
0
      0,  // V62Regs_with_isub_hi:vsub_lo
5504
0
      0,  // V62Regs_with_isub_hi:wsub_hi
5505
0
      0,  // V62Regs_with_isub_hi:wsub_lo
5506
0
      0,  // V62Regs_with_isub_hi:wsub_hi_then_vsub_fake
5507
0
      0,  // V62Regs_with_isub_hi:wsub_hi_then_vsub_hi
5508
0
      0,  // V62Regs_with_isub_hi:wsub_hi_then_vsub_lo
5509
0
    },
5510
0
    { // ModRegs
5511
0
      0,  // ModRegs:isub_hi
5512
0
      0,  // ModRegs:isub_lo
5513
0
      0,  // ModRegs:subreg_overflow
5514
0
      0,  // ModRegs:vsub_fake
5515
0
      0,  // ModRegs:vsub_hi
5516
0
      0,  // ModRegs:vsub_lo
5517
0
      0,  // ModRegs:wsub_hi
5518
0
      0,  // ModRegs:wsub_lo
5519
0
      0,  // ModRegs:wsub_hi_then_vsub_fake
5520
0
      0,  // ModRegs:wsub_hi_then_vsub_hi
5521
0
      0,  // ModRegs:wsub_hi_then_vsub_lo
5522
0
    },
5523
0
    { // CtrRegs_with_subreg_overflow
5524
0
      0,  // CtrRegs_with_subreg_overflow:isub_hi
5525
0
      0,  // CtrRegs_with_subreg_overflow:isub_lo
5526
0
      1,  // CtrRegs_with_subreg_overflow:subreg_overflow -> UsrBits
5527
0
      0,  // CtrRegs_with_subreg_overflow:vsub_fake
5528
0
      0,  // CtrRegs_with_subreg_overflow:vsub_hi
5529
0
      0,  // CtrRegs_with_subreg_overflow:vsub_lo
5530
0
      0,  // CtrRegs_with_subreg_overflow:wsub_hi
5531
0
      0,  // CtrRegs_with_subreg_overflow:wsub_lo
5532
0
      0,  // CtrRegs_with_subreg_overflow:wsub_hi_then_vsub_fake
5533
0
      0,  // CtrRegs_with_subreg_overflow:wsub_hi_then_vsub_hi
5534
0
      0,  // CtrRegs_with_subreg_overflow:wsub_hi_then_vsub_lo
5535
0
    },
5536
0
    { // V65Regs
5537
0
      0,  // V65Regs:isub_hi
5538
0
      0,  // V65Regs:isub_lo
5539
0
      0,  // V65Regs:subreg_overflow
5540
0
      0,  // V65Regs:vsub_fake
5541
0
      0,  // V65Regs:vsub_hi
5542
0
      0,  // V65Regs:vsub_lo
5543
0
      0,  // V65Regs:wsub_hi
5544
0
      0,  // V65Regs:wsub_lo
5545
0
      0,  // V65Regs:wsub_hi_then_vsub_fake
5546
0
      0,  // V65Regs:wsub_hi_then_vsub_hi
5547
0
      0,  // V65Regs:wsub_hi_then_vsub_lo
5548
0
    },
5549
0
    { // SysRegs64
5550
0
      2,  // SysRegs64:isub_hi -> SysRegs
5551
0
      2,  // SysRegs64:isub_lo -> SysRegs
5552
0
      0,  // SysRegs64:subreg_overflow
5553
0
      0,  // SysRegs64:vsub_fake
5554
0
      0,  // SysRegs64:vsub_hi
5555
0
      0,  // SysRegs64:vsub_lo
5556
0
      0,  // SysRegs64:wsub_hi
5557
0
      0,  // SysRegs64:wsub_lo
5558
0
      0,  // SysRegs64:wsub_hi_then_vsub_fake
5559
0
      0,  // SysRegs64:wsub_hi_then_vsub_hi
5560
0
      0,  // SysRegs64:wsub_hi_then_vsub_lo
5561
0
    },
5562
0
    { // DoubleRegs
5563
0
      4,  // DoubleRegs:isub_hi -> IntRegs
5564
0
      4,  // DoubleRegs:isub_lo -> IntRegs
5565
0
      0,  // DoubleRegs:subreg_overflow
5566
0
      0,  // DoubleRegs:vsub_fake
5567
0
      0,  // DoubleRegs:vsub_hi
5568
0
      0,  // DoubleRegs:vsub_lo
5569
0
      0,  // DoubleRegs:wsub_hi
5570
0
      0,  // DoubleRegs:wsub_lo
5571
0
      0,  // DoubleRegs:wsub_hi_then_vsub_fake
5572
0
      0,  // DoubleRegs:wsub_hi_then_vsub_hi
5573
0
      0,  // DoubleRegs:wsub_hi_then_vsub_lo
5574
0
    },
5575
0
    { // GuestRegs64
5576
0
      3,  // GuestRegs64:isub_hi -> GuestRegs
5577
0
      3,  // GuestRegs64:isub_lo -> GuestRegs
5578
0
      0,  // GuestRegs64:subreg_overflow
5579
0
      0,  // GuestRegs64:vsub_fake
5580
0
      0,  // GuestRegs64:vsub_hi
5581
0
      0,  // GuestRegs64:vsub_lo
5582
0
      0,  // GuestRegs64:wsub_hi
5583
0
      0,  // GuestRegs64:wsub_lo
5584
0
      0,  // GuestRegs64:wsub_hi_then_vsub_fake
5585
0
      0,  // GuestRegs64:wsub_hi_then_vsub_hi
5586
0
      0,  // GuestRegs64:wsub_hi_then_vsub_lo
5587
0
    },
5588
0
    { // VectRegRev
5589
0
      0,  // VectRegRev:isub_hi
5590
0
      0,  // VectRegRev:isub_lo
5591
0
      0,  // VectRegRev:subreg_overflow
5592
0
      0,  // VectRegRev:vsub_fake
5593
0
      25, // VectRegRev:vsub_hi -> HvxVR
5594
0
      25, // VectRegRev:vsub_lo -> HvxVR
5595
0
      0,  // VectRegRev:wsub_hi
5596
0
      0,  // VectRegRev:wsub_lo
5597
0
      0,  // VectRegRev:wsub_hi_then_vsub_fake
5598
0
      0,  // VectRegRev:wsub_hi_then_vsub_hi
5599
0
      0,  // VectRegRev:wsub_hi_then_vsub_lo
5600
0
    },
5601
0
    { // CtrRegs64
5602
0
      5,  // CtrRegs64:isub_hi -> CtrRegs
5603
0
      5,  // CtrRegs64:isub_lo -> CtrRegs
5604
0
      0,  // CtrRegs64:subreg_overflow
5605
0
      0,  // CtrRegs64:vsub_fake
5606
0
      0,  // CtrRegs64:vsub_hi
5607
0
      0,  // CtrRegs64:vsub_lo
5608
0
      0,  // CtrRegs64:wsub_hi
5609
0
      0,  // CtrRegs64:wsub_lo
5610
0
      0,  // CtrRegs64:wsub_hi_then_vsub_fake
5611
0
      0,  // CtrRegs64:wsub_hi_then_vsub_hi
5612
0
      0,  // CtrRegs64:wsub_hi_then_vsub_lo
5613
0
    },
5614
0
    { // GeneralDoubleLow8Regs
5615
0
      6,  // GeneralDoubleLow8Regs:isub_hi -> GeneralSubRegs
5616
0
      6,  // GeneralDoubleLow8Regs:isub_lo -> GeneralSubRegs
5617
0
      0,  // GeneralDoubleLow8Regs:subreg_overflow
5618
0
      0,  // GeneralDoubleLow8Regs:vsub_fake
5619
0
      0,  // GeneralDoubleLow8Regs:vsub_hi
5620
0
      0,  // GeneralDoubleLow8Regs:vsub_lo
5621
0
      0,  // GeneralDoubleLow8Regs:wsub_hi
5622
0
      0,  // GeneralDoubleLow8Regs:wsub_lo
5623
0
      0,  // GeneralDoubleLow8Regs:wsub_hi_then_vsub_fake
5624
0
      0,  // GeneralDoubleLow8Regs:wsub_hi_then_vsub_hi
5625
0
      0,  // GeneralDoubleLow8Regs:wsub_hi_then_vsub_lo
5626
0
    },
5627
0
    { // DoubleRegs_with_isub_hi_in_IntRegsLow8
5628
0
      8,  // DoubleRegs_with_isub_hi_in_IntRegsLow8:isub_hi -> IntRegsLow8
5629
0
      8,  // DoubleRegs_with_isub_hi_in_IntRegsLow8:isub_lo -> IntRegsLow8
5630
0
      0,  // DoubleRegs_with_isub_hi_in_IntRegsLow8:subreg_overflow
5631
0
      0,  // DoubleRegs_with_isub_hi_in_IntRegsLow8:vsub_fake
5632
0
      0,  // DoubleRegs_with_isub_hi_in_IntRegsLow8:vsub_hi
5633
0
      0,  // DoubleRegs_with_isub_hi_in_IntRegsLow8:vsub_lo
5634
0
      0,  // DoubleRegs_with_isub_hi_in_IntRegsLow8:wsub_hi
5635
0
      0,  // DoubleRegs_with_isub_hi_in_IntRegsLow8:wsub_lo
5636
0
      0,  // DoubleRegs_with_isub_hi_in_IntRegsLow8:wsub_hi_then_vsub_fake
5637
0
      0,  // DoubleRegs_with_isub_hi_in_IntRegsLow8:wsub_hi_then_vsub_hi
5638
0
      0,  // DoubleRegs_with_isub_hi_in_IntRegsLow8:wsub_hi_then_vsub_lo
5639
0
    },
5640
0
    { // CtrRegs64_and_V62Regs
5641
0
      9,  // CtrRegs64_and_V62Regs:isub_hi -> CtrRegs_and_V62Regs
5642
0
      9,  // CtrRegs64_and_V62Regs:isub_lo -> CtrRegs_and_V62Regs
5643
0
      0,  // CtrRegs64_and_V62Regs:subreg_overflow
5644
0
      0,  // CtrRegs64_and_V62Regs:vsub_fake
5645
0
      0,  // CtrRegs64_and_V62Regs:vsub_hi
5646
0
      0,  // CtrRegs64_and_V62Regs:vsub_lo
5647
0
      0,  // CtrRegs64_and_V62Regs:wsub_hi
5648
0
      0,  // CtrRegs64_and_V62Regs:wsub_lo
5649
0
      0,  // CtrRegs64_and_V62Regs:wsub_hi_then_vsub_fake
5650
0
      0,  // CtrRegs64_and_V62Regs:wsub_hi_then_vsub_hi
5651
0
      0,  // CtrRegs64_and_V62Regs:wsub_hi_then_vsub_lo
5652
0
    },
5653
0
    { // CtrRegs64_with_isub_hi_in_ModRegs
5654
0
      12, // CtrRegs64_with_isub_hi_in_ModRegs:isub_hi -> ModRegs
5655
0
      12, // CtrRegs64_with_isub_hi_in_ModRegs:isub_lo -> ModRegs
5656
0
      0,  // CtrRegs64_with_isub_hi_in_ModRegs:subreg_overflow
5657
0
      0,  // CtrRegs64_with_isub_hi_in_ModRegs:vsub_fake
5658
0
      0,  // CtrRegs64_with_isub_hi_in_ModRegs:vsub_hi
5659
0
      0,  // CtrRegs64_with_isub_hi_in_ModRegs:vsub_lo
5660
0
      0,  // CtrRegs64_with_isub_hi_in_ModRegs:wsub_hi
5661
0
      0,  // CtrRegs64_with_isub_hi_in_ModRegs:wsub_lo
5662
0
      0,  // CtrRegs64_with_isub_hi_in_ModRegs:wsub_hi_then_vsub_fake
5663
0
      0,  // CtrRegs64_with_isub_hi_in_ModRegs:wsub_hi_then_vsub_hi
5664
0
      0,  // CtrRegs64_with_isub_hi_in_ModRegs:wsub_hi_then_vsub_lo
5665
0
    },
5666
0
    { // HvxQR
5667
0
      0,  // HvxQR:isub_hi
5668
0
      0,  // HvxQR:isub_lo
5669
0
      0,  // HvxQR:subreg_overflow
5670
0
      0,  // HvxQR:vsub_fake
5671
0
      0,  // HvxQR:vsub_hi
5672
0
      0,  // HvxQR:vsub_lo
5673
0
      0,  // HvxQR:wsub_hi
5674
0
      0,  // HvxQR:wsub_lo
5675
0
      0,  // HvxQR:wsub_hi_then_vsub_fake
5676
0
      0,  // HvxQR:wsub_hi_then_vsub_hi
5677
0
      0,  // HvxQR:wsub_hi_then_vsub_lo
5678
0
    },
5679
0
    { // HvxVR
5680
0
      0,  // HvxVR:isub_hi
5681
0
      0,  // HvxVR:isub_lo
5682
0
      0,  // HvxVR:subreg_overflow
5683
0
      0,  // HvxVR:vsub_fake
5684
0
      0,  // HvxVR:vsub_hi
5685
0
      0,  // HvxVR:vsub_lo
5686
0
      0,  // HvxVR:wsub_hi
5687
0
      0,  // HvxVR:wsub_lo
5688
0
      0,  // HvxVR:wsub_hi_then_vsub_fake
5689
0
      0,  // HvxVR:wsub_hi_then_vsub_hi
5690
0
      0,  // HvxVR:wsub_hi_then_vsub_lo
5691
0
    },
5692
0
    { // HvxVR_and_V65Regs
5693
0
      0,  // HvxVR_and_V65Regs:isub_hi
5694
0
      0,  // HvxVR_and_V65Regs:isub_lo
5695
0
      0,  // HvxVR_and_V65Regs:subreg_overflow
5696
0
      0,  // HvxVR_and_V65Regs:vsub_fake
5697
0
      0,  // HvxVR_and_V65Regs:vsub_hi
5698
0
      0,  // HvxVR_and_V65Regs:vsub_lo
5699
0
      0,  // HvxVR_and_V65Regs:wsub_hi
5700
0
      0,  // HvxVR_and_V65Regs:wsub_lo
5701
0
      0,  // HvxVR_and_V65Regs:wsub_hi_then_vsub_fake
5702
0
      0,  // HvxVR_and_V65Regs:wsub_hi_then_vsub_hi
5703
0
      0,  // HvxVR_and_V65Regs:wsub_hi_then_vsub_lo
5704
0
    },
5705
0
    { // HvxWR
5706
0
      0,  // HvxWR:isub_hi
5707
0
      0,  // HvxWR:isub_lo
5708
0
      0,  // HvxWR:subreg_overflow
5709
0
      0,  // HvxWR:vsub_fake
5710
0
      25, // HvxWR:vsub_hi -> HvxVR
5711
0
      25, // HvxWR:vsub_lo -> HvxVR
5712
0
      0,  // HvxWR:wsub_hi
5713
0
      0,  // HvxWR:wsub_lo
5714
0
      0,  // HvxWR:wsub_hi_then_vsub_fake
5715
0
      0,  // HvxWR:wsub_hi_then_vsub_hi
5716
0
      0,  // HvxWR:wsub_hi_then_vsub_lo
5717
0
    },
5718
0
    { // HvxWR_and_VectRegRev
5719
0
      0,  // HvxWR_and_VectRegRev:isub_hi
5720
0
      0,  // HvxWR_and_VectRegRev:isub_lo
5721
0
      0,  // HvxWR_and_VectRegRev:subreg_overflow
5722
0
      0,  // HvxWR_and_VectRegRev:vsub_fake
5723
0
      25, // HvxWR_and_VectRegRev:vsub_hi -> HvxVR
5724
0
      25, // HvxWR_and_VectRegRev:vsub_lo -> HvxVR
5725
0
      0,  // HvxWR_and_VectRegRev:wsub_hi
5726
0
      0,  // HvxWR_and_VectRegRev:wsub_lo
5727
0
      0,  // HvxWR_and_VectRegRev:wsub_hi_then_vsub_fake
5728
0
      0,  // HvxWR_and_VectRegRev:wsub_hi_then_vsub_hi
5729
0
      0,  // HvxWR_and_VectRegRev:wsub_hi_then_vsub_lo
5730
0
    },
5731
0
    { // HvxVQR
5732
0
      0,  // HvxVQR:isub_hi
5733
0
      0,  // HvxVQR:isub_lo
5734
0
      0,  // HvxVQR:subreg_overflow
5735
0
      0,  // HvxVQR:vsub_fake
5736
0
      25, // HvxVQR:vsub_hi -> HvxVR
5737
0
      25, // HvxVQR:vsub_lo -> HvxVR
5738
0
      27, // HvxVQR:wsub_hi -> HvxWR
5739
0
      27, // HvxVQR:wsub_lo -> HvxWR
5740
0
      0,  // HvxVQR:wsub_hi_then_vsub_fake
5741
0
      25, // HvxVQR:wsub_hi_then_vsub_hi -> HvxVR
5742
0
      25, // HvxVQR:wsub_hi_then_vsub_lo -> HvxVR
5743
0
    },
5744
0
  };
5745
0
  assert(RC && "Missing regclass");
5746
0
  if (!Idx) return RC;
5747
0
  --Idx;
5748
0
  assert(Idx < 11 && "Bad subreg");
5749
0
  unsigned TV = Table[RC->getID()][Idx];
5750
0
  return TV ? getRegClass(TV - 1) : nullptr;
5751
0
}
5752
5753
/// Get the weight in units of pressure for this register class.
5754
const RegClassWeight &HexagonGenRegisterInfo::
5755
10.3M
getRegClassWeight(const TargetRegisterClass *RC) const {
5756
10.3M
  static const RegClassWeight RCWeightTable[] = {
5757
10.3M
    {0, 0},   // UsrBits
5758
10.3M
    {0, 0},   // SysRegs
5759
10.3M
    {0, 0},   // GuestRegs
5760
10.3M
    {1, 32},    // IntRegs
5761
10.3M
    {0, 6},   // CtrRegs
5762
10.3M
    {1, 16},    // GeneralSubRegs
5763
10.3M
    {0, 0},   // V62Regs
5764
10.3M
    {1, 8},   // IntRegsLow8
5765
10.3M
    {0, 0},   // CtrRegs_and_V62Regs
5766
10.3M
    {1, 4},   // PredRegs
5767
10.3M
    {0, 0},   // V62Regs_with_isub_hi
5768
10.3M
    {1, 2},   // ModRegs
5769
10.3M
    {0, 0},   // CtrRegs_with_subreg_overflow
5770
10.3M
    {1, 1},   // V65Regs
5771
10.3M
    {0, 0},   // SysRegs64
5772
10.3M
    {2, 32},    // DoubleRegs
5773
10.3M
    {0, 0},   // GuestRegs64
5774
10.3M
    {2, 32},    // VectRegRev
5775
10.3M
    {0, 6},   // CtrRegs64
5776
10.3M
    {2, 16},    // GeneralDoubleLow8Regs
5777
10.3M
    {2, 8},   // DoubleRegs_with_isub_hi_in_IntRegsLow8
5778
10.3M
    {0, 0},   // CtrRegs64_and_V62Regs
5779
10.3M
    {2, 2},   // CtrRegs64_with_isub_hi_in_ModRegs
5780
10.3M
    {1, 4},   // HvxQR
5781
10.3M
    {1, 33},    // HvxVR
5782
10.3M
    {1, 1},   // HvxVR_and_V65Regs
5783
10.3M
    {2, 32},    // HvxWR
5784
10.3M
    {2, 32},    // HvxWR_and_VectRegRev
5785
10.3M
    {4, 32},    // HvxVQR
5786
10.3M
  };
5787
10.3M
  return RCWeightTable[RC->getID()];
5788
10.3M
}
5789
5790
/// Get the weight in units of pressure for this register unit.
5791
unsigned HexagonGenRegisterInfo::
5792
875k
getRegUnitWeight(unsigned RegUnit) const {
5793
875k
  assert(RegUnit < 272 && "invalid register unit");
5794
  // All register units have unit weight.
5795
0
  return 1;
5796
875k
}
5797
5798
5799
// Get the number of dimensions of register pressure.
5800
160k
unsigned HexagonGenRegisterInfo::getNumRegPressureSets() const {
5801
160k
  return 8;
5802
160k
}
5803
5804
// Get the name of this register unit pressure set.
5805
const char *HexagonGenRegisterInfo::
5806
0
getRegPressureSetName(unsigned Idx) const {
5807
0
  static const char *PressureNameTable[] = {
5808
0
    "HvxVR_and_V65Regs",
5809
0
    "ModRegs",
5810
0
    "PredRegs",
5811
0
    "HvxQR",
5812
0
    "IntRegsLow8",
5813
0
    "GeneralSubRegs",
5814
0
    "IntRegs",
5815
0
    "HvxVR",
5816
0
  };
5817
0
  return PressureNameTable[Idx];
5818
0
}
5819
5820
// Get the register unit pressure limit for this dimension.
5821
// This limit must be adjusted dynamically for reserved registers.
5822
unsigned HexagonGenRegisterInfo::
5823
131k
getRegPressureSetLimit(const MachineFunction &MF, unsigned Idx) const {
5824
131k
  static const uint8_t PressureLimitTable[] = {
5825
131k
    1,    // 0: HvxVR_and_V65Regs
5826
131k
    2,    // 1: ModRegs
5827
131k
    4,    // 2: PredRegs
5828
131k
    4,    // 3: HvxQR
5829
131k
    8,    // 4: IntRegsLow8
5830
131k
    16,   // 5: GeneralSubRegs
5831
131k
    32,   // 6: IntRegs
5832
131k
    33,   // 7: HvxVR
5833
131k
  };
5834
131k
  return PressureLimitTable[Idx];
5835
131k
}
5836
5837
/// Table of pressure sets per register class or unit.
5838
static const int RCSetsTable[] = {
5839
  /* 0 */ 1, -1,
5840
  /* 2 */ 2, -1,
5841
  /* 4 */ 3, -1,
5842
  /* 6 */ 4, 5, 6, -1,
5843
  /* 10 */ 0, 7, -1,
5844
};
5845
5846
/// Get the dimensions of register pressure impacted by this register class.
5847
/// Returns a -1 terminated array of pressure set IDs
5848
const int *HexagonGenRegisterInfo::
5849
11.9M
getRegClassPressureSets(const TargetRegisterClass *RC) const {
5850
11.9M
  static const uint8_t RCSetStartTable[] = {
5851
11.9M
    1,1,1,8,1,7,1,6,1,2,1,0,1,1,1,8,1,11,1,7,6,1,1,4,11,10,11,11,11,};
5852
11.9M
  return &RCSetsTable[RCSetStartTable[RC->getID()]];
5853
11.9M
}
5854
5855
/// Get the dimensions of register pressure impacted by this register unit.
5856
/// Returns a -1 terminated array of pressure set IDs
5857
const int *HexagonGenRegisterInfo::
5858
875k
getRegUnitPressureSets(unsigned RegUnit) const {
5859
875k
  assert(RegUnit < 272 && "invalid register unit");
5860
0
  static const uint8_t RUSetStartTable[] = {
5861
875k
    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,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,6,6,6,6,6,6,6,6,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,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,0,0,2,2,2,2,1,1,1,1,4,4,4,4,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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,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,};
5862
875k
  return &RCSetsTable[RUSetStartTable[RegUnit]];
5863
875k
}
5864
5865
extern const MCRegisterDesc HexagonRegDesc[];
5866
extern const int16_t HexagonRegDiffLists[];
5867
extern const LaneBitmask HexagonLaneMaskLists[];
5868
extern const char HexagonRegStrings[];
5869
extern const char HexagonRegClassStrings[];
5870
extern const MCPhysReg HexagonRegUnitRoots[][2];
5871
extern const uint16_t HexagonSubRegIdxLists[];
5872
extern const MCRegisterInfo::SubRegCoveredBits HexagonSubRegIdxRanges[];
5873
extern const uint16_t HexagonRegEncodingTable[];
5874
// Hexagon Dwarf<->LLVM register mappings.
5875
extern const MCRegisterInfo::DwarfLLVMRegPair HexagonDwarfFlavour0Dwarf2L[];
5876
extern const unsigned HexagonDwarfFlavour0Dwarf2LSize;
5877
5878
extern const MCRegisterInfo::DwarfLLVMRegPair HexagonEHFlavour0Dwarf2L[];
5879
extern const unsigned HexagonEHFlavour0Dwarf2LSize;
5880
5881
extern const MCRegisterInfo::DwarfLLVMRegPair HexagonDwarfFlavour0L2Dwarf[];
5882
extern const unsigned HexagonDwarfFlavour0L2DwarfSize;
5883
5884
extern const MCRegisterInfo::DwarfLLVMRegPair HexagonEHFlavour0L2Dwarf[];
5885
extern const unsigned HexagonEHFlavour0L2DwarfSize;
5886
5887
HexagonGenRegisterInfo::
5888
HexagonGenRegisterInfo(unsigned RA, unsigned DwarfFlavour, unsigned EHFlavour,
5889
      unsigned PC, unsigned HwMode)
5890
  : TargetRegisterInfo(&HexagonRegInfoDesc, RegisterClasses, RegisterClasses+29,
5891
             SubRegIndexNameTable, SubRegIndexLaneMaskTable,
5892
1
             LaneBitmask(0xFFFFFFFFFFFFFFFB), RegClassInfos, VTLists, HwMode) {
5893
1
  InitMCRegisterInfo(HexagonRegDesc, 398, RA, PC,
5894
1
                     HexagonMCRegisterClasses, 29,
5895
1
                     HexagonRegUnitRoots,
5896
1
                     272,
5897
1
                     HexagonRegDiffLists,
5898
1
                     HexagonLaneMaskLists,
5899
1
                     HexagonRegStrings,
5900
1
                     HexagonRegClassStrings,
5901
1
                     HexagonSubRegIdxLists,
5902
1
                     12,
5903
1
                     HexagonSubRegIdxRanges,
5904
1
                     HexagonRegEncodingTable);
5905
5906
1
  switch (DwarfFlavour) {
5907
0
  default:
5908
0
    llvm_unreachable("Unknown DWARF flavour");
5909
1
  case 0:
5910
1
    mapDwarfRegsToLLVMRegs(HexagonDwarfFlavour0Dwarf2L, HexagonDwarfFlavour0Dwarf2LSize, false);
5911
1
    break;
5912
1
  }
5913
1
  switch (EHFlavour) {
5914
0
  default:
5915
0
    llvm_unreachable("Unknown DWARF flavour");
5916
1
  case 0:
5917
1
    mapDwarfRegsToLLVMRegs(HexagonEHFlavour0Dwarf2L, HexagonEHFlavour0Dwarf2LSize, true);
5918
1
    break;
5919
1
  }
5920
1
  switch (DwarfFlavour) {
5921
0
  default:
5922
0
    llvm_unreachable("Unknown DWARF flavour");
5923
1
  case 0:
5924
1
    mapLLVMRegsToDwarfRegs(HexagonDwarfFlavour0L2Dwarf, HexagonDwarfFlavour0L2DwarfSize, false);
5925
1
    break;
5926
1
  }
5927
1
  switch (EHFlavour) {
5928
0
  default:
5929
0
    llvm_unreachable("Unknown DWARF flavour");
5930
1
  case 0:
5931
1
    mapLLVMRegsToDwarfRegs(HexagonEHFlavour0L2Dwarf, HexagonEHFlavour0L2DwarfSize, true);
5932
1
    break;
5933
1
  }
5934
1
}
5935
5936
static const MCPhysReg HexagonCSR_SaveList[] = { Hexagon::R16, Hexagon::R17, Hexagon::R18, Hexagon::R19, Hexagon::R20, Hexagon::R21, Hexagon::R22, Hexagon::R23, Hexagon::R24, Hexagon::R25, Hexagon::R26, Hexagon::R27, 0 };
5937
static const uint32_t HexagonCSR_RegMask[] = { 0x00000000, 0x00000000, 0x0000007e, 0x00000000, 0x0003ffc0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
5938
5939
5940
16.9k
ArrayRef<const uint32_t *> HexagonGenRegisterInfo::getRegMasks() const {
5941
16.9k
  static const uint32_t *const Masks[] = {
5942
16.9k
    HexagonCSR_RegMask,
5943
16.9k
  };
5944
16.9k
  return ArrayRef(Masks);
5945
16.9k
}
5946
5947
bool HexagonGenRegisterInfo::
5948
0
isGeneralPurposeRegister(const MachineFunction &MF, MCRegister PhysReg) const {
5949
0
  return
5950
0
      false;
5951
0
}
5952
5953
bool HexagonGenRegisterInfo::
5954
0
isFixedRegister(const MachineFunction &MF, MCRegister PhysReg) const {
5955
0
  return
5956
0
      false;
5957
0
}
5958
5959
bool HexagonGenRegisterInfo::
5960
0
isArgumentRegister(const MachineFunction &MF, MCRegister PhysReg) const {
5961
0
  return
5962
0
      false;
5963
0
}
5964
5965
bool HexagonGenRegisterInfo::
5966
4.87M
isConstantPhysReg(MCRegister PhysReg) const {
5967
4.87M
  return
5968
4.87M
      false;
5969
4.87M
}
5970
5971
0
ArrayRef<const char *> HexagonGenRegisterInfo::getRegMaskNames() const {
5972
0
  static const char *Names[] = {
5973
0
    "HexagonCSR",
5974
0
  };
5975
0
  return ArrayRef(Names);
5976
0
}
5977
5978
const HexagonFrameLowering *
5979
11.6k
HexagonGenRegisterInfo::getFrameLowering(const MachineFunction &MF) {
5980
11.6k
  return static_cast<const HexagonFrameLowering *>(
5981
11.6k
      MF.getSubtarget().getFrameLowering());
5982
11.6k
}
5983
5984
} // end namespace llvm
5985
5986
#endif // GET_REGINFO_TARGET_DESC
5987