Coverage Report

Created: 2018-11-13 17:19

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/clang-build/lib/Target/AArch64/AArch64GenSystemOperands.inc
Line
Count
Source (jump to first uncovered line)
1
#ifdef GET_AT_DECL
2
enum ATValues {
3
  S1E1R = 960,
4
  S1E2R = 9152,
5
  S1E3R = 13248,
6
  S1E1W = 961,
7
  S1E2W = 9153,
8
  S1E3W = 13249,
9
  S1E0R = 962,
10
  S1E0W = 963,
11
  S12E1R = 9156,
12
  S12E1W = 9157,
13
  S12E0R = 9158,
14
  S12E0W = 9159,
15
  S1E1RP = 968,
16
  S1E1WP = 969,
17
};
18
#endif
19
20
#ifdef GET_BTI_DECL
21
enum BTIValues {
22
  c = 1,
23
  j = 2,
24
  jc = 3,
25
};
26
#endif
27
28
#ifdef GET_DB_DECL
29
enum DBValues {
30
  oshld = 1,
31
  oshst = 2,
32
  osh = 3,
33
  nshld = 5,
34
  nshst = 6,
35
  nsh = 7,
36
  ishld = 9,
37
  ishst = 10,
38
  ish = 11,
39
  ld = 13,
40
  st = 14,
41
  sy = 15,
42
};
43
#endif
44
45
#ifdef GET_DC_DECL
46
enum DCValues {
47
  ZVA = 7073,
48
  IVAC = 945,
49
  ISW = 946,
50
  CVAC = 7121,
51
  CSW = 978,
52
  CVAU = 7129,
53
  CIVAC = 7153,
54
  CISW = 1010,
55
  CVAP = 7137,
56
  CVADP = 7145,
57
  IGVAC = 947,
58
  IGSW = 948,
59
  CGSW = 980,
60
  CIGSW = 1012,
61
  CGVAC = 7123,
62
  CGVAP = 7139,
63
  CGVADP = 7147,
64
  CIGVAC = 7155,
65
  GVA = 7075,
66
  IGDVAC = 949,
67
  IGDSW = 950,
68
  CGDSW = 982,
69
  CIGDSW = 1014,
70
  CGDVAC = 7125,
71
  CGDVAP = 7141,
72
  CGDVADP = 7149,
73
  CIGDVAC = 7157,
74
  GZVA = 7076,
75
};
76
#endif
77
78
#ifdef GET_EXACTFPIMM_DECL
79
enum ExactFPImmValues {
80
  zero = 0,
81
  half = 1,
82
  one = 2,
83
  two = 3,
84
};
85
#endif
86
87
#ifdef GET_IC_DECL
88
enum ICValues {
89
  IALLUIS = 904,
90
  IALLU = 936,
91
  IVAU = 7081,
92
};
93
#endif
94
95
#ifdef GET_ISB_DECL
96
enum ISBValues {
97
  sy = 15,
98
};
99
#endif
100
101
#ifdef GET_PRCTX_DECL
102
enum PRCTXValues {
103
  RCTX = 883,
104
};
105
#endif
106
107
#ifdef GET_PRFM_DECL
108
enum PRFMValues {
109
  pldl1keep = 0,
110
  pldl1strm = 1,
111
  pldl2keep = 2,
112
  pldl2strm = 3,
113
  pldl3keep = 4,
114
  pldl3strm = 5,
115
  plil1keep = 8,
116
  plil1strm = 9,
117
  plil2keep = 10,
118
  plil2strm = 11,
119
  plil3keep = 12,
120
  plil3strm = 13,
121
  pstl1keep = 16,
122
  pstl1strm = 17,
123
  pstl2keep = 18,
124
  pstl2strm = 19,
125
  pstl3keep = 20,
126
  pstl3strm = 21,
127
};
128
#endif
129
130
#ifdef GET_PSB_DECL
131
enum PSBValues {
132
  csync = 17,
133
};
134
#endif
135
136
#ifdef GET_PSTATE_DECL
137
enum PStateValues {
138
  SPSel = 5,
139
  DAIFSet = 30,
140
  DAIFClr = 31,
141
  PAN = 4,
142
  UAO = 3,
143
  DIT = 26,
144
  SSBS = 25,
145
  TCO = 28,
146
};
147
#endif
148
149
#ifdef GET_SVEPREDPAT_DECL
150
enum SVEPREDPATValues {
151
  pow2 = 0,
152
  vl1 = 1,
153
  vl2 = 2,
154
  vl3 = 3,
155
  vl4 = 4,
156
  vl5 = 5,
157
  vl6 = 6,
158
  vl7 = 7,
159
  vl8 = 8,
160
  vl16 = 9,
161
  vl32 = 10,
162
  vl64 = 11,
163
  vl128 = 12,
164
  vl256 = 13,
165
  mul4 = 29,
166
  mul3 = 30,
167
  all = 31,
168
};
169
#endif
170
171
#ifdef GET_SVEPRFM_DECL
172
enum SVEPRFMValues {
173
  pldl1keep = 0,
174
  pldl1strm = 1,
175
  pldl2keep = 2,
176
  pldl2strm = 3,
177
  pldl3keep = 4,
178
  pldl3strm = 5,
179
  pstl1keep = 8,
180
  pstl1strm = 9,
181
  pstl2keep = 10,
182
  pstl2strm = 11,
183
  pstl3keep = 12,
184
  pstl3strm = 13,
185
};
186
#endif
187
188
#ifdef GET_SYSREG_DECL
189
enum SysRegValues {
190
  MDCCSR_EL0 = 38920,
191
  DBGDTRRX_EL0 = 38952,
192
  MDRAR_EL1 = 32896,
193
  OSLSR_EL1 = 32908,
194
  DBGAUTHSTATUS_EL1 = 33782,
195
  PMCEID0_EL0 = 56550,
196
  PMCEID1_EL0 = 56551,
197
  MIDR_EL1 = 49152,
198
  CCSIDR_EL1 = 51200,
199
  CCSIDR2_EL1 = 51202,
200
  CLIDR_EL1 = 51201,
201
  CTR_EL0 = 55297,
202
  MPIDR_EL1 = 49157,
203
  REVIDR_EL1 = 49158,
204
  AIDR_EL1 = 51207,
205
  DCZID_EL0 = 55303,
206
  ID_PFR0_EL1 = 49160,
207
  ID_PFR1_EL1 = 49161,
208
  ID_PFR2_EL1 = 49180,
209
  ID_DFR0_EL1 = 49162,
210
  ID_AFR0_EL1 = 49163,
211
  ID_MMFR0_EL1 = 49164,
212
  ID_MMFR1_EL1 = 49165,
213
  ID_MMFR2_EL1 = 49166,
214
  ID_MMFR3_EL1 = 49167,
215
  ID_ISAR0_EL1 = 49168,
216
  ID_ISAR1_EL1 = 49169,
217
  ID_ISAR2_EL1 = 49170,
218
  ID_ISAR3_EL1 = 49171,
219
  ID_ISAR4_EL1 = 49172,
220
  ID_ISAR5_EL1 = 49173,
221
  ID_ISAR6_EL1 = 49175,
222
  ID_AA64PFR0_EL1 = 49184,
223
  ID_AA64PFR1_EL1 = 49185,
224
  ID_AA64DFR0_EL1 = 49192,
225
  ID_AA64DFR1_EL1 = 49193,
226
  ID_AA64AFR0_EL1 = 49196,
227
  ID_AA64AFR1_EL1 = 49197,
228
  ID_AA64ISAR0_EL1 = 49200,
229
  ID_AA64ISAR1_EL1 = 49201,
230
  ID_AA64MMFR0_EL1 = 49208,
231
  ID_AA64MMFR1_EL1 = 49209,
232
  ID_AA64MMFR2_EL1 = 49210,
233
  MVFR0_EL1 = 49176,
234
  MVFR1_EL1 = 49177,
235
  MVFR2_EL1 = 49178,
236
  RVBAR_EL1 = 50689,
237
  RVBAR_EL2 = 58881,
238
  RVBAR_EL3 = 62977,
239
  ISR_EL1 = 50696,
240
  CNTPCT_EL0 = 57089,
241
  CNTVCT_EL0 = 57090,
242
  ID_MMFR4_EL1 = 49174,
243
  TRCSTATR = 34840,
244
  TRCIDR8 = 34822,
245
  TRCIDR9 = 34830,
246
  TRCIDR10 = 34838,
247
  TRCIDR11 = 34846,
248
  TRCIDR12 = 34854,
249
  TRCIDR13 = 34862,
250
  TRCIDR0 = 34887,
251
  TRCIDR1 = 34895,
252
  TRCIDR2 = 34903,
253
  TRCIDR3 = 34911,
254
  TRCIDR4 = 34919,
255
  TRCIDR5 = 34927,
256
  TRCIDR6 = 34935,
257
  TRCIDR7 = 34943,
258
  TRCOSLSR = 34956,
259
  TRCPDSR = 34988,
260
  TRCDEVAFF0 = 35798,
261
  TRCDEVAFF1 = 35806,
262
  TRCLSR = 35822,
263
  TRCAUTHSTATUS = 35830,
264
  TRCDEVARCH = 35838,
265
  TRCDEVID = 35735,
266
  TRCDEVTYPE = 35743,
267
  TRCPIDR4 = 35751,
268
  TRCPIDR5 = 35759,
269
  TRCPIDR6 = 35767,
270
  TRCPIDR7 = 35775,
271
  TRCPIDR0 = 35783,
272
  TRCPIDR1 = 35791,
273
  TRCPIDR2 = 35799,
274
  TRCPIDR3 = 35807,
275
  TRCCIDR0 = 35815,
276
  TRCCIDR1 = 35823,
277
  TRCCIDR2 = 35831,
278
  TRCCIDR3 = 35839,
279
  ICC_IAR1_EL1 = 50784,
280
  ICC_IAR0_EL1 = 50752,
281
  ICC_HPPIR1_EL1 = 50786,
282
  ICC_HPPIR0_EL1 = 50754,
283
  ICC_RPR_EL1 = 50779,
284
  ICH_VTR_EL2 = 58969,
285
  ICH_EISR_EL2 = 58971,
286
  ICH_ELRSR_EL2 = 58973,
287
  ID_AA64ZFR0_EL1 = 49188,
288
  LORID_EL1 = 50471,
289
  ERRIDR_EL1 = 49816,
290
  ERXFR_EL1 = 49824,
291
  RNDR = 55584,
292
  RNDRRS = 55585,
293
  SCXTNUM_EL0 = 56967,
294
  SCXTNUM_EL1 = 50823,
295
  SCXTNUM_EL2 = 59015,
296
  SCXTNUM_EL3 = 63111,
297
  SCXTNUM_EL12 = 61063,
298
  DBGDTRTX_EL0 = 38952,
299
  OSLAR_EL1 = 32900,
300
  PMSWINC_EL0 = 56548,
301
  TRCOSLAR = 34948,
302
  TRCLAR = 35814,
303
  ICC_EOIR1_EL1 = 50785,
304
  ICC_EOIR0_EL1 = 50753,
305
  ICC_DIR_EL1 = 50777,
306
  ICC_SGI1R_EL1 = 50781,
307
  ICC_ASGI1R_EL1 = 50782,
308
  ICC_SGI0R_EL1 = 50783,
309
  OSDTRRX_EL1 = 32770,
310
  OSDTRTX_EL1 = 32794,
311
  TEECR32_EL1 = 36864,
312
  MDCCINT_EL1 = 32784,
313
  MDSCR_EL1 = 32786,
314
  DBGDTR_EL0 = 38944,
315
  OSECCR_EL1 = 32818,
316
  DBGVCR32_EL2 = 41016,
317
  DBGBVR0_EL1 = 32772,
318
  DBGBVR1_EL1 = 32780,
319
  DBGBVR2_EL1 = 32788,
320
  DBGBVR3_EL1 = 32796,
321
  DBGBVR4_EL1 = 32804,
322
  DBGBVR5_EL1 = 32812,
323
  DBGBVR6_EL1 = 32820,
324
  DBGBVR7_EL1 = 32828,
325
  DBGBVR8_EL1 = 32836,
326
  DBGBVR9_EL1 = 32844,
327
  DBGBVR10_EL1 = 32852,
328
  DBGBVR11_EL1 = 32860,
329
  DBGBVR12_EL1 = 32868,
330
  DBGBVR13_EL1 = 32876,
331
  DBGBVR14_EL1 = 32884,
332
  DBGBVR15_EL1 = 32892,
333
  DBGBCR0_EL1 = 32773,
334
  DBGBCR1_EL1 = 32781,
335
  DBGBCR2_EL1 = 32789,
336
  DBGBCR3_EL1 = 32797,
337
  DBGBCR4_EL1 = 32805,
338
  DBGBCR5_EL1 = 32813,
339
  DBGBCR6_EL1 = 32821,
340
  DBGBCR7_EL1 = 32829,
341
  DBGBCR8_EL1 = 32837,
342
  DBGBCR9_EL1 = 32845,
343
  DBGBCR10_EL1 = 32853,
344
  DBGBCR11_EL1 = 32861,
345
  DBGBCR12_EL1 = 32869,
346
  DBGBCR13_EL1 = 32877,
347
  DBGBCR14_EL1 = 32885,
348
  DBGBCR15_EL1 = 32893,
349
  DBGWVR0_EL1 = 32774,
350
  DBGWVR1_EL1 = 32782,
351
  DBGWVR2_EL1 = 32790,
352
  DBGWVR3_EL1 = 32798,
353
  DBGWVR4_EL1 = 32806,
354
  DBGWVR5_EL1 = 32814,
355
  DBGWVR6_EL1 = 32822,
356
  DBGWVR7_EL1 = 32830,
357
  DBGWVR8_EL1 = 32838,
358
  DBGWVR9_EL1 = 32846,
359
  DBGWVR10_EL1 = 32854,
360
  DBGWVR11_EL1 = 32862,
361
  DBGWVR12_EL1 = 32870,
362
  DBGWVR13_EL1 = 32878,
363
  DBGWVR14_EL1 = 32886,
364
  DBGWVR15_EL1 = 32894,
365
  DBGWCR0_EL1 = 32775,
366
  DBGWCR1_EL1 = 32783,
367
  DBGWCR2_EL1 = 32791,
368
  DBGWCR3_EL1 = 32799,
369
  DBGWCR4_EL1 = 32807,
370
  DBGWCR5_EL1 = 32815,
371
  DBGWCR6_EL1 = 32823,
372
  DBGWCR7_EL1 = 32831,
373
  DBGWCR8_EL1 = 32839,
374
  DBGWCR9_EL1 = 32847,
375
  DBGWCR10_EL1 = 32855,
376
  DBGWCR11_EL1 = 32863,
377
  DBGWCR12_EL1 = 32871,
378
  DBGWCR13_EL1 = 32879,
379
  DBGWCR14_EL1 = 32887,
380
  DBGWCR15_EL1 = 32895,
381
  TEEHBR32_EL1 = 36992,
382
  OSDLR_EL1 = 32924,
383
  DBGPRCR_EL1 = 32932,
384
  DBGCLAIMSET_EL1 = 33734,
385
  DBGCLAIMCLR_EL1 = 33742,
386
  CSSELR_EL1 = 53248,
387
  VPIDR_EL2 = 57344,
388
  VMPIDR_EL2 = 57349,
389
  CPACR_EL1 = 49282,
390
  SCTLR_EL1 = 49280,
391
  SCTLR_EL2 = 57472,
392
  SCTLR_EL3 = 61568,
393
  ACTLR_EL1 = 49281,
394
  ACTLR_EL2 = 57473,
395
  ACTLR_EL3 = 61569,
396
  HCR_EL2 = 57480,
397
  SCR_EL3 = 61576,
398
  MDCR_EL2 = 57481,
399
  SDER32_EL3 = 61577,
400
  CPTR_EL2 = 57482,
401
  CPTR_EL3 = 61578,
402
  HSTR_EL2 = 57483,
403
  HACR_EL2 = 57487,
404
  MDCR_EL3 = 61593,
405
  TTBR0_EL1 = 49408,
406
  TTBR0_EL2 = 57600,
407
  TTBR0_EL3 = 61696,
408
  TTBR1_EL1 = 49409,
409
  TCR_EL1 = 49410,
410
  TCR_EL2 = 57602,
411
  TCR_EL3 = 61698,
412
  VTTBR_EL2 = 57608,
413
  VTCR_EL2 = 57610,
414
  DACR32_EL2 = 57728,
415
  SPSR_EL1 = 49664,
416
  SPSR_EL2 = 57856,
417
  SPSR_EL3 = 61952,
418
  ELR_EL1 = 49665,
419
  ELR_EL2 = 57857,
420
  ELR_EL3 = 61953,
421
  SP_EL0 = 49672,
422
  SP_EL1 = 57864,
423
  SP_EL2 = 61960,
424
  SPSel = 49680,
425
  NZCV = 55824,
426
  DAIF = 55825,
427
  CurrentEL = 49682,
428
  SPSR_irq = 57880,
429
  SPSR_abt = 57881,
430
  SPSR_und = 57882,
431
  SPSR_fiq = 57883,
432
  FPCR = 55840,
433
  FPSR = 55841,
434
  DSPSR_EL0 = 55848,
435
  DLR_EL0 = 55849,
436
  IFSR32_EL2 = 57985,
437
  AFSR0_EL1 = 49800,
438
  AFSR0_EL2 = 57992,
439
  AFSR0_EL3 = 62088,
440
  AFSR1_EL1 = 49801,
441
  AFSR1_EL2 = 57993,
442
  AFSR1_EL3 = 62089,
443
  ESR_EL1 = 49808,
444
  ESR_EL2 = 58000,
445
  ESR_EL3 = 62096,
446
  FPEXC32_EL2 = 58008,
447
  FAR_EL1 = 49920,
448
  FAR_EL2 = 58112,
449
  FAR_EL3 = 62208,
450
  HPFAR_EL2 = 58116,
451
  PAR_EL1 = 50080,
452
  PMCR_EL0 = 56544,
453
  PMCNTENSET_EL0 = 56545,
454
  PMCNTENCLR_EL0 = 56546,
455
  PMOVSCLR_EL0 = 56547,
456
  PMSELR_EL0 = 56549,
457
  PMCCNTR_EL0 = 56552,
458
  PMXEVTYPER_EL0 = 56553,
459
  PMXEVCNTR_EL0 = 56554,
460
  PMUSERENR_EL0 = 56560,
461
  PMINTENSET_EL1 = 50417,
462
  PMINTENCLR_EL1 = 50418,
463
  PMOVSSET_EL0 = 56563,
464
  MAIR_EL1 = 50448,
465
  MAIR_EL2 = 58640,
466
  MAIR_EL3 = 62736,
467
  AMAIR_EL1 = 50456,
468
  AMAIR_EL2 = 58648,
469
  AMAIR_EL3 = 62744,
470
  VBAR_EL1 = 50688,
471
  VBAR_EL2 = 58880,
472
  VBAR_EL3 = 62976,
473
  RMR_EL1 = 50690,
474
  RMR_EL2 = 58882,
475
  RMR_EL3 = 62978,
476
  CONTEXTIDR_EL1 = 50817,
477
  TPIDR_EL0 = 56962,
478
  TPIDR_EL2 = 59010,
479
  TPIDR_EL3 = 63106,
480
  TPIDRRO_EL0 = 56963,
481
  TPIDR_EL1 = 50820,
482
  CNTFRQ_EL0 = 57088,
483
  CNTVOFF_EL2 = 59139,
484
  CNTKCTL_EL1 = 50952,
485
  CNTHCTL_EL2 = 59144,
486
  CNTP_TVAL_EL0 = 57104,
487
  CNTHP_TVAL_EL2 = 59152,
488
  CNTPS_TVAL_EL1 = 65296,
489
  CNTP_CTL_EL0 = 57105,
490
  CNTHP_CTL_EL2 = 59153,
491
  CNTPS_CTL_EL1 = 65297,
492
  CNTP_CVAL_EL0 = 57106,
493
  CNTHP_CVAL_EL2 = 59154,
494
  CNTPS_CVAL_EL1 = 65298,
495
  CNTV_TVAL_EL0 = 57112,
496
  CNTV_CTL_EL0 = 57113,
497
  CNTV_CVAL_EL0 = 57114,
498
  PMEVCNTR0_EL0 = 57152,
499
  PMEVCNTR1_EL0 = 57153,
500
  PMEVCNTR2_EL0 = 57154,
501
  PMEVCNTR3_EL0 = 57155,
502
  PMEVCNTR4_EL0 = 57156,
503
  PMEVCNTR5_EL0 = 57157,
504
  PMEVCNTR6_EL0 = 57158,
505
  PMEVCNTR7_EL0 = 57159,
506
  PMEVCNTR8_EL0 = 57160,
507
  PMEVCNTR9_EL0 = 57161,
508
  PMEVCNTR10_EL0 = 57162,
509
  PMEVCNTR11_EL0 = 57163,
510
  PMEVCNTR12_EL0 = 57164,
511
  PMEVCNTR13_EL0 = 57165,
512
  PMEVCNTR14_EL0 = 57166,
513
  PMEVCNTR15_EL0 = 57167,
514
  PMEVCNTR16_EL0 = 57168,
515
  PMEVCNTR17_EL0 = 57169,
516
  PMEVCNTR18_EL0 = 57170,
517
  PMEVCNTR19_EL0 = 57171,
518
  PMEVCNTR20_EL0 = 57172,
519
  PMEVCNTR21_EL0 = 57173,
520
  PMEVCNTR22_EL0 = 57174,
521
  PMEVCNTR23_EL0 = 57175,
522
  PMEVCNTR24_EL0 = 57176,
523
  PMEVCNTR25_EL0 = 57177,
524
  PMEVCNTR26_EL0 = 57178,
525
  PMEVCNTR27_EL0 = 57179,
526
  PMEVCNTR28_EL0 = 57180,
527
  PMEVCNTR29_EL0 = 57181,
528
  PMEVCNTR30_EL0 = 57182,
529
  PMCCFILTR_EL0 = 57215,
530
  PMEVTYPER0_EL0 = 57184,
531
  PMEVTYPER1_EL0 = 57185,
532
  PMEVTYPER2_EL0 = 57186,
533
  PMEVTYPER3_EL0 = 57187,
534
  PMEVTYPER4_EL0 = 57188,
535
  PMEVTYPER5_EL0 = 57189,
536
  PMEVTYPER6_EL0 = 57190,
537
  PMEVTYPER7_EL0 = 57191,
538
  PMEVTYPER8_EL0 = 57192,
539
  PMEVTYPER9_EL0 = 57193,
540
  PMEVTYPER10_EL0 = 57194,
541
  PMEVTYPER11_EL0 = 57195,
542
  PMEVTYPER12_EL0 = 57196,
543
  PMEVTYPER13_EL0 = 57197,
544
  PMEVTYPER14_EL0 = 57198,
545
  PMEVTYPER15_EL0 = 57199,
546
  PMEVTYPER16_EL0 = 57200,
547
  PMEVTYPER17_EL0 = 57201,
548
  PMEVTYPER18_EL0 = 57202,
549
  PMEVTYPER19_EL0 = 57203,
550
  PMEVTYPER20_EL0 = 57204,
551
  PMEVTYPER21_EL0 = 57205,
552
  PMEVTYPER22_EL0 = 57206,
553
  PMEVTYPER23_EL0 = 57207,
554
  PMEVTYPER24_EL0 = 57208,
555
  PMEVTYPER25_EL0 = 57209,
556
  PMEVTYPER26_EL0 = 57210,
557
  PMEVTYPER27_EL0 = 57211,
558
  PMEVTYPER28_EL0 = 57212,
559
  PMEVTYPER29_EL0 = 57213,
560
  PMEVTYPER30_EL0 = 57214,
561
  TRCPRGCTLR = 34824,
562
  TRCPROCSELR = 34832,
563
  TRCCONFIGR = 34848,
564
  TRCAUXCTLR = 34864,
565
  TRCEVENTCTL0R = 34880,
566
  TRCEVENTCTL1R = 34888,
567
  TRCSTALLCTLR = 34904,
568
  TRCTSCTLR = 34912,
569
  TRCSYNCPR = 34920,
570
  TRCCCCTLR = 34928,
571
  TRCBBCTLR = 34936,
572
  TRCTRACEIDR = 34817,
573
  TRCQCTLR = 34825,
574
  TRCVICTLR = 34818,
575
  TRCVIIECTLR = 34826,
576
  TRCVISSCTLR = 34834,
577
  TRCVIPCSSCTLR = 34842,
578
  TRCVDCTLR = 34882,
579
  TRCVDSACCTLR = 34890,
580
  TRCVDARCCTLR = 34898,
581
  TRCSEQEVR0 = 34820,
582
  TRCSEQEVR1 = 34828,
583
  TRCSEQEVR2 = 34836,
584
  TRCSEQRSTEVR = 34868,
585
  TRCSEQSTR = 34876,
586
  TRCEXTINSELR = 34884,
587
  TRCCNTRLDVR0 = 34821,
588
  TRCCNTRLDVR1 = 34829,
589
  TRCCNTRLDVR2 = 34837,
590
  TRCCNTRLDVR3 = 34845,
591
  TRCCNTCTLR0 = 34853,
592
  TRCCNTCTLR1 = 34861,
593
  TRCCNTCTLR2 = 34869,
594
  TRCCNTCTLR3 = 34877,
595
  TRCCNTVR0 = 34885,
596
  TRCCNTVR1 = 34893,
597
  TRCCNTVR2 = 34901,
598
  TRCCNTVR3 = 34909,
599
  TRCIMSPEC0 = 34823,
600
  TRCIMSPEC1 = 34831,
601
  TRCIMSPEC2 = 34839,
602
  TRCIMSPEC3 = 34847,
603
  TRCIMSPEC4 = 34855,
604
  TRCIMSPEC5 = 34863,
605
  TRCIMSPEC6 = 34871,
606
  TRCIMSPEC7 = 34879,
607
  TRCRSCTLR2 = 34960,
608
  TRCRSCTLR3 = 34968,
609
  TRCRSCTLR4 = 34976,
610
  TRCRSCTLR5 = 34984,
611
  TRCRSCTLR6 = 34992,
612
  TRCRSCTLR7 = 35000,
613
  TRCRSCTLR8 = 35008,
614
  TRCRSCTLR9 = 35016,
615
  TRCRSCTLR10 = 35024,
616
  TRCRSCTLR11 = 35032,
617
  TRCRSCTLR12 = 35040,
618
  TRCRSCTLR13 = 35048,
619
  TRCRSCTLR14 = 35056,
620
  TRCRSCTLR15 = 35064,
621
  TRCRSCTLR16 = 34945,
622
  TRCRSCTLR17 = 34953,
623
  TRCRSCTLR18 = 34961,
624
  TRCRSCTLR19 = 34969,
625
  TRCRSCTLR20 = 34977,
626
  TRCRSCTLR21 = 34985,
627
  TRCRSCTLR22 = 34993,
628
  TRCRSCTLR23 = 35001,
629
  TRCRSCTLR24 = 35009,
630
  TRCRSCTLR25 = 35017,
631
  TRCRSCTLR26 = 35025,
632
  TRCRSCTLR27 = 35033,
633
  TRCRSCTLR28 = 35041,
634
  TRCRSCTLR29 = 35049,
635
  TRCRSCTLR30 = 35057,
636
  TRCRSCTLR31 = 35065,
637
  TRCSSCCR0 = 34946,
638
  TRCSSCCR1 = 34954,
639
  TRCSSCCR2 = 34962,
640
  TRCSSCCR3 = 34970,
641
  TRCSSCCR4 = 34978,
642
  TRCSSCCR5 = 34986,
643
  TRCSSCCR6 = 34994,
644
  TRCSSCCR7 = 35002,
645
  TRCSSCSR0 = 35010,
646
  TRCSSCSR1 = 35018,
647
  TRCSSCSR2 = 35026,
648
  TRCSSCSR3 = 35034,
649
  TRCSSCSR4 = 35042,
650
  TRCSSCSR5 = 35050,
651
  TRCSSCSR6 = 35058,
652
  TRCSSCSR7 = 35066,
653
  TRCSSPCICR0 = 34947,
654
  TRCSSPCICR1 = 34955,
655
  TRCSSPCICR2 = 34963,
656
  TRCSSPCICR3 = 34971,
657
  TRCSSPCICR4 = 34979,
658
  TRCSSPCICR5 = 34987,
659
  TRCSSPCICR6 = 34995,
660
  TRCSSPCICR7 = 35003,
661
  TRCPDCR = 34980,
662
  TRCACVR0 = 35072,
663
  TRCACVR1 = 35088,
664
  TRCACVR2 = 35104,
665
  TRCACVR3 = 35120,
666
  TRCACVR4 = 35136,
667
  TRCACVR5 = 35152,
668
  TRCACVR6 = 35168,
669
  TRCACVR7 = 35184,
670
  TRCACVR8 = 35073,
671
  TRCACVR9 = 35089,
672
  TRCACVR10 = 35105,
673
  TRCACVR11 = 35121,
674
  TRCACVR12 = 35137,
675
  TRCACVR13 = 35153,
676
  TRCACVR14 = 35169,
677
  TRCACVR15 = 35185,
678
  TRCACATR0 = 35074,
679
  TRCACATR1 = 35090,
680
  TRCACATR2 = 35106,
681
  TRCACATR3 = 35122,
682
  TRCACATR4 = 35138,
683
  TRCACATR5 = 35154,
684
  TRCACATR6 = 35170,
685
  TRCACATR7 = 35186,
686
  TRCACATR8 = 35075,
687
  TRCACATR9 = 35091,
688
  TRCACATR10 = 35107,
689
  TRCACATR11 = 35123,
690
  TRCACATR12 = 35139,
691
  TRCACATR13 = 35155,
692
  TRCACATR14 = 35171,
693
  TRCACATR15 = 35187,
694
  TRCDVCVR0 = 35076,
695
  TRCDVCVR1 = 35108,
696
  TRCDVCVR2 = 35140,
697
  TRCDVCVR3 = 35172,
698
  TRCDVCVR4 = 35077,
699
  TRCDVCVR5 = 35109,
700
  TRCDVCVR6 = 35141,
701
  TRCDVCVR7 = 35173,
702
  TRCDVCMR0 = 35078,
703
  TRCDVCMR1 = 35110,
704
  TRCDVCMR2 = 35142,
705
  TRCDVCMR3 = 35174,
706
  TRCDVCMR4 = 35079,
707
  TRCDVCMR5 = 35111,
708
  TRCDVCMR6 = 35143,
709
  TRCDVCMR7 = 35175,
710
  TRCCIDCVR0 = 35200,
711
  TRCCIDCVR1 = 35216,
712
  TRCCIDCVR2 = 35232,
713
  TRCCIDCVR3 = 35248,
714
  TRCCIDCVR4 = 35264,
715
  TRCCIDCVR5 = 35280,
716
  TRCCIDCVR6 = 35296,
717
  TRCCIDCVR7 = 35312,
718
  TRCVMIDCVR0 = 35201,
719
  TRCVMIDCVR1 = 35217,
720
  TRCVMIDCVR2 = 35233,
721
  TRCVMIDCVR3 = 35249,
722
  TRCVMIDCVR4 = 35265,
723
  TRCVMIDCVR5 = 35281,
724
  TRCVMIDCVR6 = 35297,
725
  TRCVMIDCVR7 = 35313,
726
  TRCCIDCCTLR0 = 35202,
727
  TRCCIDCCTLR1 = 35210,
728
  TRCVMIDCCTLR0 = 35218,
729
  TRCVMIDCCTLR1 = 35226,
730
  TRCITCTRL = 35716,
731
  TRCCLAIMSET = 35782,
732
  TRCCLAIMCLR = 35790,
733
  ICC_BPR1_EL1 = 50787,
734
  ICC_BPR0_EL1 = 50755,
735
  ICC_PMR_EL1 = 49712,
736
  ICC_CTLR_EL1 = 50788,
737
  ICC_CTLR_EL3 = 63076,
738
  ICC_SRE_EL1 = 50789,
739
  ICC_SRE_EL2 = 58957,
740
  ICC_SRE_EL3 = 63077,
741
  ICC_IGRPEN0_EL1 = 50790,
742
  ICC_IGRPEN1_EL1 = 50791,
743
  ICC_IGRPEN1_EL3 = 63079,
744
  ICC_SEIEN_EL1 = 50792,
745
  ICC_AP0R0_EL1 = 50756,
746
  ICC_AP0R1_EL1 = 50757,
747
  ICC_AP0R2_EL1 = 50758,
748
  ICC_AP0R3_EL1 = 50759,
749
  ICC_AP1R0_EL1 = 50760,
750
  ICC_AP1R1_EL1 = 50761,
751
  ICC_AP1R2_EL1 = 50762,
752
  ICC_AP1R3_EL1 = 50763,
753
  ICH_AP0R0_EL2 = 58944,
754
  ICH_AP0R1_EL2 = 58945,
755
  ICH_AP0R2_EL2 = 58946,
756
  ICH_AP0R3_EL2 = 58947,
757
  ICH_AP1R0_EL2 = 58952,
758
  ICH_AP1R1_EL2 = 58953,
759
  ICH_AP1R2_EL2 = 58954,
760
  ICH_AP1R3_EL2 = 58955,
761
  ICH_HCR_EL2 = 58968,
762
  ICH_MISR_EL2 = 58970,
763
  ICH_VMCR_EL2 = 58975,
764
  ICH_VSEIR_EL2 = 58956,
765
  ICH_LR0_EL2 = 58976,
766
  ICH_LR1_EL2 = 58977,
767
  ICH_LR2_EL2 = 58978,
768
  ICH_LR3_EL2 = 58979,
769
  ICH_LR4_EL2 = 58980,
770
  ICH_LR5_EL2 = 58981,
771
  ICH_LR6_EL2 = 58982,
772
  ICH_LR7_EL2 = 58983,
773
  ICH_LR8_EL2 = 58984,
774
  ICH_LR9_EL2 = 58985,
775
  ICH_LR10_EL2 = 58986,
776
  ICH_LR11_EL2 = 58987,
777
  ICH_LR12_EL2 = 58988,
778
  ICH_LR13_EL2 = 58989,
779
  ICH_LR14_EL2 = 58990,
780
  ICH_LR15_EL2 = 58991,
781
  PAN = 49683,
782
  LORSA_EL1 = 50464,
783
  LOREA_EL1 = 50465,
784
  LORN_EL1 = 50466,
785
  LORC_EL1 = 50467,
786
  TTBR1_EL2 = 57601,
787
  CONTEXTIDR_EL2 = 59009,
788
  CNTHV_TVAL_EL2 = 59160,
789
  CNTHV_CVAL_EL2 = 59162,
790
  CNTHV_CTL_EL2 = 59161,
791
  SCTLR_EL12 = 59520,
792
  CPACR_EL12 = 59522,
793
  TTBR0_EL12 = 59648,
794
  TTBR1_EL12 = 59649,
795
  TCR_EL12 = 59650,
796
  AFSR0_EL12 = 60040,
797
  AFSR1_EL12 = 60041,
798
  ESR_EL12 = 60048,
799
  FAR_EL12 = 60160,
800
  MAIR_EL12 = 60688,
801
  AMAIR_EL12 = 60696,
802
  VBAR_EL12 = 60928,
803
  CONTEXTIDR_EL12 = 61057,
804
  CNTKCTL_EL12 = 61192,
805
  CNTP_TVAL_EL02 = 61200,
806
  CNTP_CTL_EL02 = 61201,
807
  CNTP_CVAL_EL02 = 61202,
808
  CNTV_TVAL_EL02 = 61208,
809
  CNTV_CTL_EL02 = 61209,
810
  CNTV_CVAL_EL02 = 61210,
811
  SPSR_EL12 = 59904,
812
  ELR_EL12 = 59905,
813
  UAO = 49684,
814
  PMBLIMITR_EL1 = 50384,
815
  PMBPTR_EL1 = 50385,
816
  PMBSR_EL1 = 50387,
817
  PMBIDR_EL1 = 50391,
818
  PMSCR_EL2 = 58568,
819
  PMSCR_EL12 = 60616,
820
  PMSCR_EL1 = 50376,
821
  PMSICR_EL1 = 50378,
822
  PMSIRR_EL1 = 50379,
823
  PMSFCR_EL1 = 50380,
824
  PMSEVFR_EL1 = 50381,
825
  PMSLATFR_EL1 = 50382,
826
  PMSIDR_EL1 = 50383,
827
  ERRSELR_EL1 = 49817,
828
  ERXCTLR_EL1 = 49825,
829
  ERXSTATUS_EL1 = 49826,
830
  ERXADDR_EL1 = 49827,
831
  ERXMISC0_EL1 = 49832,
832
  ERXMISC1_EL1 = 49833,
833
  DISR_EL1 = 50697,
834
  VDISR_EL2 = 58889,
835
  VSESR_EL2 = 58003,
836
  APIAKeyLo_EL1 = 49416,
837
  APIAKeyHi_EL1 = 49417,
838
  APIBKeyLo_EL1 = 49418,
839
  APIBKeyHi_EL1 = 49419,
840
  APDAKeyLo_EL1 = 49424,
841
  APDAKeyHi_EL1 = 49425,
842
  APDBKeyLo_EL1 = 49426,
843
  APDBKeyHi_EL1 = 49427,
844
  APGAKeyLo_EL1 = 49432,
845
  APGAKeyHi_EL1 = 49433,
846
  VSTCR_EL2 = 57650,
847
  VSTTBR_EL2 = 57648,
848
  CNTHVS_TVAL_EL2 = 59168,
849
  CNTHVS_CVAL_EL2 = 59170,
850
  CNTHVS_CTL_EL2 = 59169,
851
  CNTHPS_TVAL_EL2 = 59176,
852
  CNTHPS_CVAL_EL2 = 59178,
853
  CNTHPS_CTL_EL2 = 59177,
854
  SDER32_EL2 = 57497,
855
  ERXPFGCTL_EL1 = 49829,
856
  ERXPFGCDN_EL1 = 49830,
857
  ERXTS_EL1 = 49839,
858
  ERXMISC2_EL1 = 49834,
859
  ERXMISC3_EL1 = 49835,
860
  ERXPFGF_EL1 = 49828,
861
  MPAM0_EL1 = 50473,
862
  MPAM1_EL1 = 50472,
863
  MPAM2_EL2 = 58664,
864
  MPAM3_EL3 = 62760,
865
  MPAM1_EL12 = 60712,
866
  MPAMHCR_EL2 = 58656,
867
  MPAMVPMV_EL2 = 58657,
868
  MPAMVPM0_EL2 = 58672,
869
  MPAMVPM1_EL2 = 58673,
870
  MPAMVPM2_EL2 = 58674,
871
  MPAMVPM3_EL2 = 58675,
872
  MPAMVPM4_EL2 = 58676,
873
  MPAMVPM5_EL2 = 58677,
874
  MPAMVPM6_EL2 = 58678,
875
  MPAMVPM7_EL2 = 58679,
876
  MPAMIDR_EL1 = 50468,
877
  AMCR_EL0 = 56976,
878
  AMCFGR_EL0 = 56977,
879
  AMCGCR_EL0 = 56978,
880
  AMUSERENR_EL0 = 56979,
881
  AMCNTENCLR0_EL0 = 56980,
882
  AMCNTENSET0_EL0 = 56981,
883
  AMEVCNTR00_EL0 = 56992,
884
  AMEVCNTR01_EL0 = 56993,
885
  AMEVCNTR02_EL0 = 56994,
886
  AMEVCNTR03_EL0 = 56995,
887
  AMEVTYPER00_EL0 = 57008,
888
  AMEVTYPER01_EL0 = 57009,
889
  AMEVTYPER02_EL0 = 57010,
890
  AMEVTYPER03_EL0 = 57011,
891
  AMCNTENCLR1_EL0 = 56984,
892
  AMCNTENSET1_EL0 = 56985,
893
  AMEVCNTR10_EL0 = 57056,
894
  AMEVCNTR11_EL0 = 57057,
895
  AMEVCNTR12_EL0 = 57058,
896
  AMEVCNTR13_EL0 = 57059,
897
  AMEVCNTR14_EL0 = 57060,
898
  AMEVCNTR15_EL0 = 57061,
899
  AMEVCNTR16_EL0 = 57062,
900
  AMEVCNTR17_EL0 = 57063,
901
  AMEVCNTR18_EL0 = 57064,
902
  AMEVCNTR19_EL0 = 57065,
903
  AMEVCNTR110_EL0 = 57066,
904
  AMEVCNTR111_EL0 = 57067,
905
  AMEVCNTR112_EL0 = 57068,
906
  AMEVCNTR113_EL0 = 57069,
907
  AMEVCNTR114_EL0 = 57070,
908
  AMEVCNTR115_EL0 = 57071,
909
  AMEVTYPER10_EL0 = 57072,
910
  AMEVTYPER11_EL0 = 57073,
911
  AMEVTYPER12_EL0 = 57074,
912
  AMEVTYPER13_EL0 = 57075,
913
  AMEVTYPER14_EL0 = 57076,
914
  AMEVTYPER15_EL0 = 57077,
915
  AMEVTYPER16_EL0 = 57078,
916
  AMEVTYPER17_EL0 = 57079,
917
  AMEVTYPER18_EL0 = 57080,
918
  AMEVTYPER19_EL0 = 57081,
919
  AMEVTYPER110_EL0 = 57082,
920
  AMEVTYPER111_EL0 = 57083,
921
  AMEVTYPER112_EL0 = 57084,
922
  AMEVTYPER113_EL0 = 57085,
923
  AMEVTYPER114_EL0 = 57086,
924
  AMEVTYPER115_EL0 = 57087,
925
  TRFCR_EL1 = 49297,
926
  TRFCR_EL2 = 57489,
927
  TRFCR_EL12 = 59537,
928
  DIT = 55829,
929
  VNCR_EL2 = 57616,
930
  ZCR_EL1 = 49296,
931
  ZCR_EL2 = 57488,
932
  ZCR_EL3 = 61584,
933
  ZCR_EL12 = 59536,
934
  SSBS = 55830,
935
  TCO = 55831,
936
  GCR_EL1 = 49286,
937
  RGSR_EL1 = 49285,
938
  TFSR_EL1 = 49960,
939
  TFSR_EL2 = 58152,
940
  TFSR_EL3 = 62256,
941
  TFSR_EL12 = 60208,
942
  TFSRE0_EL1 = 49969,
943
  CPM_IOACC_CTL_EL3 = 65424,
944
};
945
#endif
946
947
#ifdef GET_TLBI_DECL
948
enum TLBIValues {
949
  IPAS2E1IS = 9217,
950
  IPAS2LE1IS = 9221,
951
  VMALLE1IS = 1048,
952
  ALLE2IS = 9240,
953
  ALLE3IS = 13336,
954
  VAE1IS = 1049,
955
  VAE2IS = 9241,
956
  VAE3IS = 13337,
957
  ASIDE1IS = 1050,
958
  VAAE1IS = 1051,
959
  ALLE1IS = 9244,
960
  VALE1IS = 1053,
961
  VALE2IS = 9245,
962
  VALE3IS = 13341,
963
  VMALLS12E1IS = 9246,
964
  VAALE1IS = 1055,
965
  IPAS2E1 = 9249,
966
  IPAS2LE1 = 9253,
967
  VMALLE1 = 1080,
968
  ALLE2 = 9272,
969
  ALLE3 = 13368,
970
  VAE1 = 1081,
971
  VAE2 = 9273,
972
  VAE3 = 13369,
973
  ASIDE1 = 1082,
974
  VAAE1 = 1083,
975
  ALLE1 = 9276,
976
  VALE1 = 1085,
977
  VALE2 = 9277,
978
  VALE3 = 13373,
979
  VMALLS12E1 = 9278,
980
  VAALE1 = 1087,
981
  VMALLE1OS = 1032,
982
  VAE1OS = 1033,
983
  ASIDE1OS = 1034,
984
  VAAE1OS = 1035,
985
  VALE1OS = 1037,
986
  VAALE1OS = 1039,
987
  IPAS2E1OS = 9248,
988
  IPAS2LE1OS = 9252,
989
  VAE2OS = 9225,
990
  VALE2OS = 9229,
991
  VMALLS12E1OS = 9230,
992
  VAE3OS = 13321,
993
  VALE3OS = 13325,
994
  ALLE2OS = 9224,
995
  ALLE1OS = 9228,
996
  ALLE3OS = 13320,
997
  RVAE1 = 1073,
998
  RVAAE1 = 1075,
999
  RVALE1 = 1077,
1000
  RVAALE1 = 1079,
1001
  RVAE1IS = 1041,
1002
  RVAAE1IS = 1043,
1003
  RVALE1IS = 1045,
1004
  RVAALE1IS = 1047,
1005
  RVAE1OS = 1065,
1006
  RVAAE1OS = 1067,
1007
  RVALE1OS = 1069,
1008
  RVAALE1OS = 1071,
1009
  RIPAS2E1IS = 9218,
1010
  RIPAS2LE1IS = 9222,
1011
  RIPAS2E1 = 9250,
1012
  RIPAS2LE1 = 9254,
1013
  RIPAS2E1OS = 9251,
1014
  RIPAS2LE1OS = 9255,
1015
  RVAE2 = 9265,
1016
  RVALE2 = 9269,
1017
  RVAE2IS = 9233,
1018
  RVALE2IS = 9237,
1019
  RVAE2OS = 9257,
1020
  RVALE2OS = 9261,
1021
  RVAE3 = 13361,
1022
  RVALE3 = 13365,
1023
  RVAE3IS = 13329,
1024
  RVALE3IS = 13333,
1025
  RVAE3OS = 13353,
1026
  RVALE3OS = 13357,
1027
};
1028
#endif
1029
1030
#ifdef GET_TSB_DECL
1031
enum TSBValues {
1032
  csync = 0,
1033
};
1034
#endif
1035
1036
#ifdef GET_AT_DECL
1037
const AT *lookupATByName(StringRef Name);
1038
const AT *lookupATByEncoding(uint16_t Encoding);
1039
#endif
1040
1041
#ifdef GET_AT_IMPL
1042
const AT ATsList[] = {
1043
  { "S1E1R", 0x3C0,  {}  }, // 0
1044
  { "S1E2R", 0x23C0,  {}  }, // 1
1045
  { "S1E3R", 0x33C0,  {}  }, // 2
1046
  { "S1E1W", 0x3C1,  {}  }, // 3
1047
  { "S1E2W", 0x23C1,  {}  }, // 4
1048
  { "S1E3W", 0x33C1,  {}  }, // 5
1049
  { "S1E0R", 0x3C2,  {}  }, // 6
1050
  { "S1E0W", 0x3C3,  {}  }, // 7
1051
  { "S12E1R", 0x23C4,  {}  }, // 8
1052
  { "S12E1W", 0x23C5,  {}  }, // 9
1053
  { "S12E0R", 0x23C6,  {}  }, // 10
1054
  { "S12E0W", 0x23C7,  {}  }, // 11
1055
  { "S1E1RP", 0x3C8,  {AArch64::HasV8_2aOps}  }, // 12
1056
  { "S1E1WP", 0x3C9,  {AArch64::HasV8_2aOps}  }, // 13
1057
 };
1058
1059
40
const AT *lookupATByName(StringRef Name) {
1060
40
  struct IndexType {
1061
40
    const char * Name;
1062
40
    unsigned _index;
1063
40
  };
1064
40
  static const struct IndexType Index[] = {
1065
40
    { "S12E0R", 10 },
1066
40
    { "S12E0W", 11 },
1067
40
    { "S12E1R", 8 },
1068
40
    { "S12E1W", 9 },
1069
40
    { "S1E0R", 6 },
1070
40
    { "S1E0W", 7 },
1071
40
    { "S1E1R", 0 },
1072
40
    { "S1E1RP", 12 },
1073
40
    { "S1E1W", 3 },
1074
40
    { "S1E1WP", 13 },
1075
40
    { "S1E2R", 1 },
1076
40
    { "S1E2W", 4 },
1077
40
    { "S1E3R", 2 },
1078
40
    { "S1E3W", 5 },
1079
40
  };
1080
40
1081
40
  struct KeyType {
1082
40
    std::string Name;
1083
40
  };
1084
40
  KeyType Key = { Name.upper() };
1085
40
  auto Table = makeArrayRef(Index);
1086
40
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1087
160
    [](const IndexType &LHS, const KeyType &RHS) {
1088
160
      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
1089
160
      if (CmpName < 0) 
return true70
;
1090
90
      if (CmpName > 0) 
return false50
;
1091
40
      return false;
1092
40
    });
1093
40
1094
40
  if (Idx == Table.end() ||
1095
40
      Key.Name != Idx->Name)
1096
0
    return nullptr;
1097
40
  return &ATsList[Idx->_index];
1098
40
}
1099
1100
42
const AT *lookupATByEncoding(uint16_t Encoding) {
1101
42
  struct IndexType {
1102
42
    uint16_t Encoding;
1103
42
    unsigned _index;
1104
42
  };
1105
42
  static const struct IndexType Index[] = {
1106
42
    { 0x3C0, 0 },
1107
42
    { 0x3C1, 3 },
1108
42
    { 0x3C2, 6 },
1109
42
    { 0x3C3, 7 },
1110
42
    { 0x3C8, 12 },
1111
42
    { 0x3C9, 13 },
1112
42
    { 0x23C0, 1 },
1113
42
    { 0x23C1, 4 },
1114
42
    { 0x23C4, 8 },
1115
42
    { 0x23C5, 9 },
1116
42
    { 0x23C6, 10 },
1117
42
    { 0x23C7, 11 },
1118
42
    { 0x33C0, 2 },
1119
42
    { 0x33C1, 5 },
1120
42
  };
1121
42
1122
42
  struct KeyType {
1123
42
    uint16_t Encoding;
1124
42
  };
1125
42
  KeyType Key = { Encoding };
1126
42
  auto Table = makeArrayRef(Index);
1127
42
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1128
168
    [](const IndexType &LHS, const KeyType &RHS) {
1129
168
      if (LHS.Encoding < RHS.Encoding)
1130
75
        return true;
1131
93
      if (LHS.Encoding > RHS.Encoding)
1132
51
        return false;
1133
42
      return false;
1134
42
    });
1135
42
1136
42
  if (Idx == Table.end() ||
1137
42
      Key.Encoding != Idx->Encoding)
1138
0
    return nullptr;
1139
42
  return &ATsList[Idx->_index];
1140
42
}
1141
#endif
1142
1143
#ifdef GET_BTI_DECL
1144
const BTI *lookupBTIByName(StringRef Name);
1145
const BTI *lookupBTIByEncoding(uint8_t Encoding);
1146
#endif
1147
1148
#ifdef GET_BTI_IMPL
1149
const BTI BTIsList[] = {
1150
  { "c", 0x1 }, // 0
1151
  { "j", 0x2 }, // 1
1152
  { "jc", 0x3 }, // 2
1153
 };
1154
1155
12
const BTI *lookupBTIByName(StringRef Name) {
1156
12
  struct IndexType {
1157
12
    const char * Name;
1158
12
    unsigned _index;
1159
12
  };
1160
12
  static const struct IndexType Index[] = {
1161
12
    { "C", 0 },
1162
12
    { "J", 1 },
1163
12
    { "JC", 2 },
1164
12
  };
1165
12
1166
12
  struct KeyType {
1167
12
    std::string Name;
1168
12
  };
1169
12
  KeyType Key = { Name.upper() };
1170
12
  auto Table = makeArrayRef(Index);
1171
12
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1172
24
    [](const IndexType &LHS, const KeyType &RHS) {
1173
24
      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
1174
24
      if (CmpName < 0) 
return true9
;
1175
15
      if (CmpName > 0) 
return false6
;
1176
9
      return false;
1177
9
    });
1178
12
1179
12
  if (Idx == Table.end() ||
1180
12
      
Key.Name != Idx->Name11
)
1181
3
    return nullptr;
1182
9
  return &BTIsList[Idx->_index];
1183
9
}
1184
1185
56
const BTI *lookupBTIByEncoding(uint8_t Encoding) {
1186
56
  struct IndexType {
1187
56
    uint8_t Encoding;
1188
56
    unsigned _index;
1189
56
  };
1190
56
  static const struct IndexType Index[] = {
1191
56
    { 0x1, 0 },
1192
56
    { 0x2, 1 },
1193
56
    { 0x3, 2 },
1194
56
  };
1195
56
1196
56
  struct KeyType {
1197
56
    uint8_t Encoding;
1198
56
  };
1199
56
  KeyType Key = { Encoding };
1200
56
  auto Table = makeArrayRef(Index);
1201
56
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1202
112
    [](const IndexType &LHS, const KeyType &RHS) {
1203
112
      if (LHS.Encoding < RHS.Encoding)
1204
48
        return true;
1205
64
      if (LHS.Encoding > RHS.Encoding)
1206
20
        return false;
1207
44
      return false;
1208
44
    });
1209
56
1210
56
  if (Idx == Table.end() ||
1211
56
      
Key.Encoding != Idx->Encoding46
)
1212
12
    return nullptr;
1213
44
  return &BTIsList[Idx->_index];
1214
44
}
1215
#endif
1216
1217
#ifdef GET_DB_DECL
1218
const DB *lookupDBByName(StringRef Name);
1219
const DB *lookupDBByEncoding(uint8_t Encoding);
1220
#endif
1221
1222
#ifdef GET_DB_IMPL
1223
const DB DBsList[] = {
1224
  { "oshld", 0x1 }, // 0
1225
  { "oshst", 0x2 }, // 1
1226
  { "osh", 0x3 }, // 2
1227
  { "nshld", 0x5 }, // 3
1228
  { "nshst", 0x6 }, // 4
1229
  { "nsh", 0x7 }, // 5
1230
  { "ishld", 0x9 }, // 6
1231
  { "ishst", 0xA }, // 7
1232
  { "ish", 0xB }, // 8
1233
  { "ld", 0xD }, // 9
1234
  { "st", 0xE }, // 10
1235
  { "sy", 0xF }, // 11
1236
 };
1237
1238
37
const DB *lookupDBByName(StringRef Name) {
1239
37
  struct IndexType {
1240
37
    const char * Name;
1241
37
    unsigned _index;
1242
37
  };
1243
37
  static const struct IndexType Index[] = {
1244
37
    { "ISH", 8 },
1245
37
    { "ISHLD", 6 },
1246
37
    { "ISHST", 7 },
1247
37
    { "LD", 9 },
1248
37
    { "NSH", 5 },
1249
37
    { "NSHLD", 3 },
1250
37
    { "NSHST", 4 },
1251
37
    { "OSH", 2 },
1252
37
    { "OSHLD", 0 },
1253
37
    { "OSHST", 1 },
1254
37
    { "ST", 10 },
1255
37
    { "SY", 11 },
1256
37
  };
1257
37
1258
37
  struct KeyType {
1259
37
    std::string Name;
1260
37
  };
1261
37
  KeyType Key = { Name.upper() };
1262
37
  auto Table = makeArrayRef(Index);
1263
37
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1264
144
    [](const IndexType &LHS, const KeyType &RHS) {
1265
144
      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
1266
144
      if (CmpName < 0) 
return true51
;
1267
93
      if (CmpName > 0) 
return false62
;
1268
31
      return false;
1269
31
    });
1270
37
1271
37
  if (Idx == Table.end() ||
1272
37
      Key.Name != Idx->Name)
1273
6
    return nullptr;
1274
31
  return &DBsList[Idx->_index];
1275
31
}
1276
1277
182
const DB *lookupDBByEncoding(uint8_t Encoding) {
1278
182
  struct IndexType {
1279
182
    uint8_t Encoding;
1280
182
    unsigned _index;
1281
182
  };
1282
182
  static const struct IndexType Index[] = {
1283
182
    { 0x1, 0 },
1284
182
    { 0x2, 1 },
1285
182
    { 0x3, 2 },
1286
182
    { 0x5, 3 },
1287
182
    { 0x6, 4 },
1288
182
    { 0x7, 5 },
1289
182
    { 0x9, 6 },
1290
182
    { 0xA, 7 },
1291
182
    { 0xB, 8 },
1292
182
    { 0xD, 9 },
1293
182
    { 0xE, 10 },
1294
182
    { 0xF, 11 },
1295
182
  };
1296
182
1297
182
  struct KeyType {
1298
182
    uint8_t Encoding;
1299
182
  };
1300
182
  KeyType Key = { Encoding };
1301
182
  auto Table = makeArrayRef(Index);
1302
182
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1303
693
    [](const IndexType &LHS, const KeyType &RHS) {
1304
693
      if (LHS.Encoding < RHS.Encoding)
1305
308
        return true;
1306
385
      if (LHS.Encoding > RHS.Encoding)
1307
224
        return false;
1308
161
      return false;
1309
161
    });
1310
182
1311
182
  if (Idx == Table.end() ||
1312
182
      Key.Encoding != Idx->Encoding)
1313
21
    return nullptr;
1314
161
  return &DBsList[Idx->_index];
1315
161
}
1316
#endif
1317
1318
#ifdef GET_DC_DECL
1319
const DC *lookupDCByName(StringRef Name);
1320
const DC *lookupDCByEncoding(uint16_t Encoding);
1321
#endif
1322
1323
#ifdef GET_DC_IMPL
1324
const DC DCsList[] = {
1325
  { "ZVA", 0x1BA1,  {}  }, // 0
1326
  { "IVAC", 0x3B1,  {}  }, // 1
1327
  { "ISW", 0x3B2,  {}  }, // 2
1328
  { "CVAC", 0x1BD1,  {}  }, // 3
1329
  { "CSW", 0x3D2,  {}  }, // 4
1330
  { "CVAU", 0x1BD9,  {}  }, // 5
1331
  { "CIVAC", 0x1BF1,  {}  }, // 6
1332
  { "CISW", 0x3F2,  {}  }, // 7
1333
  { "CVAP", 0x1BE1,  {AArch64::HasV8_2aOps}  }, // 8
1334
  { "CVADP", 0x1BE9,  {AArch64::FeatureCacheDeepPersist}  }, // 9
1335
  { "IGVAC", 0x3B3,  {AArch64::FeatureMTE}  }, // 10
1336
  { "IGSW", 0x3B4,  {AArch64::FeatureMTE}  }, // 11
1337
  { "CGSW", 0x3D4,  {AArch64::FeatureMTE}  }, // 12
1338
  { "CIGSW", 0x3F4,  {AArch64::FeatureMTE}  }, // 13
1339
  { "CGVAC", 0x1BD3,  {AArch64::FeatureMTE}  }, // 14
1340
  { "CGVAP", 0x1BE3,  {AArch64::FeatureMTE}  }, // 15
1341
  { "CGVADP", 0x1BEB,  {AArch64::FeatureMTE}  }, // 16
1342
  { "CIGVAC", 0x1BF3,  {AArch64::FeatureMTE}  }, // 17
1343
  { "GVA", 0x1BA3,  {AArch64::FeatureMTE}  }, // 18
1344
  { "IGDVAC", 0x3B5,  {AArch64::FeatureMTE}  }, // 19
1345
  { "IGDSW", 0x3B6,  {AArch64::FeatureMTE}  }, // 20
1346
  { "CGDSW", 0x3D6,  {AArch64::FeatureMTE}  }, // 21
1347
  { "CIGDSW", 0x3F6,  {AArch64::FeatureMTE}  }, // 22
1348
  { "CGDVAC", 0x1BD5,  {AArch64::FeatureMTE}  }, // 23
1349
  { "CGDVAP", 0x1BE5,  {AArch64::FeatureMTE}  }, // 24
1350
  { "CGDVADP", 0x1BED,  {AArch64::FeatureMTE}  }, // 25
1351
  { "CIGDVAC", 0x1BF5,  {AArch64::FeatureMTE}  }, // 26
1352
  { "GZVA", 0x1BA4,  {AArch64::FeatureMTE}  }, // 27
1353
 };
1354
1355
83
const DC *lookupDCByName(StringRef Name) {
1356
83
  struct IndexType {
1357
83
    const char * Name;
1358
83
    unsigned _index;
1359
83
  };
1360
83
  static const struct IndexType Index[] = {
1361
83
    { "CGDSW", 21 },
1362
83
    { "CGDVAC", 23 },
1363
83
    { "CGDVADP", 25 },
1364
83
    { "CGDVAP", 24 },
1365
83
    { "CGSW", 12 },
1366
83
    { "CGVAC", 14 },
1367
83
    { "CGVADP", 16 },
1368
83
    { "CGVAP", 15 },
1369
83
    { "CIGDSW", 22 },
1370
83
    { "CIGDVAC", 26 },
1371
83
    { "CIGSW", 13 },
1372
83
    { "CIGVAC", 17 },
1373
83
    { "CISW", 7 },
1374
83
    { "CIVAC", 6 },
1375
83
    { "CSW", 4 },
1376
83
    { "CVAC", 3 },
1377
83
    { "CVADP", 9 },
1378
83
    { "CVAP", 8 },
1379
83
    { "CVAU", 5 },
1380
83
    { "GVA", 18 },
1381
83
    { "GZVA", 27 },
1382
83
    { "IGDSW", 20 },
1383
83
    { "IGDVAC", 19 },
1384
83
    { "IGSW", 11 },
1385
83
    { "IGVAC", 10 },
1386
83
    { "ISW", 2 },
1387
83
    { "IVAC", 1 },
1388
83
    { "ZVA", 0 },
1389
83
  };
1390
83
1391
83
  struct KeyType {
1392
83
    std::string Name;
1393
83
  };
1394
83
  KeyType Key = { Name.upper() };
1395
83
  auto Table = makeArrayRef(Index);
1396
83
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1397
409
    [](const IndexType &LHS, const KeyType &RHS) {
1398
409
      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
1399
409
      if (CmpName < 0) 
return true187
;
1400
222
      if (CmpName > 0) 
return false139
;
1401
83
      return false;
1402
83
    });
1403
83
1404
83
  if (Idx == Table.end() ||
1405
83
      Key.Name != Idx->Name)
1406
0
    return nullptr;
1407
83
  return &DCsList[Idx->_index];
1408
83
}
1409
1410
137
const DC *lookupDCByEncoding(uint16_t Encoding) {
1411
137
  struct IndexType {
1412
137
    uint16_t Encoding;
1413
137
    unsigned _index;
1414
137
  };
1415
137
  static const struct IndexType Index[] = {
1416
137
    { 0x3B1, 1 },
1417
137
    { 0x3B2, 2 },
1418
137
    { 0x3B3, 10 },
1419
137
    { 0x3B4, 11 },
1420
137
    { 0x3B5, 19 },
1421
137
    { 0x3B6, 20 },
1422
137
    { 0x3D2, 4 },
1423
137
    { 0x3D4, 12 },
1424
137
    { 0x3D6, 21 },
1425
137
    { 0x3F2, 7 },
1426
137
    { 0x3F4, 13 },
1427
137
    { 0x3F6, 22 },
1428
137
    { 0x1BA1, 0 },
1429
137
    { 0x1BA3, 18 },
1430
137
    { 0x1BA4, 27 },
1431
137
    { 0x1BD1, 3 },
1432
137
    { 0x1BD3, 14 },
1433
137
    { 0x1BD5, 23 },
1434
137
    { 0x1BD9, 5 },
1435
137
    { 0x1BE1, 8 },
1436
137
    { 0x1BE3, 15 },
1437
137
    { 0x1BE5, 24 },
1438
137
    { 0x1BE9, 9 },
1439
137
    { 0x1BEB, 16 },
1440
137
    { 0x1BED, 25 },
1441
137
    { 0x1BF1, 6 },
1442
137
    { 0x1BF3, 17 },
1443
137
    { 0x1BF5, 26 },
1444
137
  };
1445
137
1446
137
  struct KeyType {
1447
137
    uint16_t Encoding;
1448
137
  };
1449
137
  KeyType Key = { Encoding };
1450
137
  auto Table = makeArrayRef(Index);
1451
137
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1452
677
    [](const IndexType &LHS, const KeyType &RHS) {
1453
677
      if (LHS.Encoding < RHS.Encoding)
1454
297
        return true;
1455
380
      if (LHS.Encoding > RHS.Encoding)
1456
243
        return false;
1457
137
      return false;
1458
137
    });
1459
137
1460
137
  if (Idx == Table.end() ||
1461
137
      Key.Encoding != Idx->Encoding)
1462
0
    return nullptr;
1463
137
  return &DCsList[Idx->_index];
1464
137
}
1465
#endif
1466
1467
#ifdef GET_EXACTFPIMM_DECL
1468
const ExactFPImm *lookupExactFPImmByEnum(uint8_t Enum);
1469
const ExactFPImm *lookupExactFPImmByRepr(StringRef Repr);
1470
#endif
1471
1472
#ifdef GET_EXACTFPIMM_IMPL
1473
const ExactFPImm ExactFPImmsList[] = {
1474
  { "zero", 0x0, "0.0" }, // 0
1475
  { "half", 0x1, "0.5" }, // 1
1476
  { "one", 0x2, "1.0" }, // 2
1477
  { "two", 0x3, "2.0" }, // 3
1478
 };
1479
1480
1.20k
const ExactFPImm *lookupExactFPImmByEnum(uint8_t Enum) {
1481
1.20k
  struct IndexType {
1482
1.20k
    uint8_t Enum;
1483
1.20k
    unsigned _index;
1484
1.20k
  };
1485
1.20k
  static const struct IndexType Index[] = {
1486
1.20k
    { 0x0, 0 },
1487
1.20k
    { 0x1, 1 },
1488
1.20k
    { 0x2, 2 },
1489
1.20k
    { 0x3, 3 },
1490
1.20k
  };
1491
1.20k
1492
1.20k
  auto Table = makeArrayRef(Index);
1493
1.20k
  size_t Idx = Enum;
1494
1.20k
  return Idx >= Table.size() ? 
nullptr0
: &ExactFPImmsList[Table[Idx]._index];
1495
1.20k
}
1496
1497
0
const ExactFPImm *lookupExactFPImmByRepr(StringRef Repr) {
1498
0
  struct IndexType {
1499
0
    const char * Repr;
1500
0
    unsigned _index;
1501
0
  };
1502
0
  static const struct IndexType Index[] = {
1503
0
    { "0.0", 0 },
1504
0
    { "0.5", 1 },
1505
0
    { "1.0", 2 },
1506
0
    { "2.0", 3 },
1507
0
  };
1508
0
1509
0
  struct KeyType {
1510
0
    std::string Repr;
1511
0
  };
1512
0
  KeyType Key = { Repr.upper() };
1513
0
  auto Table = makeArrayRef(Index);
1514
0
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1515
0
    [](const IndexType &LHS, const KeyType &RHS) {
1516
0
      int CmpRepr = StringRef(LHS.Repr).compare(RHS.Repr);
1517
0
      if (CmpRepr < 0) return true;
1518
0
      if (CmpRepr > 0) return false;
1519
0
      return false;
1520
0
    });
1521
0
1522
0
  if (Idx == Table.end() ||
1523
0
      Key.Repr != Idx->Repr)
1524
0
    return nullptr;
1525
0
  return &ExactFPImmsList[Idx->_index];
1526
0
}
1527
#endif
1528
1529
#ifdef GET_IC_DECL
1530
const IC *lookupICByName(StringRef Name);
1531
const IC *lookupICByEncoding(uint16_t Encoding);
1532
#endif
1533
1534
#ifdef GET_IC_IMPL
1535
const IC ICsList[] = {
1536
  { "IALLUIS", 0x388, false }, // 0
1537
  { "IALLU", 0x3A8, false }, // 1
1538
  { "IVAU", 0x1BA9, true }, // 2
1539
 };
1540
1541
12
const IC *lookupICByName(StringRef Name) {
1542
12
  struct IndexType {
1543
12
    const char * Name;
1544
12
    unsigned _index;
1545
12
  };
1546
12
  static const struct IndexType Index[] = {
1547
12
    { "IALLU", 1 },
1548
12
    { "IALLUIS", 0 },
1549
12
    { "IVAU", 2 },
1550
12
  };
1551
12
1552
12
  struct KeyType {
1553
12
    std::string Name;
1554
12
  };
1555
12
  KeyType Key = { Name.upper() };
1556
12
  auto Table = makeArrayRef(Index);
1557
12
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1558
24
    [](const IndexType &LHS, const KeyType &RHS) {
1559
24
      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
1560
24
      if (CmpName < 0) 
return true8
;
1561
16
      if (CmpName > 0) 
return false5
;
1562
11
      return false;
1563
11
    });
1564
12
1565
12
  if (Idx == Table.end() ||
1566
12
      Key.Name != Idx->Name)
1567
1
    return nullptr;
1568
11
  return &ICsList[Idx->_index];
1569
11
}
1570
1571
21
const IC *lookupICByEncoding(uint16_t Encoding) {
1572
21
  struct IndexType {
1573
21
    uint16_t Encoding;
1574
21
    unsigned _index;
1575
21
  };
1576
21
  static const struct IndexType Index[] = {
1577
21
    { 0x388, 0 },
1578
21
    { 0x3A8, 1 },
1579
21
    { 0x1BA9, 2 },
1580
21
  };
1581
21
1582
21
  struct KeyType {
1583
21
    uint16_t Encoding;
1584
21
  };
1585
21
  KeyType Key = { Encoding };
1586
21
  auto Table = makeArrayRef(Index);
1587
21
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1588
42
    [](const IndexType &LHS, const KeyType &RHS) {
1589
42
      if (LHS.Encoding < RHS.Encoding)
1590
14
        return true;
1591
28
      if (LHS.Encoding > RHS.Encoding)
1592
7
        return false;
1593
21
      return false;
1594
21
    });
1595
21
1596
21
  if (Idx == Table.end() ||
1597
21
      Key.Encoding != Idx->Encoding)
1598
0
    return nullptr;
1599
21
  return &ICsList[Idx->_index];
1600
21
}
1601
#endif
1602
1603
#ifdef GET_ISB_DECL
1604
const ISB *lookupISBByName(StringRef Name);
1605
const ISB *lookupISBByEncoding(uint8_t Encoding);
1606
#endif
1607
1608
#ifdef GET_ISB_IMPL
1609
const ISB ISBsList[] = {
1610
  { "sy", 0xF }, // 0
1611
 };
1612
1613
0
const ISB *lookupISBByName(StringRef Name) {
1614
0
  struct IndexType {
1615
0
    const char * Name;
1616
0
    unsigned _index;
1617
0
  };
1618
0
  static const struct IndexType Index[] = {
1619
0
    { "SY", 0 },
1620
0
  };
1621
0
1622
0
  struct KeyType {
1623
0
    std::string Name;
1624
0
  };
1625
0
  KeyType Key = { Name.upper() };
1626
0
  auto Table = makeArrayRef(Index);
1627
0
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1628
0
    [](const IndexType &LHS, const KeyType &RHS) {
1629
0
      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
1630
0
      if (CmpName < 0) return true;
1631
0
      if (CmpName > 0) return false;
1632
0
      return false;
1633
0
    });
1634
0
1635
0
  if (Idx == Table.end() ||
1636
0
      Key.Name != Idx->Name)
1637
0
    return nullptr;
1638
0
  return &ISBsList[Idx->_index];
1639
0
}
1640
1641
6
const ISB *lookupISBByEncoding(uint8_t Encoding) {
1642
6
  struct IndexType {
1643
6
    uint8_t Encoding;
1644
6
    unsigned _index;
1645
6
  };
1646
6
  static const struct IndexType Index[] = {
1647
6
    { 0xF, 0 },
1648
6
  };
1649
6
1650
6
  struct KeyType {
1651
6
    uint8_t Encoding;
1652
6
  };
1653
6
  KeyType Key = { Encoding };
1654
6
  auto Table = makeArrayRef(Index);
1655
6
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1656
6
    [](const IndexType &LHS, const KeyType &RHS) {
1657
6
      if (LHS.Encoding < RHS.Encoding)
1658
0
        return true;
1659
6
      if (LHS.Encoding > RHS.Encoding)
1660
6
        return false;
1661
0
      return false;
1662
0
    });
1663
6
1664
6
  if (Idx == Table.end() ||
1665
6
      Key.Encoding != Idx->Encoding)
1666
6
    return nullptr;
1667
0
  return &ISBsList[Idx->_index];
1668
0
}
1669
#endif
1670
1671
#ifdef GET_PRCTX_DECL
1672
const PRCTX *lookupPRCTXByName(StringRef Name);
1673
const PRCTX *lookupPRCTXByEncoding(uint16_t Encoding);
1674
#endif
1675
1676
#ifdef GET_PRCTX_IMPL
1677
const PRCTX PRCTXsList[] = {
1678
  { "RCTX", 0x373, true,  {AArch64::FeaturePredCtrl}  }, // 0
1679
 };
1680
1681
15
const PRCTX *lookupPRCTXByName(StringRef Name) {
1682
15
  struct IndexType {
1683
15
    const char * Name;
1684
15
    unsigned _index;
1685
15
  };
1686
15
  static const struct IndexType Index[] = {
1687
15
    { "RCTX", 0 },
1688
15
  };
1689
15
1690
15
  struct KeyType {
1691
15
    std::string Name;
1692
15
  };
1693
15
  KeyType Key = { Name.upper() };
1694
15
  auto Table = makeArrayRef(Index);
1695
15
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1696
15
    [](const IndexType &LHS, const KeyType &RHS) {
1697
15
      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
1698
15
      if (CmpName < 0) 
return true3
;
1699
12
      if (CmpName > 0) 
return false0
;
1700
12
      return false;
1701
12
    });
1702
15
1703
15
  if (Idx == Table.end() ||
1704
15
      
Key.Name != Idx->Name12
)
1705
3
    return nullptr;
1706
12
  return &PRCTXsList[Idx->_index];
1707
12
}
1708
1709
15
const PRCTX *lookupPRCTXByEncoding(uint16_t Encoding) {
1710
15
  struct IndexType {
1711
15
    uint16_t Encoding;
1712
15
    unsigned _index;
1713
15
  };
1714
15
  static const struct IndexType Index[] = {
1715
15
    { 0x373, 0 },
1716
15
  };
1717
15
1718
15
  struct KeyType {
1719
15
    uint16_t Encoding;
1720
15
  };
1721
15
  KeyType Key = { Encoding };
1722
15
  auto Table = makeArrayRef(Index);
1723
15
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1724
15
    [](const IndexType &LHS, const KeyType &RHS) {
1725
15
      if (LHS.Encoding < RHS.Encoding)
1726
0
        return true;
1727
15
      if (LHS.Encoding > RHS.Encoding)
1728
0
        return false;
1729
15
      return false;
1730
15
    });
1731
15
1732
15
  if (Idx == Table.end() ||
1733
15
      Key.Encoding != Idx->Encoding)
1734
0
    return nullptr;
1735
15
  return &PRCTXsList[Idx->_index];
1736
15
}
1737
#endif
1738
1739
#ifdef GET_PRFM_DECL
1740
const PRFM *lookupPRFMByName(StringRef Name);
1741
const PRFM *lookupPRFMByEncoding(uint8_t Encoding);
1742
#endif
1743
1744
#ifdef GET_PRFM_IMPL
1745
const PRFM PRFMsList[] = {
1746
  { "pldl1keep", 0x0 }, // 0
1747
  { "pldl1strm", 0x1 }, // 1
1748
  { "pldl2keep", 0x2 }, // 2
1749
  { "pldl2strm", 0x3 }, // 3
1750
  { "pldl3keep", 0x4 }, // 4
1751
  { "pldl3strm", 0x5 }, // 5
1752
  { "plil1keep", 0x8 }, // 6
1753
  { "plil1strm", 0x9 }, // 7
1754
  { "plil2keep", 0xA }, // 8
1755
  { "plil2strm", 0xB }, // 9
1756
  { "plil3keep", 0xC }, // 10
1757
  { "plil3strm", 0xD }, // 11
1758
  { "pstl1keep", 0x10 }, // 12
1759
  { "pstl1strm", 0x11 }, // 13
1760
  { "pstl2keep", 0x12 }, // 14
1761
  { "pstl2strm", 0x13 }, // 15
1762
  { "pstl3keep", 0x14 }, // 16
1763
  { "pstl3strm", 0x15 }, // 17
1764
 };
1765
1766
41
const PRFM *lookupPRFMByName(StringRef Name) {
1767
41
  struct IndexType {
1768
41
    const char * Name;
1769
41
    unsigned _index;
1770
41
  };
1771
41
  static const struct IndexType Index[] = {
1772
41
    { "PLDL1KEEP", 0 },
1773
41
    { "PLDL1STRM", 1 },
1774
41
    { "PLDL2KEEP", 2 },
1775
41
    { "PLDL2STRM", 3 },
1776
41
    { "PLDL3KEEP", 4 },
1777
41
    { "PLDL3STRM", 5 },
1778
41
    { "PLIL1KEEP", 6 },
1779
41
    { "PLIL1STRM", 7 },
1780
41
    { "PLIL2KEEP", 8 },
1781
41
    { "PLIL2STRM", 9 },
1782
41
    { "PLIL3KEEP", 10 },
1783
41
    { "PLIL3STRM", 11 },
1784
41
    { "PSTL1KEEP", 12 },
1785
41
    { "PSTL1STRM", 13 },
1786
41
    { "PSTL2KEEP", 14 },
1787
41
    { "PSTL2STRM", 15 },
1788
41
    { "PSTL3KEEP", 16 },
1789
41
    { "PSTL3STRM", 17 },
1790
41
  };
1791
41
1792
41
  struct KeyType {
1793
41
    std::string Name;
1794
41
  };
1795
41
  KeyType Key = { Name.upper() };
1796
41
  auto Table = makeArrayRef(Index);
1797
41
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1798
176
    [](const IndexType &LHS, const KeyType &RHS) {
1799
176
      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
1800
176
      if (CmpName < 0) 
return true76
;
1801
100
      if (CmpName > 0) 
return false60
;
1802
40
      return false;
1803
40
    });
1804
41
1805
41
  if (Idx == Table.end() ||
1806
41
      
Key.Name != Idx->Name40
)
1807
1
    return nullptr;
1808
40
  return &PRFMsList[Idx->_index];
1809
40
}
1810
1811
175
const PRFM *lookupPRFMByEncoding(uint8_t Encoding) {
1812
175
  struct IndexType {
1813
175
    uint8_t Encoding;
1814
175
    unsigned _index;
1815
175
  };
1816
175
  static const struct IndexType Index[] = {
1817
175
    { 0x0, 0 },
1818
175
    { 0x1, 1 },
1819
175
    { 0x2, 2 },
1820
175
    { 0x3, 3 },
1821
175
    { 0x4, 4 },
1822
175
    { 0x5, 5 },
1823
175
    { 0x8, 6 },
1824
175
    { 0x9, 7 },
1825
175
    { 0xA, 8 },
1826
175
    { 0xB, 9 },
1827
175
    { 0xC, 10 },
1828
175
    { 0xD, 11 },
1829
175
    { 0x10, 12 },
1830
175
    { 0x11, 13 },
1831
175
    { 0x12, 14 },
1832
175
    { 0x13, 15 },
1833
175
    { 0x14, 16 },
1834
175
    { 0x15, 17 },
1835
175
  };
1836
175
1837
175
  struct KeyType {
1838
175
    uint8_t Encoding;
1839
175
  };
1840
175
  KeyType Key = { Encoding };
1841
175
  auto Table = makeArrayRef(Index);
1842
175
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1843
764
    [](const IndexType &LHS, const KeyType &RHS) {
1844
764
      if (LHS.Encoding < RHS.Encoding)
1845
313
        return true;
1846
451
      if (LHS.Encoding > RHS.Encoding)
1847
288
        return false;
1848
163
      return false;
1849
163
    });
1850
175
1851
175
  if (Idx == Table.end() ||
1852
175
      
Key.Encoding != Idx->Encoding167
)
1853
12
    return nullptr;
1854
163
  return &PRFMsList[Idx->_index];
1855
163
}
1856
#endif
1857
1858
#ifdef GET_PSB_DECL
1859
const PSB *lookupPSBByName(StringRef Name);
1860
const PSB *lookupPSBByEncoding(uint8_t Encoding);
1861
#endif
1862
1863
#ifdef GET_PSB_IMPL
1864
const PSB PSBsList[] = {
1865
  { "csync", 0x11 }, // 0
1866
 };
1867
1868
2
const PSB *lookupPSBByName(StringRef Name) {
1869
2
  struct IndexType {
1870
2
    const char * Name;
1871
2
    unsigned _index;
1872
2
  };
1873
2
  static const struct IndexType Index[] = {
1874
2
    { "CSYNC", 0 },
1875
2
  };
1876
2
1877
2
  struct KeyType {
1878
2
    std::string Name;
1879
2
  };
1880
2
  KeyType Key = { Name.upper() };
1881
2
  auto Table = makeArrayRef(Index);
1882
2
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1883
2
    [](const IndexType &LHS, const KeyType &RHS) {
1884
2
      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
1885
2
      if (CmpName < 0) 
return true0
;
1886
2
      if (CmpName > 0) 
return false0
;
1887
2
      return false;
1888
2
    });
1889
2
1890
2
  if (Idx == Table.end() ||
1891
2
      Key.Name != Idx->Name)
1892
0
    return nullptr;
1893
2
  return &PSBsList[Idx->_index];
1894
2
}
1895
1896
20
const PSB *lookupPSBByEncoding(uint8_t Encoding) {
1897
20
  struct IndexType {
1898
20
    uint8_t Encoding;
1899
20
    unsigned _index;
1900
20
  };
1901
20
  static const struct IndexType Index[] = {
1902
20
    { 0x11, 0 },
1903
20
  };
1904
20
1905
20
  struct KeyType {
1906
20
    uint8_t Encoding;
1907
20
  };
1908
20
  KeyType Key = { Encoding };
1909
20
  auto Table = makeArrayRef(Index);
1910
20
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1911
20
    [](const IndexType &LHS, const KeyType &RHS) {
1912
20
      if (LHS.Encoding < RHS.Encoding)
1913
14
        return true;
1914
6
      if (LHS.Encoding > RHS.Encoding)
1915
1
        return false;
1916
5
      return false;
1917
5
    });
1918
20
1919
20
  if (Idx == Table.end() ||
1920
20
      
Key.Encoding != Idx->Encoding6
)
1921
15
    return nullptr;
1922
5
  return &PSBsList[Idx->_index];
1923
5
}
1924
#endif
1925
1926
#ifdef GET_PSTATE_DECL
1927
const PState *lookupPStateByName(StringRef Name);
1928
const PState *lookupPStateByEncoding(uint8_t Encoding);
1929
#endif
1930
1931
#ifdef GET_PSTATE_IMPL
1932
const PState PStatesList[] = {
1933
  { "SPSel", 0x5,  {}  }, // 0
1934
  { "DAIFSet", 0x1E,  {}  }, // 1
1935
  { "DAIFClr", 0x1F,  {}  }, // 2
1936
  { "PAN", 0x4,  {AArch64::HasV8_1aOps}  }, // 3
1937
  { "UAO", 0x3,  {AArch64::HasV8_2aOps}  }, // 4
1938
  { "DIT", 0x1A,  {AArch64::HasV8_4aOps}  }, // 5
1939
  { "SSBS", 0x19,  {AArch64::FeatureSpecRestrict}  }, // 6
1940
  { "TCO", 0x1C,  {AArch64::FeatureMTE}  }, // 7
1941
 };
1942
1943
2.52k
const PState *lookupPStateByName(StringRef Name) {
1944
2.52k
  struct IndexType {
1945
2.52k
    const char * Name;
1946
2.52k
    unsigned _index;
1947
2.52k
  };
1948
2.52k
  static const struct IndexType Index[] = {
1949
2.52k
    { "DAIFCLR", 2 },
1950
2.52k
    { "DAIFSET", 1 },
1951
2.52k
    { "DIT", 5 },
1952
2.52k
    { "PAN", 3 },
1953
2.52k
    { "SPSEL", 0 },
1954
2.52k
    { "SSBS", 6 },
1955
2.52k
    { "TCO", 7 },
1956
2.52k
    { "UAO", 4 },
1957
2.52k
  };
1958
2.52k
1959
2.52k
  struct KeyType {
1960
2.52k
    std::string Name;
1961
2.52k
  };
1962
2.52k
  KeyType Key = { Name.upper() };
1963
2.52k
  auto Table = makeArrayRef(Index);
1964
2.52k
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1965
8.08k
    [](const IndexType &LHS, const KeyType &RHS) {
1966
8.08k
      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
1967
8.08k
      if (CmpName < 0) 
return true3.23k
;
1968
4.84k
      if (CmpName > 0) 
return false4.78k
;
1969
63
      return false;
1970
63
    });
1971
2.52k
1972
2.52k
  if (Idx == Table.end() ||
1973
2.52k
      
Key.Name != Idx->Name2.39k
)
1974
2.46k
    return nullptr;
1975
63
  return &PStatesList[Idx->_index];
1976
63
}
1977
1978
76
const PState *lookupPStateByEncoding(uint8_t Encoding) {
1979
76
  struct IndexType {
1980
76
    uint8_t Encoding;
1981
76
    unsigned _index;
1982
76
  };
1983
76
  static const struct IndexType Index[] = {
1984
76
    { 0x3, 4 },
1985
76
    { 0x4, 3 },
1986
76
    { 0x5, 0 },
1987
76
    { 0x19, 6 },
1988
76
    { 0x1A, 5 },
1989
76
    { 0x1C, 7 },
1990
76
    { 0x1E, 1 },
1991
76
    { 0x1F, 2 },
1992
76
  };
1993
76
1994
76
  struct KeyType {
1995
76
    uint8_t Encoding;
1996
76
  };
1997
76
  KeyType Key = { Encoding };
1998
76
  auto Table = makeArrayRef(Index);
1999
76
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2000
252
    [](const IndexType &LHS, const KeyType &RHS) {
2001
252
      if (LHS.Encoding < RHS.Encoding)
2002
83
        return true;
2003
169
      if (LHS.Encoding > RHS.Encoding)
2004
101
        return false;
2005
68
      return false;
2006
68
    });
2007
76
2008
76
  if (Idx == Table.end() ||
2009
76
      Key.Encoding != Idx->Encoding)
2010
8
    return nullptr;
2011
68
  return &PStatesList[Idx->_index];
2012
68
}
2013
#endif
2014
2015
#ifdef GET_SVEPREDPAT_DECL
2016
const SVEPREDPAT *lookupSVEPREDPATByName(StringRef Name);
2017
const SVEPREDPAT *lookupSVEPREDPATByEncoding(uint8_t Encoding);
2018
#endif
2019
2020
#ifdef GET_SVEPREDPAT_IMPL
2021
const SVEPREDPAT SVEPREDPATsList[] = {
2022
  { "pow2", 0x0 }, // 0
2023
  { "vl1", 0x1 }, // 1
2024
  { "vl2", 0x2 }, // 2
2025
  { "vl3", 0x3 }, // 3
2026
  { "vl4", 0x4 }, // 4
2027
  { "vl5", 0x5 }, // 5
2028
  { "vl6", 0x6 }, // 6
2029
  { "vl7", 0x7 }, // 7
2030
  { "vl8", 0x8 }, // 8
2031
  { "vl16", 0x9 }, // 9
2032
  { "vl32", 0xA }, // 10
2033
  { "vl64", 0xB }, // 11
2034
  { "vl128", 0xC }, // 12
2035
  { "vl256", 0xD }, // 13
2036
  { "mul4", 0x1D }, // 14
2037
  { "mul3", 0x1E }, // 15
2038
  { "all", 0x1F }, // 16
2039
 };
2040
2041
4.15k
const SVEPREDPAT *lookupSVEPREDPATByName(StringRef Name) {
2042
4.15k
  struct IndexType {
2043
4.15k
    const char * Name;
2044
4.15k
    unsigned _index;
2045
4.15k
  };
2046
4.15k
  static const struct IndexType Index[] = {
2047
4.15k
    { "ALL", 16 },
2048
4.15k
    { "MUL3", 15 },
2049
4.15k
    { "MUL4", 14 },
2050
4.15k
    { "POW2", 0 },
2051
4.15k
    { "VL1", 1 },
2052
4.15k
    { "VL128", 12 },
2053
4.15k
    { "VL16", 9 },
2054
4.15k
    { "VL2", 2 },
2055
4.15k
    { "VL256", 13 },
2056
4.15k
    { "VL3", 3 },
2057
4.15k
    { "VL32", 10 },
2058
4.15k
    { "VL4", 4 },
2059
4.15k
    { "VL5", 5 },
2060
4.15k
    { "VL6", 6 },
2061
4.15k
    { "VL64", 11 },
2062
4.15k
    { "VL7", 7 },
2063
4.15k
    { "VL8", 8 },
2064
4.15k
  };
2065
4.15k
2066
4.15k
  struct KeyType {
2067
4.15k
    std::string Name;
2068
4.15k
  };
2069
4.15k
  KeyType Key = { Name.upper() };
2070
4.15k
  auto Table = makeArrayRef(Index);
2071
4.15k
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2072
18.4k
    [](const IndexType &LHS, const KeyType &RHS) {
2073
18.4k
      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
2074
18.4k
      if (CmpName < 0) 
return true6.79k
;
2075
11.6k
      if (CmpName > 0) 
return false8.96k
;
2076
2.68k
      return false;
2077
2.68k
    });
2078
4.15k
2079
4.15k
  if (Idx == Table.end() ||
2080
4.15k
      
Key.Name != Idx->Name3.67k
)
2081
1.47k
    return nullptr;
2082
2.68k
  return &SVEPREDPATsList[Idx->_index];
2083
2.68k
}
2084
2085
1.65k
const SVEPREDPAT *lookupSVEPREDPATByEncoding(uint8_t Encoding) {
2086
1.65k
  struct IndexType {
2087
1.65k
    uint8_t Encoding;
2088
1.65k
    unsigned _index;
2089
1.65k
  };
2090
1.65k
  static const struct IndexType Index[] = {
2091
1.65k
    { 0x0, 0 },
2092
1.65k
    { 0x1, 1 },
2093
1.65k
    { 0x2, 2 },
2094
1.65k
    { 0x3, 3 },
2095
1.65k
    { 0x4, 4 },
2096
1.65k
    { 0x5, 5 },
2097
1.65k
    { 0x6, 6 },
2098
1.65k
    { 0x7, 7 },
2099
1.65k
    { 0x8, 8 },
2100
1.65k
    { 0x9, 9 },
2101
1.65k
    { 0xA, 10 },
2102
1.65k
    { 0xB, 11 },
2103
1.65k
    { 0xC, 12 },
2104
1.65k
    { 0xD, 13 },
2105
1.65k
    { 0x1D, 14 },
2106
1.65k
    { 0x1E, 15 },
2107
1.65k
    { 0x1F, 16 },
2108
1.65k
  };
2109
1.65k
2110
1.65k
  struct KeyType {
2111
1.65k
    uint8_t Encoding;
2112
1.65k
  };
2113
1.65k
  KeyType Key = { Encoding };
2114
1.65k
  auto Table = makeArrayRef(Index);
2115
1.65k
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2116
6.99k
    [](const IndexType &LHS, const KeyType &RHS) {
2117
6.99k
      if (LHS.Encoding < RHS.Encoding)
2118
2.80k
        return true;
2119
4.18k
      if (LHS.Encoding > RHS.Encoding)
2120
3.14k
        return false;
2121
1.04k
      return false;
2122
1.04k
    });
2123
1.65k
2124
1.65k
  if (Idx == Table.end() ||
2125
1.65k
      Key.Encoding != Idx->Encoding)
2126
606
    return nullptr;
2127
1.04k
  return &SVEPREDPATsList[Idx->_index];
2128
1.04k
}
2129
#endif
2130
2131
#ifdef GET_SVEPRFM_DECL
2132
const SVEPRFM *lookupSVEPRFMByName(StringRef Name);
2133
const SVEPRFM *lookupSVEPRFMByEncoding(uint8_t Encoding);
2134
#endif
2135
2136
#ifdef GET_SVEPRFM_IMPL
2137
const SVEPRFM SVEPRFMsList[] = {
2138
  { "pldl1keep", 0x0,  {AArch64::FeatureSVE}  }, // 0
2139
  { "pldl1strm", 0x1,  {AArch64::FeatureSVE}  }, // 1
2140
  { "pldl2keep", 0x2,  {AArch64::FeatureSVE}  }, // 2
2141
  { "pldl2strm", 0x3,  {AArch64::FeatureSVE}  }, // 3
2142
  { "pldl3keep", 0x4,  {AArch64::FeatureSVE}  }, // 4
2143
  { "pldl3strm", 0x5,  {AArch64::FeatureSVE}  }, // 5
2144
  { "pstl1keep", 0x8,  {AArch64::FeatureSVE}  }, // 6
2145
  { "pstl1strm", 0x9,  {AArch64::FeatureSVE}  }, // 7
2146
  { "pstl2keep", 0xA,  {AArch64::FeatureSVE}  }, // 8
2147
  { "pstl2strm", 0xB,  {AArch64::FeatureSVE}  }, // 9
2148
  { "pstl3keep", 0xC,  {AArch64::FeatureSVE}  }, // 10
2149
  { "pstl3strm", 0xD,  {AArch64::FeatureSVE}  }, // 11
2150
 };
2151
2152
316
const SVEPRFM *lookupSVEPRFMByName(StringRef Name) {
2153
316
  struct IndexType {
2154
316
    const char * Name;
2155
316
    unsigned _index;
2156
316
  };
2157
316
  static const struct IndexType Index[] = {
2158
316
    { "PLDL1KEEP", 0 },
2159
316
    { "PLDL1STRM", 1 },
2160
316
    { "PLDL2KEEP", 2 },
2161
316
    { "PLDL2STRM", 3 },
2162
316
    { "PLDL3KEEP", 4 },
2163
316
    { "PLDL3STRM", 5 },
2164
316
    { "PSTL1KEEP", 6 },
2165
316
    { "PSTL1STRM", 7 },
2166
316
    { "PSTL2KEEP", 8 },
2167
316
    { "PSTL2STRM", 9 },
2168
316
    { "PSTL3KEEP", 10 },
2169
316
    { "PSTL3STRM", 11 },
2170
316
  };
2171
316
2172
316
  struct KeyType {
2173
316
    std::string Name;
2174
316
  };
2175
316
  KeyType Key = { Name.upper() };
2176
316
  auto Table = makeArrayRef(Index);
2177
316
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2178
1.22k
    [](const IndexType &LHS, const KeyType &RHS) {
2179
1.22k
      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
2180
1.22k
      if (CmpName < 0) 
return true420
;
2181
808
      if (CmpName > 0) 
return false500
;
2182
308
      return false;
2183
308
    });
2184
316
2185
316
  if (Idx == Table.end() ||
2186
316
      Key.Name != Idx->Name)
2187
8
    return nullptr;
2188
308
  return &SVEPRFMsList[Idx->_index];
2189
308
}
2190
2191
717
const SVEPRFM *lookupSVEPRFMByEncoding(uint8_t Encoding) {
2192
717
  struct IndexType {
2193
717
    uint8_t Encoding;
2194
717
    unsigned _index;
2195
717
  };
2196
717
  static const struct IndexType Index[] = {
2197
717
    { 0x0, 0 },
2198
717
    { 0x1, 1 },
2199
717
    { 0x2, 2 },
2200
717
    { 0x3, 3 },
2201
717
    { 0x4, 4 },
2202
717
    { 0x5, 5 },
2203
717
    { 0x8, 6 },
2204
717
    { 0x9, 7 },
2205
717
    { 0xA, 8 },
2206
717
    { 0xB, 9 },
2207
717
    { 0xC, 10 },
2208
717
    { 0xD, 11 },
2209
717
  };
2210
717
2211
717
  struct KeyType {
2212
717
    uint8_t Encoding;
2213
717
  };
2214
717
  KeyType Key = { Encoding };
2215
717
  auto Table = makeArrayRef(Index);
2216
717
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2217
2.61k
    [](const IndexType &LHS, const KeyType &RHS) {
2218
2.61k
      if (LHS.Encoding < RHS.Encoding)
2219
1.16k
        return true;
2220
1.44k
      if (LHS.Encoding > RHS.Encoding)
2221
919
        return false;
2222
529
      return false;
2223
529
    });
2224
717
2225
717
  if (Idx == Table.end() ||
2226
717
      
Key.Encoding != Idx->Encoding597
)
2227
188
    return nullptr;
2228
529
  return &SVEPRFMsList[Idx->_index];
2229
529
}
2230
#endif
2231
2232
#ifdef GET_SYSREG_DECL
2233
const SysReg *lookupSysRegByName(StringRef Name);
2234
const SysReg *lookupSysRegByEncoding(uint16_t Encoding);
2235
#endif
2236
2237
#ifdef GET_SYSREG_IMPL
2238
const SysReg SysRegsList[] = {
2239
  { "MDCCSR_EL0", 0x9808, true, false,  {}  }, // 0
2240
  { "DBGDTRRX_EL0", 0x9828, true, false,  {}  }, // 1
2241
  { "MDRAR_EL1", 0x8080, true, false,  {}  }, // 2
2242
  { "OSLSR_EL1", 0x808C, true, false,  {}  }, // 3
2243
  { "DBGAUTHSTATUS_EL1", 0x83F6, true, false,  {}  }, // 4
2244
  { "PMCEID0_EL0", 0xDCE6, true, false,  {}  }, // 5
2245
  { "PMCEID1_EL0", 0xDCE7, true, false,  {}  }, // 6
2246
  { "MIDR_EL1", 0xC000, true, false,  {}  }, // 7
2247
  { "CCSIDR_EL1", 0xC800, true, false,  {}  }, // 8
2248
  { "CCSIDR2_EL1", 0xC802, true, false,  {AArch64::HasV8_3aOps}  }, // 9
2249
  { "CLIDR_EL1", 0xC801, true, false,  {}  }, // 10
2250
  { "CTR_EL0", 0xD801, true, false,  {}  }, // 11
2251
  { "MPIDR_EL1", 0xC005, true, false,  {}  }, // 12
2252
  { "REVIDR_EL1", 0xC006, true, false,  {}  }, // 13
2253
  { "AIDR_EL1", 0xC807, true, false,  {}  }, // 14
2254
  { "DCZID_EL0", 0xD807, true, false,  {}  }, // 15
2255
  { "ID_PFR0_EL1", 0xC008, true, false,  {}  }, // 16
2256
  { "ID_PFR1_EL1", 0xC009, true, false,  {}  }, // 17
2257
  { "ID_PFR2_EL1", 0xC01C, true, false,  {AArch64::FeatureSpecRestrict}  }, // 18
2258
  { "ID_DFR0_EL1", 0xC00A, true, false,  {}  }, // 19
2259
  { "ID_AFR0_EL1", 0xC00B, true, false,  {}  }, // 20
2260
  { "ID_MMFR0_EL1", 0xC00C, true, false,  {}  }, // 21
2261
  { "ID_MMFR1_EL1", 0xC00D, true, false,  {}  }, // 22
2262
  { "ID_MMFR2_EL1", 0xC00E, true, false,  {}  }, // 23
2263
  { "ID_MMFR3_EL1", 0xC00F, true, false,  {}  }, // 24
2264
  { "ID_ISAR0_EL1", 0xC010, true, false,  {}  }, // 25
2265
  { "ID_ISAR1_EL1", 0xC011, true, false,  {}  }, // 26
2266
  { "ID_ISAR2_EL1", 0xC012, true, false,  {}  }, // 27
2267
  { "ID_ISAR3_EL1", 0xC013, true, false,  {}  }, // 28
2268
  { "ID_ISAR4_EL1", 0xC014, true, false,  {}  }, // 29
2269
  { "ID_ISAR5_EL1", 0xC015, true, false,  {}  }, // 30
2270
  { "ID_ISAR6_EL1", 0xC017, true, false,  {AArch64::HasV8_2aOps}  }, // 31
2271
  { "ID_AA64PFR0_EL1", 0xC020, true, false,  {}  }, // 32
2272
  { "ID_AA64PFR1_EL1", 0xC021, true, false,  {}  }, // 33
2273
  { "ID_AA64DFR0_EL1", 0xC028, true, false,  {}  }, // 34
2274
  { "ID_AA64DFR1_EL1", 0xC029, true, false,  {}  }, // 35
2275
  { "ID_AA64AFR0_EL1", 0xC02C, true, false,  {}  }, // 36
2276
  { "ID_AA64AFR1_EL1", 0xC02D, true, false,  {}  }, // 37
2277
  { "ID_AA64ISAR0_EL1", 0xC030, true, false,  {}  }, // 38
2278
  { "ID_AA64ISAR1_EL1", 0xC031, true, false,  {}  }, // 39
2279
  { "ID_AA64MMFR0_EL1", 0xC038, true, false,  {}  }, // 40
2280
  { "ID_AA64MMFR1_EL1", 0xC039, true, false,  {}  }, // 41
2281
  { "ID_AA64MMFR2_EL1", 0xC03A, true, false,  {AArch64::HasV8_2aOps}  }, // 42
2282
  { "MVFR0_EL1", 0xC018, true, false,  {}  }, // 43
2283
  { "MVFR1_EL1", 0xC019, true, false,  {}  }, // 44
2284
  { "MVFR2_EL1", 0xC01A, true, false,  {}  }, // 45
2285
  { "RVBAR_EL1", 0xC601, true, false,  {}  }, // 46
2286
  { "RVBAR_EL2", 0xE601, true, false,  {}  }, // 47
2287
  { "RVBAR_EL3", 0xF601, true, false,  {}  }, // 48
2288
  { "ISR_EL1", 0xC608, true, false,  {}  }, // 49
2289
  { "CNTPCT_EL0", 0xDF01, true, false,  {}  }, // 50
2290
  { "CNTVCT_EL0", 0xDF02, true, false,  {}  }, // 51
2291
  { "ID_MMFR4_EL1", 0xC016, true, false,  {}  }, // 52
2292
  { "TRCSTATR", 0x8818, true, false,  {}  }, // 53
2293
  { "TRCIDR8", 0x8806, true, false,  {}  }, // 54
2294
  { "TRCIDR9", 0x880E, true, false,  {}  }, // 55
2295
  { "TRCIDR10", 0x8816, true, false,  {}  }, // 56
2296
  { "TRCIDR11", 0x881E, true, false,  {}  }, // 57
2297
  { "TRCIDR12", 0x8826, true, false,  {}  }, // 58
2298
  { "TRCIDR13", 0x882E, true, false,  {}  }, // 59
2299
  { "TRCIDR0", 0x8847, true, false,  {}  }, // 60
2300
  { "TRCIDR1", 0x884F, true, false,  {}  }, // 61
2301
  { "TRCIDR2", 0x8857, true, false,  {}  }, // 62
2302
  { "TRCIDR3", 0x885F, true, false,  {}  }, // 63
2303
  { "TRCIDR4", 0x8867, true, false,  {}  }, // 64
2304
  { "TRCIDR5", 0x886F, true, false,  {}  }, // 65
2305
  { "TRCIDR6", 0x8877, true, false,  {}  }, // 66
2306
  { "TRCIDR7", 0x887F, true, false,  {}  }, // 67
2307
  { "TRCOSLSR", 0x888C, true, false,  {}  }, // 68
2308
  { "TRCPDSR", 0x88AC, true, false,  {}  }, // 69
2309
  { "TRCDEVAFF0", 0x8BD6, true, false,  {}  }, // 70
2310
  { "TRCDEVAFF1", 0x8BDE, true, false,  {}  }, // 71
2311
  { "TRCLSR", 0x8BEE, true, false,  {}  }, // 72
2312
  { "TRCAUTHSTATUS", 0x8BF6, true, false,  {}  }, // 73
2313
  { "TRCDEVARCH", 0x8BFE, true, false,  {}  }, // 74
2314
  { "TRCDEVID", 0x8B97, true, false,  {}  }, // 75
2315
  { "TRCDEVTYPE", 0x8B9F, true, false,  {}  }, // 76
2316
  { "TRCPIDR4", 0x8BA7, true, false,  {}  }, // 77
2317
  { "TRCPIDR5", 0x8BAF, true, false,  {}  }, // 78
2318
  { "TRCPIDR6", 0x8BB7, true, false,  {}  }, // 79
2319
  { "TRCPIDR7", 0x8BBF, true, false,  {}  }, // 80
2320
  { "TRCPIDR0", 0x8BC7, true, false,  {}  }, // 81
2321
  { "TRCPIDR1", 0x8BCF, true, false,  {}  }, // 82
2322
  { "TRCPIDR2", 0x8BD7, true, false,  {}  }, // 83
2323
  { "TRCPIDR3", 0x8BDF, true, false,  {}  }, // 84
2324
  { "TRCCIDR0", 0x8BE7, true, false,  {}  }, // 85
2325
  { "TRCCIDR1", 0x8BEF, true, false,  {}  }, // 86
2326
  { "TRCCIDR2", 0x8BF7, true, false,  {}  }, // 87
2327
  { "TRCCIDR3", 0x8BFF, true, false,  {}  }, // 88
2328
  { "ICC_IAR1_EL1", 0xC660, true, false,  {}  }, // 89
2329
  { "ICC_IAR0_EL1", 0xC640, true, false,  {}  }, // 90
2330
  { "ICC_HPPIR1_EL1", 0xC662, true, false,  {}  }, // 91
2331
  { "ICC_HPPIR0_EL1", 0xC642, true, false,  {}  }, // 92
2332
  { "ICC_RPR_EL1", 0xC65B, true, false,  {}  }, // 93
2333
  { "ICH_VTR_EL2", 0xE659, true, false,  {}  }, // 94
2334
  { "ICH_EISR_EL2", 0xE65B, true, false,  {}  }, // 95
2335
  { "ICH_ELRSR_EL2", 0xE65D, true, false,  {}  }, // 96
2336
  { "ID_AA64ZFR0_EL1", 0xC024, true, false,  {AArch64::FeatureSVE}  }, // 97
2337
  { "LORID_EL1", 0xC527, true, false,  {AArch64::HasV8_1aOps}  }, // 98
2338
  { "ERRIDR_EL1", 0xC298, true, false,  {AArch64::FeatureRAS}  }, // 99
2339
  { "ERXFR_EL1", 0xC2A0, true, false,  {AArch64::FeatureRAS}  }, // 100
2340
  { "RNDR", 0xD920, true, false,  {AArch64::FeatureRandGen}  }, // 101
2341
  { "RNDRRS", 0xD921, true, false,  {AArch64::FeatureRandGen}  }, // 102
2342
  { "SCXTNUM_EL0", 0xDE87, true, true,  {AArch64::FeatureSpecRestrict}  }, // 103
2343
  { "SCXTNUM_EL1", 0xC687, true, true,  {AArch64::FeatureSpecRestrict}  }, // 104
2344
  { "SCXTNUM_EL2", 0xE687, true, true,  {AArch64::FeatureSpecRestrict}  }, // 105
2345
  { "SCXTNUM_EL3", 0xF687, true, true,  {AArch64::FeatureSpecRestrict}  }, // 106
2346
  { "SCXTNUM_EL12", 0xEE87, true, true,  {AArch64::FeatureSpecRestrict}  }, // 107
2347
  { "DBGDTRTX_EL0", 0x9828, false, true,  {}  }, // 108
2348
  { "OSLAR_EL1", 0x8084, false, true,  {}  }, // 109
2349
  { "PMSWINC_EL0", 0xDCE4, false, true,  {}  }, // 110
2350
  { "TRCOSLAR", 0x8884, false, true,  {}  }, // 111
2351
  { "TRCLAR", 0x8BE6, false, true,  {}  }, // 112
2352
  { "ICC_EOIR1_EL1", 0xC661, false, true,  {}  }, // 113
2353
  { "ICC_EOIR0_EL1", 0xC641, false, true,  {}  }, // 114
2354
  { "ICC_DIR_EL1", 0xC659, false, true,  {}  }, // 115
2355
  { "ICC_SGI1R_EL1", 0xC65D, false, true,  {}  }, // 116
2356
  { "ICC_ASGI1R_EL1", 0xC65E, false, true,  {}  }, // 117
2357
  { "ICC_SGI0R_EL1", 0xC65F, false, true,  {}  }, // 118
2358
  { "OSDTRRX_EL1", 0x8002, true, true,  {}  }, // 119
2359
  { "OSDTRTX_EL1", 0x801A, true, true,  {}  }, // 120
2360
  { "TEECR32_EL1", 0x9000, true, true,  {}  }, // 121
2361
  { "MDCCINT_EL1", 0x8010, true, true,  {}  }, // 122
2362
  { "MDSCR_EL1", 0x8012, true, true,  {}  }, // 123
2363
  { "DBGDTR_EL0", 0x9820, true, true,  {}  }, // 124
2364
  { "OSECCR_EL1", 0x8032, true, true,  {}  }, // 125
2365
  { "DBGVCR32_EL2", 0xA038, true, true,  {}  }, // 126
2366
  { "DBGBVR0_EL1", 0x8004, true, true,  {}  }, // 127
2367
  { "DBGBVR1_EL1", 0x800C, true, true,  {}  }, // 128
2368
  { "DBGBVR2_EL1", 0x8014, true, true,  {}  }, // 129
2369
  { "DBGBVR3_EL1", 0x801C, true, true,  {}  }, // 130
2370
  { "DBGBVR4_EL1", 0x8024, true, true,  {}  }, // 131
2371
  { "DBGBVR5_EL1", 0x802C, true, true,  {}  }, // 132
2372
  { "DBGBVR6_EL1", 0x8034, true, true,  {}  }, // 133
2373
  { "DBGBVR7_EL1", 0x803C, true, true,  {}  }, // 134
2374
  { "DBGBVR8_EL1", 0x8044, true, true,  {}  }, // 135
2375
  { "DBGBVR9_EL1", 0x804C, true, true,  {}  }, // 136
2376
  { "DBGBVR10_EL1", 0x8054, true, true,  {}  }, // 137
2377
  { "DBGBVR11_EL1", 0x805C, true, true,  {}  }, // 138
2378
  { "DBGBVR12_EL1", 0x8064, true, true,  {}  }, // 139
2379
  { "DBGBVR13_EL1", 0x806C, true, true,  {}  }, // 140
2380
  { "DBGBVR14_EL1", 0x8074, true, true,  {}  }, // 141
2381
  { "DBGBVR15_EL1", 0x807C, true, true,  {}  }, // 142
2382
  { "DBGBCR0_EL1", 0x8005, true, true,  {}  }, // 143
2383
  { "DBGBCR1_EL1", 0x800D, true, true,  {}  }, // 144
2384
  { "DBGBCR2_EL1", 0x8015, true, true,  {}  }, // 145
2385
  { "DBGBCR3_EL1", 0x801D, true, true,  {}  }, // 146
2386
  { "DBGBCR4_EL1", 0x8025, true, true,  {}  }, // 147
2387
  { "DBGBCR5_EL1", 0x802D, true, true,  {}  }, // 148
2388
  { "DBGBCR6_EL1", 0x8035, true, true,  {}  }, // 149
2389
  { "DBGBCR7_EL1", 0x803D, true, true,  {}  }, // 150
2390
  { "DBGBCR8_EL1", 0x8045, true, true,  {}  }, // 151
2391
  { "DBGBCR9_EL1", 0x804D, true, true,  {}  }, // 152
2392
  { "DBGBCR10_EL1", 0x8055, true, true,  {}  }, // 153
2393
  { "DBGBCR11_EL1", 0x805D, true, true,  {}  }, // 154
2394
  { "DBGBCR12_EL1", 0x8065, true, true,  {}  }, // 155
2395
  { "DBGBCR13_EL1", 0x806D, true, true,  {}  }, // 156
2396
  { "DBGBCR14_EL1", 0x8075, true, true,  {}  }, // 157
2397
  { "DBGBCR15_EL1", 0x807D, true, true,  {}  }, // 158
2398
  { "DBGWVR0_EL1", 0x8006, true, true,  {}  }, // 159
2399
  { "DBGWVR1_EL1", 0x800E, true, true,  {}  }, // 160
2400
  { "DBGWVR2_EL1", 0x8016, true, true,  {}  }, // 161
2401
  { "DBGWVR3_EL1", 0x801E, true, true,  {}  }, // 162
2402
  { "DBGWVR4_EL1", 0x8026, true, true,  {}  }, // 163
2403
  { "DBGWVR5_EL1", 0x802E, true, true,  {}  }, // 164
2404
  { "DBGWVR6_EL1", 0x8036, true, true,  {}  }, // 165
2405
  { "DBGWVR7_EL1", 0x803E, true, true,  {}  }, // 166
2406
  { "DBGWVR8_EL1", 0x8046, true, true,  {}  }, // 167
2407
  { "DBGWVR9_EL1", 0x804E, true, true,  {}  }, // 168
2408
  { "DBGWVR10_EL1", 0x8056, true, true,  {}  }, // 169
2409
  { "DBGWVR11_EL1", 0x805E, true, true,  {}  }, // 170
2410
  { "DBGWVR12_EL1", 0x8066, true, true,  {}  }, // 171
2411
  { "DBGWVR13_EL1", 0x806E, true, true,  {}  }, // 172
2412
  { "DBGWVR14_EL1", 0x8076, true, true,  {}  }, // 173
2413
  { "DBGWVR15_EL1", 0x807E, true, true,  {}  }, // 174
2414
  { "DBGWCR0_EL1", 0x8007, true, true,  {}  }, // 175
2415
  { "DBGWCR1_EL1", 0x800F, true, true,  {}  }, // 176
2416
  { "DBGWCR2_EL1", 0x8017, true, true,  {}  }, // 177
2417
  { "DBGWCR3_EL1", 0x801F, true, true,  {}  }, // 178
2418
  { "DBGWCR4_EL1", 0x8027, true, true,  {}  }, // 179
2419
  { "DBGWCR5_EL1", 0x802F, true, true,  {}  }, // 180
2420
  { "DBGWCR6_EL1", 0x8037, true, true,  {}  }, // 181
2421
  { "DBGWCR7_EL1", 0x803F, true, true,  {}  }, // 182
2422
  { "DBGWCR8_EL1", 0x8047, true, true,  {}  }, // 183
2423
  { "DBGWCR9_EL1", 0x804F, true, true,  {}  }, // 184
2424
  { "DBGWCR10_EL1", 0x8057, true, true,  {}  }, // 185
2425
  { "DBGWCR11_EL1", 0x805F, true, true,  {}  }, // 186
2426
  { "DBGWCR12_EL1", 0x8067, true, true,  {}  }, // 187
2427
  { "DBGWCR13_EL1", 0x806F, true, true,  {}  }, // 188
2428
  { "DBGWCR14_EL1", 0x8077, true, true,  {}  }, // 189
2429
  { "DBGWCR15_EL1", 0x807F, true, true,  {}  }, // 190
2430
  { "TEEHBR32_EL1", 0x9080, true, true,  {}  }, // 191
2431
  { "OSDLR_EL1", 0x809C, true, true,  {}  }, // 192
2432
  { "DBGPRCR_EL1", 0x80A4, true, true,  {}  }, // 193
2433
  { "DBGCLAIMSET_EL1", 0x83C6, true, true,  {}  }, // 194
2434
  { "DBGCLAIMCLR_EL1", 0x83CE, true, true,  {}  }, // 195
2435
  { "CSSELR_EL1", 0xD000, true, true,  {}  }, // 196
2436
  { "VPIDR_EL2", 0xE000, true, true,  {}  }, // 197
2437
  { "VMPIDR_EL2", 0xE005, true, true,  {}  }, // 198
2438
  { "CPACR_EL1", 0xC082, true, true,  {}  }, // 199
2439
  { "SCTLR_EL1", 0xC080, true, true,  {}  }, // 200
2440
  { "SCTLR_EL2", 0xE080, true, true,  {}  }, // 201
2441
  { "SCTLR_EL3", 0xF080, true, true,  {}  }, // 202
2442
  { "ACTLR_EL1", 0xC081, true, true,  {}  }, // 203
2443
  { "ACTLR_EL2", 0xE081, true, true,  {}  }, // 204
2444
  { "ACTLR_EL3", 0xF081, true, true,  {}  }, // 205
2445
  { "HCR_EL2", 0xE088, true, true,  {}  }, // 206
2446
  { "SCR_EL3", 0xF088, true, true,  {}  }, // 207
2447
  { "MDCR_EL2", 0xE089, true, true,  {}  }, // 208
2448
  { "SDER32_EL3", 0xF089, true, true,  {}  }, // 209
2449
  { "CPTR_EL2", 0xE08A, true, true,  {}  }, // 210
2450
  { "CPTR_EL3", 0xF08A, true, true,  {}  }, // 211
2451
  { "HSTR_EL2", 0xE08B, true, true,  {}  }, // 212
2452
  { "HACR_EL2", 0xE08F, true, true,  {}  }, // 213
2453
  { "MDCR_EL3", 0xF099, true, true,  {}  }, // 214
2454
  { "TTBR0_EL1", 0xC100, true, true,  {}  }, // 215
2455
  { "TTBR0_EL2", 0xE100, true, true,  {}  }, // 216
2456
  { "TTBR0_EL3", 0xF100, true, true,  {}  }, // 217
2457
  { "TTBR1_EL1", 0xC101, true, true,  {}  }, // 218
2458
  { "TCR_EL1", 0xC102, true, true,  {}  }, // 219
2459
  { "TCR_EL2", 0xE102, true, true,  {}  }, // 220
2460
  { "TCR_EL3", 0xF102, true, true,  {}  }, // 221
2461
  { "VTTBR_EL2", 0xE108, true, true,  {}  }, // 222
2462
  { "VTCR_EL2", 0xE10A, true, true,  {}  }, // 223
2463
  { "DACR32_EL2", 0xE180, true, true,  {}  }, // 224
2464
  { "SPSR_EL1", 0xC200, true, true,  {}  }, // 225
2465
  { "SPSR_EL2", 0xE200, true, true,  {}  }, // 226
2466
  { "SPSR_EL3", 0xF200, true, true,  {}  }, // 227
2467
  { "ELR_EL1", 0xC201, true, true,  {}  }, // 228
2468
  { "ELR_EL2", 0xE201, true, true,  {}  }, // 229
2469
  { "ELR_EL3", 0xF201, true, true,  {}  }, // 230
2470
  { "SP_EL0", 0xC208, true, true,  {}  }, // 231
2471
  { "SP_EL1", 0xE208, true, true,  {}  }, // 232
2472
  { "SP_EL2", 0xF208, true, true,  {}  }, // 233
2473
  { "SPSel", 0xC210, true, true,  {}  }, // 234
2474
  { "NZCV", 0xDA10, true, true,  {}  }, // 235
2475
  { "DAIF", 0xDA11, true, true,  {}  }, // 236
2476
  { "CurrentEL", 0xC212, true, true,  {}  }, // 237
2477
  { "SPSR_irq", 0xE218, true, true,  {}  }, // 238
2478
  { "SPSR_abt", 0xE219, true, true,  {}  }, // 239
2479
  { "SPSR_und", 0xE21A, true, true,  {}  }, // 240
2480
  { "SPSR_fiq", 0xE21B, true, true,  {}  }, // 241
2481
  { "FPCR", 0xDA20, true, true,  {}  }, // 242
2482
  { "FPSR", 0xDA21, true, true,  {}  }, // 243
2483
  { "DSPSR_EL0", 0xDA28, true, true,  {}  }, // 244
2484
  { "DLR_EL0", 0xDA29, true, true,  {}  }, // 245
2485
  { "IFSR32_EL2", 0xE281, true, true,  {}  }, // 246
2486
  { "AFSR0_EL1", 0xC288, true, true,  {}  }, // 247
2487
  { "AFSR0_EL2", 0xE288, true, true,  {}  }, // 248
2488
  { "AFSR0_EL3", 0xF288, true, true,  {}  }, // 249
2489
  { "AFSR1_EL1", 0xC289, true, true,  {}  }, // 250
2490
  { "AFSR1_EL2", 0xE289, true, true,  {}  }, // 251
2491
  { "AFSR1_EL3", 0xF289, true, true,  {}  }, // 252
2492
  { "ESR_EL1", 0xC290, true, true,  {}  }, // 253
2493
  { "ESR_EL2", 0xE290, true, true,  {}  }, // 254
2494
  { "ESR_EL3", 0xF290, true, true,  {}  }, // 255
2495
  { "FPEXC32_EL2", 0xE298, true, true,  {}  }, // 256
2496
  { "FAR_EL1", 0xC300, true, true,  {}  }, // 257
2497
  { "FAR_EL2", 0xE300, true, true,  {}  }, // 258
2498
  { "FAR_EL3", 0xF300, true, true,  {}  }, // 259
2499
  { "HPFAR_EL2", 0xE304, true, true,  {}  }, // 260
2500
  { "PAR_EL1", 0xC3A0, true, true,  {}  }, // 261
2501
  { "PMCR_EL0", 0xDCE0, true, true,  {}  }, // 262
2502
  { "PMCNTENSET_EL0", 0xDCE1, true, true,  {}  }, // 263
2503
  { "PMCNTENCLR_EL0", 0xDCE2, true, true,  {}  }, // 264
2504
  { "PMOVSCLR_EL0", 0xDCE3, true, true,  {}  }, // 265
2505
  { "PMSELR_EL0", 0xDCE5, true, true,  {}  }, // 266
2506
  { "PMCCNTR_EL0", 0xDCE8, true, true,  {}  }, // 267
2507
  { "PMXEVTYPER_EL0", 0xDCE9, true, true,  {}  }, // 268
2508
  { "PMXEVCNTR_EL0", 0xDCEA, true, true,  {}  }, // 269
2509
  { "PMUSERENR_EL0", 0xDCF0, true, true,  {}  }, // 270
2510
  { "PMINTENSET_EL1", 0xC4F1, true, true,  {}  }, // 271
2511
  { "PMINTENCLR_EL1", 0xC4F2, true, true,  {}  }, // 272
2512
  { "PMOVSSET_EL0", 0xDCF3, true, true,  {}  }, // 273
2513
  { "MAIR_EL1", 0xC510, true, true,  {}  }, // 274
2514
  { "MAIR_EL2", 0xE510, true, true,  {}  }, // 275
2515
  { "MAIR_EL3", 0xF510, true, true,  {}  }, // 276
2516
  { "AMAIR_EL1", 0xC518, true, true,  {}  }, // 277
2517
  { "AMAIR_EL2", 0xE518, true, true,  {}  }, // 278
2518
  { "AMAIR_EL3", 0xF518, true, true,  {}  }, // 279
2519
  { "VBAR_EL1", 0xC600, true, true,  {}  }, // 280
2520
  { "VBAR_EL2", 0xE600, true, true,  {}  }, // 281
2521
  { "VBAR_EL3", 0xF600, true, true,  {}  }, // 282
2522
  { "RMR_EL1", 0xC602, true, true,  {}  }, // 283
2523
  { "RMR_EL2", 0xE602, true, true,  {}  }, // 284
2524
  { "RMR_EL3", 0xF602, true, true,  {}  }, // 285
2525
  { "CONTEXTIDR_EL1", 0xC681, true, true,  {}  }, // 286
2526
  { "TPIDR_EL0", 0xDE82, true, true,  {}  }, // 287
2527
  { "TPIDR_EL2", 0xE682, true, true,  {}  }, // 288
2528
  { "TPIDR_EL3", 0xF682, true, true,  {}  }, // 289
2529
  { "TPIDRRO_EL0", 0xDE83, true, true,  {}  }, // 290
2530
  { "TPIDR_EL1", 0xC684, true, true,  {}  }, // 291
2531
  { "CNTFRQ_EL0", 0xDF00, true, true,  {}  }, // 292
2532
  { "CNTVOFF_EL2", 0xE703, true, true,  {}  }, // 293
2533
  { "CNTKCTL_EL1", 0xC708, true, true,  {}  }, // 294
2534
  { "CNTHCTL_EL2", 0xE708, true, true,  {}  }, // 295
2535
  { "CNTP_TVAL_EL0", 0xDF10, true, true,  {}  }, // 296
2536
  { "CNTHP_TVAL_EL2", 0xE710, true, true,  {}  }, // 297
2537
  { "CNTPS_TVAL_EL1", 0xFF10, true, true,  {}  }, // 298
2538
  { "CNTP_CTL_EL0", 0xDF11, true, true,  {}  }, // 299
2539
  { "CNTHP_CTL_EL2", 0xE711, true, true,  {}  }, // 300
2540
  { "CNTPS_CTL_EL1", 0xFF11, true, true,  {}  }, // 301
2541
  { "CNTP_CVAL_EL0", 0xDF12, true, true,  {}  }, // 302
2542
  { "CNTHP_CVAL_EL2", 0xE712, true, true,  {}  }, // 303
2543
  { "CNTPS_CVAL_EL1", 0xFF12, true, true,  {}  }, // 304
2544
  { "CNTV_TVAL_EL0", 0xDF18, true, true,  {}  }, // 305
2545
  { "CNTV_CTL_EL0", 0xDF19, true, true,  {}  }, // 306
2546
  { "CNTV_CVAL_EL0", 0xDF1A, true, true,  {}  }, // 307
2547
  { "PMEVCNTR0_EL0", 0xDF40, true, true,  {}  }, // 308
2548
  { "PMEVCNTR1_EL0", 0xDF41, true, true,  {}  }, // 309
2549
  { "PMEVCNTR2_EL0", 0xDF42, true, true,  {}  }, // 310
2550
  { "PMEVCNTR3_EL0", 0xDF43, true, true,  {}  }, // 311
2551
  { "PMEVCNTR4_EL0", 0xDF44, true, true,  {}  }, // 312
2552
  { "PMEVCNTR5_EL0", 0xDF45, true, true,  {}  }, // 313
2553
  { "PMEVCNTR6_EL0", 0xDF46, true, true,  {}  }, // 314
2554
  { "PMEVCNTR7_EL0", 0xDF47, true, true,  {}  }, // 315
2555
  { "PMEVCNTR8_EL0", 0xDF48, true, true,  {}  }, // 316
2556
  { "PMEVCNTR9_EL0", 0xDF49, true, true,  {}  }, // 317
2557
  { "PMEVCNTR10_EL0", 0xDF4A, true, true,  {}  }, // 318
2558
  { "PMEVCNTR11_EL0", 0xDF4B, true, true,  {}  }, // 319
2559
  { "PMEVCNTR12_EL0", 0xDF4C, true, true,  {}  }, // 320
2560
  { "PMEVCNTR13_EL0", 0xDF4D, true, true,  {}  }, // 321
2561
  { "PMEVCNTR14_EL0", 0xDF4E, true, true,  {}  }, // 322
2562
  { "PMEVCNTR15_EL0", 0xDF4F, true, true,  {}  }, // 323
2563
  { "PMEVCNTR16_EL0", 0xDF50, true, true,  {}  }, // 324
2564
  { "PMEVCNTR17_EL0", 0xDF51, true, true,  {}  }, // 325
2565
  { "PMEVCNTR18_EL0", 0xDF52, true, true,  {}  }, // 326
2566
  { "PMEVCNTR19_EL0", 0xDF53, true, true,  {}  }, // 327
2567
  { "PMEVCNTR20_EL0", 0xDF54, true, true,  {}  }, // 328
2568
  { "PMEVCNTR21_EL0", 0xDF55, true, true,  {}  }, // 329
2569
  { "PMEVCNTR22_EL0", 0xDF56, true, true,  {}  }, // 330
2570
  { "PMEVCNTR23_EL0", 0xDF57, true, true,  {}  }, // 331
2571
  { "PMEVCNTR24_EL0", 0xDF58, true, true,  {}  }, // 332
2572
  { "PMEVCNTR25_EL0", 0xDF59, true, true,  {}  }, // 333
2573
  { "PMEVCNTR26_EL0", 0xDF5A, true, true,  {}  }, // 334
2574
  { "PMEVCNTR27_EL0", 0xDF5B, true, true,  {}  }, // 335
2575
  { "PMEVCNTR28_EL0", 0xDF5C, true, true,  {}  }, // 336
2576
  { "PMEVCNTR29_EL0", 0xDF5D, true, true,  {}  }, // 337
2577
  { "PMEVCNTR30_EL0", 0xDF5E, true, true,  {}  }, // 338
2578
  { "PMCCFILTR_EL0", 0xDF7F, true, true,  {}  }, // 339
2579
  { "PMEVTYPER0_EL0", 0xDF60, true, true,  {}  }, // 340
2580
  { "PMEVTYPER1_EL0", 0xDF61, true, true,  {}  }, // 341
2581
  { "PMEVTYPER2_EL0", 0xDF62, true, true,  {}  }, // 342
2582
  { "PMEVTYPER3_EL0", 0xDF63, true, true,  {}  }, // 343
2583
  { "PMEVTYPER4_EL0", 0xDF64, true, true,  {}  }, // 344
2584
  { "PMEVTYPER5_EL0", 0xDF65, true, true,  {}  }, // 345
2585
  { "PMEVTYPER6_EL0", 0xDF66, true, true,  {}  }, // 346
2586
  { "PMEVTYPER7_EL0", 0xDF67, true, true,  {}  }, // 347
2587
  { "PMEVTYPER8_EL0", 0xDF68, true, true,  {}  }, // 348
2588
  { "PMEVTYPER9_EL0", 0xDF69, true, true,  {}  }, // 349
2589
  { "PMEVTYPER10_EL0", 0xDF6A, true, true,  {}  }, // 350
2590
  { "PMEVTYPER11_EL0", 0xDF6B, true, true,  {}  }, // 351
2591
  { "PMEVTYPER12_EL0", 0xDF6C, true, true,  {}  }, // 352
2592
  { "PMEVTYPER13_EL0", 0xDF6D, true, true,  {}  }, // 353
2593
  { "PMEVTYPER14_EL0", 0xDF6E, true, true,  {}  }, // 354
2594
  { "PMEVTYPER15_EL0", 0xDF6F, true, true,  {}  }, // 355
2595
  { "PMEVTYPER16_EL0", 0xDF70, true, true,  {}  }, // 356
2596
  { "PMEVTYPER17_EL0", 0xDF71, true, true,  {}  }, // 357
2597
  { "PMEVTYPER18_EL0", 0xDF72, true, true,  {}  }, // 358
2598
  { "PMEVTYPER19_EL0", 0xDF73, true, true,  {}  }, // 359
2599
  { "PMEVTYPER20_EL0", 0xDF74, true, true,  {}  }, // 360
2600
  { "PMEVTYPER21_EL0", 0xDF75, true, true,  {}  }, // 361
2601
  { "PMEVTYPER22_EL0", 0xDF76, true, true,  {}  }, // 362
2602
  { "PMEVTYPER23_EL0", 0xDF77, true, true,  {}  }, // 363
2603
  { "PMEVTYPER24_EL0", 0xDF78, true, true,  {}  }, // 364
2604
  { "PMEVTYPER25_EL0", 0xDF79, true, true,  {}  }, // 365
2605
  { "PMEVTYPER26_EL0", 0xDF7A, true, true,  {}  }, // 366
2606
  { "PMEVTYPER27_EL0", 0xDF7B, true, true,  {}  }, // 367
2607
  { "PMEVTYPER28_EL0", 0xDF7C, true, true,  {}  }, // 368
2608
  { "PMEVTYPER29_EL0", 0xDF7D, true, true,  {}  }, // 369
2609
  { "PMEVTYPER30_EL0", 0xDF7E, true, true,  {}  }, // 370
2610
  { "TRCPRGCTLR", 0x8808, true, true,  {}  }, // 371
2611
  { "TRCPROCSELR", 0x8810, true, true,  {}  }, // 372
2612
  { "TRCCONFIGR", 0x8820, true, true,  {}  }, // 373
2613
  { "TRCAUXCTLR", 0x8830, true, true,  {}  }, // 374
2614
  { "TRCEVENTCTL0R", 0x8840, true, true,  {}  }, // 375
2615
  { "TRCEVENTCTL1R", 0x8848, true, true,  {}  }, // 376
2616
  { "TRCSTALLCTLR", 0x8858, true, true,  {}  }, // 377
2617
  { "TRCTSCTLR", 0x8860, true, true,  {}  }, // 378
2618
  { "TRCSYNCPR", 0x8868, true, true,  {}  }, // 379
2619
  { "TRCCCCTLR", 0x8870, true, true,  {}  }, // 380
2620
  { "TRCBBCTLR", 0x8878, true, true,  {}  }, // 381
2621
  { "TRCTRACEIDR", 0x8801, true, true,  {}  }, // 382
2622
  { "TRCQCTLR", 0x8809, true, true,  {}  }, // 383
2623
  { "TRCVICTLR", 0x8802, true, true,  {}  }, // 384
2624
  { "TRCVIIECTLR", 0x880A, true, true,  {}  }, // 385
2625
  { "TRCVISSCTLR", 0x8812, true, true,  {}  }, // 386
2626
  { "TRCVIPCSSCTLR", 0x881A, true, true,  {}  }, // 387
2627
  { "TRCVDCTLR", 0x8842, true, true,  {}  }, // 388
2628
  { "TRCVDSACCTLR", 0x884A, true, true,  {}  }, // 389
2629
  { "TRCVDARCCTLR", 0x8852, true, true,  {}  }, // 390
2630
  { "TRCSEQEVR0", 0x8804, true, true,  {}  }, // 391
2631
  { "TRCSEQEVR1", 0x880C, true, true,  {}  }, // 392
2632
  { "TRCSEQEVR2", 0x8814, true, true,  {}  }, // 393
2633
  { "TRCSEQRSTEVR", 0x8834, true, true,  {}  }, // 394
2634
  { "TRCSEQSTR", 0x883C, true, true,  {}  }, // 395
2635
  { "TRCEXTINSELR", 0x8844, true, true,  {}  }, // 396
2636
  { "TRCCNTRLDVR0", 0x8805, true, true,  {}  }, // 397
2637
  { "TRCCNTRLDVR1", 0x880D, true, true,  {}  }, // 398
2638
  { "TRCCNTRLDVR2", 0x8815, true, true,  {}  }, // 399
2639
  { "TRCCNTRLDVR3", 0x881D, true, true,  {}  }, // 400
2640
  { "TRCCNTCTLR0", 0x8825, true, true,  {}  }, // 401
2641
  { "TRCCNTCTLR1", 0x882D, true, true,  {}  }, // 402
2642
  { "TRCCNTCTLR2", 0x8835, true, true,  {}  }, // 403
2643
  { "TRCCNTCTLR3", 0x883D, true, true,  {}  }, // 404
2644
  { "TRCCNTVR0", 0x8845, true, true,  {}  }, // 405
2645
  { "TRCCNTVR1", 0x884D, true, true,  {}  }, // 406
2646
  { "TRCCNTVR2", 0x8855, true, true,  {}  }, // 407
2647
  { "TRCCNTVR3", 0x885D, true, true,  {}  }, // 408
2648
  { "TRCIMSPEC0", 0x8807, true, true,  {}  }, // 409
2649
  { "TRCIMSPEC1", 0x880F, true, true,  {}  }, // 410
2650
  { "TRCIMSPEC2", 0x8817, true, true,  {}  }, // 411
2651
  { "TRCIMSPEC3", 0x881F, true, true,  {}  }, // 412
2652
  { "TRCIMSPEC4", 0x8827, true, true,  {}  }, // 413
2653
  { "TRCIMSPEC5", 0x882F, true, true,  {}  }, // 414
2654
  { "TRCIMSPEC6", 0x8837, true, true,  {}  }, // 415
2655
  { "TRCIMSPEC7", 0x883F, true, true,  {}  }, // 416
2656
  { "TRCRSCTLR2", 0x8890, true, true,  {}  }, // 417
2657
  { "TRCRSCTLR3", 0x8898, true, true,  {}  }, // 418
2658
  { "TRCRSCTLR4", 0x88A0, true, true,  {}  }, // 419
2659
  { "TRCRSCTLR5", 0x88A8, true, true,  {}  }, // 420
2660
  { "TRCRSCTLR6", 0x88B0, true, true,  {}  }, // 421
2661
  { "TRCRSCTLR7", 0x88B8, true, true,  {}  }, // 422
2662
  { "TRCRSCTLR8", 0x88C0, true, true,  {}  }, // 423
2663
  { "TRCRSCTLR9", 0x88C8, true, true,  {}  }, // 424
2664
  { "TRCRSCTLR10", 0x88D0, true, true,  {}  }, // 425
2665
  { "TRCRSCTLR11", 0x88D8, true, true,  {}  }, // 426
2666
  { "TRCRSCTLR12", 0x88E0, true, true,  {}  }, // 427
2667
  { "TRCRSCTLR13", 0x88E8, true, true,  {}  }, // 428
2668
  { "TRCRSCTLR14", 0x88F0, true, true,  {}  }, // 429
2669
  { "TRCRSCTLR15", 0x88F8, true, true,  {}  }, // 430
2670
  { "TRCRSCTLR16", 0x8881, true, true,  {}  }, // 431
2671
  { "TRCRSCTLR17", 0x8889, true, true,  {}  }, // 432
2672
  { "TRCRSCTLR18", 0x8891, true, true,  {}  }, // 433
2673
  { "TRCRSCTLR19", 0x8899, true, true,  {}  }, // 434
2674
  { "TRCRSCTLR20", 0x88A1, true, true,  {}  }, // 435
2675
  { "TRCRSCTLR21", 0x88A9, true, true,  {}  }, // 436
2676
  { "TRCRSCTLR22", 0x88B1, true, true,  {}  }, // 437
2677
  { "TRCRSCTLR23", 0x88B9, true, true,  {}  }, // 438
2678
  { "TRCRSCTLR24", 0x88C1, true, true,  {}  }, // 439
2679
  { "TRCRSCTLR25", 0x88C9, true, true,  {}  }, // 440
2680
  { "TRCRSCTLR26", 0x88D1, true, true,  {}  }, // 441
2681
  { "TRCRSCTLR27", 0x88D9, true, true,  {}  }, // 442
2682
  { "TRCRSCTLR28", 0x88E1, true, true,  {}  }, // 443
2683
  { "TRCRSCTLR29", 0x88E9, true, true,  {}  }, // 444
2684
  { "TRCRSCTLR30", 0x88F1, true, true,  {}  }, // 445
2685
  { "TRCRSCTLR31", 0x88F9, true, true,  {}  }, // 446
2686
  { "TRCSSCCR0", 0x8882, true, true,  {}  }, // 447
2687
  { "TRCSSCCR1", 0x888A, true, true,  {}  }, // 448
2688
  { "TRCSSCCR2", 0x8892, true, true,  {}  }, // 449
2689
  { "TRCSSCCR3", 0x889A, true, true,  {}  }, // 450
2690
  { "TRCSSCCR4", 0x88A2, true, true,  {}  }, // 451
2691
  { "TRCSSCCR5", 0x88AA, true, true,  {}  }, // 452
2692
  { "TRCSSCCR6", 0x88B2, true, true,  {}  }, // 453
2693
  { "TRCSSCCR7", 0x88BA, true, true,  {}  }, // 454
2694
  { "TRCSSCSR0", 0x88C2, true, true,  {}  }, // 455
2695
  { "TRCSSCSR1", 0x88CA, true, true,  {}  }, // 456
2696
  { "TRCSSCSR2", 0x88D2, true, true,  {}  }, // 457
2697
  { "TRCSSCSR3", 0x88DA, true, true,  {}  }, // 458
2698
  { "TRCSSCSR4", 0x88E2, true, true,  {}  }, // 459
2699
  { "TRCSSCSR5", 0x88EA, true, true,  {}  }, // 460
2700
  { "TRCSSCSR6", 0x88F2, true, true,  {}  }, // 461
2701
  { "TRCSSCSR7", 0x88FA, true, true,  {}  }, // 462
2702
  { "TRCSSPCICR0", 0x8883, true, true,  {}  }, // 463
2703
  { "TRCSSPCICR1", 0x888B, true, true,  {}  }, // 464
2704
  { "TRCSSPCICR2", 0x8893, true, true,  {}  }, // 465
2705
  { "TRCSSPCICR3", 0x889B, true, true,  {}  }, // 466
2706
  { "TRCSSPCICR4", 0x88A3, true, true,  {}  }, // 467
2707
  { "TRCSSPCICR5", 0x88AB, true, true,  {}  }, // 468
2708
  { "TRCSSPCICR6", 0x88B3, true, true,  {}  }, // 469
2709
  { "TRCSSPCICR7", 0x88BB, true, true,  {}  }, // 470
2710
  { "TRCPDCR", 0x88A4, true, true,  {}  }, // 471
2711
  { "TRCACVR0", 0x8900, true, true,  {}  }, // 472
2712
  { "TRCACVR1", 0x8910, true, true,  {}  }, // 473
2713
  { "TRCACVR2", 0x8920, true, true,  {}  }, // 474
2714
  { "TRCACVR3", 0x8930, true, true,  {}  }, // 475
2715
  { "TRCACVR4", 0x8940, true, true,  {}  }, // 476
2716
  { "TRCACVR5", 0x8950, true, true,  {}  }, // 477
2717
  { "TRCACVR6", 0x8960, true, true,  {}  }, // 478
2718
  { "TRCACVR7", 0x8970, true, true,  {}  }, // 479
2719
  { "TRCACVR8", 0x8901, true, true,  {}  }, // 480
2720
  { "TRCACVR9", 0x8911, true, true,  {}  }, // 481
2721
  { "TRCACVR10", 0x8921, true, true,  {}  }, // 482
2722
  { "TRCACVR11", 0x8931, true, true,  {}  }, // 483
2723
  { "TRCACVR12", 0x8941, true, true,  {}  }, // 484
2724
  { "TRCACVR13", 0x8951, true, true,  {}  }, // 485
2725
  { "TRCACVR14", 0x8961, true, true,  {}  }, // 486
2726
  { "TRCACVR15", 0x8971, true, true,  {}  }, // 487
2727
  { "TRCACATR0", 0x8902, true, true,  {}  }, // 488
2728
  { "TRCACATR1", 0x8912, true, true,  {}  }, // 489
2729
  { "TRCACATR2", 0x8922, true, true,  {}  }, // 490
2730
  { "TRCACATR3", 0x8932, true, true,  {}  }, // 491
2731
  { "TRCACATR4", 0x8942, true, true,  {}  }, // 492
2732
  { "TRCACATR5", 0x8952, true, true,  {}  }, // 493
2733
  { "TRCACATR6", 0x8962, true, true,  {}  }, // 494
2734
  { "TRCACATR7", 0x8972, true, true,  {}  }, // 495
2735
  { "TRCACATR8", 0x8903, true, true,  {}  }, // 496
2736
  { "TRCACATR9", 0x8913, true, true,  {}  }, // 497
2737
  { "TRCACATR10", 0x8923, true, true,  {}  }, // 498
2738
  { "TRCACATR11", 0x8933, true, true,  {}  }, // 499
2739
  { "TRCACATR12", 0x8943, true, true,  {}  }, // 500
2740
  { "TRCACATR13", 0x8953, true, true,  {}  }, // 501
2741
  { "TRCACATR14", 0x8963, true, true,  {}  }, // 502
2742
  { "TRCACATR15", 0x8973, true, true,  {}  }, // 503
2743
  { "TRCDVCVR0", 0x8904, true, true,  {}  }, // 504
2744
  { "TRCDVCVR1", 0x8924, true, true,  {}  }, // 505
2745
  { "TRCDVCVR2", 0x8944, true, true,  {}  }, // 506
2746
  { "TRCDVCVR3", 0x8964, true, true,  {}  }, // 507
2747
  { "TRCDVCVR4", 0x8905, true, true,  {}  }, // 508
2748
  { "TRCDVCVR5", 0x8925, true, true,  {}  }, // 509
2749
  { "TRCDVCVR6", 0x8945, true, true,  {}  }, // 510
2750
  { "TRCDVCVR7", 0x8965, true, true,  {}  }, // 511
2751
  { "TRCDVCMR0", 0x8906, true, true,  {}  }, // 512
2752
  { "TRCDVCMR1", 0x8926, true, true,  {}  }, // 513
2753
  { "TRCDVCMR2", 0x8946, true, true,  {}  }, // 514
2754
  { "TRCDVCMR3", 0x8966, true, true,  {}  }, // 515
2755
  { "TRCDVCMR4", 0x8907, true, true,  {}  }, // 516
2756
  { "TRCDVCMR5", 0x8927, true, true,  {}  }, // 517
2757
  { "TRCDVCMR6", 0x8947, true, true,  {}  }, // 518
2758
  { "TRCDVCMR7", 0x8967, true, true,  {}  }, // 519
2759
  { "TRCCIDCVR0", 0x8980, true, true,  {}  }, // 520
2760
  { "TRCCIDCVR1", 0x8990, true, true,  {}  }, // 521
2761
  { "TRCCIDCVR2", 0x89A0, true, true,  {}  }, // 522
2762
  { "TRCCIDCVR3", 0x89B0, true, true,  {}  }, // 523
2763
  { "TRCCIDCVR4", 0x89C0, true, true,  {}  }, // 524
2764
  { "TRCCIDCVR5", 0x89D0, true, true,  {}  }, // 525
2765
  { "TRCCIDCVR6", 0x89E0, true, true,  {}  }, // 526
2766
  { "TRCCIDCVR7", 0x89F0, true, true,  {}  }, // 527
2767
  { "TRCVMIDCVR0", 0x8981, true, true,  {}  }, // 528
2768
  { "TRCVMIDCVR1", 0x8991, true, true,  {}  }, // 529
2769
  { "TRCVMIDCVR2", 0x89A1, true, true,  {}  }, // 530
2770
  { "TRCVMIDCVR3", 0x89B1, true, true,  {}  }, // 531
2771
  { "TRCVMIDCVR4", 0x89C1, true, true,  {}  }, // 532
2772
  { "TRCVMIDCVR5", 0x89D1, true, true,  {}  }, // 533
2773
  { "TRCVMIDCVR6", 0x89E1, true, true,  {}  }, // 534
2774
  { "TRCVMIDCVR7", 0x89F1, true, true,  {}  }, // 535
2775
  { "TRCCIDCCTLR0", 0x8982, true, true,  {}  }, // 536
2776
  { "TRCCIDCCTLR1", 0x898A, true, true,  {}  }, // 537
2777
  { "TRCVMIDCCTLR0", 0x8992, true, true,  {}  }, // 538
2778
  { "TRCVMIDCCTLR1", 0x899A, true, true,  {}  }, // 539
2779
  { "TRCITCTRL", 0x8B84, true, true,  {}  }, // 540
2780
  { "TRCCLAIMSET", 0x8BC6, true, true,  {}  }, // 541
2781
  { "TRCCLAIMCLR", 0x8BCE, true, true,  {}  }, // 542
2782
  { "ICC_BPR1_EL1", 0xC663, true, true,  {}  }, // 543
2783
  { "ICC_BPR0_EL1", 0xC643, true, true,  {}  }, // 544
2784
  { "ICC_PMR_EL1", 0xC230, true, true,  {}  }, // 545
2785
  { "ICC_CTLR_EL1", 0xC664, true, true,  {}  }, // 546
2786
  { "ICC_CTLR_EL3", 0xF664, true, true,  {}  }, // 547
2787
  { "ICC_SRE_EL1", 0xC665, true, true,  {}  }, // 548
2788
  { "ICC_SRE_EL2", 0xE64D, true, true,  {}  }, // 549
2789
  { "ICC_SRE_EL3", 0xF665, true, true,  {}  }, // 550
2790
  { "ICC_IGRPEN0_EL1", 0xC666, true, true,  {}  }, // 551
2791
  { "ICC_IGRPEN1_EL1", 0xC667, true, true,  {}  }, // 552
2792
  { "ICC_IGRPEN1_EL3", 0xF667, true, true,  {}  }, // 553
2793
  { "ICC_SEIEN_EL1", 0xC668, true, true,  {}  }, // 554
2794
  { "ICC_AP0R0_EL1", 0xC644, true, true,  {}  }, // 555
2795
  { "ICC_AP0R1_EL1", 0xC645, true, true,  {}  }, // 556
2796
  { "ICC_AP0R2_EL1", 0xC646, true, true,  {}  }, // 557
2797
  { "ICC_AP0R3_EL1", 0xC647, true, true,  {}  }, // 558
2798
  { "ICC_AP1R0_EL1", 0xC648, true, true,  {}  }, // 559
2799
  { "ICC_AP1R1_EL1", 0xC649, true, true,  {}  }, // 560
2800
  { "ICC_AP1R2_EL1", 0xC64A, true, true,  {}  }, // 561
2801
  { "ICC_AP1R3_EL1", 0xC64B, true, true,  {}  }, // 562
2802
  { "ICH_AP0R0_EL2", 0xE640, true, true,  {}  }, // 563
2803
  { "ICH_AP0R1_EL2", 0xE641, true, true,  {}  }, // 564
2804
  { "ICH_AP0R2_EL2", 0xE642, true, true,  {}  }, // 565
2805
  { "ICH_AP0R3_EL2", 0xE643, true, true,  {}  }, // 566
2806
  { "ICH_AP1R0_EL2", 0xE648, true, true,  {}  }, // 567
2807
  { "ICH_AP1R1_EL2", 0xE649, true, true,  {}  }, // 568
2808
  { "ICH_AP1R2_EL2", 0xE64A, true, true,  {}  }, // 569
2809
  { "ICH_AP1R3_EL2", 0xE64B, true, true,  {}  }, // 570
2810
  { "ICH_HCR_EL2", 0xE658, true, true,  {}  }, // 571
2811
  { "ICH_MISR_EL2", 0xE65A, true, true,  {}  }, // 572
2812
  { "ICH_VMCR_EL2", 0xE65F, true, true,  {}  }, // 573
2813
  { "ICH_VSEIR_EL2", 0xE64C, true, true,  {}  }, // 574
2814
  { "ICH_LR0_EL2", 0xE660, true, true,  {}  }, // 575
2815
  { "ICH_LR1_EL2", 0xE661, true, true,  {}  }, // 576
2816
  { "ICH_LR2_EL2", 0xE662, true, true,  {}  }, // 577
2817
  { "ICH_LR3_EL2", 0xE663, true, true,  {}  }, // 578
2818
  { "ICH_LR4_EL2", 0xE664, true, true,  {}  }, // 579
2819
  { "ICH_LR5_EL2", 0xE665, true, true,  {}  }, // 580
2820
  { "ICH_LR6_EL2", 0xE666, true, true,  {}  }, // 581
2821
  { "ICH_LR7_EL2", 0xE667, true, true,  {}  }, // 582
2822
  { "ICH_LR8_EL2", 0xE668, true, true,  {}  }, // 583
2823
  { "ICH_LR9_EL2", 0xE669, true, true,  {}  }, // 584
2824
  { "ICH_LR10_EL2", 0xE66A, true, true,  {}  }, // 585
2825
  { "ICH_LR11_EL2", 0xE66B, true, true,  {}  }, // 586
2826
  { "ICH_LR12_EL2", 0xE66C, true, true,  {}  }, // 587
2827
  { "ICH_LR13_EL2", 0xE66D, true, true,  {}  }, // 588
2828
  { "ICH_LR14_EL2", 0xE66E, true, true,  {}  }, // 589
2829
  { "ICH_LR15_EL2", 0xE66F, true, true,  {}  }, // 590
2830
  { "PAN", 0xC213, true, true,  {AArch64::HasV8_1aOps}  }, // 591
2831
  { "LORSA_EL1", 0xC520, true, true,  {AArch64::HasV8_1aOps}  }, // 592
2832
  { "LOREA_EL1", 0xC521, true, true,  {AArch64::HasV8_1aOps}  }, // 593
2833
  { "LORN_EL1", 0xC522, true, true,  {AArch64::HasV8_1aOps}  }, // 594
2834
  { "LORC_EL1", 0xC523, true, true,  {AArch64::HasV8_1aOps}  }, // 595
2835
  { "TTBR1_EL2", 0xE101, true, true,  {AArch64::HasV8_1aOps}  }, // 596
2836
  { "CONTEXTIDR_EL2", 0xE681, true, true,  {AArch64::HasV8_1aOps}  }, // 597
2837
  { "CNTHV_TVAL_EL2", 0xE718, true, true,  {AArch64::HasV8_1aOps}  }, // 598
2838
  { "CNTHV_CVAL_EL2", 0xE71A, true, true,  {AArch64::HasV8_1aOps}  }, // 599
2839
  { "CNTHV_CTL_EL2", 0xE719, true, true,  {AArch64::HasV8_1aOps}  }, // 600
2840
  { "SCTLR_EL12", 0xE880, true, true,  {AArch64::HasV8_1aOps}  }, // 601
2841
  { "CPACR_EL12", 0xE882, true, true,  {AArch64::HasV8_1aOps}  }, // 602
2842
  { "TTBR0_EL12", 0xE900, true, true,  {AArch64::HasV8_1aOps}  }, // 603
2843
  { "TTBR1_EL12", 0xE901, true, true,  {AArch64::HasV8_1aOps}  }, // 604
2844
  { "TCR_EL12", 0xE902, true, true,  {AArch64::HasV8_1aOps}  }, // 605
2845
  { "AFSR0_EL12", 0xEA88, true, true,  {AArch64::HasV8_1aOps}  }, // 606
2846
  { "AFSR1_EL12", 0xEA89, true, true,  {AArch64::HasV8_1aOps}  }, // 607
2847
  { "ESR_EL12", 0xEA90, true, true,  {AArch64::HasV8_1aOps}  }, // 608
2848
  { "FAR_EL12", 0xEB00, true, true,  {AArch64::HasV8_1aOps}  }, // 609
2849
  { "MAIR_EL12", 0xED10, true, true,  {AArch64::HasV8_1aOps}  }, // 610
2850
  { "AMAIR_EL12", 0xED18, true, true,  {AArch64::HasV8_1aOps}  }, // 611
2851
  { "VBAR_EL12", 0xEE00, true, true,  {AArch64::HasV8_1aOps}  }, // 612
2852
  { "CONTEXTIDR_EL12", 0xEE81, true, true,  {AArch64::HasV8_1aOps}  }, // 613
2853
  { "CNTKCTL_EL12", 0xEF08, true, true,  {AArch64::HasV8_1aOps}  }, // 614
2854
  { "CNTP_TVAL_EL02", 0xEF10, true, true,  {AArch64::HasV8_1aOps}  }, // 615
2855
  { "CNTP_CTL_EL02", 0xEF11, true, true,  {AArch64::HasV8_1aOps}  }, // 616
2856
  { "CNTP_CVAL_EL02", 0xEF12, true, true,  {AArch64::HasV8_1aOps}  }, // 617
2857
  { "CNTV_TVAL_EL02", 0xEF18, true, true,  {AArch64::HasV8_1aOps}  }, // 618
2858
  { "CNTV_CTL_EL02", 0xEF19, true, true,  {AArch64::HasV8_1aOps}  }, // 619
2859
  { "CNTV_CVAL_EL02", 0xEF1A, true, true,  {AArch64::HasV8_1aOps}  }, // 620
2860
  { "SPSR_EL12", 0xEA00, true, true,  {AArch64::HasV8_1aOps}  }, // 621
2861
  { "ELR_EL12", 0xEA01, true, true,  {AArch64::HasV8_1aOps}  }, // 622
2862
  { "UAO", 0xC214, true, true,  {AArch64::HasV8_2aOps}  }, // 623
2863
  { "PMBLIMITR_EL1", 0xC4D0, true, true,  {AArch64::FeatureSPE}  }, // 624
2864
  { "PMBPTR_EL1", 0xC4D1, true, true,  {AArch64::FeatureSPE}  }, // 625
2865
  { "PMBSR_EL1", 0xC4D3, true, true,  {AArch64::FeatureSPE}  }, // 626
2866
  { "PMBIDR_EL1", 0xC4D7, true, true,  {AArch64::FeatureSPE}  }, // 627
2867
  { "PMSCR_EL2", 0xE4C8, true, true,  {AArch64::FeatureSPE}  }, // 628
2868
  { "PMSCR_EL12", 0xECC8, true, true,  {AArch64::FeatureSPE}  }, // 629
2869
  { "PMSCR_EL1", 0xC4C8, true, true,  {AArch64::FeatureSPE}  }, // 630
2870
  { "PMSICR_EL1", 0xC4CA, true, true,  {AArch64::FeatureSPE}  }, // 631
2871
  { "PMSIRR_EL1", 0xC4CB, true, true,  {AArch64::FeatureSPE}  }, // 632
2872
  { "PMSFCR_EL1", 0xC4CC, true, true,  {AArch64::FeatureSPE}  }, // 633
2873
  { "PMSEVFR_EL1", 0xC4CD, true, true,  {AArch64::FeatureSPE}  }, // 634
2874
  { "PMSLATFR_EL1", 0xC4CE, true, true,  {AArch64::FeatureSPE}  }, // 635
2875
  { "PMSIDR_EL1", 0xC4CF, true, true,  {AArch64::FeatureSPE}  }, // 636
2876
  { "ERRSELR_EL1", 0xC299, true, true,  {AArch64::FeatureRAS}  }, // 637
2877
  { "ERXCTLR_EL1", 0xC2A1, true, true,  {AArch64::FeatureRAS}  }, // 638
2878
  { "ERXSTATUS_EL1", 0xC2A2, true, true,  {AArch64::FeatureRAS}  }, // 639
2879
  { "ERXADDR_EL1", 0xC2A3, true, true,  {AArch64::FeatureRAS}  }, // 640
2880
  { "ERXMISC0_EL1", 0xC2A8, true, true,  {AArch64::FeatureRAS}  }, // 641
2881
  { "ERXMISC1_EL1", 0xC2A9, true, true,  {AArch64::FeatureRAS}  }, // 642
2882
  { "DISR_EL1", 0xC609, true, true,  {AArch64::FeatureRAS}  }, // 643
2883
  { "VDISR_EL2", 0xE609, true, true,  {AArch64::FeatureRAS}  }, // 644
2884
  { "VSESR_EL2", 0xE293, true, true,  {AArch64::FeatureRAS}  }, // 645
2885
  { "APIAKeyLo_EL1", 0xC108, true, true,  {AArch64::HasV8_3aOps}  }, // 646
2886
  { "APIAKeyHi_EL1", 0xC109, true, true,  {AArch64::HasV8_3aOps}  }, // 647
2887
  { "APIBKeyLo_EL1", 0xC10A, true, true,  {AArch64::HasV8_3aOps}  }, // 648
2888
  { "APIBKeyHi_EL1", 0xC10B, true, true,  {AArch64::HasV8_3aOps}  }, // 649
2889
  { "APDAKeyLo_EL1", 0xC110, true, true,  {AArch64::HasV8_3aOps}  }, // 650
2890
  { "APDAKeyHi_EL1", 0xC111, true, true,  {AArch64::HasV8_3aOps}  }, // 651
2891
  { "APDBKeyLo_EL1", 0xC112, true, true,  {AArch64::HasV8_3aOps}  }, // 652
2892
  { "APDBKeyHi_EL1", 0xC113, true, true,  {AArch64::HasV8_3aOps}  }, // 653
2893
  { "APGAKeyLo_EL1", 0xC118, true, true,  {AArch64::HasV8_3aOps}  }, // 654
2894
  { "APGAKeyHi_EL1", 0xC119, true, true,  {AArch64::HasV8_3aOps}  }, // 655
2895
  { "VSTCR_EL2", 0xE132, true, true,  {AArch64::HasV8_4aOps}  }, // 656
2896
  { "VSTTBR_EL2", 0xE130, true, true,  {AArch64::HasV8_4aOps}  }, // 657
2897
  { "CNTHVS_TVAL_EL2", 0xE720, true, true,  {AArch64::HasV8_4aOps}  }, // 658
2898
  { "CNTHVS_CVAL_EL2", 0xE722, true, true,  {AArch64::HasV8_4aOps}  }, // 659
2899
  { "CNTHVS_CTL_EL2", 0xE721, true, true,  {AArch64::HasV8_4aOps}  }, // 660
2900
  { "CNTHPS_TVAL_EL2", 0xE728, true, true,  {AArch64::HasV8_4aOps}  }, // 661
2901
  { "CNTHPS_CVAL_EL2", 0xE72A, true, true,  {AArch64::HasV8_4aOps}  }, // 662
2902
  { "CNTHPS_CTL_EL2", 0xE729, true, true,  {AArch64::HasV8_4aOps}  }, // 663
2903
  { "SDER32_EL2", 0xE099, true, true,  {AArch64::HasV8_4aOps}  }, // 664
2904
  { "ERXPFGCTL_EL1", 0xC2A5, true, true,  {AArch64::HasV8_4aOps}  }, // 665
2905
  { "ERXPFGCDN_EL1", 0xC2A6, true, true,  {AArch64::HasV8_4aOps}  }, // 666
2906
  { "ERXTS_EL1", 0xC2AF, true, true,  {AArch64::HasV8_4aOps}  }, // 667
2907
  { "ERXMISC2_EL1", 0xC2AA, true, true,  {AArch64::HasV8_4aOps}  }, // 668
2908
  { "ERXMISC3_EL1", 0xC2AB, true, true,  {AArch64::HasV8_4aOps}  }, // 669
2909
  { "ERXPFGF_EL1", 0xC2A4, true, false,  {AArch64::HasV8_4aOps}  }, // 670
2910
  { "MPAM0_EL1", 0xC529, true, true,  {AArch64::HasV8_4aOps}  }, // 671
2911
  { "MPAM1_EL1", 0xC528, true, true,  {AArch64::HasV8_4aOps}  }, // 672
2912
  { "MPAM2_EL2", 0xE528, true, true,  {AArch64::HasV8_4aOps}  }, // 673
2913
  { "MPAM3_EL3", 0xF528, true, true,  {AArch64::HasV8_4aOps}  }, // 674
2914
  { "MPAM1_EL12", 0xED28, true, true,  {AArch64::HasV8_4aOps}  }, // 675
2915
  { "MPAMHCR_EL2", 0xE520, true, true,  {AArch64::HasV8_4aOps}  }, // 676
2916
  { "MPAMVPMV_EL2", 0xE521, true, true,  {AArch64::HasV8_4aOps}  }, // 677
2917
  { "MPAMVPM0_EL2", 0xE530, true, true,  {AArch64::HasV8_4aOps}  }, // 678
2918
  { "MPAMVPM1_EL2", 0xE531, true, true,  {AArch64::HasV8_4aOps}  }, // 679
2919
  { "MPAMVPM2_EL2", 0xE532, true, true,  {AArch64::HasV8_4aOps}  }, // 680
2920
  { "MPAMVPM3_EL2", 0xE533, true, true,  {AArch64::HasV8_4aOps}  }, // 681
2921
  { "MPAMVPM4_EL2", 0xE534, true, true,  {AArch64::HasV8_4aOps}  }, // 682
2922
  { "MPAMVPM5_EL2", 0xE535, true, true,  {AArch64::HasV8_4aOps}  }, // 683
2923
  { "MPAMVPM6_EL2", 0xE536, true, true,  {AArch64::HasV8_4aOps}  }, // 684
2924
  { "MPAMVPM7_EL2", 0xE537, true, true,  {AArch64::HasV8_4aOps}  }, // 685
2925
  { "MPAMIDR_EL1", 0xC524, true, false,  {AArch64::HasV8_4aOps}  }, // 686
2926
  { "AMCR_EL0", 0xDE90, true, true,  {AArch64::HasV8_4aOps}  }, // 687
2927
  { "AMCFGR_EL0", 0xDE91, true, false,  {AArch64::HasV8_4aOps}  }, // 688
2928
  { "AMCGCR_EL0", 0xDE92, true, false,  {AArch64::HasV8_4aOps}  }, // 689
2929
  { "AMUSERENR_EL0", 0xDE93, true, true,  {AArch64::HasV8_4aOps}  }, // 690
2930
  { "AMCNTENCLR0_EL0", 0xDE94, true, true,  {AArch64::HasV8_4aOps}  }, // 691
2931
  { "AMCNTENSET0_EL0", 0xDE95, true, true,  {AArch64::HasV8_4aOps}  }, // 692
2932
  { "AMEVCNTR00_EL0", 0xDEA0, true, true,  {AArch64::HasV8_4aOps}  }, // 693
2933
  { "AMEVCNTR01_EL0", 0xDEA1, true, true,  {AArch64::HasV8_4aOps}  }, // 694
2934
  { "AMEVCNTR02_EL0", 0xDEA2, true, true,  {AArch64::HasV8_4aOps}  }, // 695
2935
  { "AMEVCNTR03_EL0", 0xDEA3, true, true,  {AArch64::HasV8_4aOps}  }, // 696
2936
  { "AMEVTYPER00_EL0", 0xDEB0, true, false,  {AArch64::HasV8_4aOps}  }, // 697
2937
  { "AMEVTYPER01_EL0", 0xDEB1, true, false,  {AArch64::HasV8_4aOps}  }, // 698
2938
  { "AMEVTYPER02_EL0", 0xDEB2, true, false,  {AArch64::HasV8_4aOps}  }, // 699
2939
  { "AMEVTYPER03_EL0", 0xDEB3, true, false,  {AArch64::HasV8_4aOps}  }, // 700
2940
  { "AMCNTENCLR1_EL0", 0xDE98, true, true,  {AArch64::HasV8_4aOps}  }, // 701
2941
  { "AMCNTENSET1_EL0", 0xDE99, true, true,  {AArch64::HasV8_4aOps}  }, // 702
2942
  { "AMEVCNTR10_EL0", 0xDEE0, true, true,  {AArch64::HasV8_4aOps}  }, // 703
2943
  { "AMEVCNTR11_EL0", 0xDEE1, true, true,  {AArch64::HasV8_4aOps}  }, // 704
2944
  { "AMEVCNTR12_EL0", 0xDEE2, true, true,  {AArch64::HasV8_4aOps}  }, // 705
2945
  { "AMEVCNTR13_EL0", 0xDEE3, true, true,  {AArch64::HasV8_4aOps}  }, // 706
2946
  { "AMEVCNTR14_EL0", 0xDEE4, true, true,  {AArch64::HasV8_4aOps}  }, // 707
2947
  { "AMEVCNTR15_EL0", 0xDEE5, true, true,  {AArch64::HasV8_4aOps}  }, // 708
2948
  { "AMEVCNTR16_EL0", 0xDEE6, true, true,  {AArch64::HasV8_4aOps}  }, // 709
2949
  { "AMEVCNTR17_EL0", 0xDEE7, true, true,  {AArch64::HasV8_4aOps}  }, // 710
2950
  { "AMEVCNTR18_EL0", 0xDEE8, true, true,  {AArch64::HasV8_4aOps}  }, // 711
2951
  { "AMEVCNTR19_EL0", 0xDEE9, true, true,  {AArch64::HasV8_4aOps}  }, // 712
2952
  { "AMEVCNTR110_EL0", 0xDEEA, true, true,  {AArch64::HasV8_4aOps}  }, // 713
2953
  { "AMEVCNTR111_EL0", 0xDEEB, true, true,  {AArch64::HasV8_4aOps}  }, // 714
2954
  { "AMEVCNTR112_EL0", 0xDEEC, true, true,  {AArch64::HasV8_4aOps}  }, // 715
2955
  { "AMEVCNTR113_EL0", 0xDEED, true, true,  {AArch64::HasV8_4aOps}  }, // 716
2956
  { "AMEVCNTR114_EL0", 0xDEEE, true, true,  {AArch64::HasV8_4aOps}  }, // 717
2957
  { "AMEVCNTR115_EL0", 0xDEEF, true, true,  {AArch64::HasV8_4aOps}  }, // 718
2958
  { "AMEVTYPER10_EL0", 0xDEF0, true, true,  {AArch64::HasV8_4aOps}  }, // 719
2959
  { "AMEVTYPER11_EL0", 0xDEF1, true, true,  {AArch64::HasV8_4aOps}  }, // 720
2960
  { "AMEVTYPER12_EL0", 0xDEF2, true, true,  {AArch64::HasV8_4aOps}  }, // 721
2961
  { "AMEVTYPER13_EL0", 0xDEF3, true, true,  {AArch64::HasV8_4aOps}  }, // 722
2962
  { "AMEVTYPER14_EL0", 0xDEF4, true, true,  {AArch64::HasV8_4aOps}  }, // 723
2963
  { "AMEVTYPER15_EL0", 0xDEF5, true, true,  {AArch64::HasV8_4aOps}  }, // 724
2964
  { "AMEVTYPER16_EL0", 0xDEF6, true, true,  {AArch64::HasV8_4aOps}  }, // 725
2965
  { "AMEVTYPER17_EL0", 0xDEF7, true, true,  {AArch64::HasV8_4aOps}  }, // 726
2966
  { "AMEVTYPER18_EL0", 0xDEF8, true, true,  {AArch64::HasV8_4aOps}  }, // 727
2967
  { "AMEVTYPER19_EL0", 0xDEF9, true, true,  {AArch64::HasV8_4aOps}  }, // 728
2968
  { "AMEVTYPER110_EL0", 0xDEFA, true, true,  {AArch64::HasV8_4aOps}  }, // 729
2969
  { "AMEVTYPER111_EL0", 0xDEFB, true, true,  {AArch64::HasV8_4aOps}  }, // 730
2970
  { "AMEVTYPER112_EL0", 0xDEFC, true, true,  {AArch64::HasV8_4aOps}  }, // 731
2971
  { "AMEVTYPER113_EL0", 0xDEFD, true, true,  {AArch64::HasV8_4aOps}  }, // 732
2972
  { "AMEVTYPER114_EL0", 0xDEFE, true, true,  {AArch64::HasV8_4aOps}  }, // 733
2973
  { "AMEVTYPER115_EL0", 0xDEFF, true, true,  {AArch64::HasV8_4aOps}  }, // 734
2974
  { "TRFCR_EL1", 0xC091, true, true,  {AArch64::HasV8_4aOps}  }, // 735
2975
  { "TRFCR_EL2", 0xE091, true, true,  {AArch64::HasV8_4aOps}  }, // 736
2976
  { "TRFCR_EL12", 0xE891, true, true,  {AArch64::HasV8_4aOps}  }, // 737
2977
  { "DIT", 0xDA15, true, true,  {AArch64::HasV8_4aOps}  }, // 738
2978
  { "VNCR_EL2", 0xE110, true, true,  {AArch64::HasV8_4aOps}  }, // 739
2979
  { "ZCR_EL1", 0xC090, true, true,  {AArch64::FeatureSVE}  }, // 740
2980
  { "ZCR_EL2", 0xE090, true, true,  {AArch64::FeatureSVE}  }, // 741
2981
  { "ZCR_EL3", 0xF090, true, true,  {AArch64::FeatureSVE}  }, // 742
2982
  { "ZCR_EL12", 0xE890, true, true,  {AArch64::FeatureSVE}  }, // 743
2983
  { "SSBS", 0xDA16, true, true,  {AArch64::FeatureSpecRestrict}  }, // 744
2984
  { "TCO", 0xDA17, true, true,  {AArch64::FeatureMTE}  }, // 745
2985
  { "GCR_EL1", 0xC086, true, true,  {AArch64::FeatureMTE}  }, // 746
2986
  { "RGSR_EL1", 0xC085, true, true,  {AArch64::FeatureMTE}  }, // 747
2987
  { "TFSR_EL1", 0xC328, true, true,  {AArch64::FeatureMTE}  }, // 748
2988
  { "TFSR_EL2", 0xE328, true, true,  {AArch64::FeatureMTE}  }, // 749
2989
  { "TFSR_EL3", 0xF330, true, true,  {AArch64::FeatureMTE}  }, // 750
2990
  { "TFSR_EL12", 0xEB30, true, true,  {AArch64::FeatureMTE}  }, // 751
2991
  { "TFSRE0_EL1", 0xC331, true, true,  {AArch64::FeatureMTE}  }, // 752
2992
  { "CPM_IOACC_CTL_EL3", 0xFF90, true, true,  {AArch64::ProcCyclone}  }, // 753
2993
 };
2994
2995
2.53k
const SysReg *lookupSysRegByName(StringRef Name) {
2996
2.53k
  struct IndexType {
2997
2.53k
    const char * Name;
2998
2.53k
    unsigned _index;
2999
2.53k
  };
3000
2.53k
  static const struct IndexType Index[] = {
3001
2.53k
    { "ACTLR_EL1", 203 },
3002
2.53k
    { "ACTLR_EL2", 204 },
3003
2.53k
    { "ACTLR_EL3", 205 },
3004
2.53k
    { "AFSR0_EL1", 247 },
3005
2.53k
    { "AFSR0_EL12", 606 },
3006
2.53k
    { "AFSR0_EL2", 248 },
3007
2.53k
    { "AFSR0_EL3", 249 },
3008
2.53k
    { "AFSR1_EL1", 250 },
3009
2.53k
    { "AFSR1_EL12", 607 },
3010
2.53k
    { "AFSR1_EL2", 251 },
3011
2.53k
    { "AFSR1_EL3", 252 },
3012
2.53k
    { "AIDR_EL1", 14 },
3013
2.53k
    { "AMAIR_EL1", 277 },
3014
2.53k
    { "AMAIR_EL12", 611 },
3015
2.53k
    { "AMAIR_EL2", 278 },
3016
2.53k
    { "AMAIR_EL3", 279 },
3017
2.53k
    { "AMCFGR_EL0", 688 },
3018
2.53k
    { "AMCGCR_EL0", 689 },
3019
2.53k
    { "AMCNTENCLR0_EL0", 691 },
3020
2.53k
    { "AMCNTENCLR1_EL0", 701 },
3021
2.53k
    { "AMCNTENSET0_EL0", 692 },
3022
2.53k
    { "AMCNTENSET1_EL0", 702 },
3023
2.53k
    { "AMCR_EL0", 687 },
3024
2.53k
    { "AMEVCNTR00_EL0", 693 },
3025
2.53k
    { "AMEVCNTR01_EL0", 694 },
3026
2.53k
    { "AMEVCNTR02_EL0", 695 },
3027
2.53k
    { "AMEVCNTR03_EL0", 696 },
3028
2.53k
    { "AMEVCNTR10_EL0", 703 },
3029
2.53k
    { "AMEVCNTR110_EL0", 713 },
3030
2.53k
    { "AMEVCNTR111_EL0", 714 },
3031
2.53k
    { "AMEVCNTR112_EL0", 715 },
3032
2.53k
    { "AMEVCNTR113_EL0", 716 },
3033
2.53k
    { "AMEVCNTR114_EL0", 717 },
3034
2.53k
    { "AMEVCNTR115_EL0", 718 },
3035
2.53k
    { "AMEVCNTR11_EL0", 704 },
3036
2.53k
    { "AMEVCNTR12_EL0", 705 },
3037
2.53k
    { "AMEVCNTR13_EL0", 706 },
3038
2.53k
    { "AMEVCNTR14_EL0", 707 },
3039
2.53k
    { "AMEVCNTR15_EL0", 708 },
3040
2.53k
    { "AMEVCNTR16_EL0", 709 },
3041
2.53k
    { "AMEVCNTR17_EL0", 710 },
3042
2.53k
    { "AMEVCNTR18_EL0", 711 },
3043
2.53k
    { "AMEVCNTR19_EL0", 712 },
3044
2.53k
    { "AMEVTYPER00_EL0", 697 },
3045
2.53k
    { "AMEVTYPER01_EL0", 698 },
3046
2.53k
    { "AMEVTYPER02_EL0", 699 },
3047
2.53k
    { "AMEVTYPER03_EL0", 700 },
3048
2.53k
    { "AMEVTYPER10_EL0", 719 },
3049
2.53k
    { "AMEVTYPER110_EL0", 729 },
3050
2.53k
    { "AMEVTYPER111_EL0", 730 },
3051
2.53k
    { "AMEVTYPER112_EL0", 731 },
3052
2.53k
    { "AMEVTYPER113_EL0", 732 },
3053
2.53k
    { "AMEVTYPER114_EL0", 733 },
3054
2.53k
    { "AMEVTYPER115_EL0", 734 },
3055
2.53k
    { "AMEVTYPER11_EL0", 720 },
3056
2.53k
    { "AMEVTYPER12_EL0", 721 },
3057
2.53k
    { "AMEVTYPER13_EL0", 722 },
3058
2.53k
    { "AMEVTYPER14_EL0", 723 },
3059
2.53k
    { "AMEVTYPER15_EL0", 724 },
3060
2.53k
    { "AMEVTYPER16_EL0", 725 },
3061
2.53k
    { "AMEVTYPER17_EL0", 726 },
3062
2.53k
    { "AMEVTYPER18_EL0", 727 },
3063
2.53k
    { "AMEVTYPER19_EL0", 728 },
3064
2.53k
    { "AMUSERENR_EL0", 690 },
3065
2.53k
    { "APDAKEYHI_EL1", 651 },
3066
2.53k
    { "APDAKEYLO_EL1", 650 },
3067
2.53k
    { "APDBKEYHI_EL1", 653 },
3068
2.53k
    { "APDBKEYLO_EL1", 652 },
3069
2.53k
    { "APGAKEYHI_EL1", 655 },
3070
2.53k
    { "APGAKEYLO_EL1", 654 },
3071
2.53k
    { "APIAKEYHI_EL1", 647 },
3072
2.53k
    { "APIAKEYLO_EL1", 646 },
3073
2.53k
    { "APIBKEYHI_EL1", 649 },
3074
2.53k
    { "APIBKEYLO_EL1", 648 },
3075
2.53k
    { "CCSIDR2_EL1", 9 },
3076
2.53k
    { "CCSIDR_EL1", 8 },
3077
2.53k
    { "CLIDR_EL1", 10 },
3078
2.53k
    { "CNTFRQ_EL0", 292 },
3079
2.53k
    { "CNTHCTL_EL2", 295 },
3080
2.53k
    { "CNTHPS_CTL_EL2", 663 },
3081
2.53k
    { "CNTHPS_CVAL_EL2", 662 },
3082
2.53k
    { "CNTHPS_TVAL_EL2", 661 },
3083
2.53k
    { "CNTHP_CTL_EL2", 300 },
3084
2.53k
    { "CNTHP_CVAL_EL2", 303 },
3085
2.53k
    { "CNTHP_TVAL_EL2", 297 },
3086
2.53k
    { "CNTHVS_CTL_EL2", 660 },
3087
2.53k
    { "CNTHVS_CVAL_EL2", 659 },
3088
2.53k
    { "CNTHVS_TVAL_EL2", 658 },
3089
2.53k
    { "CNTHV_CTL_EL2", 600 },
3090
2.53k
    { "CNTHV_CVAL_EL2", 599 },
3091
2.53k
    { "CNTHV_TVAL_EL2", 598 },
3092
2.53k
    { "CNTKCTL_EL1", 294 },
3093
2.53k
    { "CNTKCTL_EL12", 614 },
3094
2.53k
    { "CNTPCT_EL0", 50 },
3095
2.53k
    { "CNTPS_CTL_EL1", 301 },
3096
2.53k
    { "CNTPS_CVAL_EL1", 304 },
3097
2.53k
    { "CNTPS_TVAL_EL1", 298 },
3098
2.53k
    { "CNTP_CTL_EL0", 299 },
3099
2.53k
    { "CNTP_CTL_EL02", 616 },
3100
2.53k
    { "CNTP_CVAL_EL0", 302 },
3101
2.53k
    { "CNTP_CVAL_EL02", 617 },
3102
2.53k
    { "CNTP_TVAL_EL0", 296 },
3103
2.53k
    { "CNTP_TVAL_EL02", 615 },
3104
2.53k
    { "CNTVCT_EL0", 51 },
3105
2.53k
    { "CNTVOFF_EL2", 293 },
3106
2.53k
    { "CNTV_CTL_EL0", 306 },
3107
2.53k
    { "CNTV_CTL_EL02", 619 },
3108
2.53k
    { "CNTV_CVAL_EL0", 307 },
3109
2.53k
    { "CNTV_CVAL_EL02", 620 },
3110
2.53k
    { "CNTV_TVAL_EL0", 305 },
3111
2.53k
    { "CNTV_TVAL_EL02", 618 },
3112
2.53k
    { "CONTEXTIDR_EL1", 286 },
3113
2.53k
    { "CONTEXTIDR_EL12", 613 },
3114
2.53k
    { "CONTEXTIDR_EL2", 597 },
3115
2.53k
    { "CPACR_EL1", 199 },
3116
2.53k
    { "CPACR_EL12", 602 },
3117
2.53k
    { "CPM_IOACC_CTL_EL3", 753 },
3118
2.53k
    { "CPTR_EL2", 210 },
3119
2.53k
    { "CPTR_EL3", 211 },
3120
2.53k
    { "CSSELR_EL1", 196 },
3121
2.53k
    { "CTR_EL0", 11 },
3122
2.53k
    { "CURRENTEL", 237 },
3123
2.53k
    { "DACR32_EL2", 224 },
3124
2.53k
    { "DAIF", 236 },
3125
2.53k
    { "DBGAUTHSTATUS_EL1", 4 },
3126
2.53k
    { "DBGBCR0_EL1", 143 },
3127
2.53k
    { "DBGBCR10_EL1", 153 },
3128
2.53k
    { "DBGBCR11_EL1", 154 },
3129
2.53k
    { "DBGBCR12_EL1", 155 },
3130
2.53k
    { "DBGBCR13_EL1", 156 },
3131
2.53k
    { "DBGBCR14_EL1", 157 },
3132
2.53k
    { "DBGBCR15_EL1", 158 },
3133
2.53k
    { "DBGBCR1_EL1", 144 },
3134
2.53k
    { "DBGBCR2_EL1", 145 },
3135
2.53k
    { "DBGBCR3_EL1", 146 },
3136
2.53k
    { "DBGBCR4_EL1", 147 },
3137
2.53k
    { "DBGBCR5_EL1", 148 },
3138
2.53k
    { "DBGBCR6_EL1", 149 },
3139
2.53k
    { "DBGBCR7_EL1", 150 },
3140
2.53k
    { "DBGBCR8_EL1", 151 },
3141
2.53k
    { "DBGBCR9_EL1", 152 },
3142
2.53k
    { "DBGBVR0_EL1", 127 },
3143
2.53k
    { "DBGBVR10_EL1", 137 },
3144
2.53k
    { "DBGBVR11_EL1", 138 },
3145
2.53k
    { "DBGBVR12_EL1", 139 },
3146
2.53k
    { "DBGBVR13_EL1", 140 },
3147
2.53k
    { "DBGBVR14_EL1", 141 },
3148
2.53k
    { "DBGBVR15_EL1", 142 },
3149
2.53k
    { "DBGBVR1_EL1", 128 },
3150
2.53k
    { "DBGBVR2_EL1", 129 },
3151
2.53k
    { "DBGBVR3_EL1", 130 },
3152
2.53k
    { "DBGBVR4_EL1", 131 },
3153
2.53k
    { "DBGBVR5_EL1", 132 },
3154
2.53k
    { "DBGBVR6_EL1", 133 },
3155
2.53k
    { "DBGBVR7_EL1", 134 },
3156
2.53k
    { "DBGBVR8_EL1", 135 },
3157
2.53k
    { "DBGBVR9_EL1", 136 },
3158
2.53k
    { "DBGCLAIMCLR_EL1", 195 },
3159
2.53k
    { "DBGCLAIMSET_EL1", 194 },
3160
2.53k
    { "DBGDTRRX_EL0", 1 },
3161
2.53k
    { "DBGDTRTX_EL0", 108 },
3162
2.53k
    { "DBGDTR_EL0", 124 },
3163
2.53k
    { "DBGPRCR_EL1", 193 },
3164
2.53k
    { "DBGVCR32_EL2", 126 },
3165
2.53k
    { "DBGWCR0_EL1", 175 },
3166
2.53k
    { "DBGWCR10_EL1", 185 },
3167
2.53k
    { "DBGWCR11_EL1", 186 },
3168
2.53k
    { "DBGWCR12_EL1", 187 },
3169
2.53k
    { "DBGWCR13_EL1", 188 },
3170
2.53k
    { "DBGWCR14_EL1", 189 },
3171
2.53k
    { "DBGWCR15_EL1", 190 },
3172
2.53k
    { "DBGWCR1_EL1", 176 },
3173
2.53k
    { "DBGWCR2_EL1", 177 },
3174
2.53k
    { "DBGWCR3_EL1", 178 },
3175
2.53k
    { "DBGWCR4_EL1", 179 },
3176
2.53k
    { "DBGWCR5_EL1", 180 },
3177
2.53k
    { "DBGWCR6_EL1", 181 },
3178
2.53k
    { "DBGWCR7_EL1", 182 },
3179
2.53k
    { "DBGWCR8_EL1", 183 },
3180
2.53k
    { "DBGWCR9_EL1", 184 },
3181
2.53k
    { "DBGWVR0_EL1", 159 },
3182
2.53k
    { "DBGWVR10_EL1", 169 },
3183
2.53k
    { "DBGWVR11_EL1", 170 },
3184
2.53k
    { "DBGWVR12_EL1", 171 },
3185
2.53k
    { "DBGWVR13_EL1", 172 },
3186
2.53k
    { "DBGWVR14_EL1", 173 },
3187
2.53k
    { "DBGWVR15_EL1", 174 },
3188
2.53k
    { "DBGWVR1_EL1", 160 },
3189
2.53k
    { "DBGWVR2_EL1", 161 },
3190
2.53k
    { "DBGWVR3_EL1", 162 },
3191
2.53k
    { "DBGWVR4_EL1", 163 },
3192
2.53k
    { "DBGWVR5_EL1", 164 },
3193
2.53k
    { "DBGWVR6_EL1", 165 },
3194
2.53k
    { "DBGWVR7_EL1", 166 },
3195
2.53k
    { "DBGWVR8_EL1", 167 },
3196
2.53k
    { "DBGWVR9_EL1", 168 },
3197
2.53k
    { "DCZID_EL0", 15 },
3198
2.53k
    { "DISR_EL1", 643 },
3199
2.53k
    { "DIT", 738 },
3200
2.53k
    { "DLR_EL0", 245 },
3201
2.53k
    { "DSPSR_EL0", 244 },
3202
2.53k
    { "ELR_EL1", 228 },
3203
2.53k
    { "ELR_EL12", 622 },
3204
2.53k
    { "ELR_EL2", 229 },
3205
2.53k
    { "ELR_EL3", 230 },
3206
2.53k
    { "ERRIDR_EL1", 99 },
3207
2.53k
    { "ERRSELR_EL1", 637 },
3208
2.53k
    { "ERXADDR_EL1", 640 },
3209
2.53k
    { "ERXCTLR_EL1", 638 },
3210
2.53k
    { "ERXFR_EL1", 100 },
3211
2.53k
    { "ERXMISC0_EL1", 641 },
3212
2.53k
    { "ERXMISC1_EL1", 642 },
3213
2.53k
    { "ERXMISC2_EL1", 668 },
3214
2.53k
    { "ERXMISC3_EL1", 669 },
3215
2.53k
    { "ERXPFGCDN_EL1", 666 },
3216
2.53k
    { "ERXPFGCTL_EL1", 665 },
3217
2.53k
    { "ERXPFGF_EL1", 670 },
3218
2.53k
    { "ERXSTATUS_EL1", 639 },
3219
2.53k
    { "ERXTS_EL1", 667 },
3220
2.53k
    { "ESR_EL1", 253 },
3221
2.53k
    { "ESR_EL12", 608 },
3222
2.53k
    { "ESR_EL2", 254 },
3223
2.53k
    { "ESR_EL3", 255 },
3224
2.53k
    { "FAR_EL1", 257 },
3225
2.53k
    { "FAR_EL12", 609 },
3226
2.53k
    { "FAR_EL2", 258 },
3227
2.53k
    { "FAR_EL3", 259 },
3228
2.53k
    { "FPCR", 242 },
3229
2.53k
    { "FPEXC32_EL2", 256 },
3230
2.53k
    { "FPSR", 243 },
3231
2.53k
    { "GCR_EL1", 746 },
3232
2.53k
    { "HACR_EL2", 213 },
3233
2.53k
    { "HCR_EL2", 206 },
3234
2.53k
    { "HPFAR_EL2", 260 },
3235
2.53k
    { "HSTR_EL2", 212 },
3236
2.53k
    { "ICC_AP0R0_EL1", 555 },
3237
2.53k
    { "ICC_AP0R1_EL1", 556 },
3238
2.53k
    { "ICC_AP0R2_EL1", 557 },
3239
2.53k
    { "ICC_AP0R3_EL1", 558 },
3240
2.53k
    { "ICC_AP1R0_EL1", 559 },
3241
2.53k
    { "ICC_AP1R1_EL1", 560 },
3242
2.53k
    { "ICC_AP1R2_EL1", 561 },
3243
2.53k
    { "ICC_AP1R3_EL1", 562 },
3244
2.53k
    { "ICC_ASGI1R_EL1", 117 },
3245
2.53k
    { "ICC_BPR0_EL1", 544 },
3246
2.53k
    { "ICC_BPR1_EL1", 543 },
3247
2.53k
    { "ICC_CTLR_EL1", 546 },
3248
2.53k
    { "ICC_CTLR_EL3", 547 },
3249
2.53k
    { "ICC_DIR_EL1", 115 },
3250
2.53k
    { "ICC_EOIR0_EL1", 114 },
3251
2.53k
    { "ICC_EOIR1_EL1", 113 },
3252
2.53k
    { "ICC_HPPIR0_EL1", 92 },
3253
2.53k
    { "ICC_HPPIR1_EL1", 91 },
3254
2.53k
    { "ICC_IAR0_EL1", 90 },
3255
2.53k
    { "ICC_IAR1_EL1", 89 },
3256
2.53k
    { "ICC_IGRPEN0_EL1", 551 },
3257
2.53k
    { "ICC_IGRPEN1_EL1", 552 },
3258
2.53k
    { "ICC_IGRPEN1_EL3", 553 },
3259
2.53k
    { "ICC_PMR_EL1", 545 },
3260
2.53k
    { "ICC_RPR_EL1", 93 },
3261
2.53k
    { "ICC_SEIEN_EL1", 554 },
3262
2.53k
    { "ICC_SGI0R_EL1", 118 },
3263
2.53k
    { "ICC_SGI1R_EL1", 116 },
3264
2.53k
    { "ICC_SRE_EL1", 548 },
3265
2.53k
    { "ICC_SRE_EL2", 549 },
3266
2.53k
    { "ICC_SRE_EL3", 550 },
3267
2.53k
    { "ICH_AP0R0_EL2", 563 },
3268
2.53k
    { "ICH_AP0R1_EL2", 564 },
3269
2.53k
    { "ICH_AP0R2_EL2", 565 },
3270
2.53k
    { "ICH_AP0R3_EL2", 566 },
3271
2.53k
    { "ICH_AP1R0_EL2", 567 },
3272
2.53k
    { "ICH_AP1R1_EL2", 568 },
3273
2.53k
    { "ICH_AP1R2_EL2", 569 },
3274
2.53k
    { "ICH_AP1R3_EL2", 570 },
3275
2.53k
    { "ICH_EISR_EL2", 95 },
3276
2.53k
    { "ICH_ELRSR_EL2", 96 },
3277
2.53k
    { "ICH_HCR_EL2", 571 },
3278
2.53k
    { "ICH_LR0_EL2", 575 },
3279
2.53k
    { "ICH_LR10_EL2", 585 },
3280
2.53k
    { "ICH_LR11_EL2", 586 },
3281
2.53k
    { "ICH_LR12_EL2", 587 },
3282
2.53k
    { "ICH_LR13_EL2", 588 },
3283
2.53k
    { "ICH_LR14_EL2", 589 },
3284
2.53k
    { "ICH_LR15_EL2", 590 },
3285
2.53k
    { "ICH_LR1_EL2", 576 },
3286
2.53k
    { "ICH_LR2_EL2", 577 },
3287
2.53k
    { "ICH_LR3_EL2", 578 },
3288
2.53k
    { "ICH_LR4_EL2", 579 },
3289
2.53k
    { "ICH_LR5_EL2", 580 },
3290
2.53k
    { "ICH_LR6_EL2", 581 },
3291
2.53k
    { "ICH_LR7_EL2", 582 },
3292
2.53k
    { "ICH_LR8_EL2", 583 },
3293
2.53k
    { "ICH_LR9_EL2", 584 },
3294
2.53k
    { "ICH_MISR_EL2", 572 },
3295
2.53k
    { "ICH_VMCR_EL2", 573 },
3296
2.53k
    { "ICH_VSEIR_EL2", 574 },
3297
2.53k
    { "ICH_VTR_EL2", 94 },
3298
2.53k
    { "ID_AA64AFR0_EL1", 36 },
3299
2.53k
    { "ID_AA64AFR1_EL1", 37 },
3300
2.53k
    { "ID_AA64DFR0_EL1", 34 },
3301
2.53k
    { "ID_AA64DFR1_EL1", 35 },
3302
2.53k
    { "ID_AA64ISAR0_EL1", 38 },
3303
2.53k
    { "ID_AA64ISAR1_EL1", 39 },
3304
2.53k
    { "ID_AA64MMFR0_EL1", 40 },
3305
2.53k
    { "ID_AA64MMFR1_EL1", 41 },
3306
2.53k
    { "ID_AA64MMFR2_EL1", 42 },
3307
2.53k
    { "ID_AA64PFR0_EL1", 32 },
3308
2.53k
    { "ID_AA64PFR1_EL1", 33 },
3309
2.53k
    { "ID_AA64ZFR0_EL1", 97 },
3310
2.53k
    { "ID_AFR0_EL1", 20 },
3311
2.53k
    { "ID_DFR0_EL1", 19 },
3312
2.53k
    { "ID_ISAR0_EL1", 25 },
3313
2.53k
    { "ID_ISAR1_EL1", 26 },
3314
2.53k
    { "ID_ISAR2_EL1", 27 },
3315
2.53k
    { "ID_ISAR3_EL1", 28 },
3316
2.53k
    { "ID_ISAR4_EL1", 29 },
3317
2.53k
    { "ID_ISAR5_EL1", 30 },
3318
2.53k
    { "ID_ISAR6_EL1", 31 },
3319
2.53k
    { "ID_MMFR0_EL1", 21 },
3320
2.53k
    { "ID_MMFR1_EL1", 22 },
3321
2.53k
    { "ID_MMFR2_EL1", 23 },
3322
2.53k
    { "ID_MMFR3_EL1", 24 },
3323
2.53k
    { "ID_MMFR4_EL1", 52 },
3324
2.53k
    { "ID_PFR0_EL1", 16 },
3325
2.53k
    { "ID_PFR1_EL1", 17 },
3326
2.53k
    { "ID_PFR2_EL1", 18 },
3327
2.53k
    { "IFSR32_EL2", 246 },
3328
2.53k
    { "ISR_EL1", 49 },
3329
2.53k
    { "LORC_EL1", 595 },
3330
2.53k
    { "LOREA_EL1", 593 },
3331
2.53k
    { "LORID_EL1", 98 },
3332
2.53k
    { "LORN_EL1", 594 },
3333
2.53k
    { "LORSA_EL1", 592 },
3334
2.53k
    { "MAIR_EL1", 274 },
3335
2.53k
    { "MAIR_EL12", 610 },
3336
2.53k
    { "MAIR_EL2", 275 },
3337
2.53k
    { "MAIR_EL3", 276 },
3338
2.53k
    { "MDCCINT_EL1", 122 },
3339
2.53k
    { "MDCCSR_EL0", 0 },
3340
2.53k
    { "MDCR_EL2", 208 },
3341
2.53k
    { "MDCR_EL3", 214 },
3342
2.53k
    { "MDRAR_EL1", 2 },
3343
2.53k
    { "MDSCR_EL1", 123 },
3344
2.53k
    { "MIDR_EL1", 7 },
3345
2.53k
    { "MPAM0_EL1", 671 },
3346
2.53k
    { "MPAM1_EL1", 672 },
3347
2.53k
    { "MPAM1_EL12", 675 },
3348
2.53k
    { "MPAM2_EL2", 673 },
3349
2.53k
    { "MPAM3_EL3", 674 },
3350
2.53k
    { "MPAMHCR_EL2", 676 },
3351
2.53k
    { "MPAMIDR_EL1", 686 },
3352
2.53k
    { "MPAMVPM0_EL2", 678 },
3353
2.53k
    { "MPAMVPM1_EL2", 679 },
3354
2.53k
    { "MPAMVPM2_EL2", 680 },
3355
2.53k
    { "MPAMVPM3_EL2", 681 },
3356
2.53k
    { "MPAMVPM4_EL2", 682 },
3357
2.53k
    { "MPAMVPM5_EL2", 683 },
3358
2.53k
    { "MPAMVPM6_EL2", 684 },
3359
2.53k
    { "MPAMVPM7_EL2", 685 },
3360
2.53k
    { "MPAMVPMV_EL2", 677 },
3361
2.53k
    { "MPIDR_EL1", 12 },
3362
2.53k
    { "MVFR0_EL1", 43 },
3363
2.53k
    { "MVFR1_EL1", 44 },
3364
2.53k
    { "MVFR2_EL1", 45 },
3365
2.53k
    { "NZCV", 235 },
3366
2.53k
    { "OSDLR_EL1", 192 },
3367
2.53k
    { "OSDTRRX_EL1", 119 },
3368
2.53k
    { "OSDTRTX_EL1", 120 },
3369
2.53k
    { "OSECCR_EL1", 125 },
3370
2.53k
    { "OSLAR_EL1", 109 },
3371
2.53k
    { "OSLSR_EL1", 3 },
3372
2.53k
    { "PAN", 591 },
3373
2.53k
    { "PAR_EL1", 261 },
3374
2.53k
    { "PMBIDR_EL1", 627 },
3375
2.53k
    { "PMBLIMITR_EL1", 624 },
3376
2.53k
    { "PMBPTR_EL1", 625 },
3377
2.53k
    { "PMBSR_EL1", 626 },
3378
2.53k
    { "PMCCFILTR_EL0", 339 },
3379
2.53k
    { "PMCCNTR_EL0", 267 },
3380
2.53k
    { "PMCEID0_EL0", 5 },
3381
2.53k
    { "PMCEID1_EL0", 6 },
3382
2.53k
    { "PMCNTENCLR_EL0", 264 },
3383
2.53k
    { "PMCNTENSET_EL0", 263 },
3384
2.53k
    { "PMCR_EL0", 262 },
3385
2.53k
    { "PMEVCNTR0_EL0", 308 },
3386
2.53k
    { "PMEVCNTR10_EL0", 318 },
3387
2.53k
    { "PMEVCNTR11_EL0", 319 },
3388
2.53k
    { "PMEVCNTR12_EL0", 320 },
3389
2.53k
    { "PMEVCNTR13_EL0", 321 },
3390
2.53k
    { "PMEVCNTR14_EL0", 322 },
3391
2.53k
    { "PMEVCNTR15_EL0", 323 },
3392
2.53k
    { "PMEVCNTR16_EL0", 324 },
3393
2.53k
    { "PMEVCNTR17_EL0", 325 },
3394
2.53k
    { "PMEVCNTR18_EL0", 326 },
3395
2.53k
    { "PMEVCNTR19_EL0", 327 },
3396
2.53k
    { "PMEVCNTR1_EL0", 309 },
3397
2.53k
    { "PMEVCNTR20_EL0", 328 },
3398
2.53k
    { "PMEVCNTR21_EL0", 329 },
3399
2.53k
    { "PMEVCNTR22_EL0", 330 },
3400
2.53k
    { "PMEVCNTR23_EL0", 331 },
3401
2.53k
    { "PMEVCNTR24_EL0", 332 },
3402
2.53k
    { "PMEVCNTR25_EL0", 333 },
3403
2.53k
    { "PMEVCNTR26_EL0", 334 },
3404
2.53k
    { "PMEVCNTR27_EL0", 335 },
3405
2.53k
    { "PMEVCNTR28_EL0", 336 },
3406
2.53k
    { "PMEVCNTR29_EL0", 337 },
3407
2.53k
    { "PMEVCNTR2_EL0", 310 },
3408
2.53k
    { "PMEVCNTR30_EL0", 338 },
3409
2.53k
    { "PMEVCNTR3_EL0", 311 },
3410
2.53k
    { "PMEVCNTR4_EL0", 312 },
3411
2.53k
    { "PMEVCNTR5_EL0", 313 },
3412
2.53k
    { "PMEVCNTR6_EL0", 314 },
3413
2.53k
    { "PMEVCNTR7_EL0", 315 },
3414
2.53k
    { "PMEVCNTR8_EL0", 316 },
3415
2.53k
    { "PMEVCNTR9_EL0", 317 },
3416
2.53k
    { "PMEVTYPER0_EL0", 340 },
3417
2.53k
    { "PMEVTYPER10_EL0", 350 },
3418
2.53k
    { "PMEVTYPER11_EL0", 351 },
3419
2.53k
    { "PMEVTYPER12_EL0", 352 },
3420
2.53k
    { "PMEVTYPER13_EL0", 353 },
3421
2.53k
    { "PMEVTYPER14_EL0", 354 },
3422
2.53k
    { "PMEVTYPER15_EL0", 355 },
3423
2.53k
    { "PMEVTYPER16_EL0", 356 },
3424
2.53k
    { "PMEVTYPER17_EL0", 357 },
3425
2.53k
    { "PMEVTYPER18_EL0", 358 },
3426
2.53k
    { "PMEVTYPER19_EL0", 359 },
3427
2.53k
    { "PMEVTYPER1_EL0", 341 },
3428
2.53k
    { "PMEVTYPER20_EL0", 360 },
3429
2.53k
    { "PMEVTYPER21_EL0", 361 },
3430
2.53k
    { "PMEVTYPER22_EL0", 362 },
3431
2.53k
    { "PMEVTYPER23_EL0", 363 },
3432
2.53k
    { "PMEVTYPER24_EL0", 364 },
3433
2.53k
    { "PMEVTYPER25_EL0", 365 },
3434
2.53k
    { "PMEVTYPER26_EL0", 366 },
3435
2.53k
    { "PMEVTYPER27_EL0", 367 },
3436
2.53k
    { "PMEVTYPER28_EL0", 368 },
3437
2.53k
    { "PMEVTYPER29_EL0", 369 },
3438
2.53k
    { "PMEVTYPER2_EL0", 342 },
3439
2.53k
    { "PMEVTYPER30_EL0", 370 },
3440
2.53k
    { "PMEVTYPER3_EL0", 343 },
3441
2.53k
    { "PMEVTYPER4_EL0", 344 },
3442
2.53k
    { "PMEVTYPER5_EL0", 345 },
3443
2.53k
    { "PMEVTYPER6_EL0", 346 },
3444
2.53k
    { "PMEVTYPER7_EL0", 347 },
3445
2.53k
    { "PMEVTYPER8_EL0", 348 },
3446
2.53k
    { "PMEVTYPER9_EL0", 349 },
3447
2.53k
    { "PMINTENCLR_EL1", 272 },
3448
2.53k
    { "PMINTENSET_EL1", 271 },
3449
2.53k
    { "PMOVSCLR_EL0", 265 },
3450
2.53k
    { "PMOVSSET_EL0", 273 },
3451
2.53k
    { "PMSCR_EL1", 630 },
3452
2.53k
    { "PMSCR_EL12", 629 },
3453
2.53k
    { "PMSCR_EL2", 628 },
3454
2.53k
    { "PMSELR_EL0", 266 },
3455
2.53k
    { "PMSEVFR_EL1", 634 },
3456
2.53k
    { "PMSFCR_EL1", 633 },
3457
2.53k
    { "PMSICR_EL1", 631 },
3458
2.53k
    { "PMSIDR_EL1", 636 },
3459
2.53k
    { "PMSIRR_EL1", 632 },
3460
2.53k
    { "PMSLATFR_EL1", 635 },
3461
2.53k
    { "PMSWINC_EL0", 110 },
3462
2.53k
    { "PMUSERENR_EL0", 270 },
3463
2.53k
    { "PMXEVCNTR_EL0", 269 },
3464
2.53k
    { "PMXEVTYPER_EL0", 268 },
3465
2.53k
    { "REVIDR_EL1", 13 },
3466
2.53k
    { "RGSR_EL1", 747 },
3467
2.53k
    { "RMR_EL1", 283 },
3468
2.53k
    { "RMR_EL2", 284 },
3469
2.53k
    { "RMR_EL3", 285 },
3470
2.53k
    { "RNDR", 101 },
3471
2.53k
    { "RNDRRS", 102 },
3472
2.53k
    { "RVBAR_EL1", 46 },
3473
2.53k
    { "RVBAR_EL2", 47 },
3474
2.53k
    { "RVBAR_EL3", 48 },
3475
2.53k
    { "SCR_EL3", 207 },
3476
2.53k
    { "SCTLR_EL1", 200 },
3477
2.53k
    { "SCTLR_EL12", 601 },
3478
2.53k
    { "SCTLR_EL2", 201 },
3479
2.53k
    { "SCTLR_EL3", 202 },
3480
2.53k
    { "SCXTNUM_EL0", 103 },
3481
2.53k
    { "SCXTNUM_EL1", 104 },
3482
2.53k
    { "SCXTNUM_EL12", 107 },
3483
2.53k
    { "SCXTNUM_EL2", 105 },
3484
2.53k
    { "SCXTNUM_EL3", 106 },
3485
2.53k
    { "SDER32_EL2", 664 },
3486
2.53k
    { "SDER32_EL3", 209 },
3487
2.53k
    { "SPSEL", 234 },
3488
2.53k
    { "SPSR_ABT", 239 },
3489
2.53k
    { "SPSR_EL1", 225 },
3490
2.53k
    { "SPSR_EL12", 621 },
3491
2.53k
    { "SPSR_EL2", 226 },
3492
2.53k
    { "SPSR_EL3", 227 },
3493
2.53k
    { "SPSR_FIQ", 241 },
3494
2.53k
    { "SPSR_IRQ", 238 },
3495
2.53k
    { "SPSR_UND", 240 },
3496
2.53k
    { "SP_EL0", 231 },
3497
2.53k
    { "SP_EL1", 232 },
3498
2.53k
    { "SP_EL2", 233 },
3499
2.53k
    { "SSBS", 744 },
3500
2.53k
    { "TCO", 745 },
3501
2.53k
    { "TCR_EL1", 219 },
3502
2.53k
    { "TCR_EL12", 605 },
3503
2.53k
    { "TCR_EL2", 220 },
3504
2.53k
    { "TCR_EL3", 221 },
3505
2.53k
    { "TEECR32_EL1", 121 },
3506
2.53k
    { "TEEHBR32_EL1", 191 },
3507
2.53k
    { "TFSRE0_EL1", 752 },
3508
2.53k
    { "TFSR_EL1", 748 },
3509
2.53k
    { "TFSR_EL12", 751 },
3510
2.53k
    { "TFSR_EL2", 749 },
3511
2.53k
    { "TFSR_EL3", 750 },
3512
2.53k
    { "TPIDRRO_EL0", 290 },
3513
2.53k
    { "TPIDR_EL0", 287 },
3514
2.53k
    { "TPIDR_EL1", 291 },
3515
2.53k
    { "TPIDR_EL2", 288 },
3516
2.53k
    { "TPIDR_EL3", 289 },
3517
2.53k
    { "TRCACATR0", 488 },
3518
2.53k
    { "TRCACATR1", 489 },
3519
2.53k
    { "TRCACATR10", 498 },
3520
2.53k
    { "TRCACATR11", 499 },
3521
2.53k
    { "TRCACATR12", 500 },
3522
2.53k
    { "TRCACATR13", 501 },
3523
2.53k
    { "TRCACATR14", 502 },
3524
2.53k
    { "TRCACATR15", 503 },
3525
2.53k
    { "TRCACATR2", 490 },
3526
2.53k
    { "TRCACATR3", 491 },
3527
2.53k
    { "TRCACATR4", 492 },
3528
2.53k
    { "TRCACATR5", 493 },
3529
2.53k
    { "TRCACATR6", 494 },
3530
2.53k
    { "TRCACATR7", 495 },
3531
2.53k
    { "TRCACATR8", 496 },
3532
2.53k
    { "TRCACATR9", 497 },
3533
2.53k
    { "TRCACVR0", 472 },
3534
2.53k
    { "TRCACVR1", 473 },
3535
2.53k
    { "TRCACVR10", 482 },
3536
2.53k
    { "TRCACVR11", 483 },
3537
2.53k
    { "TRCACVR12", 484 },
3538
2.53k
    { "TRCACVR13", 485 },
3539
2.53k
    { "TRCACVR14", 486 },
3540
2.53k
    { "TRCACVR15", 487 },
3541
2.53k
    { "TRCACVR2", 474 },
3542
2.53k
    { "TRCACVR3", 475 },
3543
2.53k
    { "TRCACVR4", 476 },
3544
2.53k
    { "TRCACVR5", 477 },
3545
2.53k
    { "TRCACVR6", 478 },
3546
2.53k
    { "TRCACVR7", 479 },
3547
2.53k
    { "TRCACVR8", 480 },
3548
2.53k
    { "TRCACVR9", 481 },
3549
2.53k
    { "TRCAUTHSTATUS", 73 },
3550
2.53k
    { "TRCAUXCTLR", 374 },
3551
2.53k
    { "TRCBBCTLR", 381 },
3552
2.53k
    { "TRCCCCTLR", 380 },
3553
2.53k
    { "TRCCIDCCTLR0", 536 },
3554
2.53k
    { "TRCCIDCCTLR1", 537 },
3555
2.53k
    { "TRCCIDCVR0", 520 },
3556
2.53k
    { "TRCCIDCVR1", 521 },
3557
2.53k
    { "TRCCIDCVR2", 522 },
3558
2.53k
    { "TRCCIDCVR3", 523 },
3559
2.53k
    { "TRCCIDCVR4", 524 },
3560
2.53k
    { "TRCCIDCVR5", 525 },
3561
2.53k
    { "TRCCIDCVR6", 526 },
3562
2.53k
    { "TRCCIDCVR7", 527 },
3563
2.53k
    { "TRCCIDR0", 85 },
3564
2.53k
    { "TRCCIDR1", 86 },
3565
2.53k
    { "TRCCIDR2", 87 },
3566
2.53k
    { "TRCCIDR3", 88 },
3567
2.53k
    { "TRCCLAIMCLR", 542 },
3568
2.53k
    { "TRCCLAIMSET", 541 },
3569
2.53k
    { "TRCCNTCTLR0", 401 },
3570
2.53k
    { "TRCCNTCTLR1", 402 },
3571
2.53k
    { "TRCCNTCTLR2", 403 },
3572
2.53k
    { "TRCCNTCTLR3", 404 },
3573
2.53k
    { "TRCCNTRLDVR0", 397 },
3574
2.53k
    { "TRCCNTRLDVR1", 398 },
3575
2.53k
    { "TRCCNTRLDVR2", 399 },
3576
2.53k
    { "TRCCNTRLDVR3", 400 },
3577
2.53k
    { "TRCCNTVR0", 405 },
3578
2.53k
    { "TRCCNTVR1", 406 },
3579
2.53k
    { "TRCCNTVR2", 407 },
3580
2.53k
    { "TRCCNTVR3", 408 },
3581
2.53k
    { "TRCCONFIGR", 373 },
3582
2.53k
    { "TRCDEVAFF0", 70 },
3583
2.53k
    { "TRCDEVAFF1", 71 },
3584
2.53k
    { "TRCDEVARCH", 74 },
3585
2.53k
    { "TRCDEVID", 75 },
3586
2.53k
    { "TRCDEVTYPE", 76 },
3587
2.53k
    { "TRCDVCMR0", 512 },
3588
2.53k
    { "TRCDVCMR1", 513 },
3589
2.53k
    { "TRCDVCMR2", 514 },
3590
2.53k
    { "TRCDVCMR3", 515 },
3591
2.53k
    { "TRCDVCMR4", 516 },
3592
2.53k
    { "TRCDVCMR5", 517 },
3593
2.53k
    { "TRCDVCMR6", 518 },
3594
2.53k
    { "TRCDVCMR7", 519 },
3595
2.53k
    { "TRCDVCVR0", 504 },
3596
2.53k
    { "TRCDVCVR1", 505 },
3597
2.53k
    { "TRCDVCVR2", 506 },
3598
2.53k
    { "TRCDVCVR3", 507 },
3599
2.53k
    { "TRCDVCVR4", 508 },
3600
2.53k
    { "TRCDVCVR5", 509 },
3601
2.53k
    { "TRCDVCVR6", 510 },
3602
2.53k
    { "TRCDVCVR7", 511 },
3603
2.53k
    { "TRCEVENTCTL0R", 375 },
3604
2.53k
    { "TRCEVENTCTL1R", 376 },
3605
2.53k
    { "TRCEXTINSELR", 396 },
3606
2.53k
    { "TRCIDR0", 60 },
3607
2.53k
    { "TRCIDR1", 61 },
3608
2.53k
    { "TRCIDR10", 56 },
3609
2.53k
    { "TRCIDR11", 57 },
3610
2.53k
    { "TRCIDR12", 58 },
3611
2.53k
    { "TRCIDR13", 59 },
3612
2.53k
    { "TRCIDR2", 62 },
3613
2.53k
    { "TRCIDR3", 63 },
3614
2.53k
    { "TRCIDR4", 64 },
3615
2.53k
    { "TRCIDR5", 65 },
3616
2.53k
    { "TRCIDR6", 66 },
3617
2.53k
    { "TRCIDR7", 67 },
3618
2.53k
    { "TRCIDR8", 54 },
3619
2.53k
    { "TRCIDR9", 55 },
3620
2.53k
    { "TRCIMSPEC0", 409 },
3621
2.53k
    { "TRCIMSPEC1", 410 },
3622
2.53k
    { "TRCIMSPEC2", 411 },
3623
2.53k
    { "TRCIMSPEC3", 412 },
3624
2.53k
    { "TRCIMSPEC4", 413 },
3625
2.53k
    { "TRCIMSPEC5", 414 },
3626
2.53k
    { "TRCIMSPEC6", 415 },
3627
2.53k
    { "TRCIMSPEC7", 416 },
3628
2.53k
    { "TRCITCTRL", 540 },
3629
2.53k
    { "TRCLAR", 112 },
3630
2.53k
    { "TRCLSR", 72 },
3631
2.53k
    { "TRCOSLAR", 111 },
3632
2.53k
    { "TRCOSLSR", 68 },
3633
2.53k
    { "TRCPDCR", 471 },
3634
2.53k
    { "TRCPDSR", 69 },
3635
2.53k
    { "TRCPIDR0", 81 },
3636
2.53k
    { "TRCPIDR1", 82 },
3637
2.53k
    { "TRCPIDR2", 83 },
3638
2.53k
    { "TRCPIDR3", 84 },
3639
2.53k
    { "TRCPIDR4", 77 },
3640
2.53k
    { "TRCPIDR5", 78 },
3641
2.53k
    { "TRCPIDR6", 79 },
3642
2.53k
    { "TRCPIDR7", 80 },
3643
2.53k
    { "TRCPRGCTLR", 371 },
3644
2.53k
    { "TRCPROCSELR", 372 },
3645
2.53k
    { "TRCQCTLR", 383 },
3646
2.53k
    { "TRCRSCTLR10", 425 },
3647
2.53k
    { "TRCRSCTLR11", 426 },
3648
2.53k
    { "TRCRSCTLR12", 427 },
3649
2.53k
    { "TRCRSCTLR13", 428 },
3650
2.53k
    { "TRCRSCTLR14", 429 },
3651
2.53k
    { "TRCRSCTLR15", 430 },
3652
2.53k
    { "TRCRSCTLR16", 431 },
3653
2.53k
    { "TRCRSCTLR17", 432 },
3654
2.53k
    { "TRCRSCTLR18", 433 },
3655
2.53k
    { "TRCRSCTLR19", 434 },
3656
2.53k
    { "TRCRSCTLR2", 417 },
3657
2.53k
    { "TRCRSCTLR20", 435 },
3658
2.53k
    { "TRCRSCTLR21", 436 },
3659
2.53k
    { "TRCRSCTLR22", 437 },
3660
2.53k
    { "TRCRSCTLR23", 438 },
3661
2.53k
    { "TRCRSCTLR24", 439 },
3662
2.53k
    { "TRCRSCTLR25", 440 },
3663
2.53k
    { "TRCRSCTLR26", 441 },
3664
2.53k
    { "TRCRSCTLR27", 442 },
3665
2.53k
    { "TRCRSCTLR28", 443 },
3666
2.53k
    { "TRCRSCTLR29", 444 },
3667
2.53k
    { "TRCRSCTLR3", 418 },
3668
2.53k
    { "TRCRSCTLR30", 445 },
3669
2.53k
    { "TRCRSCTLR31", 446 },
3670
2.53k
    { "TRCRSCTLR4", 419 },
3671
2.53k
    { "TRCRSCTLR5", 420 },
3672
2.53k
    { "TRCRSCTLR6", 421 },
3673
2.53k
    { "TRCRSCTLR7", 422 },
3674
2.53k
    { "TRCRSCTLR8", 423 },
3675
2.53k
    { "TRCRSCTLR9", 424 },
3676
2.53k
    { "TRCSEQEVR0", 391 },
3677
2.53k
    { "TRCSEQEVR1", 392 },
3678
2.53k
    { "TRCSEQEVR2", 393 },
3679
2.53k
    { "TRCSEQRSTEVR", 394 },
3680
2.53k
    { "TRCSEQSTR", 395 },
3681
2.53k
    { "TRCSSCCR0", 447 },
3682
2.53k
    { "TRCSSCCR1", 448 },
3683
2.53k
    { "TRCSSCCR2", 449 },
3684
2.53k
    { "TRCSSCCR3", 450 },
3685
2.53k
    { "TRCSSCCR4", 451 },
3686
2.53k
    { "TRCSSCCR5", 452 },
3687
2.53k
    { "TRCSSCCR6", 453 },
3688
2.53k
    { "TRCSSCCR7", 454 },
3689
2.53k
    { "TRCSSCSR0", 455 },
3690
2.53k
    { "TRCSSCSR1", 456 },
3691
2.53k
    { "TRCSSCSR2", 457 },
3692
2.53k
    { "TRCSSCSR3", 458 },
3693
2.53k
    { "TRCSSCSR4", 459 },
3694
2.53k
    { "TRCSSCSR5", 460 },
3695
2.53k
    { "TRCSSCSR6", 461 },
3696
2.53k
    { "TRCSSCSR7", 462 },
3697
2.53k
    { "TRCSSPCICR0", 463 },
3698
2.53k
    { "TRCSSPCICR1", 464 },
3699
2.53k
    { "TRCSSPCICR2", 465 },
3700
2.53k
    { "TRCSSPCICR3", 466 },
3701
2.53k
    { "TRCSSPCICR4", 467 },
3702
2.53k
    { "TRCSSPCICR5", 468 },
3703
2.53k
    { "TRCSSPCICR6", 469 },
3704
2.53k
    { "TRCSSPCICR7", 470 },
3705
2.53k
    { "TRCSTALLCTLR", 377 },
3706
2.53k
    { "TRCSTATR", 53 },
3707
2.53k
    { "TRCSYNCPR", 379 },
3708
2.53k
    { "TRCTRACEIDR", 382 },
3709
2.53k
    { "TRCTSCTLR", 378 },
3710
2.53k
    { "TRCVDARCCTLR", 390 },
3711
2.53k
    { "TRCVDCTLR", 388 },
3712
2.53k
    { "TRCVDSACCTLR", 389 },
3713
2.53k
    { "TRCVICTLR", 384 },
3714
2.53k
    { "TRCVIIECTLR", 385 },
3715
2.53k
    { "TRCVIPCSSCTLR", 387 },
3716
2.53k
    { "TRCVISSCTLR", 386 },
3717
2.53k
    { "TRCVMIDCCTLR0", 538 },
3718
2.53k
    { "TRCVMIDCCTLR1", 539 },
3719
2.53k
    { "TRCVMIDCVR0", 528 },
3720
2.53k
    { "TRCVMIDCVR1", 529 },
3721
2.53k
    { "TRCVMIDCVR2", 530 },
3722
2.53k
    { "TRCVMIDCVR3", 531 },
3723
2.53k
    { "TRCVMIDCVR4", 532 },
3724
2.53k
    { "TRCVMIDCVR5", 533 },
3725
2.53k
    { "TRCVMIDCVR6", 534 },
3726
2.53k
    { "TRCVMIDCVR7", 535 },
3727
2.53k
    { "TRFCR_EL1", 735 },
3728
2.53k
    { "TRFCR_EL12", 737 },
3729
2.53k
    { "TRFCR_EL2", 736 },
3730
2.53k
    { "TTBR0_EL1", 215 },
3731
2.53k
    { "TTBR0_EL12", 603 },
3732
2.53k
    { "TTBR0_EL2", 216 },
3733
2.53k
    { "TTBR0_EL3", 217 },
3734
2.53k
    { "TTBR1_EL1", 218 },
3735
2.53k
    { "TTBR1_EL12", 604 },
3736
2.53k
    { "TTBR1_EL2", 596 },
3737
2.53k
    { "UAO", 623 },
3738
2.53k
    { "VBAR_EL1", 280 },
3739
2.53k
    { "VBAR_EL12", 612 },
3740
2.53k
    { "VBAR_EL2", 281 },
3741
2.53k
    { "VBAR_EL3", 282 },
3742
2.53k
    { "VDISR_EL2", 644 },
3743
2.53k
    { "VMPIDR_EL2", 198 },
3744
2.53k
    { "VNCR_EL2", 739 },
3745
2.53k
    { "VPIDR_EL2", 197 },
3746
2.53k
    { "VSESR_EL2", 645 },
3747
2.53k
    { "VSTCR_EL2", 656 },
3748
2.53k
    { "VSTTBR_EL2", 657 },
3749
2.53k
    { "VTCR_EL2", 223 },
3750
2.53k
    { "VTTBR_EL2", 222 },
3751
2.53k
    { "ZCR_EL1", 740 },
3752
2.53k
    { "ZCR_EL12", 743 },
3753
2.53k
    { "ZCR_EL2", 741 },
3754
2.53k
    { "ZCR_EL3", 742 },
3755
2.53k
  };
3756
2.53k
3757
2.53k
  struct KeyType {
3758
2.53k
    std::string Name;
3759
2.53k
  };
3760
2.53k
  KeyType Key = { Name.upper() };
3761
2.53k
  auto Table = makeArrayRef(Index);
3762
2.53k
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
3763
24.4k
    [](const IndexType &LHS, const KeyType &RHS) {
3764
24.4k
      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
3765
24.4k
      if (CmpName < 0) 
return true11.5k
;
3766
12.9k
      if (CmpName > 0) 
return false10.4k
;
3767
2.46k
      return false;
3768
2.46k
    });
3769
2.53k
3770
2.53k
  if (Idx == Table.end() ||
3771
2.53k
      Key.Name != Idx->Name)
3772
63
    return nullptr;
3773
2.46k
  return &SysRegsList[Idx->_index];
3774
2.46k
}
3775
3776
5.80k
const SysReg *lookupSysRegByEncoding(uint16_t Encoding) {
3777
5.80k
  struct IndexType {
3778
5.80k
    uint16_t Encoding;
3779
5.80k
    unsigned _index;
3780
5.80k
  };
3781
5.80k
  static const struct IndexType Index[] = {
3782
5.80k
    { 0x8002, 119 },
3783
5.80k
    { 0x8004, 127 },
3784
5.80k
    { 0x8005, 143 },
3785
5.80k
    { 0x8006, 159 },
3786
5.80k
    { 0x8007, 175 },
3787
5.80k
    { 0x800C, 128 },
3788
5.80k
    { 0x800D, 144 },
3789
5.80k
    { 0x800E, 160 },
3790
5.80k
    { 0x800F, 176 },
3791
5.80k
    { 0x8010, 122 },
3792
5.80k
    { 0x8012, 123 },
3793
5.80k
    { 0x8014, 129 },
3794
5.80k
    { 0x8015, 145 },
3795
5.80k
    { 0x8016, 161 },
3796
5.80k
    { 0x8017, 177 },
3797
5.80k
    { 0x801A, 120 },
3798
5.80k
    { 0x801C, 130 },
3799
5.80k
    { 0x801D, 146 },
3800
5.80k
    { 0x801E, 162 },
3801
5.80k
    { 0x801F, 178 },
3802
5.80k
    { 0x8024, 131 },
3803
5.80k
    { 0x8025, 147 },
3804
5.80k
    { 0x8026, 163 },
3805
5.80k
    { 0x8027, 179 },
3806
5.80k
    { 0x802C, 132 },
3807
5.80k
    { 0x802D, 148 },
3808
5.80k
    { 0x802E, 164 },
3809
5.80k
    { 0x802F, 180 },
3810
5.80k
    { 0x8032, 125 },
3811
5.80k
    { 0x8034, 133 },
3812
5.80k
    { 0x8035, 149 },
3813
5.80k
    { 0x8036, 165 },
3814
5.80k
    { 0x8037, 181 },
3815
5.80k
    { 0x803C, 134 },
3816
5.80k
    { 0x803D, 150 },
3817
5.80k
    { 0x803E, 166 },
3818
5.80k
    { 0x803F, 182 },
3819
5.80k
    { 0x8044, 135 },
3820
5.80k
    { 0x8045, 151 },
3821
5.80k
    { 0x8046, 167 },
3822
5.80k
    { 0x8047, 183 },
3823
5.80k
    { 0x804C, 136 },
3824
5.80k
    { 0x804D, 152 },
3825
5.80k
    { 0x804E, 168 },
3826
5.80k
    { 0x804F, 184 },
3827
5.80k
    { 0x8054, 137 },
3828
5.80k
    { 0x8055, 153 },
3829
5.80k
    { 0x8056, 169 },
3830
5.80k
    { 0x8057, 185 },
3831
5.80k
    { 0x805C, 138 },
3832
5.80k
    { 0x805D, 154 },
3833
5.80k
    { 0x805E, 170 },
3834
5.80k
    { 0x805F, 186 },
3835
5.80k
    { 0x8064, 139 },
3836
5.80k
    { 0x8065, 155 },
3837
5.80k
    { 0x8066, 171 },
3838
5.80k
    { 0x8067, 187 },
3839
5.80k
    { 0x806C, 140 },
3840
5.80k
    { 0x806D, 156 },
3841
5.80k
    { 0x806E, 172 },
3842
5.80k
    { 0x806F, 188 },
3843
5.80k
    { 0x8074, 141 },
3844
5.80k
    { 0x8075, 157 },
3845
5.80k
    { 0x8076, 173 },
3846
5.80k
    { 0x8077, 189 },
3847
5.80k
    { 0x807C, 142 },
3848
5.80k
    { 0x807D, 158 },
3849
5.80k
    { 0x807E, 174 },
3850
5.80k
    { 0x807F, 190 },
3851
5.80k
    { 0x8080, 2 },
3852
5.80k
    { 0x8084, 109 },
3853
5.80k
    { 0x808C, 3 },
3854
5.80k
    { 0x809C, 192 },
3855
5.80k
    { 0x80A4, 193 },
3856
5.80k
    { 0x83C6, 194 },
3857
5.80k
    { 0x83CE, 195 },
3858
5.80k
    { 0x83F6, 4 },
3859
5.80k
    { 0x8801, 382 },
3860
5.80k
    { 0x8802, 384 },
3861
5.80k
    { 0x8804, 391 },
3862
5.80k
    { 0x8805, 397 },
3863
5.80k
    { 0x8806, 54 },
3864
5.80k
    { 0x8807, 409 },
3865
5.80k
    { 0x8808, 371 },
3866
5.80k
    { 0x8809, 383 },
3867
5.80k
    { 0x880A, 385 },
3868
5.80k
    { 0x880C, 392 },
3869
5.80k
    { 0x880D, 398 },
3870
5.80k
    { 0x880E, 55 },
3871
5.80k
    { 0x880F, 410 },
3872
5.80k
    { 0x8810, 372 },
3873
5.80k
    { 0x8812, 386 },
3874
5.80k
    { 0x8814, 393 },
3875
5.80k
    { 0x8815, 399 },
3876
5.80k
    { 0x8816, 56 },
3877
5.80k
    { 0x8817, 411 },
3878
5.80k
    { 0x8818, 53 },
3879
5.80k
    { 0x881A, 387 },
3880
5.80k
    { 0x881D, 400 },
3881
5.80k
    { 0x881E, 57 },
3882
5.80k
    { 0x881F, 412 },
3883
5.80k
    { 0x8820, 373 },
3884
5.80k
    { 0x8825, 401 },
3885
5.80k
    { 0x8826, 58 },
3886
5.80k
    { 0x8827, 413 },
3887
5.80k
    { 0x882D, 402 },
3888
5.80k
    { 0x882E, 59 },
3889
5.80k
    { 0x882F, 414 },
3890
5.80k
    { 0x8830, 374 },
3891
5.80k
    { 0x8834, 394 },
3892
5.80k
    { 0x8835, 403 },
3893
5.80k
    { 0x8837, 415 },
3894
5.80k
    { 0x883C, 395 },
3895
5.80k
    { 0x883D, 404 },
3896
5.80k
    { 0x883F, 416 },
3897
5.80k
    { 0x8840, 375 },
3898
5.80k
    { 0x8842, 388 },
3899
5.80k
    { 0x8844, 396 },
3900
5.80k
    { 0x8845, 405 },
3901
5.80k
    { 0x8847, 60 },
3902
5.80k
    { 0x8848, 376 },
3903
5.80k
    { 0x884A, 389 },
3904
5.80k
    { 0x884D, 406 },
3905
5.80k
    { 0x884F, 61 },
3906
5.80k
    { 0x8852, 390 },
3907
5.80k
    { 0x8855, 407 },
3908
5.80k
    { 0x8857, 62 },
3909
5.80k
    { 0x8858, 377 },
3910
5.80k
    { 0x885D, 408 },
3911
5.80k
    { 0x885F, 63 },
3912
5.80k
    { 0x8860, 378 },
3913
5.80k
    { 0x8867, 64 },
3914
5.80k
    { 0x8868, 379 },
3915
5.80k
    { 0x886F, 65 },
3916
5.80k
    { 0x8870, 380 },
3917
5.80k
    { 0x8877, 66 },
3918
5.80k
    { 0x8878, 381 },
3919
5.80k
    { 0x887F, 67 },
3920
5.80k
    { 0x8881, 431 },
3921
5.80k
    { 0x8882, 447 },
3922
5.80k
    { 0x8883, 463 },
3923
5.80k
    { 0x8884, 111 },
3924
5.80k
    { 0x8889, 432 },
3925
5.80k
    { 0x888A, 448 },
3926
5.80k
    { 0x888B, 464 },
3927
5.80k
    { 0x888C, 68 },
3928
5.80k
    { 0x8890, 417 },
3929
5.80k
    { 0x8891, 433 },
3930
5.80k
    { 0x8892, 449 },
3931
5.80k
    { 0x8893, 465 },
3932
5.80k
    { 0x8898, 418 },
3933
5.80k
    { 0x8899, 434 },
3934
5.80k
    { 0x889A, 450 },
3935
5.80k
    { 0x889B, 466 },
3936
5.80k
    { 0x88A0, 419 },
3937
5.80k
    { 0x88A1, 435 },
3938
5.80k
    { 0x88A2, 451 },
3939
5.80k
    { 0x88A3, 467 },
3940
5.80k
    { 0x88A4, 471 },
3941
5.80k
    { 0x88A8, 420 },
3942
5.80k
    { 0x88A9, 436 },
3943
5.80k
    { 0x88AA, 452 },
3944
5.80k
    { 0x88AB, 468 },
3945
5.80k
    { 0x88AC, 69 },
3946
5.80k
    { 0x88B0, 421 },
3947
5.80k
    { 0x88B1, 437 },
3948
5.80k
    { 0x88B2, 453 },
3949
5.80k
    { 0x88B3, 469 },
3950
5.80k
    { 0x88B8, 422 },
3951
5.80k
    { 0x88B9, 438 },
3952
5.80k
    { 0x88BA, 454 },
3953
5.80k
    { 0x88BB, 470 },
3954
5.80k
    { 0x88C0, 423 },
3955
5.80k
    { 0x88C1, 439 },
3956
5.80k
    { 0x88C2, 455 },
3957
5.80k
    { 0x88C8, 424 },
3958
5.80k
    { 0x88C9, 440 },
3959
5.80k
    { 0x88CA, 456 },
3960
5.80k
    { 0x88D0, 425 },
3961
5.80k
    { 0x88D1, 441 },
3962
5.80k
    { 0x88D2, 457 },
3963
5.80k
    { 0x88D8, 426 },
3964
5.80k
    { 0x88D9, 442 },
3965
5.80k
    { 0x88DA, 458 },
3966
5.80k
    { 0x88E0, 427 },
3967
5.80k
    { 0x88E1, 443 },
3968
5.80k
    { 0x88E2, 459 },
3969
5.80k
    { 0x88E8, 428 },
3970
5.80k
    { 0x88E9, 444 },
3971
5.80k
    { 0x88EA, 460 },
3972
5.80k
    { 0x88F0, 429 },
3973
5.80k
    { 0x88F1, 445 },
3974
5.80k
    { 0x88F2, 461 },
3975
5.80k
    { 0x88F8, 430 },
3976
5.80k
    { 0x88F9, 446 },
3977
5.80k
    { 0x88FA, 462 },
3978
5.80k
    { 0x8900, 472 },
3979
5.80k
    { 0x8901, 480 },
3980
5.80k
    { 0x8902, 488 },
3981
5.80k
    { 0x8903, 496 },
3982
5.80k
    { 0x8904, 504 },
3983
5.80k
    { 0x8905, 508 },
3984
5.80k
    { 0x8906, 512 },
3985
5.80k
    { 0x8907, 516 },
3986
5.80k
    { 0x8910, 473 },
3987
5.80k
    { 0x8911, 481 },
3988
5.80k
    { 0x8912, 489 },
3989
5.80k
    { 0x8913, 497 },
3990
5.80k
    { 0x8920, 474 },
3991
5.80k
    { 0x8921, 482 },
3992
5.80k
    { 0x8922, 490 },
3993
5.80k
    { 0x8923, 498 },
3994
5.80k
    { 0x8924, 505 },
3995
5.80k
    { 0x8925, 509 },
3996
5.80k
    { 0x8926, 513 },
3997
5.80k
    { 0x8927, 517 },
3998
5.80k
    { 0x8930, 475 },
3999
5.80k
    { 0x8931, 483 },
4000
5.80k
    { 0x8932, 491 },
4001
5.80k
    { 0x8933, 499 },
4002
5.80k
    { 0x8940, 476 },
4003
5.80k
    { 0x8941, 484 },
4004
5.80k
    { 0x8942, 492 },
4005
5.80k
    { 0x8943, 500 },
4006
5.80k
    { 0x8944, 506 },
4007
5.80k
    { 0x8945, 510 },
4008
5.80k
    { 0x8946, 514 },
4009
5.80k
    { 0x8947, 518 },
4010
5.80k
    { 0x8950, 477 },
4011
5.80k
    { 0x8951, 485 },
4012
5.80k
    { 0x8952, 493 },
4013
5.80k
    { 0x8953, 501 },
4014
5.80k
    { 0x8960, 478 },
4015
5.80k
    { 0x8961, 486 },
4016
5.80k
    { 0x8962, 494 },
4017
5.80k
    { 0x8963, 502 },
4018
5.80k
    { 0x8964, 507 },
4019
5.80k
    { 0x8965, 511 },
4020
5.80k
    { 0x8966, 515 },
4021
5.80k
    { 0x8967, 519 },
4022
5.80k
    { 0x8970, 479 },
4023
5.80k
    { 0x8971, 487 },
4024
5.80k
    { 0x8972, 495 },
4025
5.80k
    { 0x8973, 503 },
4026
5.80k
    { 0x8980, 520 },
4027
5.80k
    { 0x8981, 528 },
4028
5.80k
    { 0x8982, 536 },
4029
5.80k
    { 0x898A, 537 },
4030
5.80k
    { 0x8990, 521 },
4031
5.80k
    { 0x8991, 529 },
4032
5.80k
    { 0x8992, 538 },
4033
5.80k
    { 0x899A, 539 },
4034
5.80k
    { 0x89A0, 522 },
4035
5.80k
    { 0x89A1, 530 },
4036
5.80k
    { 0x89B0, 523 },
4037
5.80k
    { 0x89B1, 531 },
4038
5.80k
    { 0x89C0, 524 },
4039
5.80k
    { 0x89C1, 532 },
4040
5.80k
    { 0x89D0, 525 },
4041
5.80k
    { 0x89D1, 533 },
4042
5.80k
    { 0x89E0, 526 },
4043
5.80k
    { 0x89E1, 534 },
4044
5.80k
    { 0x89F0, 527 },
4045
5.80k
    { 0x89F1, 535 },
4046
5.80k
    { 0x8B84, 540 },
4047
5.80k
    { 0x8B97, 75 },
4048
5.80k
    { 0x8B9F, 76 },
4049
5.80k
    { 0x8BA7, 77 },
4050
5.80k
    { 0x8BAF, 78 },
4051
5.80k
    { 0x8BB7, 79 },
4052
5.80k
    { 0x8BBF, 80 },
4053
5.80k
    { 0x8BC6, 541 },
4054
5.80k
    { 0x8BC7, 81 },
4055
5.80k
    { 0x8BCE, 542 },
4056
5.80k
    { 0x8BCF, 82 },
4057
5.80k
    { 0x8BD6, 70 },
4058
5.80k
    { 0x8BD7, 83 },
4059
5.80k
    { 0x8BDE, 71 },
4060
5.80k
    { 0x8BDF, 84 },
4061
5.80k
    { 0x8BE6, 112 },
4062
5.80k
    { 0x8BE7, 85 },
4063
5.80k
    { 0x8BEE, 72 },
4064
5.80k
    { 0x8BEF, 86 },
4065
5.80k
    { 0x8BF6, 73 },
4066
5.80k
    { 0x8BF7, 87 },
4067
5.80k
    { 0x8BFE, 74 },
4068
5.80k
    { 0x8BFF, 88 },
4069
5.80k
    { 0x9000, 121 },
4070
5.80k
    { 0x9080, 191 },
4071
5.80k
    { 0x9808, 0 },
4072
5.80k
    { 0x9820, 124 },
4073
5.80k
    { 0x9828, 1 },
4074
5.80k
    { 0x9828, 108 },
4075
5.80k
    { 0xA038, 126 },
4076
5.80k
    { 0xC000, 7 },
4077
5.80k
    { 0xC005, 12 },
4078
5.80k
    { 0xC006, 13 },
4079
5.80k
    { 0xC008, 16 },
4080
5.80k
    { 0xC009, 17 },
4081
5.80k
    { 0xC00A, 19 },
4082
5.80k
    { 0xC00B, 20 },
4083
5.80k
    { 0xC00C, 21 },
4084
5.80k
    { 0xC00D, 22 },
4085
5.80k
    { 0xC00E, 23 },
4086
5.80k
    { 0xC00F, 24 },
4087
5.80k
    { 0xC010, 25 },
4088
5.80k
    { 0xC011, 26 },
4089
5.80k
    { 0xC012, 27 },
4090
5.80k
    { 0xC013, 28 },
4091
5.80k
    { 0xC014, 29 },
4092
5.80k
    { 0xC015, 30 },
4093
5.80k
    { 0xC016, 52 },
4094
5.80k
    { 0xC017, 31 },
4095
5.80k
    { 0xC018, 43 },
4096
5.80k
    { 0xC019, 44 },
4097
5.80k
    { 0xC01A, 45 },
4098
5.80k
    { 0xC01C, 18 },
4099
5.80k
    { 0xC020, 32 },
4100
5.80k
    { 0xC021, 33 },
4101
5.80k
    { 0xC024, 97 },
4102
5.80k
    { 0xC028, 34 },
4103
5.80k
    { 0xC029, 35 },
4104
5.80k
    { 0xC02C, 36 },
4105
5.80k
    { 0xC02D, 37 },
4106
5.80k
    { 0xC030, 38 },
4107
5.80k
    { 0xC031, 39 },
4108
5.80k
    { 0xC038, 40 },
4109
5.80k
    { 0xC039, 41 },
4110
5.80k
    { 0xC03A, 42 },
4111
5.80k
    { 0xC080, 200 },
4112
5.80k
    { 0xC081, 203 },
4113
5.80k
    { 0xC082, 199 },
4114
5.80k
    { 0xC085, 747 },
4115
5.80k
    { 0xC086, 746 },
4116
5.80k
    { 0xC090, 740 },
4117
5.80k
    { 0xC091, 735 },
4118
5.80k
    { 0xC100, 215 },
4119
5.80k
    { 0xC101, 218 },
4120
5.80k
    { 0xC102, 219 },
4121
5.80k
    { 0xC108, 646 },
4122
5.80k
    { 0xC109, 647 },
4123
5.80k
    { 0xC10A, 648 },
4124
5.80k
    { 0xC10B, 649 },
4125
5.80k
    { 0xC110, 650 },
4126
5.80k
    { 0xC111, 651 },
4127
5.80k
    { 0xC112, 652 },
4128
5.80k
    { 0xC113, 653 },
4129
5.80k
    { 0xC118, 654 },
4130
5.80k
    { 0xC119, 655 },
4131
5.80k
    { 0xC200, 225 },
4132
5.80k
    { 0xC201, 228 },
4133
5.80k
    { 0xC208, 231 },
4134
5.80k
    { 0xC210, 234 },
4135
5.80k
    { 0xC212, 237 },
4136
5.80k
    { 0xC213, 591 },
4137
5.80k
    { 0xC214, 623 },
4138
5.80k
    { 0xC230, 545 },
4139
5.80k
    { 0xC288, 247 },
4140
5.80k
    { 0xC289, 250 },
4141
5.80k
    { 0xC290, 253 },
4142
5.80k
    { 0xC298, 99 },
4143
5.80k
    { 0xC299, 637 },
4144
5.80k
    { 0xC2A0, 100 },
4145
5.80k
    { 0xC2A1, 638 },
4146
5.80k
    { 0xC2A2, 639 },
4147
5.80k
    { 0xC2A3, 640 },
4148
5.80k
    { 0xC2A4, 670 },
4149
5.80k
    { 0xC2A5, 665 },
4150
5.80k
    { 0xC2A6, 666 },
4151
5.80k
    { 0xC2A8, 641 },
4152
5.80k
    { 0xC2A9, 642 },
4153
5.80k
    { 0xC2AA, 668 },
4154
5.80k
    { 0xC2AB, 669 },
4155
5.80k
    { 0xC2AF, 667 },
4156
5.80k
    { 0xC300, 257 },
4157
5.80k
    { 0xC328, 748 },
4158
5.80k
    { 0xC331, 752 },
4159
5.80k
    { 0xC3A0, 261 },
4160
5.80k
    { 0xC4C8, 630 },
4161
5.80k
    { 0xC4CA, 631 },
4162
5.80k
    { 0xC4CB, 632 },
4163
5.80k
    { 0xC4CC, 633 },
4164
5.80k
    { 0xC4CD, 634 },
4165
5.80k
    { 0xC4CE, 635 },
4166
5.80k
    { 0xC4CF, 636 },
4167
5.80k
    { 0xC4D0, 624 },
4168
5.80k
    { 0xC4D1, 625 },
4169
5.80k
    { 0xC4D3, 626 },
4170
5.80k
    { 0xC4D7, 627 },
4171
5.80k
    { 0xC4F1, 271 },
4172
5.80k
    { 0xC4F2, 272 },
4173
5.80k
    { 0xC510, 274 },
4174
5.80k
    { 0xC518, 277 },
4175
5.80k
    { 0xC520, 592 },
4176
5.80k
    { 0xC521, 593 },
4177
5.80k
    { 0xC522, 594 },
4178
5.80k
    { 0xC523, 595 },
4179
5.80k
    { 0xC524, 686 },
4180
5.80k
    { 0xC527, 98 },
4181
5.80k
    { 0xC528, 672 },
4182
5.80k
    { 0xC529, 671 },
4183
5.80k
    { 0xC600, 280 },
4184
5.80k
    { 0xC601, 46 },
4185
5.80k
    { 0xC602, 283 },
4186
5.80k
    { 0xC608, 49 },
4187
5.80k
    { 0xC609, 643 },
4188
5.80k
    { 0xC640, 90 },
4189
5.80k
    { 0xC641, 114 },
4190
5.80k
    { 0xC642, 92 },
4191
5.80k
    { 0xC643, 544 },
4192
5.80k
    { 0xC644, 555 },
4193
5.80k
    { 0xC645, 556 },
4194
5.80k
    { 0xC646, 557 },
4195
5.80k
    { 0xC647, 558 },
4196
5.80k
    { 0xC648, 559 },
4197
5.80k
    { 0xC649, 560 },
4198
5.80k
    { 0xC64A, 561 },
4199
5.80k
    { 0xC64B, 562 },
4200
5.80k
    { 0xC659, 115 },
4201
5.80k
    { 0xC65B, 93 },
4202
5.80k
    { 0xC65D, 116 },
4203
5.80k
    { 0xC65E, 117 },
4204
5.80k
    { 0xC65F, 118 },
4205
5.80k
    { 0xC660, 89 },
4206
5.80k
    { 0xC661, 113 },
4207
5.80k
    { 0xC662, 91 },
4208
5.80k
    { 0xC663, 543 },
4209
5.80k
    { 0xC664, 546 },
4210
5.80k
    { 0xC665, 548 },
4211
5.80k
    { 0xC666, 551 },
4212
5.80k
    { 0xC667, 552 },
4213
5.80k
    { 0xC668, 554 },
4214
5.80k
    { 0xC681, 286 },
4215
5.80k
    { 0xC684, 291 },
4216
5.80k
    { 0xC687, 104 },
4217
5.80k
    { 0xC708, 294 },
4218
5.80k
    { 0xC800, 8 },
4219
5.80k
    { 0xC801, 10 },
4220
5.80k
    { 0xC802, 9 },
4221
5.80k
    { 0xC807, 14 },
4222
5.80k
    { 0xD000, 196 },
4223
5.80k
    { 0xD801, 11 },
4224
5.80k
    { 0xD807, 15 },
4225
5.80k
    { 0xD920, 101 },
4226
5.80k
    { 0xD921, 102 },
4227
5.80k
    { 0xDA10, 235 },
4228
5.80k
    { 0xDA11, 236 },
4229
5.80k
    { 0xDA15, 738 },
4230
5.80k
    { 0xDA16, 744 },
4231
5.80k
    { 0xDA17, 745 },
4232
5.80k
    { 0xDA20, 242 },
4233
5.80k
    { 0xDA21, 243 },
4234
5.80k
    { 0xDA28, 244 },
4235
5.80k
    { 0xDA29, 245 },
4236
5.80k
    { 0xDCE0, 262 },
4237
5.80k
    { 0xDCE1, 263 },
4238
5.80k
    { 0xDCE2, 264 },
4239
5.80k
    { 0xDCE3, 265 },
4240
5.80k
    { 0xDCE4, 110 },
4241
5.80k
    { 0xDCE5, 266 },
4242
5.80k
    { 0xDCE6, 5 },
4243
5.80k
    { 0xDCE7, 6 },
4244
5.80k
    { 0xDCE8, 267 },
4245
5.80k
    { 0xDCE9, 268 },
4246
5.80k
    { 0xDCEA, 269 },
4247
5.80k
    { 0xDCF0, 270 },
4248
5.80k
    { 0xDCF3, 273 },
4249
5.80k
    { 0xDE82, 287 },
4250
5.80k
    { 0xDE83, 290 },
4251
5.80k
    { 0xDE87, 103 },
4252
5.80k
    { 0xDE90, 687 },
4253
5.80k
    { 0xDE91, 688 },
4254
5.80k
    { 0xDE92, 689 },
4255
5.80k
    { 0xDE93, 690 },
4256
5.80k
    { 0xDE94, 691 },
4257
5.80k
    { 0xDE95, 692 },
4258
5.80k
    { 0xDE98, 701 },
4259
5.80k
    { 0xDE99, 702 },
4260
5.80k
    { 0xDEA0, 693 },
4261
5.80k
    { 0xDEA1, 694 },
4262
5.80k
    { 0xDEA2, 695 },
4263
5.80k
    { 0xDEA3, 696 },
4264
5.80k
    { 0xDEB0, 697 },
4265
5.80k
    { 0xDEB1, 698 },
4266
5.80k
    { 0xDEB2, 699 },
4267
5.80k
    { 0xDEB3, 700 },
4268
5.80k
    { 0xDEE0, 703 },
4269
5.80k
    { 0xDEE1, 704 },
4270
5.80k
    { 0xDEE2, 705 },
4271
5.80k
    { 0xDEE3, 706 },
4272
5.80k
    { 0xDEE4, 707 },
4273
5.80k
    { 0xDEE5, 708 },
4274
5.80k
    { 0xDEE6, 709 },
4275
5.80k
    { 0xDEE7, 710 },
4276
5.80k
    { 0xDEE8, 711 },
4277
5.80k
    { 0xDEE9, 712 },
4278
5.80k
    { 0xDEEA, 713 },
4279
5.80k
    { 0xDEEB, 714 },
4280
5.80k
    { 0xDEEC, 715 },
4281
5.80k
    { 0xDEED, 716 },
4282
5.80k
    { 0xDEEE, 717 },
4283
5.80k
    { 0xDEEF, 718 },
4284
5.80k
    { 0xDEF0, 719 },
4285
5.80k
    { 0xDEF1, 720 },
4286
5.80k
    { 0xDEF2, 721 },
4287
5.80k
    { 0xDEF3, 722 },
4288
5.80k
    { 0xDEF4, 723 },
4289
5.80k
    { 0xDEF5, 724 },
4290
5.80k
    { 0xDEF6, 725 },
4291
5.80k
    { 0xDEF7, 726 },
4292
5.80k
    { 0xDEF8, 727 },
4293
5.80k
    { 0xDEF9, 728 },
4294
5.80k
    { 0xDEFA, 729 },
4295
5.80k
    { 0xDEFB, 730 },
4296
5.80k
    { 0xDEFC, 731 },
4297
5.80k
    { 0xDEFD, 732 },
4298
5.80k
    { 0xDEFE, 733 },
4299
5.80k
    { 0xDEFF, 734 },
4300
5.80k
    { 0xDF00, 292 },
4301
5.80k
    { 0xDF01, 50 },
4302
5.80k
    { 0xDF02, 51 },
4303
5.80k
    { 0xDF10, 296 },
4304
5.80k
    { 0xDF11, 299 },
4305
5.80k
    { 0xDF12, 302 },
4306
5.80k
    { 0xDF18, 305 },
4307
5.80k
    { 0xDF19, 306 },
4308
5.80k
    { 0xDF1A, 307 },
4309
5.80k
    { 0xDF40, 308 },
4310
5.80k
    { 0xDF41, 309 },
4311
5.80k
    { 0xDF42, 310 },
4312
5.80k
    { 0xDF43, 311 },
4313
5.80k
    { 0xDF44, 312 },
4314
5.80k
    { 0xDF45, 313 },
4315
5.80k
    { 0xDF46, 314 },
4316
5.80k
    { 0xDF47, 315 },
4317
5.80k
    { 0xDF48, 316 },
4318
5.80k
    { 0xDF49, 317 },
4319
5.80k
    { 0xDF4A, 318 },
4320
5.80k
    { 0xDF4B, 319 },
4321
5.80k
    { 0xDF4C, 320 },
4322
5.80k
    { 0xDF4D, 321 },
4323
5.80k
    { 0xDF4E, 322 },
4324
5.80k
    { 0xDF4F, 323 },
4325
5.80k
    { 0xDF50, 324 },
4326
5.80k
    { 0xDF51, 325 },
4327
5.80k
    { 0xDF52, 326 },
4328
5.80k
    { 0xDF53, 327 },
4329
5.80k
    { 0xDF54, 328 },
4330
5.80k
    { 0xDF55, 329 },
4331
5.80k
    { 0xDF56, 330 },
4332
5.80k
    { 0xDF57, 331 },
4333
5.80k
    { 0xDF58, 332 },
4334
5.80k
    { 0xDF59, 333 },
4335
5.80k
    { 0xDF5A, 334 },
4336
5.80k
    { 0xDF5B, 335 },
4337
5.80k
    { 0xDF5C, 336 },
4338
5.80k
    { 0xDF5D, 337 },
4339
5.80k
    { 0xDF5E, 338 },
4340
5.80k
    { 0xDF60, 340 },
4341
5.80k
    { 0xDF61, 341 },
4342
5.80k
    { 0xDF62, 342 },
4343
5.80k
    { 0xDF63, 343 },
4344
5.80k
    { 0xDF64, 344 },
4345
5.80k
    { 0xDF65, 345 },
4346
5.80k
    { 0xDF66, 346 },
4347
5.80k
    { 0xDF67, 347 },
4348
5.80k
    { 0xDF68, 348 },
4349
5.80k
    { 0xDF69, 349 },
4350
5.80k
    { 0xDF6A, 350 },
4351
5.80k
    { 0xDF6B, 351 },
4352
5.80k
    { 0xDF6C, 352 },
4353
5.80k
    { 0xDF6D, 353 },
4354
5.80k
    { 0xDF6E, 354 },
4355
5.80k
    { 0xDF6F, 355 },
4356
5.80k
    { 0xDF70, 356 },
4357
5.80k
    { 0xDF71, 357 },
4358
5.80k
    { 0xDF72, 358 },
4359
5.80k
    { 0xDF73, 359 },
4360
5.80k
    { 0xDF74, 360 },
4361
5.80k
    { 0xDF75, 361 },
4362
5.80k
    { 0xDF76, 362 },
4363
5.80k
    { 0xDF77, 363 },
4364
5.80k
    { 0xDF78, 364 },
4365
5.80k
    { 0xDF79, 365 },
4366
5.80k
    { 0xDF7A, 366 },
4367
5.80k
    { 0xDF7B, 367 },
4368
5.80k
    { 0xDF7C, 368 },
4369
5.80k
    { 0xDF7D, 369 },
4370
5.80k
    { 0xDF7E, 370 },
4371
5.80k
    { 0xDF7F, 339 },
4372
5.80k
    { 0xE000, 197 },
4373
5.80k
    { 0xE005, 198 },
4374
5.80k
    { 0xE080, 201 },
4375
5.80k
    { 0xE081, 204 },
4376
5.80k
    { 0xE088, 206 },
4377
5.80k
    { 0xE089, 208 },
4378
5.80k
    { 0xE08A, 210 },
4379
5.80k
    { 0xE08B, 212 },
4380
5.80k
    { 0xE08F, 213 },
4381
5.80k
    { 0xE090, 741 },
4382
5.80k
    { 0xE091, 736 },
4383
5.80k
    { 0xE099, 664 },
4384
5.80k
    { 0xE100, 216 },
4385
5.80k
    { 0xE101, 596 },
4386
5.80k
    { 0xE102, 220 },
4387
5.80k
    { 0xE108, 222 },
4388
5.80k
    { 0xE10A, 223 },
4389
5.80k
    { 0xE110, 739 },
4390
5.80k
    { 0xE130, 657 },
4391
5.80k
    { 0xE132, 656 },
4392
5.80k
    { 0xE180, 224 },
4393
5.80k
    { 0xE200, 226 },
4394
5.80k
    { 0xE201, 229 },
4395
5.80k
    { 0xE208, 232 },
4396
5.80k
    { 0xE218, 238 },
4397
5.80k
    { 0xE219, 239 },
4398
5.80k
    { 0xE21A, 240 },
4399
5.80k
    { 0xE21B, 241 },
4400
5.80k
    { 0xE281, 246 },
4401
5.80k
    { 0xE288, 248 },
4402
5.80k
    { 0xE289, 251 },
4403
5.80k
    { 0xE290, 254 },
4404
5.80k
    { 0xE293, 645 },
4405
5.80k
    { 0xE298, 256 },
4406
5.80k
    { 0xE300, 258 },
4407
5.80k
    { 0xE304, 260 },
4408
5.80k
    { 0xE328, 749 },
4409
5.80k
    { 0xE4C8, 628 },
4410
5.80k
    { 0xE510, 275 },
4411
5.80k
    { 0xE518, 278 },
4412
5.80k
    { 0xE520, 676 },
4413
5.80k
    { 0xE521, 677 },
4414
5.80k
    { 0xE528, 673 },
4415
5.80k
    { 0xE530, 678 },
4416
5.80k
    { 0xE531, 679 },
4417
5.80k
    { 0xE532, 680 },
4418
5.80k
    { 0xE533, 681 },
4419
5.80k
    { 0xE534, 682 },
4420
5.80k
    { 0xE535, 683 },
4421
5.80k
    { 0xE536, 684 },
4422
5.80k
    { 0xE537, 685 },
4423
5.80k
    { 0xE600, 281 },
4424
5.80k
    { 0xE601, 47 },
4425
5.80k
    { 0xE602, 284 },
4426
5.80k
    { 0xE609, 644 },
4427
5.80k
    { 0xE640, 563 },
4428
5.80k
    { 0xE641, 564 },
4429
5.80k
    { 0xE642, 565 },
4430
5.80k
    { 0xE643, 566 },
4431
5.80k
    { 0xE648, 567 },
4432
5.80k
    { 0xE649, 568 },
4433
5.80k
    { 0xE64A, 569 },
4434
5.80k
    { 0xE64B, 570 },
4435
5.80k
    { 0xE64C, 574 },
4436
5.80k
    { 0xE64D, 549 },
4437
5.80k
    { 0xE658, 571 },
4438
5.80k
    { 0xE659, 94 },
4439
5.80k
    { 0xE65A, 572 },
4440
5.80k
    { 0xE65B, 95 },
4441
5.80k
    { 0xE65D, 96 },
4442
5.80k
    { 0xE65F, 573 },
4443
5.80k
    { 0xE660, 575 },
4444
5.80k
    { 0xE661, 576 },
4445
5.80k
    { 0xE662, 577 },
4446
5.80k
    { 0xE663, 578 },
4447
5.80k
    { 0xE664, 579 },
4448
5.80k
    { 0xE665, 580 },
4449
5.80k
    { 0xE666, 581 },
4450
5.80k
    { 0xE667, 582 },
4451
5.80k
    { 0xE668, 583 },
4452
5.80k
    { 0xE669, 584 },
4453
5.80k
    { 0xE66A, 585 },
4454
5.80k
    { 0xE66B, 586 },
4455
5.80k
    { 0xE66C, 587 },
4456
5.80k
    { 0xE66D, 588 },
4457
5.80k
    { 0xE66E, 589 },
4458
5.80k
    { 0xE66F, 590 },
4459
5.80k
    { 0xE681, 597 },
4460
5.80k
    { 0xE682, 288 },
4461
5.80k
    { 0xE687, 105 },
4462
5.80k
    { 0xE703, 293 },
4463
5.80k
    { 0xE708, 295 },
4464
5.80k
    { 0xE710, 297 },
4465
5.80k
    { 0xE711, 300 },
4466
5.80k
    { 0xE712, 303 },
4467
5.80k
    { 0xE718, 598 },
4468
5.80k
    { 0xE719, 600 },
4469
5.80k
    { 0xE71A, 599 },
4470
5.80k
    { 0xE720, 658 },
4471
5.80k
    { 0xE721, 660 },
4472
5.80k
    { 0xE722, 659 },
4473
5.80k
    { 0xE728, 661 },
4474
5.80k
    { 0xE729, 663 },
4475
5.80k
    { 0xE72A, 662 },
4476
5.80k
    { 0xE880, 601 },
4477
5.80k
    { 0xE882, 602 },
4478
5.80k
    { 0xE890, 743 },
4479
5.80k
    { 0xE891, 737 },
4480
5.80k
    { 0xE900, 603 },
4481
5.80k
    { 0xE901, 604 },
4482
5.80k
    { 0xE902, 605 },
4483
5.80k
    { 0xEA00, 621 },
4484
5.80k
    { 0xEA01, 622 },
4485
5.80k
    { 0xEA88, 606 },
4486
5.80k
    { 0xEA89, 607 },
4487
5.80k
    { 0xEA90, 608 },
4488
5.80k
    { 0xEB00, 609 },
4489
5.80k
    { 0xEB30, 751 },
4490
5.80k
    { 0xECC8, 629 },
4491
5.80k
    { 0xED10, 610 },
4492
5.80k
    { 0xED18, 611 },
4493
5.80k
    { 0xED28, 675 },
4494
5.80k
    { 0xEE00, 612 },
4495
5.80k
    { 0xEE81, 613 },
4496
5.80k
    { 0xEE87, 107 },
4497
5.80k
    { 0xEF08, 614 },
4498
5.80k
    { 0xEF10, 615 },
4499
5.80k
    { 0xEF11, 616 },
4500
5.80k
    { 0xEF12, 617 },
4501
5.80k
    { 0xEF18, 618 },
4502
5.80k
    { 0xEF19, 619 },
4503
5.80k
    { 0xEF1A, 620 },
4504
5.80k
    { 0xF080, 202 },
4505
5.80k
    { 0xF081, 205 },
4506
5.80k
    { 0xF088, 207 },
4507
5.80k
    { 0xF089, 209 },
4508
5.80k
    { 0xF08A, 211 },
4509
5.80k
    { 0xF090, 742 },
4510
5.80k
    { 0xF099, 214 },
4511
5.80k
    { 0xF100, 217 },
4512
5.80k
    { 0xF102, 221 },
4513
5.80k
    { 0xF200, 227 },
4514
5.80k
    { 0xF201, 230 },
4515
5.80k
    { 0xF208, 233 },
4516
5.80k
    { 0xF288, 249 },
4517
5.80k
    { 0xF289, 252 },
4518
5.80k
    { 0xF290, 255 },
4519
5.80k
    { 0xF300, 259 },
4520
5.80k
    { 0xF330, 750 },
4521
5.80k
    { 0xF510, 276 },
4522
5.80k
    { 0xF518, 279 },
4523
5.80k
    { 0xF528, 674 },
4524
5.80k
    { 0xF600, 282 },
4525
5.80k
    { 0xF601, 48 },
4526
5.80k
    { 0xF602, 285 },
4527
5.80k
    { 0xF664, 547 },
4528
5.80k
    { 0xF665, 550 },
4529
5.80k
    { 0xF667, 553 },
4530
5.80k
    { 0xF682, 289 },
4531
5.80k
    { 0xF687, 106 },
4532
5.80k
    { 0xFF10, 298 },
4533
5.80k
    { 0xFF11, 301 },
4534
5.80k
    { 0xFF12, 304 },
4535
5.80k
    { 0xFF90, 753 },
4536
5.80k
  };
4537
5.80k
4538
5.80k
  struct KeyType {
4539
5.80k
    uint16_t Encoding;
4540
5.80k
  };
4541
5.80k
  KeyType Key = { Encoding };
4542
5.80k
  auto Table = makeArrayRef(Index);
4543
5.80k
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
4544
55.9k
    [](const IndexType &LHS, const KeyType &RHS) {
4545
55.9k
      if (LHS.Encoding < RHS.Encoding)
4546
26.4k
        return true;
4547
29.5k
      if (LHS.Encoding > RHS.Encoding)
4548
23.7k
        return false;
4549
5.74k
      return false;
4550
5.74k
    });
4551
5.80k
4552
5.80k
  if (Idx == Table.end() ||
4553
5.80k
      Key.Encoding != Idx->Encoding)
4554
58
    return nullptr;
4555
5.74k
  return &SysRegsList[Idx->_index];
4556
5.74k
}
4557
#endif
4558
4559
#ifdef GET_TLBI_DECL
4560
const TLBI *lookupTLBIByName(StringRef Name);
4561
const TLBI *lookupTLBIByEncoding(uint16_t Encoding);
4562
#endif
4563
4564
#ifdef GET_TLBI_IMPL
4565
const TLBI TLBIsList[] = {
4566
  { "IPAS2E1IS", 0x2401, true,  {}  }, // 0
4567
  { "IPAS2LE1IS", 0x2405, true,  {}  }, // 1
4568
  { "VMALLE1IS", 0x418, false,  {}  }, // 2
4569
  { "ALLE2IS", 0x2418, false,  {}  }, // 3
4570
  { "ALLE3IS", 0x3418, false,  {}  }, // 4
4571
  { "VAE1IS", 0x419, true,  {}  }, // 5
4572
  { "VAE2IS", 0x2419, true,  {}  }, // 6
4573
  { "VAE3IS", 0x3419, true,  {}  }, // 7
4574
  { "ASIDE1IS", 0x41A, true,  {}  }, // 8
4575
  { "VAAE1IS", 0x41B, true,  {}  }, // 9
4576
  { "ALLE1IS", 0x241C, false,  {}  }, // 10
4577
  { "VALE1IS", 0x41D, true,  {}  }, // 11
4578
  { "VALE2IS", 0x241D, true,  {}  }, // 12
4579
  { "VALE3IS", 0x341D, true,  {}  }, // 13
4580
  { "VMALLS12E1IS", 0x241E, false,  {}  }, // 14
4581
  { "VAALE1IS", 0x41F, true,  {}  }, // 15
4582
  { "IPAS2E1", 0x2421, true,  {}  }, // 16
4583
  { "IPAS2LE1", 0x2425, true,  {}  }, // 17
4584
  { "VMALLE1", 0x438, false,  {}  }, // 18
4585
  { "ALLE2", 0x2438, false,  {}  }, // 19
4586
  { "ALLE3", 0x3438, false,  {}  }, // 20
4587
  { "VAE1", 0x439, true,  {}  }, // 21
4588
  { "VAE2", 0x2439, true,  {}  }, // 22
4589
  { "VAE3", 0x3439, true,  {}  }, // 23
4590
  { "ASIDE1", 0x43A, true,  {}  }, // 24
4591
  { "VAAE1", 0x43B, true,  {}  }, // 25
4592
  { "ALLE1", 0x243C, false,  {}  }, // 26
4593
  { "VALE1", 0x43D, true,  {}  }, // 27
4594
  { "VALE2", 0x243D, true,  {}  }, // 28
4595
  { "VALE3", 0x343D, true,  {}  }, // 29
4596
  { "VMALLS12E1", 0x243E, false,  {}  }, // 30
4597
  { "VAALE1", 0x43F, true,  {}  }, // 31
4598
  { "VMALLE1OS", 0x408, false,  {AArch64::HasV8_4aOps}  }, // 32
4599
  { "VAE1OS", 0x409, true,  {AArch64::HasV8_4aOps}  }, // 33
4600
  { "ASIDE1OS", 0x40A, true,  {AArch64::HasV8_4aOps}  }, // 34
4601
  { "VAAE1OS", 0x40B, true,  {AArch64::HasV8_4aOps}  }, // 35
4602
  { "VALE1OS", 0x40D, true,  {AArch64::HasV8_4aOps}  }, // 36
4603
  { "VAALE1OS", 0x40F, true,  {AArch64::HasV8_4aOps}  }, // 37
4604
  { "IPAS2E1OS", 0x2420, true,  {AArch64::HasV8_4aOps}  }, // 38
4605
  { "IPAS2LE1OS", 0x2424, true,  {AArch64::HasV8_4aOps}  }, // 39
4606
  { "VAE2OS", 0x2409, true,  {AArch64::HasV8_4aOps}  }, // 40
4607
  { "VALE2OS", 0x240D, true,  {AArch64::HasV8_4aOps}  }, // 41
4608
  { "VMALLS12E1OS", 0x240E, false,  {AArch64::HasV8_4aOps}  }, // 42
4609
  { "VAE3OS", 0x3409, true,  {AArch64::HasV8_4aOps}  }, // 43
4610
  { "VALE3OS", 0x340D, true,  {AArch64::HasV8_4aOps}  }, // 44
4611
  { "ALLE2OS", 0x2408, false,  {AArch64::HasV8_4aOps}  }, // 45
4612
  { "ALLE1OS", 0x240C, false,  {AArch64::HasV8_4aOps}  }, // 46
4613
  { "ALLE3OS", 0x3408, false,  {AArch64::HasV8_4aOps}  }, // 47
4614
  { "RVAE1", 0x431, true,  {AArch64::HasV8_4aOps}  }, // 48
4615
  { "RVAAE1", 0x433, true,  {AArch64::HasV8_4aOps}  }, // 49
4616
  { "RVALE1", 0x435, true,  {AArch64::HasV8_4aOps}  }, // 50
4617
  { "RVAALE1", 0x437, true,  {AArch64::HasV8_4aOps}  }, // 51
4618
  { "RVAE1IS", 0x411, true,  {AArch64::HasV8_4aOps}  }, // 52
4619
  { "RVAAE1IS", 0x413, true,  {AArch64::HasV8_4aOps}  }, // 53
4620
  { "RVALE1IS", 0x415, true,  {AArch64::HasV8_4aOps}  }, // 54
4621
  { "RVAALE1IS", 0x417, true,  {AArch64::HasV8_4aOps}  }, // 55
4622
  { "RVAE1OS", 0x429, true,  {AArch64::HasV8_4aOps}  }, // 56
4623
  { "RVAAE1OS", 0x42B, true,  {AArch64::HasV8_4aOps}  }, // 57
4624
  { "RVALE1OS", 0x42D, true,  {AArch64::HasV8_4aOps}  }, // 58
4625
  { "RVAALE1OS", 0x42F, true,  {AArch64::HasV8_4aOps}  }, // 59
4626
  { "RIPAS2E1IS", 0x2402, true,  {AArch64::HasV8_4aOps}  }, // 60
4627
  { "RIPAS2LE1IS", 0x2406, true,  {AArch64::HasV8_4aOps}  }, // 61
4628
  { "RIPAS2E1", 0x2422, true,  {AArch64::HasV8_4aOps}  }, // 62
4629
  { "RIPAS2LE1", 0x2426, true,  {AArch64::HasV8_4aOps}  }, // 63
4630
  { "RIPAS2E1OS", 0x2423, true,  {AArch64::HasV8_4aOps}  }, // 64
4631
  { "RIPAS2LE1OS", 0x2427, true,  {AArch64::HasV8_4aOps}  }, // 65
4632
  { "RVAE2", 0x2431, true,  {AArch64::HasV8_4aOps}  }, // 66
4633
  { "RVALE2", 0x2435, true,  {AArch64::HasV8_4aOps}  }, // 67
4634
  { "RVAE2IS", 0x2411, true,  {AArch64::HasV8_4aOps}  }, // 68
4635
  { "RVALE2IS", 0x2415, true,  {AArch64::HasV8_4aOps}  }, // 69
4636
  { "RVAE2OS", 0x2429, true,  {AArch64::HasV8_4aOps}  }, // 70
4637
  { "RVALE2OS", 0x242D, true,  {AArch64::HasV8_4aOps}  }, // 71
4638
  { "RVAE3", 0x3431, true,  {AArch64::HasV8_4aOps}  }, // 72
4639
  { "RVALE3", 0x3435, true,  {AArch64::HasV8_4aOps}  }, // 73
4640
  { "RVAE3IS", 0x3411, true,  {AArch64::HasV8_4aOps}  }, // 74
4641
  { "RVALE3IS", 0x3415, true,  {AArch64::HasV8_4aOps}  }, // 75
4642
  { "RVAE3OS", 0x3429, true,  {AArch64::HasV8_4aOps}  }, // 76
4643
  { "RVALE3OS", 0x342D, true,  {AArch64::HasV8_4aOps}  }, // 77
4644
 };
4645
4646
221
const TLBI *lookupTLBIByName(StringRef Name) {
4647
221
  struct IndexType {
4648
221
    const char * Name;
4649
221
    unsigned _index;
4650
221
  };
4651
221
  static const struct IndexType Index[] = {
4652
221
    { "ALLE1", 26 },
4653
221
    { "ALLE1IS", 10 },
4654
221
    { "ALLE1OS", 46 },
4655
221
    { "ALLE2", 19 },
4656
221
    { "ALLE2IS", 3 },
4657
221
    { "ALLE2OS", 45 },
4658
221
    { "ALLE3", 20 },
4659
221
    { "ALLE3IS", 4 },
4660
221
    { "ALLE3OS", 47 },
4661
221
    { "ASIDE1", 24 },
4662
221
    { "ASIDE1IS", 8 },
4663
221
    { "ASIDE1OS", 34 },
4664
221
    { "IPAS2E1", 16 },
4665
221
    { "IPAS2E1IS", 0 },
4666
221
    { "IPAS2E1OS", 38 },
4667
221
    { "IPAS2LE1", 17 },
4668
221
    { "IPAS2LE1IS", 1 },
4669
221
    { "IPAS2LE1OS", 39 },
4670
221
    { "RIPAS2E1", 62 },
4671
221
    { "RIPAS2E1IS", 60 },
4672
221
    { "RIPAS2E1OS", 64 },
4673
221
    { "RIPAS2LE1", 63 },
4674
221
    { "RIPAS2LE1IS", 61 },
4675
221
    { "RIPAS2LE1OS", 65 },
4676
221
    { "RVAAE1", 49 },
4677
221
    { "RVAAE1IS", 53 },
4678
221
    { "RVAAE1OS", 57 },
4679
221
    { "RVAALE1", 51 },
4680
221
    { "RVAALE1IS", 55 },
4681
221
    { "RVAALE1OS", 59 },
4682
221
    { "RVAE1", 48 },
4683
221
    { "RVAE1IS", 52 },
4684
221
    { "RVAE1OS", 56 },
4685
221
    { "RVAE2", 66 },
4686
221
    { "RVAE2IS", 68 },
4687
221
    { "RVAE2OS", 70 },
4688
221
    { "RVAE3", 72 },
4689
221
    { "RVAE3IS", 74 },
4690
221
    { "RVAE3OS", 76 },
4691
221
    { "RVALE1", 50 },
4692
221
    { "RVALE1IS", 54 },
4693
221
    { "RVALE1OS", 58 },
4694
221
    { "RVALE2", 67 },
4695
221
    { "RVALE2IS", 69 },
4696
221
    { "RVALE2OS", 71 },
4697
221
    { "RVALE3", 73 },
4698
221
    { "RVALE3IS", 75 },
4699
221
    { "RVALE3OS", 77 },
4700
221
    { "VAAE1", 25 },
4701
221
    { "VAAE1IS", 9 },
4702
221
    { "VAAE1OS", 35 },
4703
221
    { "VAALE1", 31 },
4704
221
    { "VAALE1IS", 15 },
4705
221
    { "VAALE1OS", 37 },
4706
221
    { "VAE1", 21 },
4707
221
    { "VAE1IS", 5 },
4708
221
    { "VAE1OS", 33 },
4709
221
    { "VAE2", 22 },
4710
221
    { "VAE2IS", 6 },
4711
221
    { "VAE2OS", 40 },
4712
221
    { "VAE3", 23 },
4713
221
    { "VAE3IS", 7 },
4714
221
    { "VAE3OS", 43 },
4715
221
    { "VALE1", 27 },
4716
221
    { "VALE1IS", 11 },
4717
221
    { "VALE1OS", 36 },
4718
221
    { "VALE2", 28 },
4719
221
    { "VALE2IS", 12 },
4720
221
    { "VALE2OS", 41 },
4721
221
    { "VALE3", 29 },
4722
221
    { "VALE3IS", 13 },
4723
221
    { "VALE3OS", 44 },
4724
221
    { "VMALLE1", 18 },
4725
221
    { "VMALLE1IS", 2 },
4726
221
    { "VMALLE1OS", 32 },
4727
221
    { "VMALLS12E1", 30 },
4728
221
    { "VMALLS12E1IS", 14 },
4729
221
    { "VMALLS12E1OS", 42 },
4730
221
  };
4731
221
4732
221
  struct KeyType {
4733
221
    std::string Name;
4734
221
  };
4735
221
  KeyType Key = { Name.upper() };
4736
221
  auto Table = makeArrayRef(Index);
4737
221
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
4738
1.41k
    [](const IndexType &LHS, const KeyType &RHS) {
4739
1.41k
      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
4740
1.41k
      if (CmpName < 0) 
return true651
;
4741
762
      if (CmpName > 0) 
return false541
;
4742
221
      return false;
4743
221
    });
4744
221
4745
221
  if (Idx == Table.end() ||
4746
221
      Key.Name != Idx->Name)
4747
0
    return nullptr;
4748
221
  return &TLBIsList[Idx->_index];
4749
221
}
4750
4751
236
const TLBI *lookupTLBIByEncoding(uint16_t Encoding) {
4752
236
  struct IndexType {
4753
236
    uint16_t Encoding;
4754
236
    unsigned _index;
4755
236
  };
4756
236
  static const struct IndexType Index[] = {
4757
236
    { 0x408, 32 },
4758
236
    { 0x409, 33 },
4759
236
    { 0x40A, 34 },
4760
236
    { 0x40B, 35 },
4761
236
    { 0x40D, 36 },
4762
236
    { 0x40F, 37 },
4763
236
    { 0x411, 52 },
4764
236
    { 0x413, 53 },
4765
236
    { 0x415, 54 },
4766
236
    { 0x417, 55 },
4767
236
    { 0x418, 2 },
4768
236
    { 0x419, 5 },
4769
236
    { 0x41A, 8 },
4770
236
    { 0x41B, 9 },
4771
236
    { 0x41D, 11 },
4772
236
    { 0x41F, 15 },
4773
236
    { 0x429, 56 },
4774
236
    { 0x42B, 57 },
4775
236
    { 0x42D, 58 },
4776
236
    { 0x42F, 59 },
4777
236
    { 0x431, 48 },
4778
236
    { 0x433, 49 },
4779
236
    { 0x435, 50 },
4780
236
    { 0x437, 51 },
4781
236
    { 0x438, 18 },
4782
236
    { 0x439, 21 },
4783
236
    { 0x43A, 24 },
4784
236
    { 0x43B, 25 },
4785
236
    { 0x43D, 27 },
4786
236
    { 0x43F, 31 },
4787
236
    { 0x2401, 0 },
4788
236
    { 0x2402, 60 },
4789
236
    { 0x2405, 1 },
4790
236
    { 0x2406, 61 },
4791
236
    { 0x2408, 45 },
4792
236
    { 0x2409, 40 },
4793
236
    { 0x240C, 46 },
4794
236
    { 0x240D, 41 },
4795
236
    { 0x240E, 42 },
4796
236
    { 0x2411, 68 },
4797
236
    { 0x2415, 69 },
4798
236
    { 0x2418, 3 },
4799
236
    { 0x2419, 6 },
4800
236
    { 0x241C, 10 },
4801
236
    { 0x241D, 12 },
4802
236
    { 0x241E, 14 },
4803
236
    { 0x2420, 38 },
4804
236
    { 0x2421, 16 },
4805
236
    { 0x2422, 62 },
4806
236
    { 0x2423, 64 },
4807
236
    { 0x2424, 39 },
4808
236
    { 0x2425, 17 },
4809
236
    { 0x2426, 63 },
4810
236
    { 0x2427, 65 },
4811
236
    { 0x2429, 70 },
4812
236
    { 0x242D, 71 },
4813
236
    { 0x2431, 66 },
4814
236
    { 0x2435, 67 },
4815
236
    { 0x2438, 19 },
4816
236
    { 0x2439, 22 },
4817
236
    { 0x243C, 26 },
4818
236
    { 0x243D, 28 },
4819
236
    { 0x243E, 30 },
4820
236
    { 0x3408, 47 },
4821
236
    { 0x3409, 43 },
4822
236
    { 0x340D, 44 },
4823
236
    { 0x3411, 74 },
4824
236
    { 0x3415, 75 },
4825
236
    { 0x3418, 4 },
4826
236
    { 0x3419, 7 },
4827
236
    { 0x341D, 13 },
4828
236
    { 0x3429, 76 },
4829
236
    { 0x342D, 77 },
4830
236
    { 0x3431, 72 },
4831
236
    { 0x3435, 73 },
4832
236
    { 0x3438, 20 },
4833
236
    { 0x3439, 23 },
4834
236
    { 0x343D, 29 },
4835
236
  };
4836
236
4837
236
  struct KeyType {
4838
236
    uint16_t Encoding;
4839
236
  };
4840
236
  KeyType Key = { Encoding };
4841
236
  auto Table = makeArrayRef(Index);
4842
236
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
4843
1.50k
    [](const IndexType &LHS, const KeyType &RHS) {
4844
1.50k
      if (LHS.Encoding < RHS.Encoding)
4845
692
        return true;
4846
815
      if (LHS.Encoding > RHS.Encoding)
4847
579
        return false;
4848
236
      return false;
4849
236
    });
4850
236
4851
236
  if (Idx == Table.end() ||
4852
236
      Key.Encoding != Idx->Encoding)
4853
0
    return nullptr;
4854
236
  return &TLBIsList[Idx->_index];
4855
236
}
4856
#endif
4857
4858
#ifdef GET_TSB_DECL
4859
const TSB *lookupTSBByName(StringRef Name);
4860
const TSB *lookupTSBByEncoding(uint8_t Encoding);
4861
#endif
4862
4863
#ifdef GET_TSB_IMPL
4864
const TSB TSBsList[] = {
4865
  { "csync", 0x0,  {AArch64::HasV8_4aOps}  }, // 0
4866
 };
4867
4868
37
const TSB *lookupTSBByName(StringRef Name) {
4869
37
  struct IndexType {
4870
37
    const char * Name;
4871
37
    unsigned _index;
4872
37
  };
4873
37
  static const struct IndexType Index[] = {
4874
37
    { "CSYNC", 0 },
4875
37
  };
4876
37
4877
37
  struct KeyType {
4878
37
    std::string Name;
4879
37
  };
4880
37
  KeyType Key = { Name.upper() };
4881
37
  auto Table = makeArrayRef(Index);
4882
37
  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
4883
37
    [](const IndexType &LHS, const KeyType &RHS) {
4884
37
      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
4885
37
      if (CmpName < 0) 
return true35
;
4886
2
      if (CmpName > 0) 
return false0
;
4887
2
      return false;
4888
2
    });
4889
37
4890
37
  if (Idx == Table.end() ||
4891
37
      
Key.Name != Idx->Name2
)
4892
35
    return nullptr;
4893
2
  return &TSBsList[Idx->_index];
4894
2
}
4895
4896
0
const TSB *lookupTSBByEncoding(uint8_t Encoding) {
4897
0
  struct IndexType {
4898
0
    uint8_t Encoding;
4899
0
    unsigned _index;
4900
0
  };
4901
0
  static const struct IndexType Index[] = {
4902
0
    { 0x0, 0 },
4903
0
  };
4904
0
4905
0
  auto Table = makeArrayRef(Index);
4906
0
  size_t Idx = Encoding;
4907
0
  return Idx >= Table.size() ? nullptr : &TSBsList[Table[Idx]._index];
4908
0
}
4909
#endif
4910
4911
#undef GET_AT_DECL
4912
#undef GET_AT_IMPL
4913
#undef GET_BTI_DECL
4914
#undef GET_BTI_IMPL
4915
#undef GET_DB_DECL
4916
#undef GET_DB_IMPL
4917
#undef GET_DC_DECL
4918
#undef GET_DC_IMPL
4919
#undef GET_EXACTFPIMM_DECL
4920
#undef GET_EXACTFPIMM_IMPL
4921
#undef GET_IC_DECL
4922
#undef GET_IC_IMPL
4923
#undef GET_ISB_DECL
4924
#undef GET_ISB_IMPL
4925
#undef GET_PRCTX_DECL
4926
#undef GET_PRCTX_IMPL
4927
#undef GET_PRFM_DECL
4928
#undef GET_PRFM_IMPL
4929
#undef GET_PSB_DECL
4930
#undef GET_PSB_IMPL
4931
#undef GET_PSTATE_DECL
4932
#undef GET_PSTATE_IMPL
4933
#undef GET_SVEPREDPAT_DECL
4934
#undef GET_SVEPREDPAT_IMPL
4935
#undef GET_SVEPRFM_DECL
4936
#undef GET_SVEPRFM_IMPL
4937
#undef GET_SYSREG_DECL
4938
#undef GET_SYSREG_IMPL
4939
#undef GET_TLBI_DECL
4940
#undef GET_TLBI_IMPL
4941
#undef GET_TSB_DECL
4942
#undef GET_TSB_IMPL