• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#ifdef GET_AT_DECL
2enum 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
21enum BTIValues {
22  c = 2,
23  j = 4,
24  jc = 6,
25};
26#endif
27
28#ifdef GET_DB_DECL
29enum 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_DBNXS_DECL
46enum DBnXSValues {
47  oshnxs = 3,
48  nshnxs = 7,
49  ishnxs = 11,
50  synxs = 15,
51};
52#endif
53
54#ifdef GET_DC_DECL
55enum DCValues {
56  ZVA = 7073,
57  IVAC = 945,
58  ISW = 946,
59  CVAC = 7121,
60  CSW = 978,
61  CVAU = 7129,
62  CIVAC = 7153,
63  CISW = 1010,
64  CVAP = 7137,
65  CVADP = 7145,
66  IGVAC = 947,
67  IGSW = 948,
68  CGSW = 980,
69  CIGSW = 1012,
70  CGVAC = 7123,
71  CGVAP = 7139,
72  CGVADP = 7147,
73  CIGVAC = 7155,
74  GVA = 7075,
75  IGDVAC = 949,
76  IGDSW = 950,
77  CGDSW = 982,
78  CIGDSW = 1014,
79  CGDVAC = 7125,
80  CGDVAP = 7141,
81  CGDVADP = 7149,
82  CIGDVAC = 7157,
83  GZVA = 7076,
84  CIPAE = 9200,
85  CIGDPAE = 9207,
86};
87#endif
88
89#ifdef GET_EXACTFPIMM_DECL
90enum ExactFPImmValues {
91  zero = 0,
92  half = 1,
93  one = 2,
94  two = 3,
95};
96#endif
97
98#ifdef GET_IC_DECL
99enum ICValues {
100  IALLUIS = 904,
101  IALLU = 936,
102  IVAU = 7081,
103};
104#endif
105
106#ifdef GET_ISB_DECL
107enum ISBValues {
108  sy = 15,
109};
110#endif
111
112#ifdef GET_PRFM_DECL
113enum PRFMValues {
114  pldl1keep = 0,
115  pldl1strm = 1,
116  pldl2keep = 2,
117  pldl2strm = 3,
118  pldl3keep = 4,
119  pldl3strm = 5,
120  pldslckeep = 6,
121  pldslcstrm = 7,
122  plil1keep = 8,
123  plil1strm = 9,
124  plil2keep = 10,
125  plil2strm = 11,
126  plil3keep = 12,
127  plil3strm = 13,
128  plislckeep = 14,
129  plislcstrm = 15,
130  pstl1keep = 16,
131  pstl1strm = 17,
132  pstl2keep = 18,
133  pstl2strm = 19,
134  pstl3keep = 20,
135  pstl3strm = 21,
136  pstslckeep = 22,
137  pstslcstrm = 23,
138};
139#endif
140
141#ifdef GET_PSB_DECL
142enum PSBValues {
143  csync = 17,
144};
145#endif
146
147#ifdef GET_PSTATEIMM0_1_DECL
148enum PStateImm0_1Values {
149  ALLINT = 8,
150  PM = 72,
151};
152#endif
153
154#ifdef GET_PSTATEIMM0_15_DECL
155enum PStateImm0_15Values {
156  SPSel = 5,
157  DAIFSet = 30,
158  DAIFClr = 31,
159  PAN = 4,
160  UAO = 3,
161  DIT = 26,
162  SSBS = 25,
163  TCO = 28,
164};
165#endif
166
167#ifdef GET_RPRFM_DECL
168enum RPRFMValues {
169  pldkeep = 0,
170  pstkeep = 1,
171  pldstrm = 4,
172  pststrm = 5,
173};
174#endif
175
176#ifdef GET_SVCR_DECL
177enum SVCRValues {
178  SVCRSM = 1,
179  SVCRZA = 2,
180  SVCRSMZA = 3,
181};
182#endif
183
184#ifdef GET_SVEPREDPAT_DECL
185enum SVEPREDPATValues {
186  pow2 = 0,
187  vl1 = 1,
188  vl2 = 2,
189  vl3 = 3,
190  vl4 = 4,
191  vl5 = 5,
192  vl6 = 6,
193  vl7 = 7,
194  vl8 = 8,
195  vl16 = 9,
196  vl32 = 10,
197  vl64 = 11,
198  vl128 = 12,
199  vl256 = 13,
200  mul4 = 29,
201  mul3 = 30,
202  all = 31,
203};
204#endif
205
206#ifdef GET_SVEPRFM_DECL
207enum SVEPRFMValues {
208  pldl1keep = 0,
209  pldl1strm = 1,
210  pldl2keep = 2,
211  pldl2strm = 3,
212  pldl3keep = 4,
213  pldl3strm = 5,
214  pstl1keep = 8,
215  pstl1strm = 9,
216  pstl2keep = 10,
217  pstl2strm = 11,
218  pstl3keep = 12,
219  pstl3strm = 13,
220};
221#endif
222
223#ifdef GET_SVEVECLENSPECIFIER_DECL
224enum SVEVECLENSPECIFIERValues {
225  vlx2 = 0,
226  vlx4 = 1,
227};
228#endif
229
230#ifdef GET_SYSREG_DECL
231enum SysRegValues {
232  MDCCSR_EL0 = 38920,
233  DBGDTRRX_EL0 = 38952,
234  MDRAR_EL1 = 32896,
235  OSLSR_EL1 = 32908,
236  DBGAUTHSTATUS_EL1 = 33782,
237  PMCEID0_EL0 = 56550,
238  PMCEID1_EL0 = 56551,
239  PMMIR_EL1 = 50422,
240  MIDR_EL1 = 49152,
241  CCSIDR_EL1 = 51200,
242  CCSIDR2_EL1 = 51202,
243  CLIDR_EL1 = 51201,
244  CTR_EL0 = 55297,
245  MPIDR_EL1 = 49157,
246  REVIDR_EL1 = 49158,
247  AIDR_EL1 = 51207,
248  DCZID_EL0 = 55303,
249  ID_PFR0_EL1 = 49160,
250  ID_PFR1_EL1 = 49161,
251  ID_PFR2_EL1 = 49180,
252  ID_DFR0_EL1 = 49162,
253  ID_DFR1_EL1 = 49181,
254  ID_AFR0_EL1 = 49163,
255  ID_MMFR0_EL1 = 49164,
256  ID_MMFR1_EL1 = 49165,
257  ID_MMFR2_EL1 = 49166,
258  ID_MMFR3_EL1 = 49167,
259  ID_ISAR0_EL1 = 49168,
260  ID_ISAR1_EL1 = 49169,
261  ID_ISAR2_EL1 = 49170,
262  ID_ISAR3_EL1 = 49171,
263  ID_ISAR4_EL1 = 49172,
264  ID_ISAR5_EL1 = 49173,
265  ID_ISAR6_EL1 = 49175,
266  ID_AA64PFR0_EL1 = 49184,
267  ID_AA64PFR1_EL1 = 49185,
268  ID_AA64PFR2_EL1 = 49186,
269  ID_AA64DFR0_EL1 = 49192,
270  ID_AA64DFR1_EL1 = 49193,
271  ID_AA64AFR0_EL1 = 49196,
272  ID_AA64AFR1_EL1 = 49197,
273  ID_AA64ISAR0_EL1 = 49200,
274  ID_AA64ISAR1_EL1 = 49201,
275  ID_AA64ISAR2_EL1 = 49202,
276  ID_AA64MMFR0_EL1 = 49208,
277  ID_AA64MMFR1_EL1 = 49209,
278  ID_AA64MMFR2_EL1 = 49210,
279  ID_AA64MMFR3_EL1 = 49211,
280  ID_AA64MMFR4_EL1 = 49212,
281  MVFR0_EL1 = 49176,
282  MVFR1_EL1 = 49177,
283  MVFR2_EL1 = 49178,
284  RVBAR_EL1 = 50689,
285  RVBAR_EL2 = 58881,
286  RVBAR_EL3 = 62977,
287  ISR_EL1 = 50696,
288  CNTPCT_EL0 = 57089,
289  CNTVCT_EL0 = 57090,
290  ID_MMFR4_EL1 = 49174,
291  ID_MMFR5_EL1 = 49182,
292  TRCSTATR = 34840,
293  TRCIDR8 = 34822,
294  TRCIDR9 = 34830,
295  TRCIDR10 = 34838,
296  TRCIDR11 = 34846,
297  TRCIDR12 = 34854,
298  TRCIDR13 = 34862,
299  TRCIDR0 = 34887,
300  TRCIDR1 = 34895,
301  TRCIDR2 = 34903,
302  TRCIDR3 = 34911,
303  TRCIDR4 = 34919,
304  TRCIDR5 = 34927,
305  TRCIDR6 = 34935,
306  TRCIDR7 = 34943,
307  TRCOSLSR = 34956,
308  TRCPDSR = 34988,
309  TRCDEVAFF0 = 35798,
310  TRCDEVAFF1 = 35806,
311  TRCLSR = 35822,
312  TRCAUTHSTATUS = 35830,
313  TRCDEVARCH = 35838,
314  TRCDEVID = 35735,
315  TRCDEVTYPE = 35743,
316  TRCPIDR4 = 35751,
317  TRCPIDR5 = 35759,
318  TRCPIDR6 = 35767,
319  TRCPIDR7 = 35775,
320  TRCPIDR0 = 35783,
321  TRCPIDR1 = 35791,
322  TRCPIDR2 = 35799,
323  TRCPIDR3 = 35807,
324  TRCCIDR0 = 35815,
325  TRCCIDR1 = 35823,
326  TRCCIDR2 = 35831,
327  TRCCIDR3 = 35839,
328  ICC_IAR1_EL1 = 50784,
329  ICC_IAR0_EL1 = 50752,
330  ICC_HPPIR1_EL1 = 50786,
331  ICC_HPPIR0_EL1 = 50754,
332  ICC_RPR_EL1 = 50779,
333  ICH_VTR_EL2 = 58969,
334  ICH_EISR_EL2 = 58971,
335  ICH_ELRSR_EL2 = 58973,
336  ID_AA64ZFR0_EL1 = 49188,
337  LORID_EL1 = 50471,
338  ERRIDR_EL1 = 49816,
339  ERXFR_EL1 = 49824,
340  RNDR = 55584,
341  RNDRRS = 55585,
342  SCXTNUM_EL0 = 56967,
343  SCXTNUM_EL1 = 50823,
344  SCXTNUM_EL2 = 59015,
345  SCXTNUM_EL3 = 63111,
346  SCXTNUM_EL12 = 61063,
347  GPCCR_EL3 = 61710,
348  GPTBR_EL3 = 61708,
349  MFAR_EL3 = 62213,
350  MECIDR_EL2 = 58695,
351  MECID_P0_EL2 = 58688,
352  MECID_A0_EL2 = 58689,
353  MECID_P1_EL2 = 58690,
354  MECID_A1_EL2 = 58691,
355  VMECID_P_EL2 = 58696,
356  VMECID_A_EL2 = 58697,
357  MECID_RL_A_EL3 = 62801,
358  ID_AA64SMFR0_EL1 = 49189,
359  DBGDTRTX_EL0 = 38952,
360  OSLAR_EL1 = 32900,
361  PMSWINC_EL0 = 56548,
362  TRCOSLAR = 34948,
363  TRCLAR = 35814,
364  ICC_EOIR1_EL1 = 50785,
365  ICC_EOIR0_EL1 = 50753,
366  ICC_DIR_EL1 = 50777,
367  ICC_SGI1R_EL1 = 50781,
368  ICC_ASGI1R_EL1 = 50782,
369  ICC_SGI0R_EL1 = 50783,
370  OSDTRRX_EL1 = 32770,
371  OSDTRTX_EL1 = 32794,
372  TEECR32_EL1 = 36864,
373  MDCCINT_EL1 = 32784,
374  MDSCR_EL1 = 32786,
375  DBGDTR_EL0 = 38944,
376  OSECCR_EL1 = 32818,
377  DBGVCR32_EL2 = 41016,
378  DBGBVR0_EL1 = 32772,
379  DBGBCR0_EL1 = 32773,
380  DBGWVR0_EL1 = 32774,
381  DBGWCR0_EL1 = 32775,
382  DBGBVR1_EL1 = 32780,
383  DBGBCR1_EL1 = 32781,
384  DBGWVR1_EL1 = 32782,
385  DBGWCR1_EL1 = 32783,
386  DBGBVR2_EL1 = 32788,
387  DBGBCR2_EL1 = 32789,
388  DBGWVR2_EL1 = 32790,
389  DBGWCR2_EL1 = 32791,
390  DBGBVR3_EL1 = 32796,
391  DBGBCR3_EL1 = 32797,
392  DBGWVR3_EL1 = 32798,
393  DBGWCR3_EL1 = 32799,
394  DBGBVR4_EL1 = 32804,
395  DBGBCR4_EL1 = 32805,
396  DBGWVR4_EL1 = 32806,
397  DBGWCR4_EL1 = 32807,
398  DBGBVR5_EL1 = 32812,
399  DBGBCR5_EL1 = 32813,
400  DBGWVR5_EL1 = 32814,
401  DBGWCR5_EL1 = 32815,
402  DBGBVR6_EL1 = 32820,
403  DBGBCR6_EL1 = 32821,
404  DBGWVR6_EL1 = 32822,
405  DBGWCR6_EL1 = 32823,
406  DBGBVR7_EL1 = 32828,
407  DBGBCR7_EL1 = 32829,
408  DBGWVR7_EL1 = 32830,
409  DBGWCR7_EL1 = 32831,
410  DBGBVR8_EL1 = 32836,
411  DBGBCR8_EL1 = 32837,
412  DBGWVR8_EL1 = 32838,
413  DBGWCR8_EL1 = 32839,
414  DBGBVR9_EL1 = 32844,
415  DBGBCR9_EL1 = 32845,
416  DBGWVR9_EL1 = 32846,
417  DBGWCR9_EL1 = 32847,
418  DBGBVR10_EL1 = 32852,
419  DBGBCR10_EL1 = 32853,
420  DBGWVR10_EL1 = 32854,
421  DBGWCR10_EL1 = 32855,
422  DBGBVR11_EL1 = 32860,
423  DBGBCR11_EL1 = 32861,
424  DBGWVR11_EL1 = 32862,
425  DBGWCR11_EL1 = 32863,
426  DBGBVR12_EL1 = 32868,
427  DBGBCR12_EL1 = 32869,
428  DBGWVR12_EL1 = 32870,
429  DBGWCR12_EL1 = 32871,
430  DBGBVR13_EL1 = 32876,
431  DBGBCR13_EL1 = 32877,
432  DBGWVR13_EL1 = 32878,
433  DBGWCR13_EL1 = 32879,
434  DBGBVR14_EL1 = 32884,
435  DBGBCR14_EL1 = 32885,
436  DBGWVR14_EL1 = 32886,
437  DBGWCR14_EL1 = 32887,
438  DBGBVR15_EL1 = 32892,
439  DBGBCR15_EL1 = 32893,
440  DBGWVR15_EL1 = 32894,
441  DBGWCR15_EL1 = 32895,
442  TEEHBR32_EL1 = 36992,
443  OSDLR_EL1 = 32924,
444  DBGPRCR_EL1 = 32932,
445  DBGCLAIMSET_EL1 = 33734,
446  DBGCLAIMCLR_EL1 = 33742,
447  CSSELR_EL1 = 53248,
448  VPIDR_EL2 = 57344,
449  VMPIDR_EL2 = 57349,
450  CPACR_EL1 = 49282,
451  SCTLR_EL1 = 49280,
452  SCTLR_EL2 = 57472,
453  SCTLR_EL3 = 61568,
454  ACTLR_EL1 = 49281,
455  ACTLR_EL2 = 57473,
456  ACTLR_EL3 = 61569,
457  HCR_EL2 = 57480,
458  HCRX_EL2 = 57490,
459  SCR_EL3 = 61576,
460  MDCR_EL2 = 57481,
461  SDER32_EL3 = 61577,
462  CPTR_EL2 = 57482,
463  CPTR_EL3 = 61578,
464  HSTR_EL2 = 57483,
465  HACR_EL2 = 57487,
466  MDCR_EL3 = 61593,
467  TTBR0_EL1 = 49408,
468  TTBR0_EL3 = 61696,
469  TTBR0_EL2 = 57600,
470  VTTBR_EL2 = 57608,
471  TTBR1_EL1 = 49409,
472  TCR_EL1 = 49410,
473  TCR_EL2 = 57602,
474  TCR_EL3 = 61698,
475  VTCR_EL2 = 57610,
476  DACR32_EL2 = 57728,
477  SPSR_EL1 = 49664,
478  SPSR_EL2 = 57856,
479  SPSR_EL3 = 61952,
480  ELR_EL1 = 49665,
481  ELR_EL2 = 57857,
482  ELR_EL3 = 61953,
483  SP_EL0 = 49672,
484  SP_EL1 = 57864,
485  SP_EL2 = 61960,
486  SPSel = 49680,
487  NZCV = 55824,
488  DAIF = 55825,
489  CurrentEL = 49682,
490  SPSR_irq = 57880,
491  SPSR_abt = 57881,
492  SPSR_und = 57882,
493  SPSR_fiq = 57883,
494  FPCR = 55840,
495  FPSR = 55841,
496  DSPSR_EL0 = 55848,
497  DLR_EL0 = 55849,
498  IFSR32_EL2 = 57985,
499  AFSR0_EL1 = 49800,
500  AFSR0_EL2 = 57992,
501  AFSR0_EL3 = 62088,
502  AFSR1_EL1 = 49801,
503  AFSR1_EL2 = 57993,
504  AFSR1_EL3 = 62089,
505  ESR_EL1 = 49808,
506  ESR_EL2 = 58000,
507  ESR_EL3 = 62096,
508  FPEXC32_EL2 = 58008,
509  FAR_EL1 = 49920,
510  FAR_EL2 = 58112,
511  FAR_EL3 = 62208,
512  HPFAR_EL2 = 58116,
513  PAR_EL1 = 50080,
514  PMCR_EL0 = 56544,
515  PMCNTENSET_EL0 = 56545,
516  PMCNTENCLR_EL0 = 56546,
517  PMOVSCLR_EL0 = 56547,
518  PMSELR_EL0 = 56549,
519  PMCCNTR_EL0 = 56552,
520  PMXEVTYPER_EL0 = 56553,
521  PMXEVCNTR_EL0 = 56554,
522  PMUSERENR_EL0 = 56560,
523  PMINTENSET_EL1 = 50417,
524  PMINTENCLR_EL1 = 50418,
525  PMOVSSET_EL0 = 56563,
526  MAIR_EL1 = 50448,
527  MAIR_EL2 = 58640,
528  MAIR_EL3 = 62736,
529  AMAIR_EL1 = 50456,
530  AMAIR_EL2 = 58648,
531  AMAIR_EL3 = 62744,
532  VBAR_EL1 = 50688,
533  VBAR_EL2 = 58880,
534  VBAR_EL3 = 62976,
535  RMR_EL1 = 50690,
536  RMR_EL2 = 58882,
537  RMR_EL3 = 62978,
538  CONTEXTIDR_EL1 = 50817,
539  TPIDR_EL0 = 56962,
540  TPIDR_EL2 = 59010,
541  TPIDR_EL3 = 63106,
542  TPIDRRO_EL0 = 56963,
543  TPIDR_EL1 = 50820,
544  CNTFRQ_EL0 = 57088,
545  CNTVOFF_EL2 = 59139,
546  CNTKCTL_EL1 = 50952,
547  CNTHCTL_EL2 = 59144,
548  CNTP_TVAL_EL0 = 57104,
549  CNTHP_TVAL_EL2 = 59152,
550  CNTPS_TVAL_EL1 = 65296,
551  CNTP_CTL_EL0 = 57105,
552  CNTHP_CTL_EL2 = 59153,
553  CNTPS_CTL_EL1 = 65297,
554  CNTP_CVAL_EL0 = 57106,
555  CNTHP_CVAL_EL2 = 59154,
556  CNTPS_CVAL_EL1 = 65298,
557  CNTV_TVAL_EL0 = 57112,
558  CNTV_CTL_EL0 = 57113,
559  CNTV_CVAL_EL0 = 57114,
560  PMEVCNTR0_EL0 = 57152,
561  PMEVCNTR1_EL0 = 57153,
562  PMEVCNTR2_EL0 = 57154,
563  PMEVCNTR3_EL0 = 57155,
564  PMEVCNTR4_EL0 = 57156,
565  PMEVCNTR5_EL0 = 57157,
566  PMEVCNTR6_EL0 = 57158,
567  PMEVCNTR7_EL0 = 57159,
568  PMEVCNTR8_EL0 = 57160,
569  PMEVCNTR9_EL0 = 57161,
570  PMEVCNTR10_EL0 = 57162,
571  PMEVCNTR11_EL0 = 57163,
572  PMEVCNTR12_EL0 = 57164,
573  PMEVCNTR13_EL0 = 57165,
574  PMEVCNTR14_EL0 = 57166,
575  PMEVCNTR15_EL0 = 57167,
576  PMEVCNTR16_EL0 = 57168,
577  PMEVCNTR17_EL0 = 57169,
578  PMEVCNTR18_EL0 = 57170,
579  PMEVCNTR19_EL0 = 57171,
580  PMEVCNTR20_EL0 = 57172,
581  PMEVCNTR21_EL0 = 57173,
582  PMEVCNTR22_EL0 = 57174,
583  PMEVCNTR23_EL0 = 57175,
584  PMEVCNTR24_EL0 = 57176,
585  PMEVCNTR25_EL0 = 57177,
586  PMEVCNTR26_EL0 = 57178,
587  PMEVCNTR27_EL0 = 57179,
588  PMEVCNTR28_EL0 = 57180,
589  PMEVCNTR29_EL0 = 57181,
590  PMEVCNTR30_EL0 = 57182,
591  PMCCFILTR_EL0 = 57215,
592  PMEVTYPER0_EL0 = 57184,
593  PMEVTYPER1_EL0 = 57185,
594  PMEVTYPER2_EL0 = 57186,
595  PMEVTYPER3_EL0 = 57187,
596  PMEVTYPER4_EL0 = 57188,
597  PMEVTYPER5_EL0 = 57189,
598  PMEVTYPER6_EL0 = 57190,
599  PMEVTYPER7_EL0 = 57191,
600  PMEVTYPER8_EL0 = 57192,
601  PMEVTYPER9_EL0 = 57193,
602  PMEVTYPER10_EL0 = 57194,
603  PMEVTYPER11_EL0 = 57195,
604  PMEVTYPER12_EL0 = 57196,
605  PMEVTYPER13_EL0 = 57197,
606  PMEVTYPER14_EL0 = 57198,
607  PMEVTYPER15_EL0 = 57199,
608  PMEVTYPER16_EL0 = 57200,
609  PMEVTYPER17_EL0 = 57201,
610  PMEVTYPER18_EL0 = 57202,
611  PMEVTYPER19_EL0 = 57203,
612  PMEVTYPER20_EL0 = 57204,
613  PMEVTYPER21_EL0 = 57205,
614  PMEVTYPER22_EL0 = 57206,
615  PMEVTYPER23_EL0 = 57207,
616  PMEVTYPER24_EL0 = 57208,
617  PMEVTYPER25_EL0 = 57209,
618  PMEVTYPER26_EL0 = 57210,
619  PMEVTYPER27_EL0 = 57211,
620  PMEVTYPER28_EL0 = 57212,
621  PMEVTYPER29_EL0 = 57213,
622  PMEVTYPER30_EL0 = 57214,
623  TRCPRGCTLR = 34824,
624  TRCPROCSELR = 34832,
625  TRCCONFIGR = 34848,
626  TRCAUXCTLR = 34864,
627  TRCEVENTCTL0R = 34880,
628  TRCEVENTCTL1R = 34888,
629  TRCSTALLCTLR = 34904,
630  TRCTSCTLR = 34912,
631  TRCSYNCPR = 34920,
632  TRCCCCTLR = 34928,
633  TRCBBCTLR = 34936,
634  TRCTRACEIDR = 34817,
635  TRCQCTLR = 34825,
636  TRCVICTLR = 34818,
637  TRCVIIECTLR = 34826,
638  TRCVISSCTLR = 34834,
639  TRCVIPCSSCTLR = 34842,
640  TRCVDCTLR = 34882,
641  TRCVDSACCTLR = 34890,
642  TRCVDARCCTLR = 34898,
643  TRCSEQEVR0 = 34820,
644  TRCSEQEVR1 = 34828,
645  TRCSEQEVR2 = 34836,
646  TRCSEQRSTEVR = 34868,
647  TRCSEQSTR = 34876,
648  TRCEXTINSELR = 34884,
649  TRCCNTRLDVR0 = 34821,
650  TRCCNTRLDVR1 = 34829,
651  TRCCNTRLDVR2 = 34837,
652  TRCCNTRLDVR3 = 34845,
653  TRCCNTCTLR0 = 34853,
654  TRCCNTCTLR1 = 34861,
655  TRCCNTCTLR2 = 34869,
656  TRCCNTCTLR3 = 34877,
657  TRCCNTVR0 = 34885,
658  TRCCNTVR1 = 34893,
659  TRCCNTVR2 = 34901,
660  TRCCNTVR3 = 34909,
661  TRCIMSPEC0 = 34823,
662  TRCIMSPEC1 = 34831,
663  TRCIMSPEC2 = 34839,
664  TRCIMSPEC3 = 34847,
665  TRCIMSPEC4 = 34855,
666  TRCIMSPEC5 = 34863,
667  TRCIMSPEC6 = 34871,
668  TRCIMSPEC7 = 34879,
669  TRCRSCTLR2 = 34960,
670  TRCRSCTLR3 = 34968,
671  TRCRSCTLR4 = 34976,
672  TRCRSCTLR5 = 34984,
673  TRCRSCTLR6 = 34992,
674  TRCRSCTLR7 = 35000,
675  TRCRSCTLR8 = 35008,
676  TRCRSCTLR9 = 35016,
677  TRCRSCTLR10 = 35024,
678  TRCRSCTLR11 = 35032,
679  TRCRSCTLR12 = 35040,
680  TRCRSCTLR13 = 35048,
681  TRCRSCTLR14 = 35056,
682  TRCRSCTLR15 = 35064,
683  TRCRSCTLR16 = 34945,
684  TRCRSCTLR17 = 34953,
685  TRCRSCTLR18 = 34961,
686  TRCRSCTLR19 = 34969,
687  TRCRSCTLR20 = 34977,
688  TRCRSCTLR21 = 34985,
689  TRCRSCTLR22 = 34993,
690  TRCRSCTLR23 = 35001,
691  TRCRSCTLR24 = 35009,
692  TRCRSCTLR25 = 35017,
693  TRCRSCTLR26 = 35025,
694  TRCRSCTLR27 = 35033,
695  TRCRSCTLR28 = 35041,
696  TRCRSCTLR29 = 35049,
697  TRCRSCTLR30 = 35057,
698  TRCRSCTLR31 = 35065,
699  TRCSSCCR0 = 34946,
700  TRCSSCCR1 = 34954,
701  TRCSSCCR2 = 34962,
702  TRCSSCCR3 = 34970,
703  TRCSSCCR4 = 34978,
704  TRCSSCCR5 = 34986,
705  TRCSSCCR6 = 34994,
706  TRCSSCCR7 = 35002,
707  TRCSSCSR0 = 35010,
708  TRCSSCSR1 = 35018,
709  TRCSSCSR2 = 35026,
710  TRCSSCSR3 = 35034,
711  TRCSSCSR4 = 35042,
712  TRCSSCSR5 = 35050,
713  TRCSSCSR6 = 35058,
714  TRCSSCSR7 = 35066,
715  TRCSSPCICR0 = 34947,
716  TRCSSPCICR1 = 34955,
717  TRCSSPCICR2 = 34963,
718  TRCSSPCICR3 = 34971,
719  TRCSSPCICR4 = 34979,
720  TRCSSPCICR5 = 34987,
721  TRCSSPCICR6 = 34995,
722  TRCSSPCICR7 = 35003,
723  TRCPDCR = 34980,
724  TRCACVR0 = 35072,
725  TRCACVR1 = 35088,
726  TRCACVR2 = 35104,
727  TRCACVR3 = 35120,
728  TRCACVR4 = 35136,
729  TRCACVR5 = 35152,
730  TRCACVR6 = 35168,
731  TRCACVR7 = 35184,
732  TRCACVR8 = 35073,
733  TRCACVR9 = 35089,
734  TRCACVR10 = 35105,
735  TRCACVR11 = 35121,
736  TRCACVR12 = 35137,
737  TRCACVR13 = 35153,
738  TRCACVR14 = 35169,
739  TRCACVR15 = 35185,
740  TRCACATR0 = 35074,
741  TRCACATR1 = 35090,
742  TRCACATR2 = 35106,
743  TRCACATR3 = 35122,
744  TRCACATR4 = 35138,
745  TRCACATR5 = 35154,
746  TRCACATR6 = 35170,
747  TRCACATR7 = 35186,
748  TRCACATR8 = 35075,
749  TRCACATR9 = 35091,
750  TRCACATR10 = 35107,
751  TRCACATR11 = 35123,
752  TRCACATR12 = 35139,
753  TRCACATR13 = 35155,
754  TRCACATR14 = 35171,
755  TRCACATR15 = 35187,
756  TRCDVCVR0 = 35076,
757  TRCDVCVR1 = 35108,
758  TRCDVCVR2 = 35140,
759  TRCDVCVR3 = 35172,
760  TRCDVCVR4 = 35077,
761  TRCDVCVR5 = 35109,
762  TRCDVCVR6 = 35141,
763  TRCDVCVR7 = 35173,
764  TRCDVCMR0 = 35078,
765  TRCDVCMR1 = 35110,
766  TRCDVCMR2 = 35142,
767  TRCDVCMR3 = 35174,
768  TRCDVCMR4 = 35079,
769  TRCDVCMR5 = 35111,
770  TRCDVCMR6 = 35143,
771  TRCDVCMR7 = 35175,
772  TRCCIDCVR0 = 35200,
773  TRCCIDCVR1 = 35216,
774  TRCCIDCVR2 = 35232,
775  TRCCIDCVR3 = 35248,
776  TRCCIDCVR4 = 35264,
777  TRCCIDCVR5 = 35280,
778  TRCCIDCVR6 = 35296,
779  TRCCIDCVR7 = 35312,
780  TRCVMIDCVR0 = 35201,
781  TRCVMIDCVR1 = 35217,
782  TRCVMIDCVR2 = 35233,
783  TRCVMIDCVR3 = 35249,
784  TRCVMIDCVR4 = 35265,
785  TRCVMIDCVR5 = 35281,
786  TRCVMIDCVR6 = 35297,
787  TRCVMIDCVR7 = 35313,
788  TRCCIDCCTLR0 = 35202,
789  TRCCIDCCTLR1 = 35210,
790  TRCVMIDCCTLR0 = 35218,
791  TRCVMIDCCTLR1 = 35226,
792  TRCITCTRL = 35716,
793  TRCCLAIMSET = 35782,
794  TRCCLAIMCLR = 35790,
795  ICC_BPR1_EL1 = 50787,
796  ICC_BPR0_EL1 = 50755,
797  ICC_PMR_EL1 = 49712,
798  ICC_CTLR_EL1 = 50788,
799  ICC_CTLR_EL3 = 63076,
800  ICC_SRE_EL1 = 50789,
801  ICC_SRE_EL2 = 58957,
802  ICC_SRE_EL3 = 63077,
803  ICC_IGRPEN0_EL1 = 50790,
804  ICC_IGRPEN1_EL1 = 50791,
805  ICC_IGRPEN1_EL3 = 63079,
806  ICC_AP0R0_EL1 = 50756,
807  ICC_AP0R1_EL1 = 50757,
808  ICC_AP0R2_EL1 = 50758,
809  ICC_AP0R3_EL1 = 50759,
810  ICC_AP1R0_EL1 = 50760,
811  ICC_AP1R1_EL1 = 50761,
812  ICC_AP1R2_EL1 = 50762,
813  ICC_AP1R3_EL1 = 50763,
814  ICH_AP0R0_EL2 = 58944,
815  ICH_AP0R1_EL2 = 58945,
816  ICH_AP0R2_EL2 = 58946,
817  ICH_AP0R3_EL2 = 58947,
818  ICH_AP1R0_EL2 = 58952,
819  ICH_AP1R1_EL2 = 58953,
820  ICH_AP1R2_EL2 = 58954,
821  ICH_AP1R3_EL2 = 58955,
822  ICH_HCR_EL2 = 58968,
823  ICH_MISR_EL2 = 58970,
824  ICH_VMCR_EL2 = 58975,
825  ICH_LR0_EL2 = 58976,
826  ICH_LR1_EL2 = 58977,
827  ICH_LR2_EL2 = 58978,
828  ICH_LR3_EL2 = 58979,
829  ICH_LR4_EL2 = 58980,
830  ICH_LR5_EL2 = 58981,
831  ICH_LR6_EL2 = 58982,
832  ICH_LR7_EL2 = 58983,
833  ICH_LR8_EL2 = 58984,
834  ICH_LR9_EL2 = 58985,
835  ICH_LR10_EL2 = 58986,
836  ICH_LR11_EL2 = 58987,
837  ICH_LR12_EL2 = 58988,
838  ICH_LR13_EL2 = 58989,
839  ICH_LR14_EL2 = 58990,
840  ICH_LR15_EL2 = 58991,
841  VSCTLR_EL2 = 57600,
842  MPUIR_EL1 = 49156,
843  MPUIR_EL2 = 57348,
844  PRENR_EL1 = 49929,
845  PRENR_EL2 = 58121,
846  PRSELR_EL1 = 49937,
847  PRSELR_EL2 = 58129,
848  PRBAR_EL1 = 49984,
849  PRBAR_EL2 = 58176,
850  PRLAR_EL1 = 49985,
851  PRLAR_EL2 = 58177,
852  PRBAR1_EL1 = 49988,
853  PRLAR1_EL1 = 49989,
854  PRBAR1_EL2 = 58180,
855  PRLAR1_EL2 = 58181,
856  PRBAR2_EL1 = 49992,
857  PRLAR2_EL1 = 49993,
858  PRBAR2_EL2 = 58184,
859  PRLAR2_EL2 = 58185,
860  PRBAR3_EL1 = 49996,
861  PRLAR3_EL1 = 49997,
862  PRBAR3_EL2 = 58188,
863  PRLAR3_EL2 = 58189,
864  PRBAR4_EL1 = 50000,
865  PRLAR4_EL1 = 50001,
866  PRBAR4_EL2 = 58192,
867  PRLAR4_EL2 = 58193,
868  PRBAR5_EL1 = 50004,
869  PRLAR5_EL1 = 50005,
870  PRBAR5_EL2 = 58196,
871  PRLAR5_EL2 = 58197,
872  PRBAR6_EL1 = 50008,
873  PRLAR6_EL1 = 50009,
874  PRBAR6_EL2 = 58200,
875  PRLAR6_EL2 = 58201,
876  PRBAR7_EL1 = 50012,
877  PRLAR7_EL1 = 50013,
878  PRBAR7_EL2 = 58204,
879  PRLAR7_EL2 = 58205,
880  PRBAR8_EL1 = 50016,
881  PRLAR8_EL1 = 50017,
882  PRBAR8_EL2 = 58208,
883  PRLAR8_EL2 = 58209,
884  PRBAR9_EL1 = 50020,
885  PRLAR9_EL1 = 50021,
886  PRBAR9_EL2 = 58212,
887  PRLAR9_EL2 = 58213,
888  PRBAR10_EL1 = 50024,
889  PRLAR10_EL1 = 50025,
890  PRBAR10_EL2 = 58216,
891  PRLAR10_EL2 = 58217,
892  PRBAR11_EL1 = 50028,
893  PRLAR11_EL1 = 50029,
894  PRBAR11_EL2 = 58220,
895  PRLAR11_EL2 = 58221,
896  PRBAR12_EL1 = 50032,
897  PRLAR12_EL1 = 50033,
898  PRBAR12_EL2 = 58224,
899  PRLAR12_EL2 = 58225,
900  PRBAR13_EL1 = 50036,
901  PRLAR13_EL1 = 50037,
902  PRBAR13_EL2 = 58228,
903  PRLAR13_EL2 = 58229,
904  PRBAR14_EL1 = 50040,
905  PRLAR14_EL1 = 50041,
906  PRBAR14_EL2 = 58232,
907  PRLAR14_EL2 = 58233,
908  PRBAR15_EL1 = 50044,
909  PRLAR15_EL1 = 50045,
910  PRBAR15_EL2 = 58236,
911  PRLAR15_EL2 = 58237,
912  PAN = 49683,
913  LORSA_EL1 = 50464,
914  LOREA_EL1 = 50465,
915  LORN_EL1 = 50466,
916  LORC_EL1 = 50467,
917  TTBR1_EL2 = 57601,
918  CNTHV_TVAL_EL2 = 59160,
919  CNTHV_CVAL_EL2 = 59162,
920  CNTHV_CTL_EL2 = 59161,
921  SCTLR_EL12 = 59520,
922  CPACR_EL12 = 59522,
923  TTBR0_EL12 = 59648,
924  TTBR1_EL12 = 59649,
925  TCR_EL12 = 59650,
926  AFSR0_EL12 = 60040,
927  AFSR1_EL12 = 60041,
928  ESR_EL12 = 60048,
929  FAR_EL12 = 60160,
930  MAIR_EL12 = 60688,
931  AMAIR_EL12 = 60696,
932  VBAR_EL12 = 60928,
933  CONTEXTIDR_EL12 = 61057,
934  CNTKCTL_EL12 = 61192,
935  CNTP_TVAL_EL02 = 61200,
936  CNTP_CTL_EL02 = 61201,
937  CNTP_CVAL_EL02 = 61202,
938  CNTV_TVAL_EL02 = 61208,
939  CNTV_CTL_EL02 = 61209,
940  CNTV_CVAL_EL02 = 61210,
941  SPSR_EL12 = 59904,
942  ELR_EL12 = 59905,
943  CONTEXTIDR_EL2 = 59009,
944  UAO = 49684,
945  PMBLIMITR_EL1 = 50384,
946  PMBPTR_EL1 = 50385,
947  PMBSR_EL1 = 50387,
948  PMBIDR_EL1 = 50391,
949  PMSCR_EL2 = 58568,
950  PMSCR_EL12 = 60616,
951  PMSCR_EL1 = 50376,
952  PMSICR_EL1 = 50378,
953  PMSIRR_EL1 = 50379,
954  PMSFCR_EL1 = 50380,
955  PMSEVFR_EL1 = 50381,
956  PMSLATFR_EL1 = 50382,
957  PMSIDR_EL1 = 50383,
958  ERRSELR_EL1 = 49817,
959  ERXCTLR_EL1 = 49825,
960  ERXSTATUS_EL1 = 49826,
961  ERXADDR_EL1 = 49827,
962  ERXMISC0_EL1 = 49832,
963  ERXMISC1_EL1 = 49833,
964  DISR_EL1 = 50697,
965  VDISR_EL2 = 58889,
966  VSESR_EL2 = 58003,
967  APIAKeyLo_EL1 = 49416,
968  APIAKeyHi_EL1 = 49417,
969  APIBKeyLo_EL1 = 49418,
970  APIBKeyHi_EL1 = 49419,
971  APDAKeyLo_EL1 = 49424,
972  APDAKeyHi_EL1 = 49425,
973  APDBKeyLo_EL1 = 49426,
974  APDBKeyHi_EL1 = 49427,
975  APGAKeyLo_EL1 = 49432,
976  APGAKeyHi_EL1 = 49433,
977  VSTCR_EL2 = 57650,
978  VSTTBR_EL2 = 57648,
979  CNTHVS_TVAL_EL2 = 59168,
980  CNTHVS_CVAL_EL2 = 59170,
981  CNTHVS_CTL_EL2 = 59169,
982  CNTHPS_TVAL_EL2 = 59176,
983  CNTHPS_CVAL_EL2 = 59178,
984  CNTHPS_CTL_EL2 = 59177,
985  SDER32_EL2 = 57497,
986  ERXPFGCTL_EL1 = 49829,
987  ERXPFGCDN_EL1 = 49830,
988  ERXMISC2_EL1 = 49834,
989  ERXMISC3_EL1 = 49835,
990  ERXPFGF_EL1 = 49828,
991  MPAM0_EL1 = 50473,
992  MPAM1_EL1 = 50472,
993  MPAM2_EL2 = 58664,
994  MPAM3_EL3 = 62760,
995  MPAM1_EL12 = 60712,
996  MPAMHCR_EL2 = 58656,
997  MPAMVPMV_EL2 = 58657,
998  MPAMVPM0_EL2 = 58672,
999  MPAMVPM1_EL2 = 58673,
1000  MPAMVPM2_EL2 = 58674,
1001  MPAMVPM3_EL2 = 58675,
1002  MPAMVPM4_EL2 = 58676,
1003  MPAMVPM5_EL2 = 58677,
1004  MPAMVPM6_EL2 = 58678,
1005  MPAMVPM7_EL2 = 58679,
1006  MPAMIDR_EL1 = 50468,
1007  AMCR_EL0 = 56976,
1008  AMCFGR_EL0 = 56977,
1009  AMCGCR_EL0 = 56978,
1010  AMUSERENR_EL0 = 56979,
1011  AMCNTENCLR0_EL0 = 56980,
1012  AMCNTENSET0_EL0 = 56981,
1013  AMEVCNTR00_EL0 = 56992,
1014  AMEVCNTR01_EL0 = 56993,
1015  AMEVCNTR02_EL0 = 56994,
1016  AMEVCNTR03_EL0 = 56995,
1017  AMEVTYPER00_EL0 = 57008,
1018  AMEVTYPER01_EL0 = 57009,
1019  AMEVTYPER02_EL0 = 57010,
1020  AMEVTYPER03_EL0 = 57011,
1021  AMCNTENCLR1_EL0 = 56984,
1022  AMCNTENSET1_EL0 = 56985,
1023  AMEVCNTR10_EL0 = 57056,
1024  AMEVCNTR11_EL0 = 57057,
1025  AMEVCNTR12_EL0 = 57058,
1026  AMEVCNTR13_EL0 = 57059,
1027  AMEVCNTR14_EL0 = 57060,
1028  AMEVCNTR15_EL0 = 57061,
1029  AMEVCNTR16_EL0 = 57062,
1030  AMEVCNTR17_EL0 = 57063,
1031  AMEVCNTR18_EL0 = 57064,
1032  AMEVCNTR19_EL0 = 57065,
1033  AMEVCNTR110_EL0 = 57066,
1034  AMEVCNTR111_EL0 = 57067,
1035  AMEVCNTR112_EL0 = 57068,
1036  AMEVCNTR113_EL0 = 57069,
1037  AMEVCNTR114_EL0 = 57070,
1038  AMEVCNTR115_EL0 = 57071,
1039  AMEVTYPER10_EL0 = 57072,
1040  AMEVTYPER11_EL0 = 57073,
1041  AMEVTYPER12_EL0 = 57074,
1042  AMEVTYPER13_EL0 = 57075,
1043  AMEVTYPER14_EL0 = 57076,
1044  AMEVTYPER15_EL0 = 57077,
1045  AMEVTYPER16_EL0 = 57078,
1046  AMEVTYPER17_EL0 = 57079,
1047  AMEVTYPER18_EL0 = 57080,
1048  AMEVTYPER19_EL0 = 57081,
1049  AMEVTYPER110_EL0 = 57082,
1050  AMEVTYPER111_EL0 = 57083,
1051  AMEVTYPER112_EL0 = 57084,
1052  AMEVTYPER113_EL0 = 57085,
1053  AMEVTYPER114_EL0 = 57086,
1054  AMEVTYPER115_EL0 = 57087,
1055  TRFCR_EL1 = 49297,
1056  TRFCR_EL2 = 57489,
1057  TRFCR_EL12 = 59537,
1058  DIT = 55829,
1059  VNCR_EL2 = 57616,
1060  ZCR_EL1 = 49296,
1061  ZCR_EL2 = 57488,
1062  ZCR_EL3 = 61584,
1063  ZCR_EL12 = 59536,
1064  SSBS = 55830,
1065  TCO = 55831,
1066  GCR_EL1 = 49286,
1067  RGSR_EL1 = 49285,
1068  TFSR_EL1 = 49840,
1069  TFSR_EL2 = 58032,
1070  TFSR_EL3 = 62128,
1071  TFSR_EL12 = 60080,
1072  TFSRE0_EL1 = 49841,
1073  GMID_EL1 = 51204,
1074  TRCRSR = 34896,
1075  TRCEXTINSELR0 = 34884,
1076  TRCEXTINSELR1 = 34892,
1077  TRCEXTINSELR2 = 34900,
1078  TRCEXTINSELR3 = 34908,
1079  TRBLIMITR_EL1 = 50392,
1080  TRBPTR_EL1 = 50393,
1081  TRBBASER_EL1 = 50394,
1082  TRBSR_EL1 = 50395,
1083  TRBMAR_EL1 = 50396,
1084  TRBTRG_EL1 = 50398,
1085  TRBIDR_EL1 = 50399,
1086  AMCG1IDR_EL0 = 56982,
1087  AMEVCNTVOFF00_EL2 = 59072,
1088  AMEVCNTVOFF10_EL2 = 59088,
1089  AMEVCNTVOFF01_EL2 = 59073,
1090  AMEVCNTVOFF11_EL2 = 59089,
1091  AMEVCNTVOFF02_EL2 = 59074,
1092  AMEVCNTVOFF12_EL2 = 59090,
1093  AMEVCNTVOFF03_EL2 = 59075,
1094  AMEVCNTVOFF13_EL2 = 59091,
1095  AMEVCNTVOFF04_EL2 = 59076,
1096  AMEVCNTVOFF14_EL2 = 59092,
1097  AMEVCNTVOFF05_EL2 = 59077,
1098  AMEVCNTVOFF15_EL2 = 59093,
1099  AMEVCNTVOFF06_EL2 = 59078,
1100  AMEVCNTVOFF16_EL2 = 59094,
1101  AMEVCNTVOFF07_EL2 = 59079,
1102  AMEVCNTVOFF17_EL2 = 59095,
1103  AMEVCNTVOFF08_EL2 = 59080,
1104  AMEVCNTVOFF18_EL2 = 59096,
1105  AMEVCNTVOFF09_EL2 = 59081,
1106  AMEVCNTVOFF19_EL2 = 59097,
1107  AMEVCNTVOFF010_EL2 = 59082,
1108  AMEVCNTVOFF110_EL2 = 59098,
1109  AMEVCNTVOFF011_EL2 = 59083,
1110  AMEVCNTVOFF111_EL2 = 59099,
1111  AMEVCNTVOFF012_EL2 = 59084,
1112  AMEVCNTVOFF112_EL2 = 59100,
1113  AMEVCNTVOFF013_EL2 = 59085,
1114  AMEVCNTVOFF113_EL2 = 59101,
1115  AMEVCNTVOFF014_EL2 = 59086,
1116  AMEVCNTVOFF114_EL2 = 59102,
1117  AMEVCNTVOFF015_EL2 = 59087,
1118  AMEVCNTVOFF115_EL2 = 59103,
1119  HFGRTR_EL2 = 57484,
1120  HFGWTR_EL2 = 57485,
1121  HFGITR_EL2 = 57486,
1122  HDFGRTR_EL2 = 57740,
1123  HDFGWTR_EL2 = 57741,
1124  HAFGRTR_EL2 = 57742,
1125  HDFGRTR2_EL2 = 57736,
1126  HDFGWTR2_EL2 = 57737,
1127  HFGRTR2_EL2 = 57738,
1128  HFGWTR2_EL2 = 57739,
1129  HFGITR2_EL2 = 57743,
1130  CNTSCALE_EL2 = 59140,
1131  CNTISCALE_EL2 = 59141,
1132  CNTPOFF_EL2 = 59142,
1133  CNTVFRQ_EL2 = 59143,
1134  CNTPCTSS_EL0 = 57093,
1135  CNTVCTSS_EL0 = 57094,
1136  ACCDATA_EL1 = 50821,
1137  BRBCR_EL1 = 35968,
1138  BRBCR_EL12 = 44160,
1139  BRBCR_EL2 = 42112,
1140  BRBFCR_EL1 = 35969,
1141  BRBIDR0_EL1 = 35984,
1142  BRBINFINJ_EL1 = 35976,
1143  BRBSRCINJ_EL1 = 35977,
1144  BRBTGTINJ_EL1 = 35978,
1145  BRBTS_EL1 = 35970,
1146  BRBINF0_EL1 = 35840,
1147  BRBSRC0_EL1 = 35841,
1148  BRBTGT0_EL1 = 35842,
1149  BRBINF1_EL1 = 35848,
1150  BRBSRC1_EL1 = 35849,
1151  BRBTGT1_EL1 = 35850,
1152  BRBINF2_EL1 = 35856,
1153  BRBSRC2_EL1 = 35857,
1154  BRBTGT2_EL1 = 35858,
1155  BRBINF3_EL1 = 35864,
1156  BRBSRC3_EL1 = 35865,
1157  BRBTGT3_EL1 = 35866,
1158  BRBINF4_EL1 = 35872,
1159  BRBSRC4_EL1 = 35873,
1160  BRBTGT4_EL1 = 35874,
1161  BRBINF5_EL1 = 35880,
1162  BRBSRC5_EL1 = 35881,
1163  BRBTGT5_EL1 = 35882,
1164  BRBINF6_EL1 = 35888,
1165  BRBSRC6_EL1 = 35889,
1166  BRBTGT6_EL1 = 35890,
1167  BRBINF7_EL1 = 35896,
1168  BRBSRC7_EL1 = 35897,
1169  BRBTGT7_EL1 = 35898,
1170  BRBINF8_EL1 = 35904,
1171  BRBSRC8_EL1 = 35905,
1172  BRBTGT8_EL1 = 35906,
1173  BRBINF9_EL1 = 35912,
1174  BRBSRC9_EL1 = 35913,
1175  BRBTGT9_EL1 = 35914,
1176  BRBINF10_EL1 = 35920,
1177  BRBSRC10_EL1 = 35921,
1178  BRBTGT10_EL1 = 35922,
1179  BRBINF11_EL1 = 35928,
1180  BRBSRC11_EL1 = 35929,
1181  BRBTGT11_EL1 = 35930,
1182  BRBINF12_EL1 = 35936,
1183  BRBSRC12_EL1 = 35937,
1184  BRBTGT12_EL1 = 35938,
1185  BRBINF13_EL1 = 35944,
1186  BRBSRC13_EL1 = 35945,
1187  BRBTGT13_EL1 = 35946,
1188  BRBINF14_EL1 = 35952,
1189  BRBSRC14_EL1 = 35953,
1190  BRBTGT14_EL1 = 35954,
1191  BRBINF15_EL1 = 35960,
1192  BRBSRC15_EL1 = 35961,
1193  BRBTGT15_EL1 = 35962,
1194  BRBINF16_EL1 = 35844,
1195  BRBSRC16_EL1 = 35845,
1196  BRBTGT16_EL1 = 35846,
1197  BRBINF17_EL1 = 35852,
1198  BRBSRC17_EL1 = 35853,
1199  BRBTGT17_EL1 = 35854,
1200  BRBINF18_EL1 = 35860,
1201  BRBSRC18_EL1 = 35861,
1202  BRBTGT18_EL1 = 35862,
1203  BRBINF19_EL1 = 35868,
1204  BRBSRC19_EL1 = 35869,
1205  BRBTGT19_EL1 = 35870,
1206  BRBINF20_EL1 = 35876,
1207  BRBSRC20_EL1 = 35877,
1208  BRBTGT20_EL1 = 35878,
1209  BRBINF21_EL1 = 35884,
1210  BRBSRC21_EL1 = 35885,
1211  BRBTGT21_EL1 = 35886,
1212  BRBINF22_EL1 = 35892,
1213  BRBSRC22_EL1 = 35893,
1214  BRBTGT22_EL1 = 35894,
1215  BRBINF23_EL1 = 35900,
1216  BRBSRC23_EL1 = 35901,
1217  BRBTGT23_EL1 = 35902,
1218  BRBINF24_EL1 = 35908,
1219  BRBSRC24_EL1 = 35909,
1220  BRBTGT24_EL1 = 35910,
1221  BRBINF25_EL1 = 35916,
1222  BRBSRC25_EL1 = 35917,
1223  BRBTGT25_EL1 = 35918,
1224  BRBINF26_EL1 = 35924,
1225  BRBSRC26_EL1 = 35925,
1226  BRBTGT26_EL1 = 35926,
1227  BRBINF27_EL1 = 35932,
1228  BRBSRC27_EL1 = 35933,
1229  BRBTGT27_EL1 = 35934,
1230  BRBINF28_EL1 = 35940,
1231  BRBSRC28_EL1 = 35941,
1232  BRBTGT28_EL1 = 35942,
1233  BRBINF29_EL1 = 35948,
1234  BRBSRC29_EL1 = 35949,
1235  BRBTGT29_EL1 = 35950,
1236  BRBINF30_EL1 = 35956,
1237  BRBSRC30_EL1 = 35957,
1238  BRBTGT30_EL1 = 35958,
1239  BRBINF31_EL1 = 35964,
1240  BRBSRC31_EL1 = 35965,
1241  BRBTGT31_EL1 = 35966,
1242  PMSNEVFR_EL1 = 50377,
1243  CPM_IOACC_CTL_EL3 = 65424,
1244  SMCR_EL1 = 49302,
1245  SMCR_EL2 = 57494,
1246  SMCR_EL3 = 61590,
1247  SMCR_EL12 = 59542,
1248  SVCR = 55826,
1249  SMPRI_EL1 = 49300,
1250  SMPRIMAP_EL2 = 57493,
1251  SMIDR_EL1 = 51206,
1252  TPIDR2_EL0 = 56965,
1253  MPAMSM_EL1 = 50475,
1254  ALLINT = 49688,
1255  ICC_NMIAR1_EL1 = 50765,
1256  AMAIR2_EL1 = 50457,
1257  AMAIR2_EL12 = 60697,
1258  AMAIR2_EL2 = 58649,
1259  AMAIR2_EL3 = 62745,
1260  MAIR2_EL1 = 50449,
1261  MAIR2_EL12 = 60689,
1262  MAIR2_EL2 = 58633,
1263  MAIR2_EL3 = 62729,
1264  PIRE0_EL1 = 50450,
1265  PIRE0_EL12 = 60690,
1266  PIRE0_EL2 = 58642,
1267  PIR_EL1 = 50451,
1268  PIR_EL12 = 60691,
1269  PIR_EL2 = 58643,
1270  PIR_EL3 = 62739,
1271  S2PIR_EL2 = 58645,
1272  POR_EL0 = 56596,
1273  POR_EL1 = 50452,
1274  POR_EL12 = 60692,
1275  POR_EL2 = 58644,
1276  POR_EL3 = 62740,
1277  S2POR_EL1 = 50453,
1278  SCTLR2_EL1 = 49283,
1279  SCTLR2_EL12 = 59523,
1280  SCTLR2_EL2 = 57475,
1281  SCTLR2_EL3 = 61571,
1282  TCR2_EL1 = 49411,
1283  TCR2_EL12 = 59651,
1284  TCR2_EL2 = 57603,
1285  RCWMASK_EL1 = 50822,
1286  RCWSMASK_EL1 = 50819,
1287  MDSELR_EL1 = 32802,
1288  PMUACR_EL1 = 50420,
1289  PMCCNTSVR_EL1 = 34655,
1290  PMICNTSVR_EL1 = 34656,
1291  PMSSCR_EL1 = 50411,
1292  PMEVCNTSVR0_EL1 = 34624,
1293  PMEVCNTSVR1_EL1 = 34625,
1294  PMEVCNTSVR2_EL1 = 34626,
1295  PMEVCNTSVR3_EL1 = 34627,
1296  PMEVCNTSVR4_EL1 = 34628,
1297  PMEVCNTSVR5_EL1 = 34629,
1298  PMEVCNTSVR6_EL1 = 34630,
1299  PMEVCNTSVR7_EL1 = 34631,
1300  PMEVCNTSVR8_EL1 = 34632,
1301  PMEVCNTSVR9_EL1 = 34633,
1302  PMEVCNTSVR10_EL1 = 34634,
1303  PMEVCNTSVR11_EL1 = 34635,
1304  PMEVCNTSVR12_EL1 = 34636,
1305  PMEVCNTSVR13_EL1 = 34637,
1306  PMEVCNTSVR14_EL1 = 34638,
1307  PMEVCNTSVR15_EL1 = 34639,
1308  PMEVCNTSVR16_EL1 = 34640,
1309  PMEVCNTSVR17_EL1 = 34641,
1310  PMEVCNTSVR18_EL1 = 34642,
1311  PMEVCNTSVR19_EL1 = 34643,
1312  PMEVCNTSVR20_EL1 = 34644,
1313  PMEVCNTSVR21_EL1 = 34645,
1314  PMEVCNTSVR22_EL1 = 34646,
1315  PMEVCNTSVR23_EL1 = 34647,
1316  PMEVCNTSVR24_EL1 = 34648,
1317  PMEVCNTSVR25_EL1 = 34649,
1318  PMEVCNTSVR26_EL1 = 34650,
1319  PMEVCNTSVR27_EL1 = 34651,
1320  PMEVCNTSVR28_EL1 = 34652,
1321  PMEVCNTSVR29_EL1 = 34653,
1322  PMEVCNTSVR30_EL1 = 34654,
1323  PMICNTR_EL0 = 56480,
1324  PMICFILTR_EL0 = 56496,
1325  PMZR_EL0 = 56556,
1326  PMECR_EL1 = 50421,
1327  PMIAR_EL1 = 50423,
1328  SPMACCESSR_EL1 = 34027,
1329  SPMACCESSR_EL12 = 44267,
1330  SPMACCESSR_EL2 = 42219,
1331  SPMACCESSR_EL3 = 46315,
1332  SPMCNTENCLR_EL0 = 40162,
1333  SPMCNTENSET_EL0 = 40161,
1334  SPMCR_EL0 = 40160,
1335  SPMDEVAFF_EL1 = 34030,
1336  SPMDEVARCH_EL1 = 34029,
1337  SPMEVCNTR0_EL0 = 40704,
1338  SPMEVFILT2R0_EL0 = 40752,
1339  SPMEVFILTR0_EL0 = 40736,
1340  SPMEVTYPER0_EL0 = 40720,
1341  SPMEVCNTR1_EL0 = 40705,
1342  SPMEVFILT2R1_EL0 = 40753,
1343  SPMEVFILTR1_EL0 = 40737,
1344  SPMEVTYPER1_EL0 = 40721,
1345  SPMEVCNTR2_EL0 = 40706,
1346  SPMEVFILT2R2_EL0 = 40754,
1347  SPMEVFILTR2_EL0 = 40738,
1348  SPMEVTYPER2_EL0 = 40722,
1349  SPMEVCNTR3_EL0 = 40707,
1350  SPMEVFILT2R3_EL0 = 40755,
1351  SPMEVFILTR3_EL0 = 40739,
1352  SPMEVTYPER3_EL0 = 40723,
1353  SPMEVCNTR4_EL0 = 40708,
1354  SPMEVFILT2R4_EL0 = 40756,
1355  SPMEVFILTR4_EL0 = 40740,
1356  SPMEVTYPER4_EL0 = 40724,
1357  SPMEVCNTR5_EL0 = 40709,
1358  SPMEVFILT2R5_EL0 = 40757,
1359  SPMEVFILTR5_EL0 = 40741,
1360  SPMEVTYPER5_EL0 = 40725,
1361  SPMEVCNTR6_EL0 = 40710,
1362  SPMEVFILT2R6_EL0 = 40758,
1363  SPMEVFILTR6_EL0 = 40742,
1364  SPMEVTYPER6_EL0 = 40726,
1365  SPMEVCNTR7_EL0 = 40711,
1366  SPMEVFILT2R7_EL0 = 40759,
1367  SPMEVFILTR7_EL0 = 40743,
1368  SPMEVTYPER7_EL0 = 40727,
1369  SPMEVCNTR8_EL0 = 40712,
1370  SPMEVFILT2R8_EL0 = 40760,
1371  SPMEVFILTR8_EL0 = 40744,
1372  SPMEVTYPER8_EL0 = 40728,
1373  SPMEVCNTR9_EL0 = 40713,
1374  SPMEVFILT2R9_EL0 = 40761,
1375  SPMEVFILTR9_EL0 = 40745,
1376  SPMEVTYPER9_EL0 = 40729,
1377  SPMEVCNTR10_EL0 = 40714,
1378  SPMEVFILT2R10_EL0 = 40762,
1379  SPMEVFILTR10_EL0 = 40746,
1380  SPMEVTYPER10_EL0 = 40730,
1381  SPMEVCNTR11_EL0 = 40715,
1382  SPMEVFILT2R11_EL0 = 40763,
1383  SPMEVFILTR11_EL0 = 40747,
1384  SPMEVTYPER11_EL0 = 40731,
1385  SPMEVCNTR12_EL0 = 40716,
1386  SPMEVFILT2R12_EL0 = 40764,
1387  SPMEVFILTR12_EL0 = 40748,
1388  SPMEVTYPER12_EL0 = 40732,
1389  SPMEVCNTR13_EL0 = 40717,
1390  SPMEVFILT2R13_EL0 = 40765,
1391  SPMEVFILTR13_EL0 = 40749,
1392  SPMEVTYPER13_EL0 = 40733,
1393  SPMEVCNTR14_EL0 = 40718,
1394  SPMEVFILT2R14_EL0 = 40766,
1395  SPMEVFILTR14_EL0 = 40750,
1396  SPMEVTYPER14_EL0 = 40734,
1397  SPMEVCNTR15_EL0 = 40719,
1398  SPMEVFILT2R15_EL0 = 40767,
1399  SPMEVFILTR15_EL0 = 40751,
1400  SPMEVTYPER15_EL0 = 40735,
1401  SPMIIDR_EL1 = 34028,
1402  SPMINTENCLR_EL1 = 34034,
1403  SPMINTENSET_EL1 = 34033,
1404  SPMOVSCLR_EL0 = 40163,
1405  SPMOVSSET_EL0 = 40179,
1406  SPMSELR_EL0 = 40165,
1407  SPMCGCR0_EL1 = 34024,
1408  SPMCGCR1_EL1 = 34025,
1409  SPMCFGR_EL1 = 34031,
1410  SPMROOTCR_EL3 = 46327,
1411  SPMSCR_EL1 = 48375,
1412  TRCITEEDCR = 34833,
1413  TRCITECR_EL1 = 49299,
1414  TRCITECR_EL12 = 59539,
1415  TRCITECR_EL2 = 57491,
1416  PMSDSFR_EL1 = 50388,
1417  ERXGSR_EL1 = 49818,
1418  PFAR_EL1 = 49925,
1419  PFAR_EL12 = 60165,
1420  PFAR_EL2 = 58117,
1421  PM = 49689,
1422};
1423#endif
1424
1425#ifdef GET_TSB_DECL
1426enum TSBValues {
1427  csync = 0,
1428};
1429#endif
1430
1431#ifdef GET_TLBITable_DECL
1432const TLBI *lookupTLBIByEncoding(uint16_t Encoding);
1433const TLBI *lookupTLBIByName(StringRef Name);
1434#endif
1435
1436#ifdef GET_TLBITable_IMPL
1437constexpr TLBI TLBITable[] = {
1438  { "ALLE1", 0x243C, false,  {  }  }, // 0
1439  { "ALLE1IS", 0x241C, false,  {  }  }, // 1
1440  { "ALLE1ISnXS", 0x249C, false,  { AArch64::FeatureXS }  }, // 2
1441  { "ALLE1nXS", 0x24BC, false,  { AArch64::FeatureXS }  }, // 3
1442  { "ALLE1OS", 0x240C, false,  { AArch64::FeatureTLB_RMI }  }, // 4
1443  { "ALLE1OSnXS", 0x248C, false,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 5
1444  { "ALLE2", 0x2438, false,  {  }  }, // 6
1445  { "ALLE2IS", 0x2418, false,  {  }  }, // 7
1446  { "ALLE2ISnXS", 0x2498, false,  { AArch64::FeatureXS }  }, // 8
1447  { "ALLE2nXS", 0x24B8, false,  { AArch64::FeatureXS }  }, // 9
1448  { "ALLE2OS", 0x2408, false,  { AArch64::FeatureTLB_RMI }  }, // 10
1449  { "ALLE2OSnXS", 0x2488, false,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 11
1450  { "ALLE3", 0x3438, false,  {  }  }, // 12
1451  { "ALLE3IS", 0x3418, false,  {  }  }, // 13
1452  { "ALLE3ISnXS", 0x3498, false,  { AArch64::FeatureXS }  }, // 14
1453  { "ALLE3nXS", 0x34B8, false,  { AArch64::FeatureXS }  }, // 15
1454  { "ALLE3OS", 0x3408, false,  { AArch64::FeatureTLB_RMI }  }, // 16
1455  { "ALLE3OSnXS", 0x3488, false,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 17
1456  { "ASIDE1", 0x43A, true,  {  }  }, // 18
1457  { "ASIDE1IS", 0x41A, true,  {  }  }, // 19
1458  { "ASIDE1ISnXS", 0x49A, true,  { AArch64::FeatureXS }  }, // 20
1459  { "ASIDE1nXS", 0x4BA, true,  { AArch64::FeatureXS }  }, // 21
1460  { "ASIDE1OS", 0x40A, true,  { AArch64::FeatureTLB_RMI }  }, // 22
1461  { "ASIDE1OSnXS", 0x48A, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 23
1462  { "IPAS2E1", 0x2421, true,  {  }  }, // 24
1463  { "IPAS2E1IS", 0x2401, true,  {  }  }, // 25
1464  { "IPAS2E1ISnXS", 0x2481, true,  { AArch64::FeatureXS }  }, // 26
1465  { "IPAS2E1nXS", 0x24A1, true,  { AArch64::FeatureXS }  }, // 27
1466  { "IPAS2E1OS", 0x2420, true,  { AArch64::FeatureTLB_RMI }  }, // 28
1467  { "IPAS2E1OSnXS", 0x24A0, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 29
1468  { "IPAS2LE1", 0x2425, true,  {  }  }, // 30
1469  { "IPAS2LE1IS", 0x2405, true,  {  }  }, // 31
1470  { "IPAS2LE1ISnXS", 0x2485, true,  { AArch64::FeatureXS }  }, // 32
1471  { "IPAS2LE1nXS", 0x24A5, true,  { AArch64::FeatureXS }  }, // 33
1472  { "IPAS2LE1OS", 0x2424, true,  { AArch64::FeatureTLB_RMI }  }, // 34
1473  { "IPAS2LE1OSnXS", 0x24A4, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 35
1474  { "PAALL", 0x343C, false,  { AArch64::FeatureRME }  }, // 36
1475  { "PAALLnXS", 0x34BC, false,  { AArch64::FeatureRME, AArch64::FeatureXS }  }, // 37
1476  { "PAALLOS", 0x340C, false,  { AArch64::FeatureRME }  }, // 38
1477  { "PAALLOSnXS", 0x348C, false,  { AArch64::FeatureRME, AArch64::FeatureXS }  }, // 39
1478  { "RIPAS2E1", 0x2422, true,  { AArch64::FeatureTLB_RMI }  }, // 40
1479  { "RIPAS2E1IS", 0x2402, true,  { AArch64::FeatureTLB_RMI }  }, // 41
1480  { "RIPAS2E1ISnXS", 0x2482, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 42
1481  { "RIPAS2E1nXS", 0x24A2, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 43
1482  { "RIPAS2E1OS", 0x2423, true,  { AArch64::FeatureTLB_RMI }  }, // 44
1483  { "RIPAS2E1OSnXS", 0x24A3, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 45
1484  { "RIPAS2LE1", 0x2426, true,  { AArch64::FeatureTLB_RMI }  }, // 46
1485  { "RIPAS2LE1IS", 0x2406, true,  { AArch64::FeatureTLB_RMI }  }, // 47
1486  { "RIPAS2LE1ISnXS", 0x2486, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 48
1487  { "RIPAS2LE1nXS", 0x24A6, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 49
1488  { "RIPAS2LE1OS", 0x2427, true,  { AArch64::FeatureTLB_RMI }  }, // 50
1489  { "RIPAS2LE1OSnXS", 0x24A7, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 51
1490  { "RPALOS", 0x3427, true,  { AArch64::FeatureRME }  }, // 52
1491  { "RPALOSnXS", 0x34A7, true,  { AArch64::FeatureRME, AArch64::FeatureXS }  }, // 53
1492  { "RPAOS", 0x3423, true,  { AArch64::FeatureRME }  }, // 54
1493  { "RPAOSnXS", 0x34A3, true,  { AArch64::FeatureRME, AArch64::FeatureXS }  }, // 55
1494  { "RVAAE1", 0x433, true,  { AArch64::FeatureTLB_RMI }  }, // 56
1495  { "RVAAE1IS", 0x413, true,  { AArch64::FeatureTLB_RMI }  }, // 57
1496  { "RVAAE1ISnXS", 0x493, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 58
1497  { "RVAAE1nXS", 0x4B3, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 59
1498  { "RVAAE1OS", 0x42B, true,  { AArch64::FeatureTLB_RMI }  }, // 60
1499  { "RVAAE1OSnXS", 0x4AB, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 61
1500  { "RVAALE1", 0x437, true,  { AArch64::FeatureTLB_RMI }  }, // 62
1501  { "RVAALE1IS", 0x417, true,  { AArch64::FeatureTLB_RMI }  }, // 63
1502  { "RVAALE1ISnXS", 0x497, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 64
1503  { "RVAALE1nXS", 0x4B7, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 65
1504  { "RVAALE1OS", 0x42F, true,  { AArch64::FeatureTLB_RMI }  }, // 66
1505  { "RVAALE1OSnXS", 0x4AF, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 67
1506  { "RVAE1", 0x431, true,  { AArch64::FeatureTLB_RMI }  }, // 68
1507  { "RVAE1IS", 0x411, true,  { AArch64::FeatureTLB_RMI }  }, // 69
1508  { "RVAE1ISnXS", 0x491, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 70
1509  { "RVAE1nXS", 0x4B1, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 71
1510  { "RVAE1OS", 0x429, true,  { AArch64::FeatureTLB_RMI }  }, // 72
1511  { "RVAE1OSnXS", 0x4A9, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 73
1512  { "RVAE2", 0x2431, true,  { AArch64::FeatureTLB_RMI }  }, // 74
1513  { "RVAE2IS", 0x2411, true,  { AArch64::FeatureTLB_RMI }  }, // 75
1514  { "RVAE2ISnXS", 0x2491, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 76
1515  { "RVAE2nXS", 0x24B1, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 77
1516  { "RVAE2OS", 0x2429, true,  { AArch64::FeatureTLB_RMI }  }, // 78
1517  { "RVAE2OSnXS", 0x24A9, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 79
1518  { "RVAE3", 0x3431, true,  { AArch64::FeatureTLB_RMI }  }, // 80
1519  { "RVAE3IS", 0x3411, true,  { AArch64::FeatureTLB_RMI }  }, // 81
1520  { "RVAE3ISnXS", 0x3491, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 82
1521  { "RVAE3nXS", 0x34B1, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 83
1522  { "RVAE3OS", 0x3429, true,  { AArch64::FeatureTLB_RMI }  }, // 84
1523  { "RVAE3OSnXS", 0x34A9, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 85
1524  { "RVALE1", 0x435, true,  { AArch64::FeatureTLB_RMI }  }, // 86
1525  { "RVALE1IS", 0x415, true,  { AArch64::FeatureTLB_RMI }  }, // 87
1526  { "RVALE1ISnXS", 0x495, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 88
1527  { "RVALE1nXS", 0x4B5, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 89
1528  { "RVALE1OS", 0x42D, true,  { AArch64::FeatureTLB_RMI }  }, // 90
1529  { "RVALE1OSnXS", 0x4AD, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 91
1530  { "RVALE2", 0x2435, true,  { AArch64::FeatureTLB_RMI }  }, // 92
1531  { "RVALE2IS", 0x2415, true,  { AArch64::FeatureTLB_RMI }  }, // 93
1532  { "RVALE2ISnXS", 0x2495, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 94
1533  { "RVALE2nXS", 0x24B5, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 95
1534  { "RVALE2OS", 0x242D, true,  { AArch64::FeatureTLB_RMI }  }, // 96
1535  { "RVALE2OSnXS", 0x24AD, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 97
1536  { "RVALE3", 0x3435, true,  { AArch64::FeatureTLB_RMI }  }, // 98
1537  { "RVALE3IS", 0x3415, true,  { AArch64::FeatureTLB_RMI }  }, // 99
1538  { "RVALE3ISnXS", 0x3495, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 100
1539  { "RVALE3nXS", 0x34B5, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 101
1540  { "RVALE3OS", 0x342D, true,  { AArch64::FeatureTLB_RMI }  }, // 102
1541  { "RVALE3OSnXS", 0x34AD, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 103
1542  { "VAAE1", 0x43B, true,  {  }  }, // 104
1543  { "VAAE1IS", 0x41B, true,  {  }  }, // 105
1544  { "VAAE1ISnXS", 0x49B, true,  { AArch64::FeatureXS }  }, // 106
1545  { "VAAE1nXS", 0x4BB, true,  { AArch64::FeatureXS }  }, // 107
1546  { "VAAE1OS", 0x40B, true,  { AArch64::FeatureTLB_RMI }  }, // 108
1547  { "VAAE1OSnXS", 0x48B, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 109
1548  { "VAALE1", 0x43F, true,  {  }  }, // 110
1549  { "VAALE1IS", 0x41F, true,  {  }  }, // 111
1550  { "VAALE1ISnXS", 0x49F, true,  { AArch64::FeatureXS }  }, // 112
1551  { "VAALE1nXS", 0x4BF, true,  { AArch64::FeatureXS }  }, // 113
1552  { "VAALE1OS", 0x40F, true,  { AArch64::FeatureTLB_RMI }  }, // 114
1553  { "VAALE1OSnXS", 0x48F, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 115
1554  { "VAE1", 0x439, true,  {  }  }, // 116
1555  { "VAE1IS", 0x419, true,  {  }  }, // 117
1556  { "VAE1ISnXS", 0x499, true,  { AArch64::FeatureXS }  }, // 118
1557  { "VAE1nXS", 0x4B9, true,  { AArch64::FeatureXS }  }, // 119
1558  { "VAE1OS", 0x409, true,  { AArch64::FeatureTLB_RMI }  }, // 120
1559  { "VAE1OSnXS", 0x489, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 121
1560  { "VAE2", 0x2439, true,  {  }  }, // 122
1561  { "VAE2IS", 0x2419, true,  {  }  }, // 123
1562  { "VAE2ISnXS", 0x2499, true,  { AArch64::FeatureXS }  }, // 124
1563  { "VAE2nXS", 0x24B9, true,  { AArch64::FeatureXS }  }, // 125
1564  { "VAE2OS", 0x2409, true,  { AArch64::FeatureTLB_RMI }  }, // 126
1565  { "VAE2OSnXS", 0x2489, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 127
1566  { "VAE3", 0x3439, true,  {  }  }, // 128
1567  { "VAE3IS", 0x3419, true,  {  }  }, // 129
1568  { "VAE3ISnXS", 0x3499, true,  { AArch64::FeatureXS }  }, // 130
1569  { "VAE3nXS", 0x34B9, true,  { AArch64::FeatureXS }  }, // 131
1570  { "VAE3OS", 0x3409, true,  { AArch64::FeatureTLB_RMI }  }, // 132
1571  { "VAE3OSnXS", 0x3489, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 133
1572  { "VALE1", 0x43D, true,  {  }  }, // 134
1573  { "VALE1IS", 0x41D, true,  {  }  }, // 135
1574  { "VALE1ISnXS", 0x49D, true,  { AArch64::FeatureXS }  }, // 136
1575  { "VALE1nXS", 0x4BD, true,  { AArch64::FeatureXS }  }, // 137
1576  { "VALE1OS", 0x40D, true,  { AArch64::FeatureTLB_RMI }  }, // 138
1577  { "VALE1OSnXS", 0x48D, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 139
1578  { "VALE2", 0x243D, true,  {  }  }, // 140
1579  { "VALE2IS", 0x241D, true,  {  }  }, // 141
1580  { "VALE2ISnXS", 0x249D, true,  { AArch64::FeatureXS }  }, // 142
1581  { "VALE2nXS", 0x24BD, true,  { AArch64::FeatureXS }  }, // 143
1582  { "VALE2OS", 0x240D, true,  { AArch64::FeatureTLB_RMI }  }, // 144
1583  { "VALE2OSnXS", 0x248D, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 145
1584  { "VALE3", 0x343D, true,  {  }  }, // 146
1585  { "VALE3IS", 0x341D, true,  {  }  }, // 147
1586  { "VALE3ISnXS", 0x349D, true,  { AArch64::FeatureXS }  }, // 148
1587  { "VALE3nXS", 0x34BD, true,  { AArch64::FeatureXS }  }, // 149
1588  { "VALE3OS", 0x340D, true,  { AArch64::FeatureTLB_RMI }  }, // 150
1589  { "VALE3OSnXS", 0x348D, true,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 151
1590  { "VMALLE1", 0x438, false,  {  }  }, // 152
1591  { "VMALLE1IS", 0x418, false,  {  }  }, // 153
1592  { "VMALLE1ISnXS", 0x498, false,  { AArch64::FeatureXS }  }, // 154
1593  { "VMALLE1nXS", 0x4B8, false,  { AArch64::FeatureXS }  }, // 155
1594  { "VMALLE1OS", 0x408, false,  { AArch64::FeatureTLB_RMI }  }, // 156
1595  { "VMALLE1OSnXS", 0x488, false,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 157
1596  { "VMALLS12E1", 0x243E, false,  {  }  }, // 158
1597  { "VMALLS12E1IS", 0x241E, false,  {  }  }, // 159
1598  { "VMALLS12E1ISnXS", 0x249E, false,  { AArch64::FeatureXS }  }, // 160
1599  { "VMALLS12E1nXS", 0x24BE, false,  { AArch64::FeatureXS }  }, // 161
1600  { "VMALLS12E1OS", 0x240E, false,  { AArch64::FeatureTLB_RMI }  }, // 162
1601  { "VMALLS12E1OSnXS", 0x248E, false,  { AArch64::FeatureTLB_RMI, AArch64::FeatureXS }  }, // 163
1602 };
1603
1604const TLBI *lookupTLBIByEncoding(uint16_t Encoding) {
1605  struct IndexType {
1606    uint16_t Encoding;
1607    unsigned _index;
1608  };
1609  static const struct IndexType Index[] = {
1610    { 0x408, 156 },
1611    { 0x409, 120 },
1612    { 0x40A, 22 },
1613    { 0x40B, 108 },
1614    { 0x40D, 138 },
1615    { 0x40F, 114 },
1616    { 0x411, 69 },
1617    { 0x413, 57 },
1618    { 0x415, 87 },
1619    { 0x417, 63 },
1620    { 0x418, 153 },
1621    { 0x419, 117 },
1622    { 0x41A, 19 },
1623    { 0x41B, 105 },
1624    { 0x41D, 135 },
1625    { 0x41F, 111 },
1626    { 0x429, 72 },
1627    { 0x42B, 60 },
1628    { 0x42D, 90 },
1629    { 0x42F, 66 },
1630    { 0x431, 68 },
1631    { 0x433, 56 },
1632    { 0x435, 86 },
1633    { 0x437, 62 },
1634    { 0x438, 152 },
1635    { 0x439, 116 },
1636    { 0x43A, 18 },
1637    { 0x43B, 104 },
1638    { 0x43D, 134 },
1639    { 0x43F, 110 },
1640    { 0x488, 157 },
1641    { 0x489, 121 },
1642    { 0x48A, 23 },
1643    { 0x48B, 109 },
1644    { 0x48D, 139 },
1645    { 0x48F, 115 },
1646    { 0x491, 70 },
1647    { 0x493, 58 },
1648    { 0x495, 88 },
1649    { 0x497, 64 },
1650    { 0x498, 154 },
1651    { 0x499, 118 },
1652    { 0x49A, 20 },
1653    { 0x49B, 106 },
1654    { 0x49D, 136 },
1655    { 0x49F, 112 },
1656    { 0x4A9, 73 },
1657    { 0x4AB, 61 },
1658    { 0x4AD, 91 },
1659    { 0x4AF, 67 },
1660    { 0x4B1, 71 },
1661    { 0x4B3, 59 },
1662    { 0x4B5, 89 },
1663    { 0x4B7, 65 },
1664    { 0x4B8, 155 },
1665    { 0x4B9, 119 },
1666    { 0x4BA, 21 },
1667    { 0x4BB, 107 },
1668    { 0x4BD, 137 },
1669    { 0x4BF, 113 },
1670    { 0x2401, 25 },
1671    { 0x2402, 41 },
1672    { 0x2405, 31 },
1673    { 0x2406, 47 },
1674    { 0x2408, 10 },
1675    { 0x2409, 126 },
1676    { 0x240C, 4 },
1677    { 0x240D, 144 },
1678    { 0x240E, 162 },
1679    { 0x2411, 75 },
1680    { 0x2415, 93 },
1681    { 0x2418, 7 },
1682    { 0x2419, 123 },
1683    { 0x241C, 1 },
1684    { 0x241D, 141 },
1685    { 0x241E, 159 },
1686    { 0x2420, 28 },
1687    { 0x2421, 24 },
1688    { 0x2422, 40 },
1689    { 0x2423, 44 },
1690    { 0x2424, 34 },
1691    { 0x2425, 30 },
1692    { 0x2426, 46 },
1693    { 0x2427, 50 },
1694    { 0x2429, 78 },
1695    { 0x242D, 96 },
1696    { 0x2431, 74 },
1697    { 0x2435, 92 },
1698    { 0x2438, 6 },
1699    { 0x2439, 122 },
1700    { 0x243C, 0 },
1701    { 0x243D, 140 },
1702    { 0x243E, 158 },
1703    { 0x2481, 26 },
1704    { 0x2482, 42 },
1705    { 0x2485, 32 },
1706    { 0x2486, 48 },
1707    { 0x2488, 11 },
1708    { 0x2489, 127 },
1709    { 0x248C, 5 },
1710    { 0x248D, 145 },
1711    { 0x248E, 163 },
1712    { 0x2491, 76 },
1713    { 0x2495, 94 },
1714    { 0x2498, 8 },
1715    { 0x2499, 124 },
1716    { 0x249C, 2 },
1717    { 0x249D, 142 },
1718    { 0x249E, 160 },
1719    { 0x24A0, 29 },
1720    { 0x24A1, 27 },
1721    { 0x24A2, 43 },
1722    { 0x24A3, 45 },
1723    { 0x24A4, 35 },
1724    { 0x24A5, 33 },
1725    { 0x24A6, 49 },
1726    { 0x24A7, 51 },
1727    { 0x24A9, 79 },
1728    { 0x24AD, 97 },
1729    { 0x24B1, 77 },
1730    { 0x24B5, 95 },
1731    { 0x24B8, 9 },
1732    { 0x24B9, 125 },
1733    { 0x24BC, 3 },
1734    { 0x24BD, 143 },
1735    { 0x24BE, 161 },
1736    { 0x3408, 16 },
1737    { 0x3409, 132 },
1738    { 0x340C, 38 },
1739    { 0x340D, 150 },
1740    { 0x3411, 81 },
1741    { 0x3415, 99 },
1742    { 0x3418, 13 },
1743    { 0x3419, 129 },
1744    { 0x341D, 147 },
1745    { 0x3423, 54 },
1746    { 0x3427, 52 },
1747    { 0x3429, 84 },
1748    { 0x342D, 102 },
1749    { 0x3431, 80 },
1750    { 0x3435, 98 },
1751    { 0x3438, 12 },
1752    { 0x3439, 128 },
1753    { 0x343C, 36 },
1754    { 0x343D, 146 },
1755    { 0x3488, 17 },
1756    { 0x3489, 133 },
1757    { 0x348C, 39 },
1758    { 0x348D, 151 },
1759    { 0x3491, 82 },
1760    { 0x3495, 100 },
1761    { 0x3498, 14 },
1762    { 0x3499, 130 },
1763    { 0x349D, 148 },
1764    { 0x34A3, 55 },
1765    { 0x34A7, 53 },
1766    { 0x34A9, 85 },
1767    { 0x34AD, 103 },
1768    { 0x34B1, 83 },
1769    { 0x34B5, 101 },
1770    { 0x34B8, 15 },
1771    { 0x34B9, 131 },
1772    { 0x34BC, 37 },
1773    { 0x34BD, 149 },
1774  };
1775
1776  struct KeyType {
1777    uint16_t Encoding;
1778  };
1779  KeyType Key = {Encoding};
1780  auto Table = ArrayRef(Index);
1781  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1782    [](const IndexType &LHS, const KeyType &RHS) {
1783      if (LHS.Encoding < RHS.Encoding)
1784        return true;
1785      if (LHS.Encoding > RHS.Encoding)
1786        return false;
1787      return false;
1788    });
1789
1790  if (Idx == Table.end() ||
1791      Key.Encoding != Idx->Encoding)
1792    return nullptr;
1793  return &TLBITable[Idx->_index];
1794}
1795
1796const TLBI *lookupTLBIByName(StringRef Name) {
1797  struct IndexType {
1798    const char * Name;
1799    unsigned _index;
1800  };
1801  static const struct IndexType Index[] = {
1802    { "ALLE1", 0 },
1803    { "ALLE1IS", 1 },
1804    { "ALLE1ISNXS", 2 },
1805    { "ALLE1NXS", 3 },
1806    { "ALLE1OS", 4 },
1807    { "ALLE1OSNXS", 5 },
1808    { "ALLE2", 6 },
1809    { "ALLE2IS", 7 },
1810    { "ALLE2ISNXS", 8 },
1811    { "ALLE2NXS", 9 },
1812    { "ALLE2OS", 10 },
1813    { "ALLE2OSNXS", 11 },
1814    { "ALLE3", 12 },
1815    { "ALLE3IS", 13 },
1816    { "ALLE3ISNXS", 14 },
1817    { "ALLE3NXS", 15 },
1818    { "ALLE3OS", 16 },
1819    { "ALLE3OSNXS", 17 },
1820    { "ASIDE1", 18 },
1821    { "ASIDE1IS", 19 },
1822    { "ASIDE1ISNXS", 20 },
1823    { "ASIDE1NXS", 21 },
1824    { "ASIDE1OS", 22 },
1825    { "ASIDE1OSNXS", 23 },
1826    { "IPAS2E1", 24 },
1827    { "IPAS2E1IS", 25 },
1828    { "IPAS2E1ISNXS", 26 },
1829    { "IPAS2E1NXS", 27 },
1830    { "IPAS2E1OS", 28 },
1831    { "IPAS2E1OSNXS", 29 },
1832    { "IPAS2LE1", 30 },
1833    { "IPAS2LE1IS", 31 },
1834    { "IPAS2LE1ISNXS", 32 },
1835    { "IPAS2LE1NXS", 33 },
1836    { "IPAS2LE1OS", 34 },
1837    { "IPAS2LE1OSNXS", 35 },
1838    { "PAALL", 36 },
1839    { "PAALLNXS", 37 },
1840    { "PAALLOS", 38 },
1841    { "PAALLOSNXS", 39 },
1842    { "RIPAS2E1", 40 },
1843    { "RIPAS2E1IS", 41 },
1844    { "RIPAS2E1ISNXS", 42 },
1845    { "RIPAS2E1NXS", 43 },
1846    { "RIPAS2E1OS", 44 },
1847    { "RIPAS2E1OSNXS", 45 },
1848    { "RIPAS2LE1", 46 },
1849    { "RIPAS2LE1IS", 47 },
1850    { "RIPAS2LE1ISNXS", 48 },
1851    { "RIPAS2LE1NXS", 49 },
1852    { "RIPAS2LE1OS", 50 },
1853    { "RIPAS2LE1OSNXS", 51 },
1854    { "RPALOS", 52 },
1855    { "RPALOSNXS", 53 },
1856    { "RPAOS", 54 },
1857    { "RPAOSNXS", 55 },
1858    { "RVAAE1", 56 },
1859    { "RVAAE1IS", 57 },
1860    { "RVAAE1ISNXS", 58 },
1861    { "RVAAE1NXS", 59 },
1862    { "RVAAE1OS", 60 },
1863    { "RVAAE1OSNXS", 61 },
1864    { "RVAALE1", 62 },
1865    { "RVAALE1IS", 63 },
1866    { "RVAALE1ISNXS", 64 },
1867    { "RVAALE1NXS", 65 },
1868    { "RVAALE1OS", 66 },
1869    { "RVAALE1OSNXS", 67 },
1870    { "RVAE1", 68 },
1871    { "RVAE1IS", 69 },
1872    { "RVAE1ISNXS", 70 },
1873    { "RVAE1NXS", 71 },
1874    { "RVAE1OS", 72 },
1875    { "RVAE1OSNXS", 73 },
1876    { "RVAE2", 74 },
1877    { "RVAE2IS", 75 },
1878    { "RVAE2ISNXS", 76 },
1879    { "RVAE2NXS", 77 },
1880    { "RVAE2OS", 78 },
1881    { "RVAE2OSNXS", 79 },
1882    { "RVAE3", 80 },
1883    { "RVAE3IS", 81 },
1884    { "RVAE3ISNXS", 82 },
1885    { "RVAE3NXS", 83 },
1886    { "RVAE3OS", 84 },
1887    { "RVAE3OSNXS", 85 },
1888    { "RVALE1", 86 },
1889    { "RVALE1IS", 87 },
1890    { "RVALE1ISNXS", 88 },
1891    { "RVALE1NXS", 89 },
1892    { "RVALE1OS", 90 },
1893    { "RVALE1OSNXS", 91 },
1894    { "RVALE2", 92 },
1895    { "RVALE2IS", 93 },
1896    { "RVALE2ISNXS", 94 },
1897    { "RVALE2NXS", 95 },
1898    { "RVALE2OS", 96 },
1899    { "RVALE2OSNXS", 97 },
1900    { "RVALE3", 98 },
1901    { "RVALE3IS", 99 },
1902    { "RVALE3ISNXS", 100 },
1903    { "RVALE3NXS", 101 },
1904    { "RVALE3OS", 102 },
1905    { "RVALE3OSNXS", 103 },
1906    { "VAAE1", 104 },
1907    { "VAAE1IS", 105 },
1908    { "VAAE1ISNXS", 106 },
1909    { "VAAE1NXS", 107 },
1910    { "VAAE1OS", 108 },
1911    { "VAAE1OSNXS", 109 },
1912    { "VAALE1", 110 },
1913    { "VAALE1IS", 111 },
1914    { "VAALE1ISNXS", 112 },
1915    { "VAALE1NXS", 113 },
1916    { "VAALE1OS", 114 },
1917    { "VAALE1OSNXS", 115 },
1918    { "VAE1", 116 },
1919    { "VAE1IS", 117 },
1920    { "VAE1ISNXS", 118 },
1921    { "VAE1NXS", 119 },
1922    { "VAE1OS", 120 },
1923    { "VAE1OSNXS", 121 },
1924    { "VAE2", 122 },
1925    { "VAE2IS", 123 },
1926    { "VAE2ISNXS", 124 },
1927    { "VAE2NXS", 125 },
1928    { "VAE2OS", 126 },
1929    { "VAE2OSNXS", 127 },
1930    { "VAE3", 128 },
1931    { "VAE3IS", 129 },
1932    { "VAE3ISNXS", 130 },
1933    { "VAE3NXS", 131 },
1934    { "VAE3OS", 132 },
1935    { "VAE3OSNXS", 133 },
1936    { "VALE1", 134 },
1937    { "VALE1IS", 135 },
1938    { "VALE1ISNXS", 136 },
1939    { "VALE1NXS", 137 },
1940    { "VALE1OS", 138 },
1941    { "VALE1OSNXS", 139 },
1942    { "VALE2", 140 },
1943    { "VALE2IS", 141 },
1944    { "VALE2ISNXS", 142 },
1945    { "VALE2NXS", 143 },
1946    { "VALE2OS", 144 },
1947    { "VALE2OSNXS", 145 },
1948    { "VALE3", 146 },
1949    { "VALE3IS", 147 },
1950    { "VALE3ISNXS", 148 },
1951    { "VALE3NXS", 149 },
1952    { "VALE3OS", 150 },
1953    { "VALE3OSNXS", 151 },
1954    { "VMALLE1", 152 },
1955    { "VMALLE1IS", 153 },
1956    { "VMALLE1ISNXS", 154 },
1957    { "VMALLE1NXS", 155 },
1958    { "VMALLE1OS", 156 },
1959    { "VMALLE1OSNXS", 157 },
1960    { "VMALLS12E1", 158 },
1961    { "VMALLS12E1IS", 159 },
1962    { "VMALLS12E1ISNXS", 160 },
1963    { "VMALLS12E1NXS", 161 },
1964    { "VMALLS12E1OS", 162 },
1965    { "VMALLS12E1OSNXS", 163 },
1966  };
1967
1968  struct KeyType {
1969    std::string Name;
1970  };
1971  KeyType Key = {Name.upper()};
1972  auto Table = ArrayRef(Index);
1973  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
1974    [](const IndexType &LHS, const KeyType &RHS) {
1975      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
1976      if (CmpName < 0) return true;
1977      if (CmpName > 0) return false;
1978      return false;
1979    });
1980
1981  if (Idx == Table.end() ||
1982      Key.Name != Idx->Name)
1983    return nullptr;
1984  return &TLBITable[Idx->_index];
1985}
1986#endif
1987
1988#ifdef GET_AT_DECL
1989const AT *lookupATByName(StringRef Name);
1990const AT *lookupATByEncoding(uint16_t Encoding);
1991#endif
1992
1993#ifdef GET_AT_IMPL
1994constexpr AT ATsList[] = {
1995  { "S12E0R", 0x23C6,  {}  }, // 0
1996  { "S12E0W", 0x23C7,  {}  }, // 1
1997  { "S12E1R", 0x23C4,  {}  }, // 2
1998  { "S12E1W", 0x23C5,  {}  }, // 3
1999  { "S1E0R", 0x3C2,  {}  }, // 4
2000  { "S1E0W", 0x3C3,  {}  }, // 5
2001  { "S1E1R", 0x3C0,  {}  }, // 6
2002  { "S1E1RP", 0x3C8,  {AArch64::FeaturePAN_RWV}  }, // 7
2003  { "S1E1W", 0x3C1,  {}  }, // 8
2004  { "S1E1WP", 0x3C9,  {AArch64::FeaturePAN_RWV}  }, // 9
2005  { "S1E2R", 0x23C0,  {}  }, // 10
2006  { "S1E2W", 0x23C1,  {}  }, // 11
2007  { "S1E3R", 0x33C0,  {}  }, // 12
2008  { "S1E3W", 0x33C1,  {}  }, // 13
2009 };
2010
2011const AT *lookupATByName(StringRef Name) {
2012  struct IndexType {
2013    const char * Name;
2014    unsigned _index;
2015  };
2016  static const struct IndexType Index[] = {
2017    { "S12E0R", 0 },
2018    { "S12E0W", 1 },
2019    { "S12E1R", 2 },
2020    { "S12E1W", 3 },
2021    { "S1E0R", 4 },
2022    { "S1E0W", 5 },
2023    { "S1E1R", 6 },
2024    { "S1E1RP", 7 },
2025    { "S1E1W", 8 },
2026    { "S1E1WP", 9 },
2027    { "S1E2R", 10 },
2028    { "S1E2W", 11 },
2029    { "S1E3R", 12 },
2030    { "S1E3W", 13 },
2031  };
2032
2033  struct KeyType {
2034    std::string Name;
2035  };
2036  KeyType Key = {Name.upper()};
2037  auto Table = ArrayRef(Index);
2038  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2039    [](const IndexType &LHS, const KeyType &RHS) {
2040      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
2041      if (CmpName < 0) return true;
2042      if (CmpName > 0) return false;
2043      return false;
2044    });
2045
2046  if (Idx == Table.end() ||
2047      Key.Name != Idx->Name)
2048    return nullptr;
2049  return &ATsList[Idx->_index];
2050}
2051
2052const AT *lookupATByEncoding(uint16_t Encoding) {
2053  struct IndexType {
2054    uint16_t Encoding;
2055    unsigned _index;
2056  };
2057  static const struct IndexType Index[] = {
2058    { 0x3C0, 6 },
2059    { 0x3C1, 8 },
2060    { 0x3C2, 4 },
2061    { 0x3C3, 5 },
2062    { 0x3C8, 7 },
2063    { 0x3C9, 9 },
2064    { 0x23C0, 10 },
2065    { 0x23C1, 11 },
2066    { 0x23C4, 2 },
2067    { 0x23C5, 3 },
2068    { 0x23C6, 0 },
2069    { 0x23C7, 1 },
2070    { 0x33C0, 12 },
2071    { 0x33C1, 13 },
2072  };
2073
2074  struct KeyType {
2075    uint16_t Encoding;
2076  };
2077  KeyType Key = {Encoding};
2078  auto Table = ArrayRef(Index);
2079  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2080    [](const IndexType &LHS, const KeyType &RHS) {
2081      if (LHS.Encoding < RHS.Encoding)
2082        return true;
2083      if (LHS.Encoding > RHS.Encoding)
2084        return false;
2085      return false;
2086    });
2087
2088  if (Idx == Table.end() ||
2089      Key.Encoding != Idx->Encoding)
2090    return nullptr;
2091  return &ATsList[Idx->_index];
2092}
2093#endif
2094
2095#ifdef GET_BTI_DECL
2096const BTI *lookupBTIByName(StringRef Name);
2097const BTI *lookupBTIByEncoding(uint8_t Encoding);
2098#endif
2099
2100#ifdef GET_BTI_IMPL
2101constexpr BTI BTIsList[] = {
2102  { "c", 0x2 }, // 0
2103  { "j", 0x4 }, // 1
2104  { "jc", 0x6 }, // 2
2105 };
2106
2107const BTI *lookupBTIByName(StringRef Name) {
2108  struct IndexType {
2109    const char * Name;
2110    unsigned _index;
2111  };
2112  static const struct IndexType Index[] = {
2113    { "C", 0 },
2114    { "J", 1 },
2115    { "JC", 2 },
2116  };
2117
2118  struct KeyType {
2119    std::string Name;
2120  };
2121  KeyType Key = {Name.upper()};
2122  auto Table = ArrayRef(Index);
2123  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2124    [](const IndexType &LHS, const KeyType &RHS) {
2125      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
2126      if (CmpName < 0) return true;
2127      if (CmpName > 0) return false;
2128      return false;
2129    });
2130
2131  if (Idx == Table.end() ||
2132      Key.Name != Idx->Name)
2133    return nullptr;
2134  return &BTIsList[Idx->_index];
2135}
2136
2137const BTI *lookupBTIByEncoding(uint8_t Encoding) {
2138  struct IndexType {
2139    uint8_t Encoding;
2140    unsigned _index;
2141  };
2142  static const struct IndexType Index[] = {
2143    { 0x2, 0 },
2144    { 0x4, 1 },
2145    { 0x6, 2 },
2146  };
2147
2148  struct KeyType {
2149    uint8_t Encoding;
2150  };
2151  KeyType Key = {Encoding};
2152  auto Table = ArrayRef(Index);
2153  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2154    [](const IndexType &LHS, const KeyType &RHS) {
2155      if (LHS.Encoding < RHS.Encoding)
2156        return true;
2157      if (LHS.Encoding > RHS.Encoding)
2158        return false;
2159      return false;
2160    });
2161
2162  if (Idx == Table.end() ||
2163      Key.Encoding != Idx->Encoding)
2164    return nullptr;
2165  return &BTIsList[Idx->_index];
2166}
2167#endif
2168
2169#ifdef GET_DB_DECL
2170const DB *lookupDBByName(StringRef Name);
2171const DB *lookupDBByEncoding(uint8_t Encoding);
2172#endif
2173
2174#ifdef GET_DB_IMPL
2175constexpr DB DBsList[] = {
2176  { "ish", 0xB }, // 0
2177  { "ishld", 0x9 }, // 1
2178  { "ishst", 0xA }, // 2
2179  { "ld", 0xD }, // 3
2180  { "nsh", 0x7 }, // 4
2181  { "nshld", 0x5 }, // 5
2182  { "nshst", 0x6 }, // 6
2183  { "osh", 0x3 }, // 7
2184  { "oshld", 0x1 }, // 8
2185  { "oshst", 0x2 }, // 9
2186  { "st", 0xE }, // 10
2187  { "sy", 0xF }, // 11
2188 };
2189
2190const DB *lookupDBByName(StringRef Name) {
2191  struct IndexType {
2192    const char * Name;
2193    unsigned _index;
2194  };
2195  static const struct IndexType Index[] = {
2196    { "ISH", 0 },
2197    { "ISHLD", 1 },
2198    { "ISHST", 2 },
2199    { "LD", 3 },
2200    { "NSH", 4 },
2201    { "NSHLD", 5 },
2202    { "NSHST", 6 },
2203    { "OSH", 7 },
2204    { "OSHLD", 8 },
2205    { "OSHST", 9 },
2206    { "ST", 10 },
2207    { "SY", 11 },
2208  };
2209
2210  struct KeyType {
2211    std::string Name;
2212  };
2213  KeyType Key = {Name.upper()};
2214  auto Table = ArrayRef(Index);
2215  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2216    [](const IndexType &LHS, const KeyType &RHS) {
2217      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
2218      if (CmpName < 0) return true;
2219      if (CmpName > 0) return false;
2220      return false;
2221    });
2222
2223  if (Idx == Table.end() ||
2224      Key.Name != Idx->Name)
2225    return nullptr;
2226  return &DBsList[Idx->_index];
2227}
2228
2229const DB *lookupDBByEncoding(uint8_t Encoding) {
2230  struct IndexType {
2231    uint8_t Encoding;
2232    unsigned _index;
2233  };
2234  static const struct IndexType Index[] = {
2235    { 0x1, 8 },
2236    { 0x2, 9 },
2237    { 0x3, 7 },
2238    { 0x5, 5 },
2239    { 0x6, 6 },
2240    { 0x7, 4 },
2241    { 0x9, 1 },
2242    { 0xA, 2 },
2243    { 0xB, 0 },
2244    { 0xD, 3 },
2245    { 0xE, 10 },
2246    { 0xF, 11 },
2247  };
2248
2249  struct KeyType {
2250    uint8_t Encoding;
2251  };
2252  KeyType Key = {Encoding};
2253  auto Table = ArrayRef(Index);
2254  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2255    [](const IndexType &LHS, const KeyType &RHS) {
2256      if (LHS.Encoding < RHS.Encoding)
2257        return true;
2258      if (LHS.Encoding > RHS.Encoding)
2259        return false;
2260      return false;
2261    });
2262
2263  if (Idx == Table.end() ||
2264      Key.Encoding != Idx->Encoding)
2265    return nullptr;
2266  return &DBsList[Idx->_index];
2267}
2268#endif
2269
2270#ifdef GET_DBNXS_DECL
2271const DBnXS *lookupDBnXSByName(StringRef Name);
2272const DBnXS *lookupDBnXSByEncoding(uint8_t Encoding);
2273const DBnXS *lookupDBnXSByImmValue(uint8_t ImmValue);
2274#endif
2275
2276#ifdef GET_DBNXS_IMPL
2277constexpr DBnXS DBnXSsList[] = {
2278  { "ishnxs", 0xB, 0x18,  {AArch64::FeatureXS}  }, // 0
2279  { "nshnxs", 0x7, 0x14,  {AArch64::FeatureXS}  }, // 1
2280  { "oshnxs", 0x3, 0x10,  {AArch64::FeatureXS}  }, // 2
2281  { "synxs", 0xF, 0x1C,  {AArch64::FeatureXS}  }, // 3
2282 };
2283
2284const DBnXS *lookupDBnXSByName(StringRef Name) {
2285  struct IndexType {
2286    const char * Name;
2287    unsigned _index;
2288  };
2289  static const struct IndexType Index[] = {
2290    { "ISHNXS", 0 },
2291    { "NSHNXS", 1 },
2292    { "OSHNXS", 2 },
2293    { "SYNXS", 3 },
2294  };
2295
2296  struct KeyType {
2297    std::string Name;
2298  };
2299  KeyType Key = {Name.upper()};
2300  auto Table = ArrayRef(Index);
2301  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2302    [](const IndexType &LHS, const KeyType &RHS) {
2303      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
2304      if (CmpName < 0) return true;
2305      if (CmpName > 0) return false;
2306      return false;
2307    });
2308
2309  if (Idx == Table.end() ||
2310      Key.Name != Idx->Name)
2311    return nullptr;
2312  return &DBnXSsList[Idx->_index];
2313}
2314
2315const DBnXS *lookupDBnXSByEncoding(uint8_t Encoding) {
2316  struct IndexType {
2317    uint8_t Encoding;
2318    unsigned _index;
2319  };
2320  static const struct IndexType Index[] = {
2321    { 0x3, 2 },
2322    { 0x7, 1 },
2323    { 0xB, 0 },
2324    { 0xF, 3 },
2325  };
2326
2327  struct KeyType {
2328    uint8_t Encoding;
2329  };
2330  KeyType Key = {Encoding};
2331  auto Table = ArrayRef(Index);
2332  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2333    [](const IndexType &LHS, const KeyType &RHS) {
2334      if (LHS.Encoding < RHS.Encoding)
2335        return true;
2336      if (LHS.Encoding > RHS.Encoding)
2337        return false;
2338      return false;
2339    });
2340
2341  if (Idx == Table.end() ||
2342      Key.Encoding != Idx->Encoding)
2343    return nullptr;
2344  return &DBnXSsList[Idx->_index];
2345}
2346
2347const DBnXS *lookupDBnXSByImmValue(uint8_t ImmValue) {
2348  struct IndexType {
2349    uint8_t ImmValue;
2350    unsigned _index;
2351  };
2352  static const struct IndexType Index[] = {
2353    { 0x10, 2 },
2354    { 0x14, 1 },
2355    { 0x18, 0 },
2356    { 0x1C, 3 },
2357  };
2358
2359  struct KeyType {
2360    uint8_t ImmValue;
2361  };
2362  KeyType Key = {ImmValue};
2363  auto Table = ArrayRef(Index);
2364  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2365    [](const IndexType &LHS, const KeyType &RHS) {
2366      if (LHS.ImmValue < RHS.ImmValue)
2367        return true;
2368      if (LHS.ImmValue > RHS.ImmValue)
2369        return false;
2370      return false;
2371    });
2372
2373  if (Idx == Table.end() ||
2374      Key.ImmValue != Idx->ImmValue)
2375    return nullptr;
2376  return &DBnXSsList[Idx->_index];
2377}
2378#endif
2379
2380#ifdef GET_DC_DECL
2381const DC *lookupDCByName(StringRef Name);
2382const DC *lookupDCByEncoding(uint16_t Encoding);
2383#endif
2384
2385#ifdef GET_DC_IMPL
2386constexpr DC DCsList[] = {
2387  { "CGDSW", 0x3D6,  {AArch64::FeatureMTE}  }, // 0
2388  { "CGDVAC", 0x1BD5,  {AArch64::FeatureMTE}  }, // 1
2389  { "CGDVADP", 0x1BED,  {AArch64::FeatureMTE}  }, // 2
2390  { "CGDVAP", 0x1BE5,  {AArch64::FeatureMTE}  }, // 3
2391  { "CGSW", 0x3D4,  {AArch64::FeatureMTE}  }, // 4
2392  { "CGVAC", 0x1BD3,  {AArch64::FeatureMTE}  }, // 5
2393  { "CGVADP", 0x1BEB,  {AArch64::FeatureMTE}  }, // 6
2394  { "CGVAP", 0x1BE3,  {AArch64::FeatureMTE}  }, // 7
2395  { "CIGDPAE", 0x23F7,  {AArch64::FeatureMEC}  }, // 8
2396  { "CIGDSW", 0x3F6,  {AArch64::FeatureMTE}  }, // 9
2397  { "CIGDVAC", 0x1BF5,  {AArch64::FeatureMTE}  }, // 10
2398  { "CIGSW", 0x3F4,  {AArch64::FeatureMTE}  }, // 11
2399  { "CIGVAC", 0x1BF3,  {AArch64::FeatureMTE}  }, // 12
2400  { "CIPAE", 0x23F0,  {AArch64::FeatureMEC}  }, // 13
2401  { "CISW", 0x3F2,  {}  }, // 14
2402  { "CIVAC", 0x1BF1,  {}  }, // 15
2403  { "CSW", 0x3D2,  {}  }, // 16
2404  { "CVAC", 0x1BD1,  {}  }, // 17
2405  { "CVADP", 0x1BE9,  {AArch64::FeatureCacheDeepPersist}  }, // 18
2406  { "CVAP", 0x1BE1,  {AArch64::FeatureCCPP}  }, // 19
2407  { "CVAU", 0x1BD9,  {}  }, // 20
2408  { "GVA", 0x1BA3,  {AArch64::FeatureMTE}  }, // 21
2409  { "GZVA", 0x1BA4,  {AArch64::FeatureMTE}  }, // 22
2410  { "IGDSW", 0x3B6,  {AArch64::FeatureMTE}  }, // 23
2411  { "IGDVAC", 0x3B5,  {AArch64::FeatureMTE}  }, // 24
2412  { "IGSW", 0x3B4,  {AArch64::FeatureMTE}  }, // 25
2413  { "IGVAC", 0x3B3,  {AArch64::FeatureMTE}  }, // 26
2414  { "ISW", 0x3B2,  {}  }, // 27
2415  { "IVAC", 0x3B1,  {}  }, // 28
2416  { "ZVA", 0x1BA1,  {}  }, // 29
2417 };
2418
2419const DC *lookupDCByName(StringRef Name) {
2420  struct IndexType {
2421    const char * Name;
2422    unsigned _index;
2423  };
2424  static const struct IndexType Index[] = {
2425    { "CGDSW", 0 },
2426    { "CGDVAC", 1 },
2427    { "CGDVADP", 2 },
2428    { "CGDVAP", 3 },
2429    { "CGSW", 4 },
2430    { "CGVAC", 5 },
2431    { "CGVADP", 6 },
2432    { "CGVAP", 7 },
2433    { "CIGDPAE", 8 },
2434    { "CIGDSW", 9 },
2435    { "CIGDVAC", 10 },
2436    { "CIGSW", 11 },
2437    { "CIGVAC", 12 },
2438    { "CIPAE", 13 },
2439    { "CISW", 14 },
2440    { "CIVAC", 15 },
2441    { "CSW", 16 },
2442    { "CVAC", 17 },
2443    { "CVADP", 18 },
2444    { "CVAP", 19 },
2445    { "CVAU", 20 },
2446    { "GVA", 21 },
2447    { "GZVA", 22 },
2448    { "IGDSW", 23 },
2449    { "IGDVAC", 24 },
2450    { "IGSW", 25 },
2451    { "IGVAC", 26 },
2452    { "ISW", 27 },
2453    { "IVAC", 28 },
2454    { "ZVA", 29 },
2455  };
2456
2457  struct KeyType {
2458    std::string Name;
2459  };
2460  KeyType Key = {Name.upper()};
2461  auto Table = ArrayRef(Index);
2462  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2463    [](const IndexType &LHS, const KeyType &RHS) {
2464      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
2465      if (CmpName < 0) return true;
2466      if (CmpName > 0) return false;
2467      return false;
2468    });
2469
2470  if (Idx == Table.end() ||
2471      Key.Name != Idx->Name)
2472    return nullptr;
2473  return &DCsList[Idx->_index];
2474}
2475
2476const DC *lookupDCByEncoding(uint16_t Encoding) {
2477  struct IndexType {
2478    uint16_t Encoding;
2479    unsigned _index;
2480  };
2481  static const struct IndexType Index[] = {
2482    { 0x3B1, 28 },
2483    { 0x3B2, 27 },
2484    { 0x3B3, 26 },
2485    { 0x3B4, 25 },
2486    { 0x3B5, 24 },
2487    { 0x3B6, 23 },
2488    { 0x3D2, 16 },
2489    { 0x3D4, 4 },
2490    { 0x3D6, 0 },
2491    { 0x3F2, 14 },
2492    { 0x3F4, 11 },
2493    { 0x3F6, 9 },
2494    { 0x1BA1, 29 },
2495    { 0x1BA3, 21 },
2496    { 0x1BA4, 22 },
2497    { 0x1BD1, 17 },
2498    { 0x1BD3, 5 },
2499    { 0x1BD5, 1 },
2500    { 0x1BD9, 20 },
2501    { 0x1BE1, 19 },
2502    { 0x1BE3, 7 },
2503    { 0x1BE5, 3 },
2504    { 0x1BE9, 18 },
2505    { 0x1BEB, 6 },
2506    { 0x1BED, 2 },
2507    { 0x1BF1, 15 },
2508    { 0x1BF3, 12 },
2509    { 0x1BF5, 10 },
2510    { 0x23F0, 13 },
2511    { 0x23F7, 8 },
2512  };
2513
2514  struct KeyType {
2515    uint16_t Encoding;
2516  };
2517  KeyType Key = {Encoding};
2518  auto Table = ArrayRef(Index);
2519  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2520    [](const IndexType &LHS, const KeyType &RHS) {
2521      if (LHS.Encoding < RHS.Encoding)
2522        return true;
2523      if (LHS.Encoding > RHS.Encoding)
2524        return false;
2525      return false;
2526    });
2527
2528  if (Idx == Table.end() ||
2529      Key.Encoding != Idx->Encoding)
2530    return nullptr;
2531  return &DCsList[Idx->_index];
2532}
2533#endif
2534
2535#ifdef GET_EXACTFPIMM_DECL
2536const ExactFPImm *lookupExactFPImmByEnum(uint8_t Enum);
2537const ExactFPImm *lookupExactFPImmByRepr(StringRef Repr);
2538#endif
2539
2540#ifdef GET_EXACTFPIMM_IMPL
2541constexpr ExactFPImm ExactFPImmsList[] = {
2542  { "half", 0x1, "0.5" }, // 0
2543  { "one", 0x2, "1.0" }, // 1
2544  { "two", 0x3, "2.0" }, // 2
2545  { "zero", 0x0, "0.0" }, // 3
2546 };
2547
2548const ExactFPImm *lookupExactFPImmByEnum(uint8_t Enum) {
2549  struct IndexType {
2550    uint8_t Enum;
2551    unsigned _index;
2552  };
2553  static const struct IndexType Index[] = {
2554    { 0x0, 3 },
2555    { 0x1, 0 },
2556    { 0x2, 1 },
2557    { 0x3, 2 },
2558  };
2559
2560  auto Table = ArrayRef(Index);
2561  size_t Idx = Enum;
2562  return Idx >= Table.size() ? nullptr : &ExactFPImmsList[Table[Idx]._index];
2563}
2564
2565const ExactFPImm *lookupExactFPImmByRepr(StringRef Repr) {
2566  struct IndexType {
2567    const char * Repr;
2568    unsigned _index;
2569  };
2570  static const struct IndexType Index[] = {
2571    { "0.0", 3 },
2572    { "0.5", 0 },
2573    { "1.0", 1 },
2574    { "2.0", 2 },
2575  };
2576
2577  struct KeyType {
2578    std::string Repr;
2579  };
2580  KeyType Key = {Repr.upper()};
2581  auto Table = ArrayRef(Index);
2582  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2583    [](const IndexType &LHS, const KeyType &RHS) {
2584      int CmpRepr = StringRef(LHS.Repr).compare(RHS.Repr);
2585      if (CmpRepr < 0) return true;
2586      if (CmpRepr > 0) return false;
2587      return false;
2588    });
2589
2590  if (Idx == Table.end() ||
2591      Key.Repr != Idx->Repr)
2592    return nullptr;
2593  return &ExactFPImmsList[Idx->_index];
2594}
2595#endif
2596
2597#ifdef GET_IC_DECL
2598const IC *lookupICByName(StringRef Name);
2599const IC *lookupICByEncoding(uint16_t Encoding);
2600#endif
2601
2602#ifdef GET_IC_IMPL
2603constexpr IC ICsList[] = {
2604  { "IALLU", 0x3A8, false }, // 0
2605  { "IALLUIS", 0x388, false }, // 1
2606  { "IVAU", 0x1BA9, true }, // 2
2607 };
2608
2609const IC *lookupICByName(StringRef Name) {
2610  struct IndexType {
2611    const char * Name;
2612    unsigned _index;
2613  };
2614  static const struct IndexType Index[] = {
2615    { "IALLU", 0 },
2616    { "IALLUIS", 1 },
2617    { "IVAU", 2 },
2618  };
2619
2620  struct KeyType {
2621    std::string Name;
2622  };
2623  KeyType Key = {Name.upper()};
2624  auto Table = ArrayRef(Index);
2625  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2626    [](const IndexType &LHS, const KeyType &RHS) {
2627      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
2628      if (CmpName < 0) return true;
2629      if (CmpName > 0) return false;
2630      return false;
2631    });
2632
2633  if (Idx == Table.end() ||
2634      Key.Name != Idx->Name)
2635    return nullptr;
2636  return &ICsList[Idx->_index];
2637}
2638
2639const IC *lookupICByEncoding(uint16_t Encoding) {
2640  struct IndexType {
2641    uint16_t Encoding;
2642    unsigned _index;
2643  };
2644  static const struct IndexType Index[] = {
2645    { 0x388, 1 },
2646    { 0x3A8, 0 },
2647    { 0x1BA9, 2 },
2648  };
2649
2650  struct KeyType {
2651    uint16_t Encoding;
2652  };
2653  KeyType Key = {Encoding};
2654  auto Table = ArrayRef(Index);
2655  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2656    [](const IndexType &LHS, const KeyType &RHS) {
2657      if (LHS.Encoding < RHS.Encoding)
2658        return true;
2659      if (LHS.Encoding > RHS.Encoding)
2660        return false;
2661      return false;
2662    });
2663
2664  if (Idx == Table.end() ||
2665      Key.Encoding != Idx->Encoding)
2666    return nullptr;
2667  return &ICsList[Idx->_index];
2668}
2669#endif
2670
2671#ifdef GET_ISB_DECL
2672const ISB *lookupISBByName(StringRef Name);
2673const ISB *lookupISBByEncoding(uint8_t Encoding);
2674#endif
2675
2676#ifdef GET_ISB_IMPL
2677constexpr ISB ISBsList[] = {
2678  { "sy", 0xF }, // 0
2679 };
2680
2681const ISB *lookupISBByName(StringRef Name) {
2682  struct IndexType {
2683    const char * Name;
2684    unsigned _index;
2685  };
2686  static const struct IndexType Index[] = {
2687    { "SY", 0 },
2688  };
2689
2690  struct KeyType {
2691    std::string Name;
2692  };
2693  KeyType Key = {Name.upper()};
2694  auto Table = ArrayRef(Index);
2695  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2696    [](const IndexType &LHS, const KeyType &RHS) {
2697      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
2698      if (CmpName < 0) return true;
2699      if (CmpName > 0) return false;
2700      return false;
2701    });
2702
2703  if (Idx == Table.end() ||
2704      Key.Name != Idx->Name)
2705    return nullptr;
2706  return &ISBsList[Idx->_index];
2707}
2708
2709const ISB *lookupISBByEncoding(uint8_t Encoding) {
2710  struct IndexType {
2711    uint8_t Encoding;
2712    unsigned _index;
2713  };
2714  static const struct IndexType Index[] = {
2715    { 0xF, 0 },
2716  };
2717
2718  struct KeyType {
2719    uint8_t Encoding;
2720  };
2721  KeyType Key = {Encoding};
2722  auto Table = ArrayRef(Index);
2723  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2724    [](const IndexType &LHS, const KeyType &RHS) {
2725      if (LHS.Encoding < RHS.Encoding)
2726        return true;
2727      if (LHS.Encoding > RHS.Encoding)
2728        return false;
2729      return false;
2730    });
2731
2732  if (Idx == Table.end() ||
2733      Key.Encoding != Idx->Encoding)
2734    return nullptr;
2735  return &ISBsList[Idx->_index];
2736}
2737#endif
2738
2739#ifdef GET_PRFM_DECL
2740const PRFM *lookupPRFMByName(StringRef Name);
2741const PRFM *lookupPRFMByEncoding(uint8_t Encoding);
2742#endif
2743
2744#ifdef GET_PRFM_IMPL
2745constexpr PRFM PRFMsList[] = {
2746  { "pldl1keep", 0x0,  {}  }, // 0
2747  { "pldl1strm", 0x1,  {}  }, // 1
2748  { "pldl2keep", 0x2,  {}  }, // 2
2749  { "pldl2strm", 0x3,  {}  }, // 3
2750  { "pldl3keep", 0x4,  {}  }, // 4
2751  { "pldl3strm", 0x5,  {}  }, // 5
2752  { "pldslckeep", 0x6,  {AArch64::FeaturePRFM_SLC}  }, // 6
2753  { "pldslcstrm", 0x7,  {AArch64::FeaturePRFM_SLC}  }, // 7
2754  { "plil1keep", 0x8,  {}  }, // 8
2755  { "plil1strm", 0x9,  {}  }, // 9
2756  { "plil2keep", 0xA,  {}  }, // 10
2757  { "plil2strm", 0xB,  {}  }, // 11
2758  { "plil3keep", 0xC,  {}  }, // 12
2759  { "plil3strm", 0xD,  {}  }, // 13
2760  { "plislckeep", 0xE,  {AArch64::FeaturePRFM_SLC}  }, // 14
2761  { "plislcstrm", 0xF,  {AArch64::FeaturePRFM_SLC}  }, // 15
2762  { "pstl1keep", 0x10,  {}  }, // 16
2763  { "pstl1strm", 0x11,  {}  }, // 17
2764  { "pstl2keep", 0x12,  {}  }, // 18
2765  { "pstl2strm", 0x13,  {}  }, // 19
2766  { "pstl3keep", 0x14,  {}  }, // 20
2767  { "pstl3strm", 0x15,  {}  }, // 21
2768  { "pstslckeep", 0x16,  {AArch64::FeaturePRFM_SLC}  }, // 22
2769  { "pstslcstrm", 0x17,  {AArch64::FeaturePRFM_SLC}  }, // 23
2770 };
2771
2772const PRFM *lookupPRFMByName(StringRef Name) {
2773  struct IndexType {
2774    const char * Name;
2775    unsigned _index;
2776  };
2777  static const struct IndexType Index[] = {
2778    { "PLDL1KEEP", 0 },
2779    { "PLDL1STRM", 1 },
2780    { "PLDL2KEEP", 2 },
2781    { "PLDL2STRM", 3 },
2782    { "PLDL3KEEP", 4 },
2783    { "PLDL3STRM", 5 },
2784    { "PLDSLCKEEP", 6 },
2785    { "PLDSLCSTRM", 7 },
2786    { "PLIL1KEEP", 8 },
2787    { "PLIL1STRM", 9 },
2788    { "PLIL2KEEP", 10 },
2789    { "PLIL2STRM", 11 },
2790    { "PLIL3KEEP", 12 },
2791    { "PLIL3STRM", 13 },
2792    { "PLISLCKEEP", 14 },
2793    { "PLISLCSTRM", 15 },
2794    { "PSTL1KEEP", 16 },
2795    { "PSTL1STRM", 17 },
2796    { "PSTL2KEEP", 18 },
2797    { "PSTL2STRM", 19 },
2798    { "PSTL3KEEP", 20 },
2799    { "PSTL3STRM", 21 },
2800    { "PSTSLCKEEP", 22 },
2801    { "PSTSLCSTRM", 23 },
2802  };
2803
2804  struct KeyType {
2805    std::string Name;
2806  };
2807  KeyType Key = {Name.upper()};
2808  auto Table = ArrayRef(Index);
2809  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2810    [](const IndexType &LHS, const KeyType &RHS) {
2811      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
2812      if (CmpName < 0) return true;
2813      if (CmpName > 0) return false;
2814      return false;
2815    });
2816
2817  if (Idx == Table.end() ||
2818      Key.Name != Idx->Name)
2819    return nullptr;
2820  return &PRFMsList[Idx->_index];
2821}
2822
2823const PRFM *lookupPRFMByEncoding(uint8_t Encoding) {
2824  struct IndexType {
2825    uint8_t Encoding;
2826    unsigned _index;
2827  };
2828  static const struct IndexType Index[] = {
2829    { 0x0, 0 },
2830    { 0x1, 1 },
2831    { 0x2, 2 },
2832    { 0x3, 3 },
2833    { 0x4, 4 },
2834    { 0x5, 5 },
2835    { 0x6, 6 },
2836    { 0x7, 7 },
2837    { 0x8, 8 },
2838    { 0x9, 9 },
2839    { 0xA, 10 },
2840    { 0xB, 11 },
2841    { 0xC, 12 },
2842    { 0xD, 13 },
2843    { 0xE, 14 },
2844    { 0xF, 15 },
2845    { 0x10, 16 },
2846    { 0x11, 17 },
2847    { 0x12, 18 },
2848    { 0x13, 19 },
2849    { 0x14, 20 },
2850    { 0x15, 21 },
2851    { 0x16, 22 },
2852    { 0x17, 23 },
2853  };
2854
2855  auto Table = ArrayRef(Index);
2856  size_t Idx = Encoding;
2857  return Idx >= Table.size() ? nullptr : &PRFMsList[Table[Idx]._index];
2858}
2859#endif
2860
2861#ifdef GET_PSB_DECL
2862const PSB *lookupPSBByName(StringRef Name);
2863const PSB *lookupPSBByEncoding(uint8_t Encoding);
2864#endif
2865
2866#ifdef GET_PSB_IMPL
2867constexpr PSB PSBsList[] = {
2868  { "csync", 0x11 }, // 0
2869 };
2870
2871const PSB *lookupPSBByName(StringRef Name) {
2872  struct IndexType {
2873    const char * Name;
2874    unsigned _index;
2875  };
2876  static const struct IndexType Index[] = {
2877    { "CSYNC", 0 },
2878  };
2879
2880  struct KeyType {
2881    std::string Name;
2882  };
2883  KeyType Key = {Name.upper()};
2884  auto Table = ArrayRef(Index);
2885  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2886    [](const IndexType &LHS, const KeyType &RHS) {
2887      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
2888      if (CmpName < 0) return true;
2889      if (CmpName > 0) return false;
2890      return false;
2891    });
2892
2893  if (Idx == Table.end() ||
2894      Key.Name != Idx->Name)
2895    return nullptr;
2896  return &PSBsList[Idx->_index];
2897}
2898
2899const PSB *lookupPSBByEncoding(uint8_t Encoding) {
2900  struct IndexType {
2901    uint8_t Encoding;
2902    unsigned _index;
2903  };
2904  static const struct IndexType Index[] = {
2905    { 0x11, 0 },
2906  };
2907
2908  struct KeyType {
2909    uint8_t Encoding;
2910  };
2911  KeyType Key = {Encoding};
2912  auto Table = ArrayRef(Index);
2913  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2914    [](const IndexType &LHS, const KeyType &RHS) {
2915      if (LHS.Encoding < RHS.Encoding)
2916        return true;
2917      if (LHS.Encoding > RHS.Encoding)
2918        return false;
2919      return false;
2920    });
2921
2922  if (Idx == Table.end() ||
2923      Key.Encoding != Idx->Encoding)
2924    return nullptr;
2925  return &PSBsList[Idx->_index];
2926}
2927#endif
2928
2929#ifdef GET_PSTATEIMM0_1_DECL
2930const PStateImm0_1 *lookupPStateImm0_1ByName(StringRef Name);
2931const PStateImm0_1 *lookupPStateImm0_1ByEncoding(uint16_t Encoding);
2932#endif
2933
2934#ifdef GET_PSTATEIMM0_1_IMPL
2935constexpr PStateImm0_1 PStateImm0_1sList[] = {
2936  { "ALLINT", 0x8,  {AArch64::FeatureNMI}  }, // 0
2937  { "PM", 0x48,  {}  }, // 1
2938 };
2939
2940const PStateImm0_1 *lookupPStateImm0_1ByName(StringRef Name) {
2941  struct IndexType {
2942    const char * Name;
2943    unsigned _index;
2944  };
2945  static const struct IndexType Index[] = {
2946    { "ALLINT", 0 },
2947    { "PM", 1 },
2948  };
2949
2950  struct KeyType {
2951    std::string Name;
2952  };
2953  KeyType Key = {Name.upper()};
2954  auto Table = ArrayRef(Index);
2955  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2956    [](const IndexType &LHS, const KeyType &RHS) {
2957      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
2958      if (CmpName < 0) return true;
2959      if (CmpName > 0) return false;
2960      return false;
2961    });
2962
2963  if (Idx == Table.end() ||
2964      Key.Name != Idx->Name)
2965    return nullptr;
2966  return &PStateImm0_1sList[Idx->_index];
2967}
2968
2969const PStateImm0_1 *lookupPStateImm0_1ByEncoding(uint16_t Encoding) {
2970  struct IndexType {
2971    uint16_t Encoding;
2972    unsigned _index;
2973  };
2974  static const struct IndexType Index[] = {
2975    { 0x8, 0 },
2976    { 0x48, 1 },
2977  };
2978
2979  struct KeyType {
2980    uint16_t Encoding;
2981  };
2982  KeyType Key = {Encoding};
2983  auto Table = ArrayRef(Index);
2984  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
2985    [](const IndexType &LHS, const KeyType &RHS) {
2986      if (LHS.Encoding < RHS.Encoding)
2987        return true;
2988      if (LHS.Encoding > RHS.Encoding)
2989        return false;
2990      return false;
2991    });
2992
2993  if (Idx == Table.end() ||
2994      Key.Encoding != Idx->Encoding)
2995    return nullptr;
2996  return &PStateImm0_1sList[Idx->_index];
2997}
2998#endif
2999
3000#ifdef GET_PSTATEIMM0_15_DECL
3001const PStateImm0_15 *lookupPStateImm0_15ByName(StringRef Name);
3002const PStateImm0_15 *lookupPStateImm0_15ByEncoding(uint8_t Encoding);
3003#endif
3004
3005#ifdef GET_PSTATEIMM0_15_IMPL
3006constexpr PStateImm0_15 PStateImm0_15sList[] = {
3007  { "DAIFClr", 0x1F,  {}  }, // 0
3008  { "DAIFSet", 0x1E,  {}  }, // 1
3009  { "DIT", 0x1A,  {AArch64::FeatureDIT}  }, // 2
3010  { "PAN", 0x4,  {AArch64::FeaturePAN}  }, // 3
3011  { "SPSel", 0x5,  {}  }, // 4
3012  { "SSBS", 0x19,  {AArch64::FeatureSSBS}  }, // 5
3013  { "TCO", 0x1C,  {AArch64::FeatureMTE}  }, // 6
3014  { "UAO", 0x3,  {AArch64::FeaturePsUAO}  }, // 7
3015 };
3016
3017const PStateImm0_15 *lookupPStateImm0_15ByName(StringRef Name) {
3018  struct IndexType {
3019    const char * Name;
3020    unsigned _index;
3021  };
3022  static const struct IndexType Index[] = {
3023    { "DAIFCLR", 0 },
3024    { "DAIFSET", 1 },
3025    { "DIT", 2 },
3026    { "PAN", 3 },
3027    { "SPSEL", 4 },
3028    { "SSBS", 5 },
3029    { "TCO", 6 },
3030    { "UAO", 7 },
3031  };
3032
3033  struct KeyType {
3034    std::string Name;
3035  };
3036  KeyType Key = {Name.upper()};
3037  auto Table = ArrayRef(Index);
3038  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
3039    [](const IndexType &LHS, const KeyType &RHS) {
3040      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
3041      if (CmpName < 0) return true;
3042      if (CmpName > 0) return false;
3043      return false;
3044    });
3045
3046  if (Idx == Table.end() ||
3047      Key.Name != Idx->Name)
3048    return nullptr;
3049  return &PStateImm0_15sList[Idx->_index];
3050}
3051
3052const PStateImm0_15 *lookupPStateImm0_15ByEncoding(uint8_t Encoding) {
3053  struct IndexType {
3054    uint8_t Encoding;
3055    unsigned _index;
3056  };
3057  static const struct IndexType Index[] = {
3058    { 0x3, 7 },
3059    { 0x4, 3 },
3060    { 0x5, 4 },
3061    { 0x19, 5 },
3062    { 0x1A, 2 },
3063    { 0x1C, 6 },
3064    { 0x1E, 1 },
3065    { 0x1F, 0 },
3066  };
3067
3068  struct KeyType {
3069    uint8_t Encoding;
3070  };
3071  KeyType Key = {Encoding};
3072  auto Table = ArrayRef(Index);
3073  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
3074    [](const IndexType &LHS, const KeyType &RHS) {
3075      if (LHS.Encoding < RHS.Encoding)
3076        return true;
3077      if (LHS.Encoding > RHS.Encoding)
3078        return false;
3079      return false;
3080    });
3081
3082  if (Idx == Table.end() ||
3083      Key.Encoding != Idx->Encoding)
3084    return nullptr;
3085  return &PStateImm0_15sList[Idx->_index];
3086}
3087#endif
3088
3089#ifdef GET_RPRFM_DECL
3090const RPRFM *lookupRPRFMByName(StringRef Name);
3091const RPRFM *lookupRPRFMByEncoding(uint8_t Encoding);
3092#endif
3093
3094#ifdef GET_RPRFM_IMPL
3095constexpr RPRFM RPRFMsList[] = {
3096  { "pldkeep", 0x0,  {}  }, // 0
3097  { "pldstrm", 0x4,  {}  }, // 1
3098  { "pstkeep", 0x1,  {}  }, // 2
3099  { "pststrm", 0x5,  {}  }, // 3
3100 };
3101
3102const RPRFM *lookupRPRFMByName(StringRef Name) {
3103  struct IndexType {
3104    const char * Name;
3105    unsigned _index;
3106  };
3107  static const struct IndexType Index[] = {
3108    { "PLDKEEP", 0 },
3109    { "PLDSTRM", 1 },
3110    { "PSTKEEP", 2 },
3111    { "PSTSTRM", 3 },
3112  };
3113
3114  struct KeyType {
3115    std::string Name;
3116  };
3117  KeyType Key = {Name.upper()};
3118  auto Table = ArrayRef(Index);
3119  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
3120    [](const IndexType &LHS, const KeyType &RHS) {
3121      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
3122      if (CmpName < 0) return true;
3123      if (CmpName > 0) return false;
3124      return false;
3125    });
3126
3127  if (Idx == Table.end() ||
3128      Key.Name != Idx->Name)
3129    return nullptr;
3130  return &RPRFMsList[Idx->_index];
3131}
3132
3133const RPRFM *lookupRPRFMByEncoding(uint8_t Encoding) {
3134  struct IndexType {
3135    uint8_t Encoding;
3136    unsigned _index;
3137  };
3138  static const struct IndexType Index[] = {
3139    { 0x0, 0 },
3140    { 0x1, 2 },
3141    { 0x4, 1 },
3142    { 0x5, 3 },
3143  };
3144
3145  struct KeyType {
3146    uint8_t Encoding;
3147  };
3148  KeyType Key = {Encoding};
3149  auto Table = ArrayRef(Index);
3150  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
3151    [](const IndexType &LHS, const KeyType &RHS) {
3152      if (LHS.Encoding < RHS.Encoding)
3153        return true;
3154      if (LHS.Encoding > RHS.Encoding)
3155        return false;
3156      return false;
3157    });
3158
3159  if (Idx == Table.end() ||
3160      Key.Encoding != Idx->Encoding)
3161    return nullptr;
3162  return &RPRFMsList[Idx->_index];
3163}
3164#endif
3165
3166#ifdef GET_SVCR_DECL
3167const SVCR *lookupSVCRByName(StringRef Name);
3168const SVCR *lookupSVCRByEncoding(uint8_t Encoding);
3169#endif
3170
3171#ifdef GET_SVCR_IMPL
3172constexpr SVCR SVCRsList[] = {
3173  { "SVCRSM", 0x1,  {AArch64::FeatureSME}  }, // 0
3174  { "SVCRSMZA", 0x3,  {AArch64::FeatureSME}  }, // 1
3175  { "SVCRZA", 0x2,  {AArch64::FeatureSME}  }, // 2
3176 };
3177
3178const SVCR *lookupSVCRByName(StringRef Name) {
3179  struct IndexType {
3180    const char * Name;
3181    unsigned _index;
3182  };
3183  static const struct IndexType Index[] = {
3184    { "SVCRSM", 0 },
3185    { "SVCRSMZA", 1 },
3186    { "SVCRZA", 2 },
3187  };
3188
3189  struct KeyType {
3190    std::string Name;
3191  };
3192  KeyType Key = {Name.upper()};
3193  auto Table = ArrayRef(Index);
3194  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
3195    [](const IndexType &LHS, const KeyType &RHS) {
3196      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
3197      if (CmpName < 0) return true;
3198      if (CmpName > 0) return false;
3199      return false;
3200    });
3201
3202  if (Idx == Table.end() ||
3203      Key.Name != Idx->Name)
3204    return nullptr;
3205  return &SVCRsList[Idx->_index];
3206}
3207
3208const SVCR *lookupSVCRByEncoding(uint8_t Encoding) {
3209  struct IndexType {
3210    uint8_t Encoding;
3211    unsigned _index;
3212  };
3213  static const struct IndexType Index[] = {
3214    { 0x1, 0 },
3215    { 0x2, 2 },
3216    { 0x3, 1 },
3217  };
3218
3219  struct KeyType {
3220    uint8_t Encoding;
3221  };
3222  KeyType Key = {Encoding};
3223  auto Table = ArrayRef(Index);
3224  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
3225    [](const IndexType &LHS, const KeyType &RHS) {
3226      if (LHS.Encoding < RHS.Encoding)
3227        return true;
3228      if (LHS.Encoding > RHS.Encoding)
3229        return false;
3230      return false;
3231    });
3232
3233  if (Idx == Table.end() ||
3234      Key.Encoding != Idx->Encoding)
3235    return nullptr;
3236  return &SVCRsList[Idx->_index];
3237}
3238#endif
3239
3240#ifdef GET_SVEPREDPAT_DECL
3241const SVEPREDPAT *lookupSVEPREDPATByName(StringRef Name);
3242const SVEPREDPAT *lookupSVEPREDPATByEncoding(uint8_t Encoding);
3243#endif
3244
3245#ifdef GET_SVEPREDPAT_IMPL
3246constexpr SVEPREDPAT SVEPREDPATsList[] = {
3247  { "all", 0x1F }, // 0
3248  { "mul3", 0x1E }, // 1
3249  { "mul4", 0x1D }, // 2
3250  { "pow2", 0x0 }, // 3
3251  { "vl1", 0x1 }, // 4
3252  { "vl128", 0xC }, // 5
3253  { "vl16", 0x9 }, // 6
3254  { "vl2", 0x2 }, // 7
3255  { "vl256", 0xD }, // 8
3256  { "vl3", 0x3 }, // 9
3257  { "vl32", 0xA }, // 10
3258  { "vl4", 0x4 }, // 11
3259  { "vl5", 0x5 }, // 12
3260  { "vl6", 0x6 }, // 13
3261  { "vl64", 0xB }, // 14
3262  { "vl7", 0x7 }, // 15
3263  { "vl8", 0x8 }, // 16
3264 };
3265
3266const SVEPREDPAT *lookupSVEPREDPATByName(StringRef Name) {
3267  struct IndexType {
3268    const char * Name;
3269    unsigned _index;
3270  };
3271  static const struct IndexType Index[] = {
3272    { "ALL", 0 },
3273    { "MUL3", 1 },
3274    { "MUL4", 2 },
3275    { "POW2", 3 },
3276    { "VL1", 4 },
3277    { "VL128", 5 },
3278    { "VL16", 6 },
3279    { "VL2", 7 },
3280    { "VL256", 8 },
3281    { "VL3", 9 },
3282    { "VL32", 10 },
3283    { "VL4", 11 },
3284    { "VL5", 12 },
3285    { "VL6", 13 },
3286    { "VL64", 14 },
3287    { "VL7", 15 },
3288    { "VL8", 16 },
3289  };
3290
3291  struct KeyType {
3292    std::string Name;
3293  };
3294  KeyType Key = {Name.upper()};
3295  auto Table = ArrayRef(Index);
3296  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
3297    [](const IndexType &LHS, const KeyType &RHS) {
3298      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
3299      if (CmpName < 0) return true;
3300      if (CmpName > 0) return false;
3301      return false;
3302    });
3303
3304  if (Idx == Table.end() ||
3305      Key.Name != Idx->Name)
3306    return nullptr;
3307  return &SVEPREDPATsList[Idx->_index];
3308}
3309
3310const SVEPREDPAT *lookupSVEPREDPATByEncoding(uint8_t Encoding) {
3311  struct IndexType {
3312    uint8_t Encoding;
3313    unsigned _index;
3314  };
3315  static const struct IndexType Index[] = {
3316    { 0x0, 3 },
3317    { 0x1, 4 },
3318    { 0x2, 7 },
3319    { 0x3, 9 },
3320    { 0x4, 11 },
3321    { 0x5, 12 },
3322    { 0x6, 13 },
3323    { 0x7, 15 },
3324    { 0x8, 16 },
3325    { 0x9, 6 },
3326    { 0xA, 10 },
3327    { 0xB, 14 },
3328    { 0xC, 5 },
3329    { 0xD, 8 },
3330    { 0x1D, 2 },
3331    { 0x1E, 1 },
3332    { 0x1F, 0 },
3333  };
3334
3335  struct KeyType {
3336    uint8_t Encoding;
3337  };
3338  KeyType Key = {Encoding};
3339  auto Table = ArrayRef(Index);
3340  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
3341    [](const IndexType &LHS, const KeyType &RHS) {
3342      if (LHS.Encoding < RHS.Encoding)
3343        return true;
3344      if (LHS.Encoding > RHS.Encoding)
3345        return false;
3346      return false;
3347    });
3348
3349  if (Idx == Table.end() ||
3350      Key.Encoding != Idx->Encoding)
3351    return nullptr;
3352  return &SVEPREDPATsList[Idx->_index];
3353}
3354#endif
3355
3356#ifdef GET_SVEPRFM_DECL
3357const SVEPRFM *lookupSVEPRFMByName(StringRef Name);
3358const SVEPRFM *lookupSVEPRFMByEncoding(uint8_t Encoding);
3359#endif
3360
3361#ifdef GET_SVEPRFM_IMPL
3362constexpr SVEPRFM SVEPRFMsList[] = {
3363  { "pldl1keep", 0x0,  {AArch64::FeatureSVE}  }, // 0
3364  { "pldl1strm", 0x1,  {AArch64::FeatureSVE}  }, // 1
3365  { "pldl2keep", 0x2,  {AArch64::FeatureSVE}  }, // 2
3366  { "pldl2strm", 0x3,  {AArch64::FeatureSVE}  }, // 3
3367  { "pldl3keep", 0x4,  {AArch64::FeatureSVE}  }, // 4
3368  { "pldl3strm", 0x5,  {AArch64::FeatureSVE}  }, // 5
3369  { "pstl1keep", 0x8,  {AArch64::FeatureSVE}  }, // 6
3370  { "pstl1strm", 0x9,  {AArch64::FeatureSVE}  }, // 7
3371  { "pstl2keep", 0xA,  {AArch64::FeatureSVE}  }, // 8
3372  { "pstl2strm", 0xB,  {AArch64::FeatureSVE}  }, // 9
3373  { "pstl3keep", 0xC,  {AArch64::FeatureSVE}  }, // 10
3374  { "pstl3strm", 0xD,  {AArch64::FeatureSVE}  }, // 11
3375 };
3376
3377const SVEPRFM *lookupSVEPRFMByName(StringRef Name) {
3378  struct IndexType {
3379    const char * Name;
3380    unsigned _index;
3381  };
3382  static const struct IndexType Index[] = {
3383    { "PLDL1KEEP", 0 },
3384    { "PLDL1STRM", 1 },
3385    { "PLDL2KEEP", 2 },
3386    { "PLDL2STRM", 3 },
3387    { "PLDL3KEEP", 4 },
3388    { "PLDL3STRM", 5 },
3389    { "PSTL1KEEP", 6 },
3390    { "PSTL1STRM", 7 },
3391    { "PSTL2KEEP", 8 },
3392    { "PSTL2STRM", 9 },
3393    { "PSTL3KEEP", 10 },
3394    { "PSTL3STRM", 11 },
3395  };
3396
3397  struct KeyType {
3398    std::string Name;
3399  };
3400  KeyType Key = {Name.upper()};
3401  auto Table = ArrayRef(Index);
3402  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
3403    [](const IndexType &LHS, const KeyType &RHS) {
3404      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
3405      if (CmpName < 0) return true;
3406      if (CmpName > 0) return false;
3407      return false;
3408    });
3409
3410  if (Idx == Table.end() ||
3411      Key.Name != Idx->Name)
3412    return nullptr;
3413  return &SVEPRFMsList[Idx->_index];
3414}
3415
3416const SVEPRFM *lookupSVEPRFMByEncoding(uint8_t Encoding) {
3417  struct IndexType {
3418    uint8_t Encoding;
3419    unsigned _index;
3420  };
3421  static const struct IndexType Index[] = {
3422    { 0x0, 0 },
3423    { 0x1, 1 },
3424    { 0x2, 2 },
3425    { 0x3, 3 },
3426    { 0x4, 4 },
3427    { 0x5, 5 },
3428    { 0x8, 6 },
3429    { 0x9, 7 },
3430    { 0xA, 8 },
3431    { 0xB, 9 },
3432    { 0xC, 10 },
3433    { 0xD, 11 },
3434  };
3435
3436  struct KeyType {
3437    uint8_t Encoding;
3438  };
3439  KeyType Key = {Encoding};
3440  auto Table = ArrayRef(Index);
3441  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
3442    [](const IndexType &LHS, const KeyType &RHS) {
3443      if (LHS.Encoding < RHS.Encoding)
3444        return true;
3445      if (LHS.Encoding > RHS.Encoding)
3446        return false;
3447      return false;
3448    });
3449
3450  if (Idx == Table.end() ||
3451      Key.Encoding != Idx->Encoding)
3452    return nullptr;
3453  return &SVEPRFMsList[Idx->_index];
3454}
3455#endif
3456
3457#ifdef GET_SVEVECLENSPECIFIER_DECL
3458const SVEVECLENSPECIFIER *lookupSVEVECLENSPECIFIERByName(StringRef Name);
3459const SVEVECLENSPECIFIER *lookupSVEVECLENSPECIFIERByEncoding(uint8_t Encoding);
3460#endif
3461
3462#ifdef GET_SVEVECLENSPECIFIER_IMPL
3463constexpr SVEVECLENSPECIFIER SVEVECLENSPECIFIERsList[] = {
3464  { "vlx2", 0x0 }, // 0
3465  { "vlx4", 0x1 }, // 1
3466 };
3467
3468const SVEVECLENSPECIFIER *lookupSVEVECLENSPECIFIERByName(StringRef Name) {
3469  struct IndexType {
3470    const char * Name;
3471    unsigned _index;
3472  };
3473  static const struct IndexType Index[] = {
3474    { "VLX2", 0 },
3475    { "VLX4", 1 },
3476  };
3477
3478  struct KeyType {
3479    std::string Name;
3480  };
3481  KeyType Key = {Name.upper()};
3482  auto Table = ArrayRef(Index);
3483  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
3484    [](const IndexType &LHS, const KeyType &RHS) {
3485      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
3486      if (CmpName < 0) return true;
3487      if (CmpName > 0) return false;
3488      return false;
3489    });
3490
3491  if (Idx == Table.end() ||
3492      Key.Name != Idx->Name)
3493    return nullptr;
3494  return &SVEVECLENSPECIFIERsList[Idx->_index];
3495}
3496
3497const SVEVECLENSPECIFIER *lookupSVEVECLENSPECIFIERByEncoding(uint8_t Encoding) {
3498  struct IndexType {
3499    uint8_t Encoding;
3500    unsigned _index;
3501  };
3502  static const struct IndexType Index[] = {
3503    { 0x0, 0 },
3504    { 0x1, 1 },
3505  };
3506
3507  auto Table = ArrayRef(Index);
3508  size_t Idx = Encoding;
3509  return Idx >= Table.size() ? nullptr : &SVEVECLENSPECIFIERsList[Table[Idx]._index];
3510}
3511#endif
3512
3513#ifdef GET_SYSREG_DECL
3514const SysReg *lookupSysRegByName(StringRef Name);
3515const SysReg *lookupSysRegByEncoding(uint16_t Encoding);
3516#endif
3517
3518#ifdef GET_SYSREG_IMPL
3519constexpr SysReg SysRegsList[] = {
3520  { "ACCDATA_EL1", "ACCDATA_EL1", 0xC685, true, true,  {AArch64::FeatureLS64}  }, // 0
3521  { "ACTLR_EL1", "ACTLR_EL1", 0xC081, true, true,  {}  }, // 1
3522  { "ACTLR_EL2", "ACTLR_EL2", 0xE081, true, true,  {}  }, // 2
3523  { "ACTLR_EL3", "ACTLR_EL3", 0xF081, true, true,  {}  }, // 3
3524  { "AFSR0_EL1", "AFSR0_EL1", 0xC288, true, true,  {}  }, // 4
3525  { "AFSR0_EL12", "AFSR0_EL12", 0xEA88, true, true,  {AArch64::FeatureVH}  }, // 5
3526  { "AFSR0_EL2", "AFSR0_EL2", 0xE288, true, true,  {}  }, // 6
3527  { "AFSR0_EL3", "AFSR0_EL3", 0xF288, true, true,  {}  }, // 7
3528  { "AFSR1_EL1", "AFSR1_EL1", 0xC289, true, true,  {}  }, // 8
3529  { "AFSR1_EL12", "AFSR1_EL12", 0xEA89, true, true,  {AArch64::FeatureVH}  }, // 9
3530  { "AFSR1_EL2", "AFSR1_EL2", 0xE289, true, true,  {}  }, // 10
3531  { "AFSR1_EL3", "AFSR1_EL3", 0xF289, true, true,  {}  }, // 11
3532  { "AIDR_EL1", "AIDR_EL1", 0xC807, true, false,  {}  }, // 12
3533  { "ALLINT", "ALLINT", 0xC218, true, true,  {AArch64::FeatureNMI}  }, // 13
3534  { "AMAIR2_EL1", "AMAIR2_EL1", 0xC519, true, true,  {}  }, // 14
3535  { "AMAIR2_EL12", "AMAIR2_EL12", 0xED19, true, true,  {}  }, // 15
3536  { "AMAIR2_EL2", "AMAIR2_EL2", 0xE519, true, true,  {}  }, // 16
3537  { "AMAIR2_EL3", "AMAIR2_EL3", 0xF519, true, true,  {}  }, // 17
3538  { "AMAIR_EL1", "AMAIR_EL1", 0xC518, true, true,  {}  }, // 18
3539  { "AMAIR_EL12", "AMAIR_EL12", 0xED18, true, true,  {AArch64::FeatureVH}  }, // 19
3540  { "AMAIR_EL2", "AMAIR_EL2", 0xE518, true, true,  {}  }, // 20
3541  { "AMAIR_EL3", "AMAIR_EL3", 0xF518, true, true,  {}  }, // 21
3542  { "AMCFGR_EL0", "AMCFGR_EL0", 0xDE91, true, false,  {AArch64::FeatureAM}  }, // 22
3543  { "AMCG1IDR_EL0", "AMCG1IDR_EL0", 0xDE96, true, false,  {AArch64::FeatureAMVS}  }, // 23
3544  { "AMCGCR_EL0", "AMCGCR_EL0", 0xDE92, true, false,  {AArch64::FeatureAM}  }, // 24
3545  { "AMCNTENCLR0_EL0", "AMCNTENCLR0_EL0", 0xDE94, true, true,  {AArch64::FeatureAM}  }, // 25
3546  { "AMCNTENCLR1_EL0", "AMCNTENCLR1_EL0", 0xDE98, true, true,  {AArch64::FeatureAM}  }, // 26
3547  { "AMCNTENSET0_EL0", "AMCNTENSET0_EL0", 0xDE95, true, true,  {AArch64::FeatureAM}  }, // 27
3548  { "AMCNTENSET1_EL0", "AMCNTENSET1_EL0", 0xDE99, true, true,  {AArch64::FeatureAM}  }, // 28
3549  { "AMCR_EL0", "AMCR_EL0", 0xDE90, true, true,  {AArch64::FeatureAM}  }, // 29
3550  { "AMEVCNTR00_EL0", "AMEVCNTR00_EL0", 0xDEA0, true, true,  {AArch64::FeatureAM}  }, // 30
3551  { "AMEVCNTR01_EL0", "AMEVCNTR01_EL0", 0xDEA1, true, true,  {AArch64::FeatureAM}  }, // 31
3552  { "AMEVCNTR02_EL0", "AMEVCNTR02_EL0", 0xDEA2, true, true,  {AArch64::FeatureAM}  }, // 32
3553  { "AMEVCNTR03_EL0", "AMEVCNTR03_EL0", 0xDEA3, true, true,  {AArch64::FeatureAM}  }, // 33
3554  { "AMEVCNTR10_EL0", "AMEVCNTR10_EL0", 0xDEE0, true, true,  {AArch64::FeatureAM}  }, // 34
3555  { "AMEVCNTR110_EL0", "AMEVCNTR110_EL0", 0xDEEA, true, true,  {AArch64::FeatureAM}  }, // 35
3556  { "AMEVCNTR111_EL0", "AMEVCNTR111_EL0", 0xDEEB, true, true,  {AArch64::FeatureAM}  }, // 36
3557  { "AMEVCNTR112_EL0", "AMEVCNTR112_EL0", 0xDEEC, true, true,  {AArch64::FeatureAM}  }, // 37
3558  { "AMEVCNTR113_EL0", "AMEVCNTR113_EL0", 0xDEED, true, true,  {AArch64::FeatureAM}  }, // 38
3559  { "AMEVCNTR114_EL0", "AMEVCNTR114_EL0", 0xDEEE, true, true,  {AArch64::FeatureAM}  }, // 39
3560  { "AMEVCNTR115_EL0", "AMEVCNTR115_EL0", 0xDEEF, true, true,  {AArch64::FeatureAM}  }, // 40
3561  { "AMEVCNTR11_EL0", "AMEVCNTR11_EL0", 0xDEE1, true, true,  {AArch64::FeatureAM}  }, // 41
3562  { "AMEVCNTR12_EL0", "AMEVCNTR12_EL0", 0xDEE2, true, true,  {AArch64::FeatureAM}  }, // 42
3563  { "AMEVCNTR13_EL0", "AMEVCNTR13_EL0", 0xDEE3, true, true,  {AArch64::FeatureAM}  }, // 43
3564  { "AMEVCNTR14_EL0", "AMEVCNTR14_EL0", 0xDEE4, true, true,  {AArch64::FeatureAM}  }, // 44
3565  { "AMEVCNTR15_EL0", "AMEVCNTR15_EL0", 0xDEE5, true, true,  {AArch64::FeatureAM}  }, // 45
3566  { "AMEVCNTR16_EL0", "AMEVCNTR16_EL0", 0xDEE6, true, true,  {AArch64::FeatureAM}  }, // 46
3567  { "AMEVCNTR17_EL0", "AMEVCNTR17_EL0", 0xDEE7, true, true,  {AArch64::FeatureAM}  }, // 47
3568  { "AMEVCNTR18_EL0", "AMEVCNTR18_EL0", 0xDEE8, true, true,  {AArch64::FeatureAM}  }, // 48
3569  { "AMEVCNTR19_EL0", "AMEVCNTR19_EL0", 0xDEE9, true, true,  {AArch64::FeatureAM}  }, // 49
3570  { "AMEVCNTVOFF00_EL2", "AMEVCNTVOFF00_EL2", 0xE6C0, true, true,  {AArch64::FeatureAMVS}  }, // 50
3571  { "AMEVCNTVOFF010_EL2", "AMEVCNTVOFF010_EL2", 0xE6CA, true, true,  {AArch64::FeatureAMVS}  }, // 51
3572  { "AMEVCNTVOFF011_EL2", "AMEVCNTVOFF011_EL2", 0xE6CB, true, true,  {AArch64::FeatureAMVS}  }, // 52
3573  { "AMEVCNTVOFF012_EL2", "AMEVCNTVOFF012_EL2", 0xE6CC, true, true,  {AArch64::FeatureAMVS}  }, // 53
3574  { "AMEVCNTVOFF013_EL2", "AMEVCNTVOFF013_EL2", 0xE6CD, true, true,  {AArch64::FeatureAMVS}  }, // 54
3575  { "AMEVCNTVOFF014_EL2", "AMEVCNTVOFF014_EL2", 0xE6CE, true, true,  {AArch64::FeatureAMVS}  }, // 55
3576  { "AMEVCNTVOFF015_EL2", "AMEVCNTVOFF015_EL2", 0xE6CF, true, true,  {AArch64::FeatureAMVS}  }, // 56
3577  { "AMEVCNTVOFF01_EL2", "AMEVCNTVOFF01_EL2", 0xE6C1, true, true,  {AArch64::FeatureAMVS}  }, // 57
3578  { "AMEVCNTVOFF02_EL2", "AMEVCNTVOFF02_EL2", 0xE6C2, true, true,  {AArch64::FeatureAMVS}  }, // 58
3579  { "AMEVCNTVOFF03_EL2", "AMEVCNTVOFF03_EL2", 0xE6C3, true, true,  {AArch64::FeatureAMVS}  }, // 59
3580  { "AMEVCNTVOFF04_EL2", "AMEVCNTVOFF04_EL2", 0xE6C4, true, true,  {AArch64::FeatureAMVS}  }, // 60
3581  { "AMEVCNTVOFF05_EL2", "AMEVCNTVOFF05_EL2", 0xE6C5, true, true,  {AArch64::FeatureAMVS}  }, // 61
3582  { "AMEVCNTVOFF06_EL2", "AMEVCNTVOFF06_EL2", 0xE6C6, true, true,  {AArch64::FeatureAMVS}  }, // 62
3583  { "AMEVCNTVOFF07_EL2", "AMEVCNTVOFF07_EL2", 0xE6C7, true, true,  {AArch64::FeatureAMVS}  }, // 63
3584  { "AMEVCNTVOFF08_EL2", "AMEVCNTVOFF08_EL2", 0xE6C8, true, true,  {AArch64::FeatureAMVS}  }, // 64
3585  { "AMEVCNTVOFF09_EL2", "AMEVCNTVOFF09_EL2", 0xE6C9, true, true,  {AArch64::FeatureAMVS}  }, // 65
3586  { "AMEVCNTVOFF10_EL2", "AMEVCNTVOFF10_EL2", 0xE6D0, true, true,  {AArch64::FeatureAMVS}  }, // 66
3587  { "AMEVCNTVOFF110_EL2", "AMEVCNTVOFF110_EL2", 0xE6DA, true, true,  {AArch64::FeatureAMVS}  }, // 67
3588  { "AMEVCNTVOFF111_EL2", "AMEVCNTVOFF111_EL2", 0xE6DB, true, true,  {AArch64::FeatureAMVS}  }, // 68
3589  { "AMEVCNTVOFF112_EL2", "AMEVCNTVOFF112_EL2", 0xE6DC, true, true,  {AArch64::FeatureAMVS}  }, // 69
3590  { "AMEVCNTVOFF113_EL2", "AMEVCNTVOFF113_EL2", 0xE6DD, true, true,  {AArch64::FeatureAMVS}  }, // 70
3591  { "AMEVCNTVOFF114_EL2", "AMEVCNTVOFF114_EL2", 0xE6DE, true, true,  {AArch64::FeatureAMVS}  }, // 71
3592  { "AMEVCNTVOFF115_EL2", "AMEVCNTVOFF115_EL2", 0xE6DF, true, true,  {AArch64::FeatureAMVS}  }, // 72
3593  { "AMEVCNTVOFF11_EL2", "AMEVCNTVOFF11_EL2", 0xE6D1, true, true,  {AArch64::FeatureAMVS}  }, // 73
3594  { "AMEVCNTVOFF12_EL2", "AMEVCNTVOFF12_EL2", 0xE6D2, true, true,  {AArch64::FeatureAMVS}  }, // 74
3595  { "AMEVCNTVOFF13_EL2", "AMEVCNTVOFF13_EL2", 0xE6D3, true, true,  {AArch64::FeatureAMVS}  }, // 75
3596  { "AMEVCNTVOFF14_EL2", "AMEVCNTVOFF14_EL2", 0xE6D4, true, true,  {AArch64::FeatureAMVS}  }, // 76
3597  { "AMEVCNTVOFF15_EL2", "AMEVCNTVOFF15_EL2", 0xE6D5, true, true,  {AArch64::FeatureAMVS}  }, // 77
3598  { "AMEVCNTVOFF16_EL2", "AMEVCNTVOFF16_EL2", 0xE6D6, true, true,  {AArch64::FeatureAMVS}  }, // 78
3599  { "AMEVCNTVOFF17_EL2", "AMEVCNTVOFF17_EL2", 0xE6D7, true, true,  {AArch64::FeatureAMVS}  }, // 79
3600  { "AMEVCNTVOFF18_EL2", "AMEVCNTVOFF18_EL2", 0xE6D8, true, true,  {AArch64::FeatureAMVS}  }, // 80
3601  { "AMEVCNTVOFF19_EL2", "AMEVCNTVOFF19_EL2", 0xE6D9, true, true,  {AArch64::FeatureAMVS}  }, // 81
3602  { "AMEVTYPER00_EL0", "AMEVTYPER00_EL0", 0xDEB0, true, false,  {AArch64::FeatureAM}  }, // 82
3603  { "AMEVTYPER01_EL0", "AMEVTYPER01_EL0", 0xDEB1, true, false,  {AArch64::FeatureAM}  }, // 83
3604  { "AMEVTYPER02_EL0", "AMEVTYPER02_EL0", 0xDEB2, true, false,  {AArch64::FeatureAM}  }, // 84
3605  { "AMEVTYPER03_EL0", "AMEVTYPER03_EL0", 0xDEB3, true, false,  {AArch64::FeatureAM}  }, // 85
3606  { "AMEVTYPER10_EL0", "AMEVTYPER10_EL0", 0xDEF0, true, true,  {AArch64::FeatureAM}  }, // 86
3607  { "AMEVTYPER110_EL0", "AMEVTYPER110_EL0", 0xDEFA, true, true,  {AArch64::FeatureAM}  }, // 87
3608  { "AMEVTYPER111_EL0", "AMEVTYPER111_EL0", 0xDEFB, true, true,  {AArch64::FeatureAM}  }, // 88
3609  { "AMEVTYPER112_EL0", "AMEVTYPER112_EL0", 0xDEFC, true, true,  {AArch64::FeatureAM}  }, // 89
3610  { "AMEVTYPER113_EL0", "AMEVTYPER113_EL0", 0xDEFD, true, true,  {AArch64::FeatureAM}  }, // 90
3611  { "AMEVTYPER114_EL0", "AMEVTYPER114_EL0", 0xDEFE, true, true,  {AArch64::FeatureAM}  }, // 91
3612  { "AMEVTYPER115_EL0", "AMEVTYPER115_EL0", 0xDEFF, true, true,  {AArch64::FeatureAM}  }, // 92
3613  { "AMEVTYPER11_EL0", "AMEVTYPER11_EL0", 0xDEF1, true, true,  {AArch64::FeatureAM}  }, // 93
3614  { "AMEVTYPER12_EL0", "AMEVTYPER12_EL0", 0xDEF2, true, true,  {AArch64::FeatureAM}  }, // 94
3615  { "AMEVTYPER13_EL0", "AMEVTYPER13_EL0", 0xDEF3, true, true,  {AArch64::FeatureAM}  }, // 95
3616  { "AMEVTYPER14_EL0", "AMEVTYPER14_EL0", 0xDEF4, true, true,  {AArch64::FeatureAM}  }, // 96
3617  { "AMEVTYPER15_EL0", "AMEVTYPER15_EL0", 0xDEF5, true, true,  {AArch64::FeatureAM}  }, // 97
3618  { "AMEVTYPER16_EL0", "AMEVTYPER16_EL0", 0xDEF6, true, true,  {AArch64::FeatureAM}  }, // 98
3619  { "AMEVTYPER17_EL0", "AMEVTYPER17_EL0", 0xDEF7, true, true,  {AArch64::FeatureAM}  }, // 99
3620  { "AMEVTYPER18_EL0", "AMEVTYPER18_EL0", 0xDEF8, true, true,  {AArch64::FeatureAM}  }, // 100
3621  { "AMEVTYPER19_EL0", "AMEVTYPER19_EL0", 0xDEF9, true, true,  {AArch64::FeatureAM}  }, // 101
3622  { "AMUSERENR_EL0", "AMUSERENR_EL0", 0xDE93, true, true,  {AArch64::FeatureAM}  }, // 102
3623  { "APDAKeyHi_EL1", "APDAKeyHi_EL1", 0xC111, true, true,  {AArch64::FeaturePAuth}  }, // 103
3624  { "APDAKeyLo_EL1", "APDAKeyLo_EL1", 0xC110, true, true,  {AArch64::FeaturePAuth}  }, // 104
3625  { "APDBKeyHi_EL1", "APDBKeyHi_EL1", 0xC113, true, true,  {AArch64::FeaturePAuth}  }, // 105
3626  { "APDBKeyLo_EL1", "APDBKeyLo_EL1", 0xC112, true, true,  {AArch64::FeaturePAuth}  }, // 106
3627  { "APGAKeyHi_EL1", "APGAKeyHi_EL1", 0xC119, true, true,  {AArch64::FeaturePAuth}  }, // 107
3628  { "APGAKeyLo_EL1", "APGAKeyLo_EL1", 0xC118, true, true,  {AArch64::FeaturePAuth}  }, // 108
3629  { "APIAKeyHi_EL1", "APIAKeyHi_EL1", 0xC109, true, true,  {AArch64::FeaturePAuth}  }, // 109
3630  { "APIAKeyLo_EL1", "APIAKeyLo_EL1", 0xC108, true, true,  {AArch64::FeaturePAuth}  }, // 110
3631  { "APIBKeyHi_EL1", "APIBKeyHi_EL1", 0xC10B, true, true,  {AArch64::FeaturePAuth}  }, // 111
3632  { "APIBKeyLo_EL1", "APIBKeyLo_EL1", 0xC10A, true, true,  {AArch64::FeaturePAuth}  }, // 112
3633  { "BRBCR_EL1", "BRBCR_EL1", 0x8C80, true, true,  {AArch64::FeatureBRBE}  }, // 113
3634  { "BRBCR_EL12", "BRBCR_EL12", 0xAC80, true, true,  {AArch64::FeatureBRBE}  }, // 114
3635  { "BRBCR_EL2", "BRBCR_EL2", 0xA480, true, true,  {AArch64::FeatureBRBE}  }, // 115
3636  { "BRBFCR_EL1", "BRBFCR_EL1", 0x8C81, true, true,  {AArch64::FeatureBRBE}  }, // 116
3637  { "BRBIDR0_EL1", "BRBIDR0_EL1", 0x8C90, true, false,  {AArch64::FeatureBRBE}  }, // 117
3638  { "BRBINF0_EL1", "BRBINF0_EL1", 0x8C00, true, false,  {AArch64::FeatureBRBE}  }, // 118
3639  { "BRBINF10_EL1", "BRBINF10_EL1", 0x8C50, true, false,  {AArch64::FeatureBRBE}  }, // 119
3640  { "BRBINF11_EL1", "BRBINF11_EL1", 0x8C58, true, false,  {AArch64::FeatureBRBE}  }, // 120
3641  { "BRBINF12_EL1", "BRBINF12_EL1", 0x8C60, true, false,  {AArch64::FeatureBRBE}  }, // 121
3642  { "BRBINF13_EL1", "BRBINF13_EL1", 0x8C68, true, false,  {AArch64::FeatureBRBE}  }, // 122
3643  { "BRBINF14_EL1", "BRBINF14_EL1", 0x8C70, true, false,  {AArch64::FeatureBRBE}  }, // 123
3644  { "BRBINF15_EL1", "BRBINF15_EL1", 0x8C78, true, false,  {AArch64::FeatureBRBE}  }, // 124
3645  { "BRBINF16_EL1", "BRBINF16_EL1", 0x8C04, true, false,  {AArch64::FeatureBRBE}  }, // 125
3646  { "BRBINF17_EL1", "BRBINF17_EL1", 0x8C0C, true, false,  {AArch64::FeatureBRBE}  }, // 126
3647  { "BRBINF18_EL1", "BRBINF18_EL1", 0x8C14, true, false,  {AArch64::FeatureBRBE}  }, // 127
3648  { "BRBINF19_EL1", "BRBINF19_EL1", 0x8C1C, true, false,  {AArch64::FeatureBRBE}  }, // 128
3649  { "BRBINF1_EL1", "BRBINF1_EL1", 0x8C08, true, false,  {AArch64::FeatureBRBE}  }, // 129
3650  { "BRBINF20_EL1", "BRBINF20_EL1", 0x8C24, true, false,  {AArch64::FeatureBRBE}  }, // 130
3651  { "BRBINF21_EL1", "BRBINF21_EL1", 0x8C2C, true, false,  {AArch64::FeatureBRBE}  }, // 131
3652  { "BRBINF22_EL1", "BRBINF22_EL1", 0x8C34, true, false,  {AArch64::FeatureBRBE}  }, // 132
3653  { "BRBINF23_EL1", "BRBINF23_EL1", 0x8C3C, true, false,  {AArch64::FeatureBRBE}  }, // 133
3654  { "BRBINF24_EL1", "BRBINF24_EL1", 0x8C44, true, false,  {AArch64::FeatureBRBE}  }, // 134
3655  { "BRBINF25_EL1", "BRBINF25_EL1", 0x8C4C, true, false,  {AArch64::FeatureBRBE}  }, // 135
3656  { "BRBINF26_EL1", "BRBINF26_EL1", 0x8C54, true, false,  {AArch64::FeatureBRBE}  }, // 136
3657  { "BRBINF27_EL1", "BRBINF27_EL1", 0x8C5C, true, false,  {AArch64::FeatureBRBE}  }, // 137
3658  { "BRBINF28_EL1", "BRBINF28_EL1", 0x8C64, true, false,  {AArch64::FeatureBRBE}  }, // 138
3659  { "BRBINF29_EL1", "BRBINF29_EL1", 0x8C6C, true, false,  {AArch64::FeatureBRBE}  }, // 139
3660  { "BRBINF2_EL1", "BRBINF2_EL1", 0x8C10, true, false,  {AArch64::FeatureBRBE}  }, // 140
3661  { "BRBINF30_EL1", "BRBINF30_EL1", 0x8C74, true, false,  {AArch64::FeatureBRBE}  }, // 141
3662  { "BRBINF31_EL1", "BRBINF31_EL1", 0x8C7C, true, false,  {AArch64::FeatureBRBE}  }, // 142
3663  { "BRBINF3_EL1", "BRBINF3_EL1", 0x8C18, true, false,  {AArch64::FeatureBRBE}  }, // 143
3664  { "BRBINF4_EL1", "BRBINF4_EL1", 0x8C20, true, false,  {AArch64::FeatureBRBE}  }, // 144
3665  { "BRBINF5_EL1", "BRBINF5_EL1", 0x8C28, true, false,  {AArch64::FeatureBRBE}  }, // 145
3666  { "BRBINF6_EL1", "BRBINF6_EL1", 0x8C30, true, false,  {AArch64::FeatureBRBE}  }, // 146
3667  { "BRBINF7_EL1", "BRBINF7_EL1", 0x8C38, true, false,  {AArch64::FeatureBRBE}  }, // 147
3668  { "BRBINF8_EL1", "BRBINF8_EL1", 0x8C40, true, false,  {AArch64::FeatureBRBE}  }, // 148
3669  { "BRBINF9_EL1", "BRBINF9_EL1", 0x8C48, true, false,  {AArch64::FeatureBRBE}  }, // 149
3670  { "BRBINFINJ_EL1", "BRBINFINJ_EL1", 0x8C88, true, true,  {AArch64::FeatureBRBE}  }, // 150
3671  { "BRBSRC0_EL1", "BRBSRC0_EL1", 0x8C01, true, false,  {AArch64::FeatureBRBE}  }, // 151
3672  { "BRBSRC10_EL1", "BRBSRC10_EL1", 0x8C51, true, false,  {AArch64::FeatureBRBE}  }, // 152
3673  { "BRBSRC11_EL1", "BRBSRC11_EL1", 0x8C59, true, false,  {AArch64::FeatureBRBE}  }, // 153
3674  { "BRBSRC12_EL1", "BRBSRC12_EL1", 0x8C61, true, false,  {AArch64::FeatureBRBE}  }, // 154
3675  { "BRBSRC13_EL1", "BRBSRC13_EL1", 0x8C69, true, false,  {AArch64::FeatureBRBE}  }, // 155
3676  { "BRBSRC14_EL1", "BRBSRC14_EL1", 0x8C71, true, false,  {AArch64::FeatureBRBE}  }, // 156
3677  { "BRBSRC15_EL1", "BRBSRC15_EL1", 0x8C79, true, false,  {AArch64::FeatureBRBE}  }, // 157
3678  { "BRBSRC16_EL1", "BRBSRC16_EL1", 0x8C05, true, false,  {AArch64::FeatureBRBE}  }, // 158
3679  { "BRBSRC17_EL1", "BRBSRC17_EL1", 0x8C0D, true, false,  {AArch64::FeatureBRBE}  }, // 159
3680  { "BRBSRC18_EL1", "BRBSRC18_EL1", 0x8C15, true, false,  {AArch64::FeatureBRBE}  }, // 160
3681  { "BRBSRC19_EL1", "BRBSRC19_EL1", 0x8C1D, true, false,  {AArch64::FeatureBRBE}  }, // 161
3682  { "BRBSRC1_EL1", "BRBSRC1_EL1", 0x8C09, true, false,  {AArch64::FeatureBRBE}  }, // 162
3683  { "BRBSRC20_EL1", "BRBSRC20_EL1", 0x8C25, true, false,  {AArch64::FeatureBRBE}  }, // 163
3684  { "BRBSRC21_EL1", "BRBSRC21_EL1", 0x8C2D, true, false,  {AArch64::FeatureBRBE}  }, // 164
3685  { "BRBSRC22_EL1", "BRBSRC22_EL1", 0x8C35, true, false,  {AArch64::FeatureBRBE}  }, // 165
3686  { "BRBSRC23_EL1", "BRBSRC23_EL1", 0x8C3D, true, false,  {AArch64::FeatureBRBE}  }, // 166
3687  { "BRBSRC24_EL1", "BRBSRC24_EL1", 0x8C45, true, false,  {AArch64::FeatureBRBE}  }, // 167
3688  { "BRBSRC25_EL1", "BRBSRC25_EL1", 0x8C4D, true, false,  {AArch64::FeatureBRBE}  }, // 168
3689  { "BRBSRC26_EL1", "BRBSRC26_EL1", 0x8C55, true, false,  {AArch64::FeatureBRBE}  }, // 169
3690  { "BRBSRC27_EL1", "BRBSRC27_EL1", 0x8C5D, true, false,  {AArch64::FeatureBRBE}  }, // 170
3691  { "BRBSRC28_EL1", "BRBSRC28_EL1", 0x8C65, true, false,  {AArch64::FeatureBRBE}  }, // 171
3692  { "BRBSRC29_EL1", "BRBSRC29_EL1", 0x8C6D, true, false,  {AArch64::FeatureBRBE}  }, // 172
3693  { "BRBSRC2_EL1", "BRBSRC2_EL1", 0x8C11, true, false,  {AArch64::FeatureBRBE}  }, // 173
3694  { "BRBSRC30_EL1", "BRBSRC30_EL1", 0x8C75, true, false,  {AArch64::FeatureBRBE}  }, // 174
3695  { "BRBSRC31_EL1", "BRBSRC31_EL1", 0x8C7D, true, false,  {AArch64::FeatureBRBE}  }, // 175
3696  { "BRBSRC3_EL1", "BRBSRC3_EL1", 0x8C19, true, false,  {AArch64::FeatureBRBE}  }, // 176
3697  { "BRBSRC4_EL1", "BRBSRC4_EL1", 0x8C21, true, false,  {AArch64::FeatureBRBE}  }, // 177
3698  { "BRBSRC5_EL1", "BRBSRC5_EL1", 0x8C29, true, false,  {AArch64::FeatureBRBE}  }, // 178
3699  { "BRBSRC6_EL1", "BRBSRC6_EL1", 0x8C31, true, false,  {AArch64::FeatureBRBE}  }, // 179
3700  { "BRBSRC7_EL1", "BRBSRC7_EL1", 0x8C39, true, false,  {AArch64::FeatureBRBE}  }, // 180
3701  { "BRBSRC8_EL1", "BRBSRC8_EL1", 0x8C41, true, false,  {AArch64::FeatureBRBE}  }, // 181
3702  { "BRBSRC9_EL1", "BRBSRC9_EL1", 0x8C49, true, false,  {AArch64::FeatureBRBE}  }, // 182
3703  { "BRBSRCINJ_EL1", "BRBSRCINJ_EL1", 0x8C89, true, true,  {AArch64::FeatureBRBE}  }, // 183
3704  { "BRBTGT0_EL1", "BRBTGT0_EL1", 0x8C02, true, false,  {AArch64::FeatureBRBE}  }, // 184
3705  { "BRBTGT10_EL1", "BRBTGT10_EL1", 0x8C52, true, false,  {AArch64::FeatureBRBE}  }, // 185
3706  { "BRBTGT11_EL1", "BRBTGT11_EL1", 0x8C5A, true, false,  {AArch64::FeatureBRBE}  }, // 186
3707  { "BRBTGT12_EL1", "BRBTGT12_EL1", 0x8C62, true, false,  {AArch64::FeatureBRBE}  }, // 187
3708  { "BRBTGT13_EL1", "BRBTGT13_EL1", 0x8C6A, true, false,  {AArch64::FeatureBRBE}  }, // 188
3709  { "BRBTGT14_EL1", "BRBTGT14_EL1", 0x8C72, true, false,  {AArch64::FeatureBRBE}  }, // 189
3710  { "BRBTGT15_EL1", "BRBTGT15_EL1", 0x8C7A, true, false,  {AArch64::FeatureBRBE}  }, // 190
3711  { "BRBTGT16_EL1", "BRBTGT16_EL1", 0x8C06, true, false,  {AArch64::FeatureBRBE}  }, // 191
3712  { "BRBTGT17_EL1", "BRBTGT17_EL1", 0x8C0E, true, false,  {AArch64::FeatureBRBE}  }, // 192
3713  { "BRBTGT18_EL1", "BRBTGT18_EL1", 0x8C16, true, false,  {AArch64::FeatureBRBE}  }, // 193
3714  { "BRBTGT19_EL1", "BRBTGT19_EL1", 0x8C1E, true, false,  {AArch64::FeatureBRBE}  }, // 194
3715  { "BRBTGT1_EL1", "BRBTGT1_EL1", 0x8C0A, true, false,  {AArch64::FeatureBRBE}  }, // 195
3716  { "BRBTGT20_EL1", "BRBTGT20_EL1", 0x8C26, true, false,  {AArch64::FeatureBRBE}  }, // 196
3717  { "BRBTGT21_EL1", "BRBTGT21_EL1", 0x8C2E, true, false,  {AArch64::FeatureBRBE}  }, // 197
3718  { "BRBTGT22_EL1", "BRBTGT22_EL1", 0x8C36, true, false,  {AArch64::FeatureBRBE}  }, // 198
3719  { "BRBTGT23_EL1", "BRBTGT23_EL1", 0x8C3E, true, false,  {AArch64::FeatureBRBE}  }, // 199
3720  { "BRBTGT24_EL1", "BRBTGT24_EL1", 0x8C46, true, false,  {AArch64::FeatureBRBE}  }, // 200
3721  { "BRBTGT25_EL1", "BRBTGT25_EL1", 0x8C4E, true, false,  {AArch64::FeatureBRBE}  }, // 201
3722  { "BRBTGT26_EL1", "BRBTGT26_EL1", 0x8C56, true, false,  {AArch64::FeatureBRBE}  }, // 202
3723  { "BRBTGT27_EL1", "BRBTGT27_EL1", 0x8C5E, true, false,  {AArch64::FeatureBRBE}  }, // 203
3724  { "BRBTGT28_EL1", "BRBTGT28_EL1", 0x8C66, true, false,  {AArch64::FeatureBRBE}  }, // 204
3725  { "BRBTGT29_EL1", "BRBTGT29_EL1", 0x8C6E, true, false,  {AArch64::FeatureBRBE}  }, // 205
3726  { "BRBTGT2_EL1", "BRBTGT2_EL1", 0x8C12, true, false,  {AArch64::FeatureBRBE}  }, // 206
3727  { "BRBTGT30_EL1", "BRBTGT30_EL1", 0x8C76, true, false,  {AArch64::FeatureBRBE}  }, // 207
3728  { "BRBTGT31_EL1", "BRBTGT31_EL1", 0x8C7E, true, false,  {AArch64::FeatureBRBE}  }, // 208
3729  { "BRBTGT3_EL1", "BRBTGT3_EL1", 0x8C1A, true, false,  {AArch64::FeatureBRBE}  }, // 209
3730  { "BRBTGT4_EL1", "BRBTGT4_EL1", 0x8C22, true, false,  {AArch64::FeatureBRBE}  }, // 210
3731  { "BRBTGT5_EL1", "BRBTGT5_EL1", 0x8C2A, true, false,  {AArch64::FeatureBRBE}  }, // 211
3732  { "BRBTGT6_EL1", "BRBTGT6_EL1", 0x8C32, true, false,  {AArch64::FeatureBRBE}  }, // 212
3733  { "BRBTGT7_EL1", "BRBTGT7_EL1", 0x8C3A, true, false,  {AArch64::FeatureBRBE}  }, // 213
3734  { "BRBTGT8_EL1", "BRBTGT8_EL1", 0x8C42, true, false,  {AArch64::FeatureBRBE}  }, // 214
3735  { "BRBTGT9_EL1", "BRBTGT9_EL1", 0x8C4A, true, false,  {AArch64::FeatureBRBE}  }, // 215
3736  { "BRBTGTINJ_EL1", "BRBTGTINJ_EL1", 0x8C8A, true, true,  {AArch64::FeatureBRBE}  }, // 216
3737  { "BRBTS_EL1", "BRBTS_EL1", 0x8C82, true, true,  {AArch64::FeatureBRBE}  }, // 217
3738  { "CCSIDR2_EL1", "CCSIDR2_EL1", 0xC802, true, false,  {AArch64::FeatureCCIDX}  }, // 218
3739  { "CCSIDR_EL1", "CCSIDR_EL1", 0xC800, true, false,  {}  }, // 219
3740  { "CLIDR_EL1", "CLIDR_EL1", 0xC801, true, false,  {}  }, // 220
3741  { "CNTFRQ_EL0", "CNTFRQ_EL0", 0xDF00, true, true,  {}  }, // 221
3742  { "CNTHCTL_EL2", "CNTHCTL_EL2", 0xE708, true, true,  {}  }, // 222
3743  { "CNTHPS_CTL_EL2", "CNTHPS_CTL_EL2", 0xE729, true, true,  {AArch64::FeatureSEL2}  }, // 223
3744  { "CNTHPS_CVAL_EL2", "CNTHPS_CVAL_EL2", 0xE72A, true, true,  {AArch64::FeatureSEL2}  }, // 224
3745  { "CNTHPS_TVAL_EL2", "CNTHPS_TVAL_EL2", 0xE728, true, true,  {AArch64::FeatureSEL2}  }, // 225
3746  { "CNTHP_CTL_EL2", "CNTHP_CTL_EL2", 0xE711, true, true,  {}  }, // 226
3747  { "CNTHP_CVAL_EL2", "CNTHP_CVAL_EL2", 0xE712, true, true,  {}  }, // 227
3748  { "CNTHP_TVAL_EL2", "CNTHP_TVAL_EL2", 0xE710, true, true,  {}  }, // 228
3749  { "CNTHVS_CTL_EL2", "CNTHVS_CTL_EL2", 0xE721, true, true,  {AArch64::FeatureSEL2}  }, // 229
3750  { "CNTHVS_CVAL_EL2", "CNTHVS_CVAL_EL2", 0xE722, true, true,  {AArch64::FeatureSEL2}  }, // 230
3751  { "CNTHVS_TVAL_EL2", "CNTHVS_TVAL_EL2", 0xE720, true, true,  {AArch64::FeatureSEL2}  }, // 231
3752  { "CNTHV_CTL_EL2", "CNTHV_CTL_EL2", 0xE719, true, true,  {AArch64::FeatureVH}  }, // 232
3753  { "CNTHV_CVAL_EL2", "CNTHV_CVAL_EL2", 0xE71A, true, true,  {AArch64::FeatureVH}  }, // 233
3754  { "CNTHV_TVAL_EL2", "CNTHV_TVAL_EL2", 0xE718, true, true,  {AArch64::FeatureVH}  }, // 234
3755  { "CNTISCALE_EL2", "CNTISCALE_EL2", 0xE705, true, true,  {AArch64::FeatureEnhancedCounterVirtualization}  }, // 235
3756  { "CNTKCTL_EL1", "CNTKCTL_EL1", 0xC708, true, true,  {}  }, // 236
3757  { "CNTKCTL_EL12", "CNTKCTL_EL12", 0xEF08, true, true,  {AArch64::FeatureVH}  }, // 237
3758  { "CNTPCTSS_EL0", "CNTPCTSS_EL0", 0xDF05, true, false,  {AArch64::FeatureEnhancedCounterVirtualization}  }, // 238
3759  { "CNTPCT_EL0", "CNTPCT_EL0", 0xDF01, true, false,  {}  }, // 239
3760  { "CNTPOFF_EL2", "CNTPOFF_EL2", 0xE706, true, true,  {AArch64::FeatureEnhancedCounterVirtualization}  }, // 240
3761  { "CNTPS_CTL_EL1", "CNTPS_CTL_EL1", 0xFF11, true, true,  {}  }, // 241
3762  { "CNTPS_CVAL_EL1", "CNTPS_CVAL_EL1", 0xFF12, true, true,  {}  }, // 242
3763  { "CNTPS_TVAL_EL1", "CNTPS_TVAL_EL1", 0xFF10, true, true,  {}  }, // 243
3764  { "CNTP_CTL_EL0", "CNTP_CTL_EL0", 0xDF11, true, true,  {}  }, // 244
3765  { "CNTP_CTL_EL02", "CNTP_CTL_EL02", 0xEF11, true, true,  {AArch64::FeatureVH}  }, // 245
3766  { "CNTP_CVAL_EL0", "CNTP_CVAL_EL0", 0xDF12, true, true,  {}  }, // 246
3767  { "CNTP_CVAL_EL02", "CNTP_CVAL_EL02", 0xEF12, true, true,  {AArch64::FeatureVH}  }, // 247
3768  { "CNTP_TVAL_EL0", "CNTP_TVAL_EL0", 0xDF10, true, true,  {}  }, // 248
3769  { "CNTP_TVAL_EL02", "CNTP_TVAL_EL02", 0xEF10, true, true,  {AArch64::FeatureVH}  }, // 249
3770  { "CNTSCALE_EL2", "CNTSCALE_EL2", 0xE704, true, true,  {AArch64::FeatureEnhancedCounterVirtualization}  }, // 250
3771  { "CNTVCTSS_EL0", "CNTVCTSS_EL0", 0xDF06, true, false,  {AArch64::FeatureEnhancedCounterVirtualization}  }, // 251
3772  { "CNTVCT_EL0", "CNTVCT_EL0", 0xDF02, true, false,  {}  }, // 252
3773  { "CNTVFRQ_EL2", "CNTVFRQ_EL2", 0xE707, true, true,  {AArch64::FeatureEnhancedCounterVirtualization}  }, // 253
3774  { "CNTVOFF_EL2", "CNTVOFF_EL2", 0xE703, true, true,  {}  }, // 254
3775  { "CNTV_CTL_EL0", "CNTV_CTL_EL0", 0xDF19, true, true,  {}  }, // 255
3776  { "CNTV_CTL_EL02", "CNTV_CTL_EL02", 0xEF19, true, true,  {AArch64::FeatureVH}  }, // 256
3777  { "CNTV_CVAL_EL0", "CNTV_CVAL_EL0", 0xDF1A, true, true,  {}  }, // 257
3778  { "CNTV_CVAL_EL02", "CNTV_CVAL_EL02", 0xEF1A, true, true,  {AArch64::FeatureVH}  }, // 258
3779  { "CNTV_TVAL_EL0", "CNTV_TVAL_EL0", 0xDF18, true, true,  {}  }, // 259
3780  { "CNTV_TVAL_EL02", "CNTV_TVAL_EL02", 0xEF18, true, true,  {AArch64::FeatureVH}  }, // 260
3781  { "CONTEXTIDR_EL1", "CONTEXTIDR_EL1", 0xC681, true, true,  {}  }, // 261
3782  { "CONTEXTIDR_EL12", "CONTEXTIDR_EL12", 0xEE81, true, true,  {AArch64::FeatureVH}  }, // 262
3783  { "CONTEXTIDR_EL2", "CONTEXTIDR_EL2", 0xE681, true, true,  {AArch64::FeatureCONTEXTIDREL2}  }, // 263
3784  { "CPACR_EL1", "CPACR_EL1", 0xC082, true, true,  {}  }, // 264
3785  { "CPACR_EL12", "CPACR_EL12", 0xE882, true, true,  {AArch64::FeatureVH}  }, // 265
3786  { "CPM_IOACC_CTL_EL3", "CPM_IOACC_CTL_EL3", 0xFF90, true, true,  {AArch64::FeatureAppleA7SysReg}  }, // 266
3787  { "CPTR_EL2", "CPTR_EL2", 0xE08A, true, true,  {}  }, // 267
3788  { "CPTR_EL3", "CPTR_EL3", 0xF08A, true, true,  {}  }, // 268
3789  { "CSSELR_EL1", "CSSELR_EL1", 0xD000, true, true,  {}  }, // 269
3790  { "CTR_EL0", "CTR_EL0", 0xD801, true, false,  {}  }, // 270
3791  { "CurrentEL", "CurrentEL", 0xC212, true, false,  {}  }, // 271
3792  { "DACR32_EL2", "DACR32_EL2", 0xE180, true, true,  {}  }, // 272
3793  { "DAIF", "DAIF", 0xDA11, true, true,  {}  }, // 273
3794  { "DBGAUTHSTATUS_EL1", "DBGAUTHSTATUS_EL1", 0x83F6, true, false,  {}  }, // 274
3795  { "DBGBCR0_EL1", "DBGBCR0_EL1", 0x8005, true, true,  {}  }, // 275
3796  { "DBGBCR10_EL1", "DBGBCR10_EL1", 0x8055, true, true,  {}  }, // 276
3797  { "DBGBCR11_EL1", "DBGBCR11_EL1", 0x805D, true, true,  {}  }, // 277
3798  { "DBGBCR12_EL1", "DBGBCR12_EL1", 0x8065, true, true,  {}  }, // 278
3799  { "DBGBCR13_EL1", "DBGBCR13_EL1", 0x806D, true, true,  {}  }, // 279
3800  { "DBGBCR14_EL1", "DBGBCR14_EL1", 0x8075, true, true,  {}  }, // 280
3801  { "DBGBCR15_EL1", "DBGBCR15_EL1", 0x807D, true, true,  {}  }, // 281
3802  { "DBGBCR1_EL1", "DBGBCR1_EL1", 0x800D, true, true,  {}  }, // 282
3803  { "DBGBCR2_EL1", "DBGBCR2_EL1", 0x8015, true, true,  {}  }, // 283
3804  { "DBGBCR3_EL1", "DBGBCR3_EL1", 0x801D, true, true,  {}  }, // 284
3805  { "DBGBCR4_EL1", "DBGBCR4_EL1", 0x8025, true, true,  {}  }, // 285
3806  { "DBGBCR5_EL1", "DBGBCR5_EL1", 0x802D, true, true,  {}  }, // 286
3807  { "DBGBCR6_EL1", "DBGBCR6_EL1", 0x8035, true, true,  {}  }, // 287
3808  { "DBGBCR7_EL1", "DBGBCR7_EL1", 0x803D, true, true,  {}  }, // 288
3809  { "DBGBCR8_EL1", "DBGBCR8_EL1", 0x8045, true, true,  {}  }, // 289
3810  { "DBGBCR9_EL1", "DBGBCR9_EL1", 0x804D, true, true,  {}  }, // 290
3811  { "DBGBVR0_EL1", "DBGBVR0_EL1", 0x8004, true, true,  {}  }, // 291
3812  { "DBGBVR10_EL1", "DBGBVR10_EL1", 0x8054, true, true,  {}  }, // 292
3813  { "DBGBVR11_EL1", "DBGBVR11_EL1", 0x805C, true, true,  {}  }, // 293
3814  { "DBGBVR12_EL1", "DBGBVR12_EL1", 0x8064, true, true,  {}  }, // 294
3815  { "DBGBVR13_EL1", "DBGBVR13_EL1", 0x806C, true, true,  {}  }, // 295
3816  { "DBGBVR14_EL1", "DBGBVR14_EL1", 0x8074, true, true,  {}  }, // 296
3817  { "DBGBVR15_EL1", "DBGBVR15_EL1", 0x807C, true, true,  {}  }, // 297
3818  { "DBGBVR1_EL1", "DBGBVR1_EL1", 0x800C, true, true,  {}  }, // 298
3819  { "DBGBVR2_EL1", "DBGBVR2_EL1", 0x8014, true, true,  {}  }, // 299
3820  { "DBGBVR3_EL1", "DBGBVR3_EL1", 0x801C, true, true,  {}  }, // 300
3821  { "DBGBVR4_EL1", "DBGBVR4_EL1", 0x8024, true, true,  {}  }, // 301
3822  { "DBGBVR5_EL1", "DBGBVR5_EL1", 0x802C, true, true,  {}  }, // 302
3823  { "DBGBVR6_EL1", "DBGBVR6_EL1", 0x8034, true, true,  {}  }, // 303
3824  { "DBGBVR7_EL1", "DBGBVR7_EL1", 0x803C, true, true,  {}  }, // 304
3825  { "DBGBVR8_EL1", "DBGBVR8_EL1", 0x8044, true, true,  {}  }, // 305
3826  { "DBGBVR9_EL1", "DBGBVR9_EL1", 0x804C, true, true,  {}  }, // 306
3827  { "DBGCLAIMCLR_EL1", "DBGCLAIMCLR_EL1", 0x83CE, true, true,  {}  }, // 307
3828  { "DBGCLAIMSET_EL1", "DBGCLAIMSET_EL1", 0x83C6, true, true,  {}  }, // 308
3829  { "DBGDTRRX_EL0", "DBGDTRRX_EL0", 0x9828, true, false,  {}  }, // 309
3830  { "DBGDTRTX_EL0", "DBGDTRTX_EL0", 0x9828, false, true,  {}  }, // 310
3831  { "DBGDTR_EL0", "DBGDTR_EL0", 0x9820, true, true,  {}  }, // 311
3832  { "DBGPRCR_EL1", "DBGPRCR_EL1", 0x80A4, true, true,  {}  }, // 312
3833  { "DBGVCR32_EL2", "DBGVCR32_EL2", 0xA038, true, true,  {}  }, // 313
3834  { "DBGWCR0_EL1", "DBGWCR0_EL1", 0x8007, true, true,  {}  }, // 314
3835  { "DBGWCR10_EL1", "DBGWCR10_EL1", 0x8057, true, true,  {}  }, // 315
3836  { "DBGWCR11_EL1", "DBGWCR11_EL1", 0x805F, true, true,  {}  }, // 316
3837  { "DBGWCR12_EL1", "DBGWCR12_EL1", 0x8067, true, true,  {}  }, // 317
3838  { "DBGWCR13_EL1", "DBGWCR13_EL1", 0x806F, true, true,  {}  }, // 318
3839  { "DBGWCR14_EL1", "DBGWCR14_EL1", 0x8077, true, true,  {}  }, // 319
3840  { "DBGWCR15_EL1", "DBGWCR15_EL1", 0x807F, true, true,  {}  }, // 320
3841  { "DBGWCR1_EL1", "DBGWCR1_EL1", 0x800F, true, true,  {}  }, // 321
3842  { "DBGWCR2_EL1", "DBGWCR2_EL1", 0x8017, true, true,  {}  }, // 322
3843  { "DBGWCR3_EL1", "DBGWCR3_EL1", 0x801F, true, true,  {}  }, // 323
3844  { "DBGWCR4_EL1", "DBGWCR4_EL1", 0x8027, true, true,  {}  }, // 324
3845  { "DBGWCR5_EL1", "DBGWCR5_EL1", 0x802F, true, true,  {}  }, // 325
3846  { "DBGWCR6_EL1", "DBGWCR6_EL1", 0x8037, true, true,  {}  }, // 326
3847  { "DBGWCR7_EL1", "DBGWCR7_EL1", 0x803F, true, true,  {}  }, // 327
3848  { "DBGWCR8_EL1", "DBGWCR8_EL1", 0x8047, true, true,  {}  }, // 328
3849  { "DBGWCR9_EL1", "DBGWCR9_EL1", 0x804F, true, true,  {}  }, // 329
3850  { "DBGWVR0_EL1", "DBGWVR0_EL1", 0x8006, true, true,  {}  }, // 330
3851  { "DBGWVR10_EL1", "DBGWVR10_EL1", 0x8056, true, true,  {}  }, // 331
3852  { "DBGWVR11_EL1", "DBGWVR11_EL1", 0x805E, true, true,  {}  }, // 332
3853  { "DBGWVR12_EL1", "DBGWVR12_EL1", 0x8066, true, true,  {}  }, // 333
3854  { "DBGWVR13_EL1", "DBGWVR13_EL1", 0x806E, true, true,  {}  }, // 334
3855  { "DBGWVR14_EL1", "DBGWVR14_EL1", 0x8076, true, true,  {}  }, // 335
3856  { "DBGWVR15_EL1", "DBGWVR15_EL1", 0x807E, true, true,  {}  }, // 336
3857  { "DBGWVR1_EL1", "DBGWVR1_EL1", 0x800E, true, true,  {}  }, // 337
3858  { "DBGWVR2_EL1", "DBGWVR2_EL1", 0x8016, true, true,  {}  }, // 338
3859  { "DBGWVR3_EL1", "DBGWVR3_EL1", 0x801E, true, true,  {}  }, // 339
3860  { "DBGWVR4_EL1", "DBGWVR4_EL1", 0x8026, true, true,  {}  }, // 340
3861  { "DBGWVR5_EL1", "DBGWVR5_EL1", 0x802E, true, true,  {}  }, // 341
3862  { "DBGWVR6_EL1", "DBGWVR6_EL1", 0x8036, true, true,  {}  }, // 342
3863  { "DBGWVR7_EL1", "DBGWVR7_EL1", 0x803E, true, true,  {}  }, // 343
3864  { "DBGWVR8_EL1", "DBGWVR8_EL1", 0x8046, true, true,  {}  }, // 344
3865  { "DBGWVR9_EL1", "DBGWVR9_EL1", 0x804E, true, true,  {}  }, // 345
3866  { "DCZID_EL0", "DCZID_EL0", 0xD807, true, false,  {}  }, // 346
3867  { "DISR_EL1", "DISR_EL1", 0xC609, true, true,  {AArch64::FeatureRAS}  }, // 347
3868  { "DIT", "DIT", 0xDA15, true, true,  {AArch64::FeatureDIT}  }, // 348
3869  { "DLR_EL0", "DLR_EL0", 0xDA29, true, true,  {}  }, // 349
3870  { "DSPSR_EL0", "DSPSR_EL0", 0xDA28, true, true,  {}  }, // 350
3871  { "ELR_EL1", "ELR_EL1", 0xC201, true, true,  {}  }, // 351
3872  { "ELR_EL12", "ELR_EL12", 0xEA01, true, true,  {AArch64::FeatureVH}  }, // 352
3873  { "ELR_EL2", "ELR_EL2", 0xE201, true, true,  {}  }, // 353
3874  { "ELR_EL3", "ELR_EL3", 0xF201, true, true,  {}  }, // 354
3875  { "ERRIDR_EL1", "ERRIDR_EL1", 0xC298, true, false,  {AArch64::FeatureRAS}  }, // 355
3876  { "ERRSELR_EL1", "ERRSELR_EL1", 0xC299, true, true,  {AArch64::FeatureRAS}  }, // 356
3877  { "ERXADDR_EL1", "ERXADDR_EL1", 0xC2A3, true, true,  {AArch64::FeatureRAS}  }, // 357
3878  { "ERXCTLR_EL1", "ERXCTLR_EL1", 0xC2A1, true, true,  {AArch64::FeatureRAS}  }, // 358
3879  { "ERXFR_EL1", "ERXFR_EL1", 0xC2A0, true, false,  {AArch64::FeatureRAS}  }, // 359
3880  { "ERXGSR_EL1", "ERXGSR_EL1", 0xC29A, true, false,  {AArch64::FeatureRASv2}  }, // 360
3881  { "ERXMISC0_EL1", "ERXMISC0_EL1", 0xC2A8, true, true,  {AArch64::FeatureRAS}  }, // 361
3882  { "ERXMISC1_EL1", "ERXMISC1_EL1", 0xC2A9, true, true,  {AArch64::FeatureRAS}  }, // 362
3883  { "ERXMISC2_EL1", "ERXMISC2_EL1", 0xC2AA, true, true,  {}  }, // 363
3884  { "ERXMISC3_EL1", "ERXMISC3_EL1", 0xC2AB, true, true,  {}  }, // 364
3885  { "ERXPFGCDN_EL1", "ERXPFGCDN_EL1", 0xC2A6, true, true,  {}  }, // 365
3886  { "ERXPFGCTL_EL1", "ERXPFGCTL_EL1", 0xC2A5, true, true,  {}  }, // 366
3887  { "ERXPFGF_EL1", "ERXPFGF_EL1", 0xC2A4, true, false,  {}  }, // 367
3888  { "ERXSTATUS_EL1", "ERXSTATUS_EL1", 0xC2A2, true, true,  {AArch64::FeatureRAS}  }, // 368
3889  { "ESR_EL1", "ESR_EL1", 0xC290, true, true,  {}  }, // 369
3890  { "ESR_EL12", "ESR_EL12", 0xEA90, true, true,  {AArch64::FeatureVH}  }, // 370
3891  { "ESR_EL2", "ESR_EL2", 0xE290, true, true,  {}  }, // 371
3892  { "ESR_EL3", "ESR_EL3", 0xF290, true, true,  {}  }, // 372
3893  { "FAR_EL1", "FAR_EL1", 0xC300, true, true,  {}  }, // 373
3894  { "FAR_EL12", "FAR_EL12", 0xEB00, true, true,  {AArch64::FeatureVH}  }, // 374
3895  { "FAR_EL2", "FAR_EL2", 0xE300, true, true,  {}  }, // 375
3896  { "FAR_EL3", "FAR_EL3", 0xF300, true, true,  {}  }, // 376
3897  { "FPCR", "FPCR", 0xDA20, true, true,  {}  }, // 377
3898  { "FPEXC32_EL2", "FPEXC32_EL2", 0xE298, true, true,  {}  }, // 378
3899  { "FPSR", "FPSR", 0xDA21, true, true,  {}  }, // 379
3900  { "GCR_EL1", "GCR_EL1", 0xC086, true, true,  {AArch64::FeatureMTE}  }, // 380
3901  { "GMID_EL1", "GMID_EL1", 0xC804, true, false,  {AArch64::FeatureMTE}  }, // 381
3902  { "GPCCR_EL3", "GPCCR_EL3", 0xF10E, true, true,  {AArch64::FeatureRME}  }, // 382
3903  { "GPTBR_EL3", "GPTBR_EL3", 0xF10C, true, true,  {AArch64::FeatureRME}  }, // 383
3904  { "HACR_EL2", "HACR_EL2", 0xE08F, true, true,  {}  }, // 384
3905  { "HAFGRTR_EL2", "HAFGRTR_EL2", 0xE18E, true, true,  {AArch64::FeatureFineGrainedTraps}  }, // 385
3906  { "HCRX_EL2", "HCRX_EL2", 0xE092, true, true,  {AArch64::FeatureHCX}  }, // 386
3907  { "HCR_EL2", "HCR_EL2", 0xE088, true, true,  {}  }, // 387
3908  { "HDFGRTR2_EL2", "HDFGRTR2_EL2", 0xE188, true, true,  {AArch64::FeatureFineGrainedTraps}  }, // 388
3909  { "HDFGRTR_EL2", "HDFGRTR_EL2", 0xE18C, true, true,  {AArch64::FeatureFineGrainedTraps}  }, // 389
3910  { "HDFGWTR2_EL2", "HDFGWTR2_EL2", 0xE189, true, true,  {AArch64::FeatureFineGrainedTraps}  }, // 390
3911  { "HDFGWTR_EL2", "HDFGWTR_EL2", 0xE18D, true, true,  {AArch64::FeatureFineGrainedTraps}  }, // 391
3912  { "HFGITR2_EL2", "HFGITR2_EL2", 0xE18F, true, true,  {AArch64::FeatureFineGrainedTraps}  }, // 392
3913  { "HFGITR_EL2", "HFGITR_EL2", 0xE08E, true, true,  {AArch64::FeatureFineGrainedTraps}  }, // 393
3914  { "HFGRTR2_EL2", "HFGRTR2_EL2", 0xE18A, true, true,  {AArch64::FeatureFineGrainedTraps}  }, // 394
3915  { "HFGRTR_EL2", "HFGRTR_EL2", 0xE08C, true, true,  {AArch64::FeatureFineGrainedTraps}  }, // 395
3916  { "HFGWTR2_EL2", "HFGWTR2_EL2", 0xE18B, true, true,  {AArch64::FeatureFineGrainedTraps}  }, // 396
3917  { "HFGWTR_EL2", "HFGWTR_EL2", 0xE08D, true, true,  {AArch64::FeatureFineGrainedTraps}  }, // 397
3918  { "HPFAR_EL2", "HPFAR_EL2", 0xE304, true, true,  {}  }, // 398
3919  { "HSTR_EL2", "HSTR_EL2", 0xE08B, true, true,  {}  }, // 399
3920  { "ICC_AP0R0_EL1", "ICC_AP0R0_EL1", 0xC644, true, true,  {}  }, // 400
3921  { "ICC_AP0R1_EL1", "ICC_AP0R1_EL1", 0xC645, true, true,  {}  }, // 401
3922  { "ICC_AP0R2_EL1", "ICC_AP0R2_EL1", 0xC646, true, true,  {}  }, // 402
3923  { "ICC_AP0R3_EL1", "ICC_AP0R3_EL1", 0xC647, true, true,  {}  }, // 403
3924  { "ICC_AP1R0_EL1", "ICC_AP1R0_EL1", 0xC648, true, true,  {}  }, // 404
3925  { "ICC_AP1R1_EL1", "ICC_AP1R1_EL1", 0xC649, true, true,  {}  }, // 405
3926  { "ICC_AP1R2_EL1", "ICC_AP1R2_EL1", 0xC64A, true, true,  {}  }, // 406
3927  { "ICC_AP1R3_EL1", "ICC_AP1R3_EL1", 0xC64B, true, true,  {}  }, // 407
3928  { "ICC_ASGI1R_EL1", "ICC_ASGI1R_EL1", 0xC65E, false, true,  {}  }, // 408
3929  { "ICC_BPR0_EL1", "ICC_BPR0_EL1", 0xC643, true, true,  {}  }, // 409
3930  { "ICC_BPR1_EL1", "ICC_BPR1_EL1", 0xC663, true, true,  {}  }, // 410
3931  { "ICC_CTLR_EL1", "ICC_CTLR_EL1", 0xC664, true, true,  {}  }, // 411
3932  { "ICC_CTLR_EL3", "ICC_CTLR_EL3", 0xF664, true, true,  {}  }, // 412
3933  { "ICC_DIR_EL1", "ICC_DIR_EL1", 0xC659, false, true,  {}  }, // 413
3934  { "ICC_EOIR0_EL1", "ICC_EOIR0_EL1", 0xC641, false, true,  {}  }, // 414
3935  { "ICC_EOIR1_EL1", "ICC_EOIR1_EL1", 0xC661, false, true,  {}  }, // 415
3936  { "ICC_HPPIR0_EL1", "ICC_HPPIR0_EL1", 0xC642, true, false,  {}  }, // 416
3937  { "ICC_HPPIR1_EL1", "ICC_HPPIR1_EL1", 0xC662, true, false,  {}  }, // 417
3938  { "ICC_IAR0_EL1", "ICC_IAR0_EL1", 0xC640, true, false,  {}  }, // 418
3939  { "ICC_IAR1_EL1", "ICC_IAR1_EL1", 0xC660, true, false,  {}  }, // 419
3940  { "ICC_IGRPEN0_EL1", "ICC_IGRPEN0_EL1", 0xC666, true, true,  {}  }, // 420
3941  { "ICC_IGRPEN1_EL1", "ICC_IGRPEN1_EL1", 0xC667, true, true,  {}  }, // 421
3942  { "ICC_IGRPEN1_EL3", "ICC_IGRPEN1_EL3", 0xF667, true, true,  {}  }, // 422
3943  { "ICC_NMIAR1_EL1", "ICC_NMIAR1_EL1", 0xC64D, true, false,  {AArch64::FeatureNMI}  }, // 423
3944  { "ICC_PMR_EL1", "ICC_PMR_EL1", 0xC230, true, true,  {}  }, // 424
3945  { "ICC_RPR_EL1", "ICC_RPR_EL1", 0xC65B, true, false,  {}  }, // 425
3946  { "ICC_SGI0R_EL1", "ICC_SGI0R_EL1", 0xC65F, false, true,  {}  }, // 426
3947  { "ICC_SGI1R_EL1", "ICC_SGI1R_EL1", 0xC65D, false, true,  {}  }, // 427
3948  { "ICC_SRE_EL1", "ICC_SRE_EL1", 0xC665, true, true,  {}  }, // 428
3949  { "ICC_SRE_EL2", "ICC_SRE_EL2", 0xE64D, true, true,  {}  }, // 429
3950  { "ICC_SRE_EL3", "ICC_SRE_EL3", 0xF665, true, true,  {}  }, // 430
3951  { "ICH_AP0R0_EL2", "ICH_AP0R0_EL2", 0xE640, true, true,  {}  }, // 431
3952  { "ICH_AP0R1_EL2", "ICH_AP0R1_EL2", 0xE641, true, true,  {}  }, // 432
3953  { "ICH_AP0R2_EL2", "ICH_AP0R2_EL2", 0xE642, true, true,  {}  }, // 433
3954  { "ICH_AP0R3_EL2", "ICH_AP0R3_EL2", 0xE643, true, true,  {}  }, // 434
3955  { "ICH_AP1R0_EL2", "ICH_AP1R0_EL2", 0xE648, true, true,  {}  }, // 435
3956  { "ICH_AP1R1_EL2", "ICH_AP1R1_EL2", 0xE649, true, true,  {}  }, // 436
3957  { "ICH_AP1R2_EL2", "ICH_AP1R2_EL2", 0xE64A, true, true,  {}  }, // 437
3958  { "ICH_AP1R3_EL2", "ICH_AP1R3_EL2", 0xE64B, true, true,  {}  }, // 438
3959  { "ICH_EISR_EL2", "ICH_EISR_EL2", 0xE65B, true, false,  {}  }, // 439
3960  { "ICH_ELRSR_EL2", "ICH_ELRSR_EL2", 0xE65D, true, false,  {}  }, // 440
3961  { "ICH_HCR_EL2", "ICH_HCR_EL2", 0xE658, true, true,  {}  }, // 441
3962  { "ICH_LR0_EL2", "ICH_LR0_EL2", 0xE660, true, true,  {}  }, // 442
3963  { "ICH_LR10_EL2", "ICH_LR10_EL2", 0xE66A, true, true,  {}  }, // 443
3964  { "ICH_LR11_EL2", "ICH_LR11_EL2", 0xE66B, true, true,  {}  }, // 444
3965  { "ICH_LR12_EL2", "ICH_LR12_EL2", 0xE66C, true, true,  {}  }, // 445
3966  { "ICH_LR13_EL2", "ICH_LR13_EL2", 0xE66D, true, true,  {}  }, // 446
3967  { "ICH_LR14_EL2", "ICH_LR14_EL2", 0xE66E, true, true,  {}  }, // 447
3968  { "ICH_LR15_EL2", "ICH_LR15_EL2", 0xE66F, true, true,  {}  }, // 448
3969  { "ICH_LR1_EL2", "ICH_LR1_EL2", 0xE661, true, true,  {}  }, // 449
3970  { "ICH_LR2_EL2", "ICH_LR2_EL2", 0xE662, true, true,  {}  }, // 450
3971  { "ICH_LR3_EL2", "ICH_LR3_EL2", 0xE663, true, true,  {}  }, // 451
3972  { "ICH_LR4_EL2", "ICH_LR4_EL2", 0xE664, true, true,  {}  }, // 452
3973  { "ICH_LR5_EL2", "ICH_LR5_EL2", 0xE665, true, true,  {}  }, // 453
3974  { "ICH_LR6_EL2", "ICH_LR6_EL2", 0xE666, true, true,  {}  }, // 454
3975  { "ICH_LR7_EL2", "ICH_LR7_EL2", 0xE667, true, true,  {}  }, // 455
3976  { "ICH_LR8_EL2", "ICH_LR8_EL2", 0xE668, true, true,  {}  }, // 456
3977  { "ICH_LR9_EL2", "ICH_LR9_EL2", 0xE669, true, true,  {}  }, // 457
3978  { "ICH_MISR_EL2", "ICH_MISR_EL2", 0xE65A, true, false,  {}  }, // 458
3979  { "ICH_VMCR_EL2", "ICH_VMCR_EL2", 0xE65F, true, true,  {}  }, // 459
3980  { "ICH_VTR_EL2", "ICH_VTR_EL2", 0xE659, true, false,  {}  }, // 460
3981  { "ID_AA64AFR0_EL1", "ID_AA64AFR0_EL1", 0xC02C, true, false,  {}  }, // 461
3982  { "ID_AA64AFR1_EL1", "ID_AA64AFR1_EL1", 0xC02D, true, false,  {}  }, // 462
3983  { "ID_AA64DFR0_EL1", "ID_AA64DFR0_EL1", 0xC028, true, false,  {}  }, // 463
3984  { "ID_AA64DFR1_EL1", "ID_AA64DFR1_EL1", 0xC029, true, false,  {}  }, // 464
3985  { "ID_AA64ISAR0_EL1", "ID_AA64ISAR0_EL1", 0xC030, true, false,  {}  }, // 465
3986  { "ID_AA64ISAR1_EL1", "ID_AA64ISAR1_EL1", 0xC031, true, false,  {}  }, // 466
3987  { "ID_AA64ISAR2_EL1", "ID_AA64ISAR2_EL1", 0xC032, true, false,  {}  }, // 467
3988  { "ID_AA64MMFR0_EL1", "ID_AA64MMFR0_EL1", 0xC038, true, false,  {}  }, // 468
3989  { "ID_AA64MMFR1_EL1", "ID_AA64MMFR1_EL1", 0xC039, true, false,  {}  }, // 469
3990  { "ID_AA64MMFR2_EL1", "ID_AA64MMFR2_EL1", 0xC03A, true, false,  {}  }, // 470
3991  { "ID_AA64MMFR3_EL1", "ID_AA64MMFR3_EL1", 0xC03B, true, false,  {}  }, // 471
3992  { "ID_AA64MMFR4_EL1", "ID_AA64MMFR4_EL1", 0xC03C, true, false,  {}  }, // 472
3993  { "ID_AA64PFR0_EL1", "ID_AA64PFR0_EL1", 0xC020, true, false,  {}  }, // 473
3994  { "ID_AA64PFR1_EL1", "ID_AA64PFR1_EL1", 0xC021, true, false,  {}  }, // 474
3995  { "ID_AA64PFR2_EL1", "ID_AA64PFR2_EL1", 0xC022, true, false,  {}  }, // 475
3996  { "ID_AA64SMFR0_EL1", "ID_AA64SMFR0_EL1", 0xC025, true, false,  {AArch64::FeatureSME}  }, // 476
3997  { "ID_AA64ZFR0_EL1", "ID_AA64ZFR0_EL1", 0xC024, true, false,  {AArch64::FeatureSVE}  }, // 477
3998  { "ID_AFR0_EL1", "ID_AFR0_EL1", 0xC00B, true, false,  {}  }, // 478
3999  { "ID_DFR0_EL1", "ID_DFR0_EL1", 0xC00A, true, false,  {}  }, // 479
4000  { "ID_DFR1_EL1", "ID_DFR1_EL1", 0xC01D, true, false,  {}  }, // 480
4001  { "ID_ISAR0_EL1", "ID_ISAR0_EL1", 0xC010, true, false,  {}  }, // 481
4002  { "ID_ISAR1_EL1", "ID_ISAR1_EL1", 0xC011, true, false,  {}  }, // 482
4003  { "ID_ISAR2_EL1", "ID_ISAR2_EL1", 0xC012, true, false,  {}  }, // 483
4004  { "ID_ISAR3_EL1", "ID_ISAR3_EL1", 0xC013, true, false,  {}  }, // 484
4005  { "ID_ISAR4_EL1", "ID_ISAR4_EL1", 0xC014, true, false,  {}  }, // 485
4006  { "ID_ISAR5_EL1", "ID_ISAR5_EL1", 0xC015, true, false,  {}  }, // 486
4007  { "ID_ISAR6_EL1", "ID_ISAR6_EL1", 0xC017, true, false,  {AArch64::HasV8_2aOps}  }, // 487
4008  { "ID_MMFR0_EL1", "ID_MMFR0_EL1", 0xC00C, true, false,  {}  }, // 488
4009  { "ID_MMFR1_EL1", "ID_MMFR1_EL1", 0xC00D, true, false,  {}  }, // 489
4010  { "ID_MMFR2_EL1", "ID_MMFR2_EL1", 0xC00E, true, false,  {}  }, // 490
4011  { "ID_MMFR3_EL1", "ID_MMFR3_EL1", 0xC00F, true, false,  {}  }, // 491
4012  { "ID_MMFR4_EL1", "ID_MMFR4_EL1", 0xC016, true, false,  {}  }, // 492
4013  { "ID_MMFR5_EL1", "ID_MMFR5_EL1", 0xC01E, true, false,  {}  }, // 493
4014  { "ID_PFR0_EL1", "ID_PFR0_EL1", 0xC008, true, false,  {}  }, // 494
4015  { "ID_PFR1_EL1", "ID_PFR1_EL1", 0xC009, true, false,  {}  }, // 495
4016  { "ID_PFR2_EL1", "ID_PFR2_EL1", 0xC01C, true, false,  {AArch64::FeatureSpecRestrict}  }, // 496
4017  { "IFSR32_EL2", "IFSR32_EL2", 0xE281, true, true,  {}  }, // 497
4018  { "ISR_EL1", "ISR_EL1", 0xC608, true, false,  {}  }, // 498
4019  { "LORC_EL1", "LORC_EL1", 0xC523, true, true,  {AArch64::FeatureLOR}  }, // 499
4020  { "LOREA_EL1", "LOREA_EL1", 0xC521, true, true,  {AArch64::FeatureLOR}  }, // 500
4021  { "LORID_EL1", "LORID_EL1", 0xC527, true, false,  {AArch64::FeatureLOR}  }, // 501
4022  { "LORN_EL1", "LORN_EL1", 0xC522, true, true,  {AArch64::FeatureLOR}  }, // 502
4023  { "LORSA_EL1", "LORSA_EL1", 0xC520, true, true,  {AArch64::FeatureLOR}  }, // 503
4024  { "MAIR2_EL1", "MAIR2_EL1", 0xC511, true, true,  {}  }, // 504
4025  { "MAIR2_EL12", "MAIR2_EL12", 0xED11, true, true,  {}  }, // 505
4026  { "MAIR2_EL2", "MAIR2_EL2", 0xE509, true, true,  {}  }, // 506
4027  { "MAIR2_EL3", "MAIR2_EL3", 0xF509, true, true,  {}  }, // 507
4028  { "MAIR_EL1", "MAIR_EL1", 0xC510, true, true,  {}  }, // 508
4029  { "MAIR_EL12", "MAIR_EL12", 0xED10, true, true,  {AArch64::FeatureVH}  }, // 509
4030  { "MAIR_EL2", "MAIR_EL2", 0xE510, true, true,  {}  }, // 510
4031  { "MAIR_EL3", "MAIR_EL3", 0xF510, true, true,  {}  }, // 511
4032  { "MDCCINT_EL1", "MDCCINT_EL1", 0x8010, true, true,  {}  }, // 512
4033  { "MDCCSR_EL0", "MDCCSR_EL0", 0x9808, true, false,  {}  }, // 513
4034  { "MDCR_EL2", "MDCR_EL2", 0xE089, true, true,  {}  }, // 514
4035  { "MDCR_EL3", "MDCR_EL3", 0xF099, true, true,  {}  }, // 515
4036  { "MDRAR_EL1", "MDRAR_EL1", 0x8080, true, false,  {}  }, // 516
4037  { "MDSCR_EL1", "MDSCR_EL1", 0x8012, true, true,  {}  }, // 517
4038  { "MDSELR_EL1", "MDSELR_EL1", 0x8022, true, true,  {}  }, // 518
4039  { "MECIDR_EL2", "MECIDR_EL2", 0xE547, true, false,  {AArch64::FeatureMEC}  }, // 519
4040  { "MECID_A0_EL2", "MECID_A0_EL2", 0xE541, true, true,  {AArch64::FeatureMEC}  }, // 520
4041  { "MECID_A1_EL2", "MECID_A1_EL2", 0xE543, true, true,  {AArch64::FeatureMEC}  }, // 521
4042  { "MECID_P0_EL2", "MECID_P0_EL2", 0xE540, true, true,  {AArch64::FeatureMEC}  }, // 522
4043  { "MECID_P1_EL2", "MECID_P1_EL2", 0xE542, true, true,  {AArch64::FeatureMEC}  }, // 523
4044  { "MECID_RL_A_EL3", "MECID_RL_A_EL3", 0xF551, true, true,  {AArch64::FeatureMEC}  }, // 524
4045  { "MFAR_EL3", "MFAR_EL3", 0xF305, true, true,  {}  }, // 525
4046  { "MIDR_EL1", "MIDR_EL1", 0xC000, true, false,  {}  }, // 526
4047  { "MPAM0_EL1", "MPAM0_EL1", 0xC529, true, true,  {AArch64::FeatureMPAM}  }, // 527
4048  { "MPAM1_EL1", "MPAM1_EL1", 0xC528, true, true,  {AArch64::FeatureMPAM}  }, // 528
4049  { "MPAM1_EL12", "MPAM1_EL12", 0xED28, true, true,  {AArch64::FeatureMPAM}  }, // 529
4050  { "MPAM2_EL2", "MPAM2_EL2", 0xE528, true, true,  {AArch64::FeatureMPAM}  }, // 530
4051  { "MPAM3_EL3", "MPAM3_EL3", 0xF528, true, true,  {AArch64::FeatureMPAM}  }, // 531
4052  { "MPAMHCR_EL2", "MPAMHCR_EL2", 0xE520, true, true,  {AArch64::FeatureMPAM}  }, // 532
4053  { "MPAMIDR_EL1", "MPAMIDR_EL1", 0xC524, true, false,  {AArch64::FeatureMPAM}  }, // 533
4054  { "MPAMSM_EL1", "MPAMSM_EL1", 0xC52B, true, true,  {AArch64::FeatureMPAM, AArch64::FeatureSME}  }, // 534
4055  { "MPAMVPM0_EL2", "MPAMVPM0_EL2", 0xE530, true, true,  {AArch64::FeatureMPAM}  }, // 535
4056  { "MPAMVPM1_EL2", "MPAMVPM1_EL2", 0xE531, true, true,  {AArch64::FeatureMPAM}  }, // 536
4057  { "MPAMVPM2_EL2", "MPAMVPM2_EL2", 0xE532, true, true,  {AArch64::FeatureMPAM}  }, // 537
4058  { "MPAMVPM3_EL2", "MPAMVPM3_EL2", 0xE533, true, true,  {AArch64::FeatureMPAM}  }, // 538
4059  { "MPAMVPM4_EL2", "MPAMVPM4_EL2", 0xE534, true, true,  {AArch64::FeatureMPAM}  }, // 539
4060  { "MPAMVPM5_EL2", "MPAMVPM5_EL2", 0xE535, true, true,  {AArch64::FeatureMPAM}  }, // 540
4061  { "MPAMVPM6_EL2", "MPAMVPM6_EL2", 0xE536, true, true,  {AArch64::FeatureMPAM}  }, // 541
4062  { "MPAMVPM7_EL2", "MPAMVPM7_EL2", 0xE537, true, true,  {AArch64::FeatureMPAM}  }, // 542
4063  { "MPAMVPMV_EL2", "MPAMVPMV_EL2", 0xE521, true, true,  {AArch64::FeatureMPAM}  }, // 543
4064  { "MPIDR_EL1", "MPIDR_EL1", 0xC005, true, false,  {}  }, // 544
4065  { "MPUIR_EL1", "MPUIR_EL1", 0xC004, true, true,  {AArch64::HasV8_0rOps}  }, // 545
4066  { "MPUIR_EL2", "MPUIR_EL2", 0xE004, true, true,  {AArch64::HasV8_0rOps}  }, // 546
4067  { "MVFR0_EL1", "MVFR0_EL1", 0xC018, true, false,  {}  }, // 547
4068  { "MVFR1_EL1", "MVFR1_EL1", 0xC019, true, false,  {}  }, // 548
4069  { "MVFR2_EL1", "MVFR2_EL1", 0xC01A, true, false,  {}  }, // 549
4070  { "NZCV", "NZCV", 0xDA10, true, true,  {}  }, // 550
4071  { "OSDLR_EL1", "OSDLR_EL1", 0x809C, true, true,  {}  }, // 551
4072  { "OSDTRRX_EL1", "OSDTRRX_EL1", 0x8002, true, true,  {}  }, // 552
4073  { "OSDTRTX_EL1", "OSDTRTX_EL1", 0x801A, true, true,  {}  }, // 553
4074  { "OSECCR_EL1", "OSECCR_EL1", 0x8032, true, true,  {}  }, // 554
4075  { "OSLAR_EL1", "OSLAR_EL1", 0x8084, false, true,  {}  }, // 555
4076  { "OSLSR_EL1", "OSLSR_EL1", 0x808C, true, false,  {}  }, // 556
4077  { "PAN", "PAN", 0xC213, true, true,  {AArch64::FeaturePAN}  }, // 557
4078  { "PAR_EL1", "PAR_EL1", 0xC3A0, true, true,  {}  }, // 558
4079  { "PFAR_EL1", "PFAR_EL1", 0xC305, true, true,  {}  }, // 559
4080  { "PFAR_EL12", "PFAR_EL12", 0xEB05, true, true,  {}  }, // 560
4081  { "PFAR_EL2", "PFAR_EL2", 0xE305, true, true,  {}  }, // 561
4082  { "PIRE0_EL1", "PIRE0_EL1", 0xC512, true, true,  {}  }, // 562
4083  { "PIRE0_EL12", "PIRE0_EL12", 0xED12, true, true,  {}  }, // 563
4084  { "PIRE0_EL2", "PIRE0_EL2", 0xE512, true, true,  {}  }, // 564
4085  { "PIR_EL1", "PIR_EL1", 0xC513, true, true,  {}  }, // 565
4086  { "PIR_EL12", "PIR_EL12", 0xED13, true, true,  {}  }, // 566
4087  { "PIR_EL2", "PIR_EL2", 0xE513, true, true,  {}  }, // 567
4088  { "PIR_EL3", "PIR_EL3", 0xF513, true, true,  {}  }, // 568
4089  { "PM", "PM", 0xC219, true, true,  {}  }, // 569
4090  { "PMBIDR_EL1", "PMBIDR_EL1", 0xC4D7, true, false,  {AArch64::FeatureSPE}  }, // 570
4091  { "PMBLIMITR_EL1", "PMBLIMITR_EL1", 0xC4D0, true, true,  {AArch64::FeatureSPE}  }, // 571
4092  { "PMBPTR_EL1", "PMBPTR_EL1", 0xC4D1, true, true,  {AArch64::FeatureSPE}  }, // 572
4093  { "PMBSR_EL1", "PMBSR_EL1", 0xC4D3, true, true,  {AArch64::FeatureSPE}  }, // 573
4094  { "PMCCFILTR_EL0", "PMCCFILTR_EL0", 0xDF7F, true, true,  {}  }, // 574
4095  { "PMCCNTR_EL0", "PMCCNTR_EL0", 0xDCE8, true, true,  {}  }, // 575
4096  { "PMCCNTSVR_EL1", "PMCCNTSVR_EL1", 0x875F, true, false,  {}  }, // 576
4097  { "PMCEID0_EL0", "PMCEID0_EL0", 0xDCE6, true, false,  {}  }, // 577
4098  { "PMCEID1_EL0", "PMCEID1_EL0", 0xDCE7, true, false,  {}  }, // 578
4099  { "PMCNTENCLR_EL0", "PMCNTENCLR_EL0", 0xDCE2, true, true,  {}  }, // 579
4100  { "PMCNTENSET_EL0", "PMCNTENSET_EL0", 0xDCE1, true, true,  {}  }, // 580
4101  { "PMCR_EL0", "PMCR_EL0", 0xDCE0, true, true,  {}  }, // 581
4102  { "PMECR_EL1", "PMECR_EL1", 0xC4F5, true, true,  {}  }, // 582
4103  { "PMEVCNTR0_EL0", "PMEVCNTR0_EL0", 0xDF40, true, true,  {}  }, // 583
4104  { "PMEVCNTR10_EL0", "PMEVCNTR10_EL0", 0xDF4A, true, true,  {}  }, // 584
4105  { "PMEVCNTR11_EL0", "PMEVCNTR11_EL0", 0xDF4B, true, true,  {}  }, // 585
4106  { "PMEVCNTR12_EL0", "PMEVCNTR12_EL0", 0xDF4C, true, true,  {}  }, // 586
4107  { "PMEVCNTR13_EL0", "PMEVCNTR13_EL0", 0xDF4D, true, true,  {}  }, // 587
4108  { "PMEVCNTR14_EL0", "PMEVCNTR14_EL0", 0xDF4E, true, true,  {}  }, // 588
4109  { "PMEVCNTR15_EL0", "PMEVCNTR15_EL0", 0xDF4F, true, true,  {}  }, // 589
4110  { "PMEVCNTR16_EL0", "PMEVCNTR16_EL0", 0xDF50, true, true,  {}  }, // 590
4111  { "PMEVCNTR17_EL0", "PMEVCNTR17_EL0", 0xDF51, true, true,  {}  }, // 591
4112  { "PMEVCNTR18_EL0", "PMEVCNTR18_EL0", 0xDF52, true, true,  {}  }, // 592
4113  { "PMEVCNTR19_EL0", "PMEVCNTR19_EL0", 0xDF53, true, true,  {}  }, // 593
4114  { "PMEVCNTR1_EL0", "PMEVCNTR1_EL0", 0xDF41, true, true,  {}  }, // 594
4115  { "PMEVCNTR20_EL0", "PMEVCNTR20_EL0", 0xDF54, true, true,  {}  }, // 595
4116  { "PMEVCNTR21_EL0", "PMEVCNTR21_EL0", 0xDF55, true, true,  {}  }, // 596
4117  { "PMEVCNTR22_EL0", "PMEVCNTR22_EL0", 0xDF56, true, true,  {}  }, // 597
4118  { "PMEVCNTR23_EL0", "PMEVCNTR23_EL0", 0xDF57, true, true,  {}  }, // 598
4119  { "PMEVCNTR24_EL0", "PMEVCNTR24_EL0", 0xDF58, true, true,  {}  }, // 599
4120  { "PMEVCNTR25_EL0", "PMEVCNTR25_EL0", 0xDF59, true, true,  {}  }, // 600
4121  { "PMEVCNTR26_EL0", "PMEVCNTR26_EL0", 0xDF5A, true, true,  {}  }, // 601
4122  { "PMEVCNTR27_EL0", "PMEVCNTR27_EL0", 0xDF5B, true, true,  {}  }, // 602
4123  { "PMEVCNTR28_EL0", "PMEVCNTR28_EL0", 0xDF5C, true, true,  {}  }, // 603
4124  { "PMEVCNTR29_EL0", "PMEVCNTR29_EL0", 0xDF5D, true, true,  {}  }, // 604
4125  { "PMEVCNTR2_EL0", "PMEVCNTR2_EL0", 0xDF42, true, true,  {}  }, // 605
4126  { "PMEVCNTR30_EL0", "PMEVCNTR30_EL0", 0xDF5E, true, true,  {}  }, // 606
4127  { "PMEVCNTR3_EL0", "PMEVCNTR3_EL0", 0xDF43, true, true,  {}  }, // 607
4128  { "PMEVCNTR4_EL0", "PMEVCNTR4_EL0", 0xDF44, true, true,  {}  }, // 608
4129  { "PMEVCNTR5_EL0", "PMEVCNTR5_EL0", 0xDF45, true, true,  {}  }, // 609
4130  { "PMEVCNTR6_EL0", "PMEVCNTR6_EL0", 0xDF46, true, true,  {}  }, // 610
4131  { "PMEVCNTR7_EL0", "PMEVCNTR7_EL0", 0xDF47, true, true,  {}  }, // 611
4132  { "PMEVCNTR8_EL0", "PMEVCNTR8_EL0", 0xDF48, true, true,  {}  }, // 612
4133  { "PMEVCNTR9_EL0", "PMEVCNTR9_EL0", 0xDF49, true, true,  {}  }, // 613
4134  { "PMEVCNTSVR0_EL1", "PMEVCNTSVR0_EL1", 0x8740, true, false,  {}  }, // 614
4135  { "PMEVCNTSVR10_EL1", "PMEVCNTSVR10_EL1", 0x874A, true, false,  {}  }, // 615
4136  { "PMEVCNTSVR11_EL1", "PMEVCNTSVR11_EL1", 0x874B, true, false,  {}  }, // 616
4137  { "PMEVCNTSVR12_EL1", "PMEVCNTSVR12_EL1", 0x874C, true, false,  {}  }, // 617
4138  { "PMEVCNTSVR13_EL1", "PMEVCNTSVR13_EL1", 0x874D, true, false,  {}  }, // 618
4139  { "PMEVCNTSVR14_EL1", "PMEVCNTSVR14_EL1", 0x874E, true, false,  {}  }, // 619
4140  { "PMEVCNTSVR15_EL1", "PMEVCNTSVR15_EL1", 0x874F, true, false,  {}  }, // 620
4141  { "PMEVCNTSVR16_EL1", "PMEVCNTSVR16_EL1", 0x8750, true, false,  {}  }, // 621
4142  { "PMEVCNTSVR17_EL1", "PMEVCNTSVR17_EL1", 0x8751, true, false,  {}  }, // 622
4143  { "PMEVCNTSVR18_EL1", "PMEVCNTSVR18_EL1", 0x8752, true, false,  {}  }, // 623
4144  { "PMEVCNTSVR19_EL1", "PMEVCNTSVR19_EL1", 0x8753, true, false,  {}  }, // 624
4145  { "PMEVCNTSVR1_EL1", "PMEVCNTSVR1_EL1", 0x8741, true, false,  {}  }, // 625
4146  { "PMEVCNTSVR20_EL1", "PMEVCNTSVR20_EL1", 0x8754, true, false,  {}  }, // 626
4147  { "PMEVCNTSVR21_EL1", "PMEVCNTSVR21_EL1", 0x8755, true, false,  {}  }, // 627
4148  { "PMEVCNTSVR22_EL1", "PMEVCNTSVR22_EL1", 0x8756, true, false,  {}  }, // 628
4149  { "PMEVCNTSVR23_EL1", "PMEVCNTSVR23_EL1", 0x8757, true, false,  {}  }, // 629
4150  { "PMEVCNTSVR24_EL1", "PMEVCNTSVR24_EL1", 0x8758, true, false,  {}  }, // 630
4151  { "PMEVCNTSVR25_EL1", "PMEVCNTSVR25_EL1", 0x8759, true, false,  {}  }, // 631
4152  { "PMEVCNTSVR26_EL1", "PMEVCNTSVR26_EL1", 0x875A, true, false,  {}  }, // 632
4153  { "PMEVCNTSVR27_EL1", "PMEVCNTSVR27_EL1", 0x875B, true, false,  {}  }, // 633
4154  { "PMEVCNTSVR28_EL1", "PMEVCNTSVR28_EL1", 0x875C, true, false,  {}  }, // 634
4155  { "PMEVCNTSVR29_EL1", "PMEVCNTSVR29_EL1", 0x875D, true, false,  {}  }, // 635
4156  { "PMEVCNTSVR2_EL1", "PMEVCNTSVR2_EL1", 0x8742, true, false,  {}  }, // 636
4157  { "PMEVCNTSVR30_EL1", "PMEVCNTSVR30_EL1", 0x875E, true, false,  {}  }, // 637
4158  { "PMEVCNTSVR3_EL1", "PMEVCNTSVR3_EL1", 0x8743, true, false,  {}  }, // 638
4159  { "PMEVCNTSVR4_EL1", "PMEVCNTSVR4_EL1", 0x8744, true, false,  {}  }, // 639
4160  { "PMEVCNTSVR5_EL1", "PMEVCNTSVR5_EL1", 0x8745, true, false,  {}  }, // 640
4161  { "PMEVCNTSVR6_EL1", "PMEVCNTSVR6_EL1", 0x8746, true, false,  {}  }, // 641
4162  { "PMEVCNTSVR7_EL1", "PMEVCNTSVR7_EL1", 0x8747, true, false,  {}  }, // 642
4163  { "PMEVCNTSVR8_EL1", "PMEVCNTSVR8_EL1", 0x8748, true, false,  {}  }, // 643
4164  { "PMEVCNTSVR9_EL1", "PMEVCNTSVR9_EL1", 0x8749, true, false,  {}  }, // 644
4165  { "PMEVTYPER0_EL0", "PMEVTYPER0_EL0", 0xDF60, true, true,  {}  }, // 645
4166  { "PMEVTYPER10_EL0", "PMEVTYPER10_EL0", 0xDF6A, true, true,  {}  }, // 646
4167  { "PMEVTYPER11_EL0", "PMEVTYPER11_EL0", 0xDF6B, true, true,  {}  }, // 647
4168  { "PMEVTYPER12_EL0", "PMEVTYPER12_EL0", 0xDF6C, true, true,  {}  }, // 648
4169  { "PMEVTYPER13_EL0", "PMEVTYPER13_EL0", 0xDF6D, true, true,  {}  }, // 649
4170  { "PMEVTYPER14_EL0", "PMEVTYPER14_EL0", 0xDF6E, true, true,  {}  }, // 650
4171  { "PMEVTYPER15_EL0", "PMEVTYPER15_EL0", 0xDF6F, true, true,  {}  }, // 651
4172  { "PMEVTYPER16_EL0", "PMEVTYPER16_EL0", 0xDF70, true, true,  {}  }, // 652
4173  { "PMEVTYPER17_EL0", "PMEVTYPER17_EL0", 0xDF71, true, true,  {}  }, // 653
4174  { "PMEVTYPER18_EL0", "PMEVTYPER18_EL0", 0xDF72, true, true,  {}  }, // 654
4175  { "PMEVTYPER19_EL0", "PMEVTYPER19_EL0", 0xDF73, true, true,  {}  }, // 655
4176  { "PMEVTYPER1_EL0", "PMEVTYPER1_EL0", 0xDF61, true, true,  {}  }, // 656
4177  { "PMEVTYPER20_EL0", "PMEVTYPER20_EL0", 0xDF74, true, true,  {}  }, // 657
4178  { "PMEVTYPER21_EL0", "PMEVTYPER21_EL0", 0xDF75, true, true,  {}  }, // 658
4179  { "PMEVTYPER22_EL0", "PMEVTYPER22_EL0", 0xDF76, true, true,  {}  }, // 659
4180  { "PMEVTYPER23_EL0", "PMEVTYPER23_EL0", 0xDF77, true, true,  {}  }, // 660
4181  { "PMEVTYPER24_EL0", "PMEVTYPER24_EL0", 0xDF78, true, true,  {}  }, // 661
4182  { "PMEVTYPER25_EL0", "PMEVTYPER25_EL0", 0xDF79, true, true,  {}  }, // 662
4183  { "PMEVTYPER26_EL0", "PMEVTYPER26_EL0", 0xDF7A, true, true,  {}  }, // 663
4184  { "PMEVTYPER27_EL0", "PMEVTYPER27_EL0", 0xDF7B, true, true,  {}  }, // 664
4185  { "PMEVTYPER28_EL0", "PMEVTYPER28_EL0", 0xDF7C, true, true,  {}  }, // 665
4186  { "PMEVTYPER29_EL0", "PMEVTYPER29_EL0", 0xDF7D, true, true,  {}  }, // 666
4187  { "PMEVTYPER2_EL0", "PMEVTYPER2_EL0", 0xDF62, true, true,  {}  }, // 667
4188  { "PMEVTYPER30_EL0", "PMEVTYPER30_EL0", 0xDF7E, true, true,  {}  }, // 668
4189  { "PMEVTYPER3_EL0", "PMEVTYPER3_EL0", 0xDF63, true, true,  {}  }, // 669
4190  { "PMEVTYPER4_EL0", "PMEVTYPER4_EL0", 0xDF64, true, true,  {}  }, // 670
4191  { "PMEVTYPER5_EL0", "PMEVTYPER5_EL0", 0xDF65, true, true,  {}  }, // 671
4192  { "PMEVTYPER6_EL0", "PMEVTYPER6_EL0", 0xDF66, true, true,  {}  }, // 672
4193  { "PMEVTYPER7_EL0", "PMEVTYPER7_EL0", 0xDF67, true, true,  {}  }, // 673
4194  { "PMEVTYPER8_EL0", "PMEVTYPER8_EL0", 0xDF68, true, true,  {}  }, // 674
4195  { "PMEVTYPER9_EL0", "PMEVTYPER9_EL0", 0xDF69, true, true,  {}  }, // 675
4196  { "PMIAR_EL1", "PMIAR_EL1", 0xC4F7, true, true,  {}  }, // 676
4197  { "PMICFILTR_EL0", "PMICFILTR_EL0", 0xDCB0, true, true,  {}  }, // 677
4198  { "PMICNTR_EL0", "PMICNTR_EL0", 0xDCA0, true, true,  {}  }, // 678
4199  { "PMICNTSVR_EL1", "PMICNTSVR_EL1", 0x8760, true, false,  {}  }, // 679
4200  { "PMINTENCLR_EL1", "PMINTENCLR_EL1", 0xC4F2, true, true,  {}  }, // 680
4201  { "PMINTENSET_EL1", "PMINTENSET_EL1", 0xC4F1, true, true,  {}  }, // 681
4202  { "PMMIR_EL1", "PMMIR_EL1", 0xC4F6, true, false,  {}  }, // 682
4203  { "PMOVSCLR_EL0", "PMOVSCLR_EL0", 0xDCE3, true, true,  {}  }, // 683
4204  { "PMOVSSET_EL0", "PMOVSSET_EL0", 0xDCF3, true, true,  {}  }, // 684
4205  { "PMSCR_EL1", "PMSCR_EL1", 0xC4C8, true, true,  {AArch64::FeatureSPE}  }, // 685
4206  { "PMSCR_EL12", "PMSCR_EL12", 0xECC8, true, true,  {AArch64::FeatureSPE}  }, // 686
4207  { "PMSCR_EL2", "PMSCR_EL2", 0xE4C8, true, true,  {AArch64::FeatureSPE}  }, // 687
4208  { "PMSDSFR_EL1", "PMSDSFR_EL1", 0xC4D4, true, true,  {}  }, // 688
4209  { "PMSELR_EL0", "PMSELR_EL0", 0xDCE5, true, true,  {}  }, // 689
4210  { "PMSEVFR_EL1", "PMSEVFR_EL1", 0xC4CD, true, true,  {AArch64::FeatureSPE}  }, // 690
4211  { "PMSFCR_EL1", "PMSFCR_EL1", 0xC4CC, true, true,  {AArch64::FeatureSPE}  }, // 691
4212  { "PMSICR_EL1", "PMSICR_EL1", 0xC4CA, true, true,  {AArch64::FeatureSPE}  }, // 692
4213  { "PMSIDR_EL1", "PMSIDR_EL1", 0xC4CF, true, false,  {AArch64::FeatureSPE}  }, // 693
4214  { "PMSIRR_EL1", "PMSIRR_EL1", 0xC4CB, true, true,  {AArch64::FeatureSPE}  }, // 694
4215  { "PMSLATFR_EL1", "PMSLATFR_EL1", 0xC4CE, true, true,  {AArch64::FeatureSPE}  }, // 695
4216  { "PMSNEVFR_EL1", "PMSNEVFR_EL1", 0xC4C9, true, true,  {AArch64::FeatureSPE_EEF}  }, // 696
4217  { "PMSSCR_EL1", "PMSSCR_EL1", 0xC4EB, true, true,  {}  }, // 697
4218  { "PMSWINC_EL0", "PMSWINC_EL0", 0xDCE4, false, true,  {}  }, // 698
4219  { "PMUACR_EL1", "PMUACR_EL1", 0xC4F4, true, true,  {}  }, // 699
4220  { "PMUSERENR_EL0", "PMUSERENR_EL0", 0xDCF0, true, true,  {}  }, // 700
4221  { "PMXEVCNTR_EL0", "PMXEVCNTR_EL0", 0xDCEA, true, true,  {}  }, // 701
4222  { "PMXEVTYPER_EL0", "PMXEVTYPER_EL0", 0xDCE9, true, true,  {}  }, // 702
4223  { "PMZR_EL0", "PMZR_EL0", 0xDCEC, false, true,  {}  }, // 703
4224  { "POR_EL0", "POR_EL0", 0xDD14, true, true,  {}  }, // 704
4225  { "POR_EL1", "POR_EL1", 0xC514, true, true,  {}  }, // 705
4226  { "POR_EL12", "POR_EL12", 0xED14, true, true,  {}  }, // 706
4227  { "POR_EL2", "POR_EL2", 0xE514, true, true,  {}  }, // 707
4228  { "POR_EL3", "POR_EL3", 0xF514, true, true,  {}  }, // 708
4229  { "PRBAR10_EL1", "PRBAR10_EL1", 0xC368, true, true,  {AArch64::HasV8_0rOps}  }, // 709
4230  { "PRBAR10_EL2", "PRBAR10_EL2", 0xE368, true, true,  {AArch64::HasV8_0rOps}  }, // 710
4231  { "PRBAR11_EL1", "PRBAR11_EL1", 0xC36C, true, true,  {AArch64::HasV8_0rOps}  }, // 711
4232  { "PRBAR11_EL2", "PRBAR11_EL2", 0xE36C, true, true,  {AArch64::HasV8_0rOps}  }, // 712
4233  { "PRBAR12_EL1", "PRBAR12_EL1", 0xC370, true, true,  {AArch64::HasV8_0rOps}  }, // 713
4234  { "PRBAR12_EL2", "PRBAR12_EL2", 0xE370, true, true,  {AArch64::HasV8_0rOps}  }, // 714
4235  { "PRBAR13_EL1", "PRBAR13_EL1", 0xC374, true, true,  {AArch64::HasV8_0rOps}  }, // 715
4236  { "PRBAR13_EL2", "PRBAR13_EL2", 0xE374, true, true,  {AArch64::HasV8_0rOps}  }, // 716
4237  { "PRBAR14_EL1", "PRBAR14_EL1", 0xC378, true, true,  {AArch64::HasV8_0rOps}  }, // 717
4238  { "PRBAR14_EL2", "PRBAR14_EL2", 0xE378, true, true,  {AArch64::HasV8_0rOps}  }, // 718
4239  { "PRBAR15_EL1", "PRBAR15_EL1", 0xC37C, true, true,  {AArch64::HasV8_0rOps}  }, // 719
4240  { "PRBAR15_EL2", "PRBAR15_EL2", 0xE37C, true, true,  {AArch64::HasV8_0rOps}  }, // 720
4241  { "PRBAR1_EL1", "PRBAR1_EL1", 0xC344, true, true,  {AArch64::HasV8_0rOps}  }, // 721
4242  { "PRBAR1_EL2", "PRBAR1_EL2", 0xE344, true, true,  {AArch64::HasV8_0rOps}  }, // 722
4243  { "PRBAR2_EL1", "PRBAR2_EL1", 0xC348, true, true,  {AArch64::HasV8_0rOps}  }, // 723
4244  { "PRBAR2_EL2", "PRBAR2_EL2", 0xE348, true, true,  {AArch64::HasV8_0rOps}  }, // 724
4245  { "PRBAR3_EL1", "PRBAR3_EL1", 0xC34C, true, true,  {AArch64::HasV8_0rOps}  }, // 725
4246  { "PRBAR3_EL2", "PRBAR3_EL2", 0xE34C, true, true,  {AArch64::HasV8_0rOps}  }, // 726
4247  { "PRBAR4_EL1", "PRBAR4_EL1", 0xC350, true, true,  {AArch64::HasV8_0rOps}  }, // 727
4248  { "PRBAR4_EL2", "PRBAR4_EL2", 0xE350, true, true,  {AArch64::HasV8_0rOps}  }, // 728
4249  { "PRBAR5_EL1", "PRBAR5_EL1", 0xC354, true, true,  {AArch64::HasV8_0rOps}  }, // 729
4250  { "PRBAR5_EL2", "PRBAR5_EL2", 0xE354, true, true,  {AArch64::HasV8_0rOps}  }, // 730
4251  { "PRBAR6_EL1", "PRBAR6_EL1", 0xC358, true, true,  {AArch64::HasV8_0rOps}  }, // 731
4252  { "PRBAR6_EL2", "PRBAR6_EL2", 0xE358, true, true,  {AArch64::HasV8_0rOps}  }, // 732
4253  { "PRBAR7_EL1", "PRBAR7_EL1", 0xC35C, true, true,  {AArch64::HasV8_0rOps}  }, // 733
4254  { "PRBAR7_EL2", "PRBAR7_EL2", 0xE35C, true, true,  {AArch64::HasV8_0rOps}  }, // 734
4255  { "PRBAR8_EL1", "PRBAR8_EL1", 0xC360, true, true,  {AArch64::HasV8_0rOps}  }, // 735
4256  { "PRBAR8_EL2", "PRBAR8_EL2", 0xE360, true, true,  {AArch64::HasV8_0rOps}  }, // 736
4257  { "PRBAR9_EL1", "PRBAR9_EL1", 0xC364, true, true,  {AArch64::HasV8_0rOps}  }, // 737
4258  { "PRBAR9_EL2", "PRBAR9_EL2", 0xE364, true, true,  {AArch64::HasV8_0rOps}  }, // 738
4259  { "PRBAR_EL1", "PRBAR_EL1", 0xC340, true, true,  {AArch64::HasV8_0rOps}  }, // 739
4260  { "PRBAR_EL2", "PRBAR_EL2", 0xE340, true, true,  {AArch64::HasV8_0rOps}  }, // 740
4261  { "PRENR_EL1", "PRENR_EL1", 0xC309, true, true,  {AArch64::HasV8_0rOps}  }, // 741
4262  { "PRENR_EL2", "PRENR_EL2", 0xE309, true, true,  {AArch64::HasV8_0rOps}  }, // 742
4263  { "PRLAR10_EL1", "PRLAR10_EL1", 0xC369, true, true,  {AArch64::HasV8_0rOps}  }, // 743
4264  { "PRLAR10_EL2", "PRLAR10_EL2", 0xE369, true, true,  {AArch64::HasV8_0rOps}  }, // 744
4265  { "PRLAR11_EL1", "PRLAR11_EL1", 0xC36D, true, true,  {AArch64::HasV8_0rOps}  }, // 745
4266  { "PRLAR11_EL2", "PRLAR11_EL2", 0xE36D, true, true,  {AArch64::HasV8_0rOps}  }, // 746
4267  { "PRLAR12_EL1", "PRLAR12_EL1", 0xC371, true, true,  {AArch64::HasV8_0rOps}  }, // 747
4268  { "PRLAR12_EL2", "PRLAR12_EL2", 0xE371, true, true,  {AArch64::HasV8_0rOps}  }, // 748
4269  { "PRLAR13_EL1", "PRLAR13_EL1", 0xC375, true, true,  {AArch64::HasV8_0rOps}  }, // 749
4270  { "PRLAR13_EL2", "PRLAR13_EL2", 0xE375, true, true,  {AArch64::HasV8_0rOps}  }, // 750
4271  { "PRLAR14_EL1", "PRLAR14_EL1", 0xC379, true, true,  {AArch64::HasV8_0rOps}  }, // 751
4272  { "PRLAR14_EL2", "PRLAR14_EL2", 0xE379, true, true,  {AArch64::HasV8_0rOps}  }, // 752
4273  { "PRLAR15_EL1", "PRLAR15_EL1", 0xC37D, true, true,  {AArch64::HasV8_0rOps}  }, // 753
4274  { "PRLAR15_EL2", "PRLAR15_EL2", 0xE37D, true, true,  {AArch64::HasV8_0rOps}  }, // 754
4275  { "PRLAR1_EL1", "PRLAR1_EL1", 0xC345, true, true,  {AArch64::HasV8_0rOps}  }, // 755
4276  { "PRLAR1_EL2", "PRLAR1_EL2", 0xE345, true, true,  {AArch64::HasV8_0rOps}  }, // 756
4277  { "PRLAR2_EL1", "PRLAR2_EL1", 0xC349, true, true,  {AArch64::HasV8_0rOps}  }, // 757
4278  { "PRLAR2_EL2", "PRLAR2_EL2", 0xE349, true, true,  {AArch64::HasV8_0rOps}  }, // 758
4279  { "PRLAR3_EL1", "PRLAR3_EL1", 0xC34D, true, true,  {AArch64::HasV8_0rOps}  }, // 759
4280  { "PRLAR3_EL2", "PRLAR3_EL2", 0xE34D, true, true,  {AArch64::HasV8_0rOps}  }, // 760
4281  { "PRLAR4_EL1", "PRLAR4_EL1", 0xC351, true, true,  {AArch64::HasV8_0rOps}  }, // 761
4282  { "PRLAR4_EL2", "PRLAR4_EL2", 0xE351, true, true,  {AArch64::HasV8_0rOps}  }, // 762
4283  { "PRLAR5_EL1", "PRLAR5_EL1", 0xC355, true, true,  {AArch64::HasV8_0rOps}  }, // 763
4284  { "PRLAR5_EL2", "PRLAR5_EL2", 0xE355, true, true,  {AArch64::HasV8_0rOps}  }, // 764
4285  { "PRLAR6_EL1", "PRLAR6_EL1", 0xC359, true, true,  {AArch64::HasV8_0rOps}  }, // 765
4286  { "PRLAR6_EL2", "PRLAR6_EL2", 0xE359, true, true,  {AArch64::HasV8_0rOps}  }, // 766
4287  { "PRLAR7_EL1", "PRLAR7_EL1", 0xC35D, true, true,  {AArch64::HasV8_0rOps}  }, // 767
4288  { "PRLAR7_EL2", "PRLAR7_EL2", 0xE35D, true, true,  {AArch64::HasV8_0rOps}  }, // 768
4289  { "PRLAR8_EL1", "PRLAR8_EL1", 0xC361, true, true,  {AArch64::HasV8_0rOps}  }, // 769
4290  { "PRLAR8_EL2", "PRLAR8_EL2", 0xE361, true, true,  {AArch64::HasV8_0rOps}  }, // 770
4291  { "PRLAR9_EL1", "PRLAR9_EL1", 0xC365, true, true,  {AArch64::HasV8_0rOps}  }, // 771
4292  { "PRLAR9_EL2", "PRLAR9_EL2", 0xE365, true, true,  {AArch64::HasV8_0rOps}  }, // 772
4293  { "PRLAR_EL1", "PRLAR_EL1", 0xC341, true, true,  {AArch64::HasV8_0rOps}  }, // 773
4294  { "PRLAR_EL2", "PRLAR_EL2", 0xE341, true, true,  {AArch64::HasV8_0rOps}  }, // 774
4295  { "PRSELR_EL1", "PRSELR_EL1", 0xC311, true, true,  {AArch64::HasV8_0rOps}  }, // 775
4296  { "PRSELR_EL2", "PRSELR_EL2", 0xE311, true, true,  {AArch64::HasV8_0rOps}  }, // 776
4297  { "RCWMASK_EL1", "RCWMASK_EL1", 0xC686, true, true,  {AArch64::FeatureTHE}  }, // 777
4298  { "RCWSMASK_EL1", "RCWSMASK_EL1", 0xC683, true, true,  {AArch64::FeatureTHE}  }, // 778
4299  { "REVIDR_EL1", "REVIDR_EL1", 0xC006, true, false,  {}  }, // 779
4300  { "RGSR_EL1", "RGSR_EL1", 0xC085, true, true,  {AArch64::FeatureMTE}  }, // 780
4301  { "RMR_EL1", "RMR_EL1", 0xC602, true, true,  {}  }, // 781
4302  { "RMR_EL2", "RMR_EL2", 0xE602, true, true,  {}  }, // 782
4303  { "RMR_EL3", "RMR_EL3", 0xF602, true, true,  {}  }, // 783
4304  { "RNDR", "RNDR", 0xD920, true, false,  {AArch64::FeatureRandGen}  }, // 784
4305  { "RNDRRS", "RNDRRS", 0xD921, true, false,  {AArch64::FeatureRandGen}  }, // 785
4306  { "RVBAR_EL1", "RVBAR_EL1", 0xC601, true, false,  {}  }, // 786
4307  { "RVBAR_EL2", "RVBAR_EL2", 0xE601, true, false,  {}  }, // 787
4308  { "RVBAR_EL3", "RVBAR_EL3", 0xF601, true, false,  {}  }, // 788
4309  { "S2PIR_EL2", "S2PIR_EL2", 0xE515, true, true,  {}  }, // 789
4310  { "S2POR_EL1", "S2POR_EL1", 0xC515, true, true,  {}  }, // 790
4311  { "SCR_EL3", "SCR_EL3", 0xF088, true, true,  {}  }, // 791
4312  { "SCTLR2_EL1", "SCTLR2_EL1", 0xC083, true, true,  {}  }, // 792
4313  { "SCTLR2_EL12", "SCTLR2_EL12", 0xE883, true, true,  {}  }, // 793
4314  { "SCTLR2_EL2", "SCTLR2_EL2", 0xE083, true, true,  {}  }, // 794
4315  { "SCTLR2_EL3", "SCTLR2_EL3", 0xF083, true, true,  {}  }, // 795
4316  { "SCTLR_EL1", "SCTLR_EL1", 0xC080, true, true,  {}  }, // 796
4317  { "SCTLR_EL12", "SCTLR_EL12", 0xE880, true, true,  {AArch64::FeatureVH}  }, // 797
4318  { "SCTLR_EL2", "SCTLR_EL2", 0xE080, true, true,  {}  }, // 798
4319  { "SCTLR_EL3", "SCTLR_EL3", 0xF080, true, true,  {}  }, // 799
4320  { "SCXTNUM_EL0", "SCXTNUM_EL0", 0xDE87, true, true,  {AArch64::FeatureSpecRestrict}  }, // 800
4321  { "SCXTNUM_EL1", "SCXTNUM_EL1", 0xC687, true, true,  {AArch64::FeatureSpecRestrict}  }, // 801
4322  { "SCXTNUM_EL12", "SCXTNUM_EL12", 0xEE87, true, true,  {AArch64::FeatureSpecRestrict}  }, // 802
4323  { "SCXTNUM_EL2", "SCXTNUM_EL2", 0xE687, true, true,  {AArch64::FeatureSpecRestrict}  }, // 803
4324  { "SCXTNUM_EL3", "SCXTNUM_EL3", 0xF687, true, true,  {AArch64::FeatureSpecRestrict}  }, // 804
4325  { "SDER32_EL2", "SDER32_EL2", 0xE099, true, true,  {AArch64::FeatureSEL2}  }, // 805
4326  { "SDER32_EL3", "SDER32_EL3", 0xF089, true, true,  {}  }, // 806
4327  { "SMCR_EL1", "SMCR_EL1", 0xC096, true, true,  {AArch64::FeatureSME}  }, // 807
4328  { "SMCR_EL12", "SMCR_EL12", 0xE896, true, true,  {AArch64::FeatureSME}  }, // 808
4329  { "SMCR_EL2", "SMCR_EL2", 0xE096, true, true,  {AArch64::FeatureSME}  }, // 809
4330  { "SMCR_EL3", "SMCR_EL3", 0xF096, true, true,  {AArch64::FeatureSME}  }, // 810
4331  { "SMIDR_EL1", "SMIDR_EL1", 0xC806, true, false,  {AArch64::FeatureSME}  }, // 811
4332  { "SMPRIMAP_EL2", "SMPRIMAP_EL2", 0xE095, true, true,  {AArch64::FeatureSME}  }, // 812
4333  { "SMPRI_EL1", "SMPRI_EL1", 0xC094, true, true,  {AArch64::FeatureSME}  }, // 813
4334  { "SPMACCESSR_EL1", "SPMACCESSR_EL1", 0x84EB, true, true,  {}  }, // 814
4335  { "SPMACCESSR_EL12", "SPMACCESSR_EL12", 0xACEB, true, true,  {}  }, // 815
4336  { "SPMACCESSR_EL2", "SPMACCESSR_EL2", 0xA4EB, true, true,  {}  }, // 816
4337  { "SPMACCESSR_EL3", "SPMACCESSR_EL3", 0xB4EB, true, true,  {}  }, // 817
4338  { "SPMCFGR_EL1", "SPMCFGR_EL1", 0x84EF, true, false,  {}  }, // 818
4339  { "SPMCGCR0_EL1", "SPMCGCR0_EL1", 0x84E8, true, false,  {}  }, // 819
4340  { "SPMCGCR1_EL1", "SPMCGCR1_EL1", 0x84E9, true, false,  {}  }, // 820
4341  { "SPMCNTENCLR_EL0", "SPMCNTENCLR_EL0", 0x9CE2, true, true,  {}  }, // 821
4342  { "SPMCNTENSET_EL0", "SPMCNTENSET_EL0", 0x9CE1, true, true,  {}  }, // 822
4343  { "SPMCR_EL0", "SPMCR_EL0", 0x9CE0, true, true,  {}  }, // 823
4344  { "SPMDEVAFF_EL1", "SPMDEVAFF_EL1", 0x84EE, true, false,  {}  }, // 824
4345  { "SPMDEVARCH_EL1", "SPMDEVARCH_EL1", 0x84ED, true, false,  {}  }, // 825
4346  { "SPMEVCNTR0_EL0", "SPMEVCNTR0_EL0", 0x9F00, true, true,  {}  }, // 826
4347  { "SPMEVCNTR10_EL0", "SPMEVCNTR10_EL0", 0x9F0A, true, true,  {}  }, // 827
4348  { "SPMEVCNTR11_EL0", "SPMEVCNTR11_EL0", 0x9F0B, true, true,  {}  }, // 828
4349  { "SPMEVCNTR12_EL0", "SPMEVCNTR12_EL0", 0x9F0C, true, true,  {}  }, // 829
4350  { "SPMEVCNTR13_EL0", "SPMEVCNTR13_EL0", 0x9F0D, true, true,  {}  }, // 830
4351  { "SPMEVCNTR14_EL0", "SPMEVCNTR14_EL0", 0x9F0E, true, true,  {}  }, // 831
4352  { "SPMEVCNTR15_EL0", "SPMEVCNTR15_EL0", 0x9F0F, true, true,  {}  }, // 832
4353  { "SPMEVCNTR1_EL0", "SPMEVCNTR1_EL0", 0x9F01, true, true,  {}  }, // 833
4354  { "SPMEVCNTR2_EL0", "SPMEVCNTR2_EL0", 0x9F02, true, true,  {}  }, // 834
4355  { "SPMEVCNTR3_EL0", "SPMEVCNTR3_EL0", 0x9F03, true, true,  {}  }, // 835
4356  { "SPMEVCNTR4_EL0", "SPMEVCNTR4_EL0", 0x9F04, true, true,  {}  }, // 836
4357  { "SPMEVCNTR5_EL0", "SPMEVCNTR5_EL0", 0x9F05, true, true,  {}  }, // 837
4358  { "SPMEVCNTR6_EL0", "SPMEVCNTR6_EL0", 0x9F06, true, true,  {}  }, // 838
4359  { "SPMEVCNTR7_EL0", "SPMEVCNTR7_EL0", 0x9F07, true, true,  {}  }, // 839
4360  { "SPMEVCNTR8_EL0", "SPMEVCNTR8_EL0", 0x9F08, true, true,  {}  }, // 840
4361  { "SPMEVCNTR9_EL0", "SPMEVCNTR9_EL0", 0x9F09, true, true,  {}  }, // 841
4362  { "SPMEVFILT2R0_EL0", "SPMEVFILT2R0_EL0", 0x9F30, true, true,  {}  }, // 842
4363  { "SPMEVFILT2R10_EL0", "SPMEVFILT2R10_EL0", 0x9F3A, true, true,  {}  }, // 843
4364  { "SPMEVFILT2R11_EL0", "SPMEVFILT2R11_EL0", 0x9F3B, true, true,  {}  }, // 844
4365  { "SPMEVFILT2R12_EL0", "SPMEVFILT2R12_EL0", 0x9F3C, true, true,  {}  }, // 845
4366  { "SPMEVFILT2R13_EL0", "SPMEVFILT2R13_EL0", 0x9F3D, true, true,  {}  }, // 846
4367  { "SPMEVFILT2R14_EL0", "SPMEVFILT2R14_EL0", 0x9F3E, true, true,  {}  }, // 847
4368  { "SPMEVFILT2R15_EL0", "SPMEVFILT2R15_EL0", 0x9F3F, true, true,  {}  }, // 848
4369  { "SPMEVFILT2R1_EL0", "SPMEVFILT2R1_EL0", 0x9F31, true, true,  {}  }, // 849
4370  { "SPMEVFILT2R2_EL0", "SPMEVFILT2R2_EL0", 0x9F32, true, true,  {}  }, // 850
4371  { "SPMEVFILT2R3_EL0", "SPMEVFILT2R3_EL0", 0x9F33, true, true,  {}  }, // 851
4372  { "SPMEVFILT2R4_EL0", "SPMEVFILT2R4_EL0", 0x9F34, true, true,  {}  }, // 852
4373  { "SPMEVFILT2R5_EL0", "SPMEVFILT2R5_EL0", 0x9F35, true, true,  {}  }, // 853
4374  { "SPMEVFILT2R6_EL0", "SPMEVFILT2R6_EL0", 0x9F36, true, true,  {}  }, // 854
4375  { "SPMEVFILT2R7_EL0", "SPMEVFILT2R7_EL0", 0x9F37, true, true,  {}  }, // 855
4376  { "SPMEVFILT2R8_EL0", "SPMEVFILT2R8_EL0", 0x9F38, true, true,  {}  }, // 856
4377  { "SPMEVFILT2R9_EL0", "SPMEVFILT2R9_EL0", 0x9F39, true, true,  {}  }, // 857
4378  { "SPMEVFILTR0_EL0", "SPMEVFILTR0_EL0", 0x9F20, true, true,  {}  }, // 858
4379  { "SPMEVFILTR10_EL0", "SPMEVFILTR10_EL0", 0x9F2A, true, true,  {}  }, // 859
4380  { "SPMEVFILTR11_EL0", "SPMEVFILTR11_EL0", 0x9F2B, true, true,  {}  }, // 860
4381  { "SPMEVFILTR12_EL0", "SPMEVFILTR12_EL0", 0x9F2C, true, true,  {}  }, // 861
4382  { "SPMEVFILTR13_EL0", "SPMEVFILTR13_EL0", 0x9F2D, true, true,  {}  }, // 862
4383  { "SPMEVFILTR14_EL0", "SPMEVFILTR14_EL0", 0x9F2E, true, true,  {}  }, // 863
4384  { "SPMEVFILTR15_EL0", "SPMEVFILTR15_EL0", 0x9F2F, true, true,  {}  }, // 864
4385  { "SPMEVFILTR1_EL0", "SPMEVFILTR1_EL0", 0x9F21, true, true,  {}  }, // 865
4386  { "SPMEVFILTR2_EL0", "SPMEVFILTR2_EL0", 0x9F22, true, true,  {}  }, // 866
4387  { "SPMEVFILTR3_EL0", "SPMEVFILTR3_EL0", 0x9F23, true, true,  {}  }, // 867
4388  { "SPMEVFILTR4_EL0", "SPMEVFILTR4_EL0", 0x9F24, true, true,  {}  }, // 868
4389  { "SPMEVFILTR5_EL0", "SPMEVFILTR5_EL0", 0x9F25, true, true,  {}  }, // 869
4390  { "SPMEVFILTR6_EL0", "SPMEVFILTR6_EL0", 0x9F26, true, true,  {}  }, // 870
4391  { "SPMEVFILTR7_EL0", "SPMEVFILTR7_EL0", 0x9F27, true, true,  {}  }, // 871
4392  { "SPMEVFILTR8_EL0", "SPMEVFILTR8_EL0", 0x9F28, true, true,  {}  }, // 872
4393  { "SPMEVFILTR9_EL0", "SPMEVFILTR9_EL0", 0x9F29, true, true,  {}  }, // 873
4394  { "SPMEVTYPER0_EL0", "SPMEVTYPER0_EL0", 0x9F10, true, true,  {}  }, // 874
4395  { "SPMEVTYPER10_EL0", "SPMEVTYPER10_EL0", 0x9F1A, true, true,  {}  }, // 875
4396  { "SPMEVTYPER11_EL0", "SPMEVTYPER11_EL0", 0x9F1B, true, true,  {}  }, // 876
4397  { "SPMEVTYPER12_EL0", "SPMEVTYPER12_EL0", 0x9F1C, true, true,  {}  }, // 877
4398  { "SPMEVTYPER13_EL0", "SPMEVTYPER13_EL0", 0x9F1D, true, true,  {}  }, // 878
4399  { "SPMEVTYPER14_EL0", "SPMEVTYPER14_EL0", 0x9F1E, true, true,  {}  }, // 879
4400  { "SPMEVTYPER15_EL0", "SPMEVTYPER15_EL0", 0x9F1F, true, true,  {}  }, // 880
4401  { "SPMEVTYPER1_EL0", "SPMEVTYPER1_EL0", 0x9F11, true, true,  {}  }, // 881
4402  { "SPMEVTYPER2_EL0", "SPMEVTYPER2_EL0", 0x9F12, true, true,  {}  }, // 882
4403  { "SPMEVTYPER3_EL0", "SPMEVTYPER3_EL0", 0x9F13, true, true,  {}  }, // 883
4404  { "SPMEVTYPER4_EL0", "SPMEVTYPER4_EL0", 0x9F14, true, true,  {}  }, // 884
4405  { "SPMEVTYPER5_EL0", "SPMEVTYPER5_EL0", 0x9F15, true, true,  {}  }, // 885
4406  { "SPMEVTYPER6_EL0", "SPMEVTYPER6_EL0", 0x9F16, true, true,  {}  }, // 886
4407  { "SPMEVTYPER7_EL0", "SPMEVTYPER7_EL0", 0x9F17, true, true,  {}  }, // 887
4408  { "SPMEVTYPER8_EL0", "SPMEVTYPER8_EL0", 0x9F18, true, true,  {}  }, // 888
4409  { "SPMEVTYPER9_EL0", "SPMEVTYPER9_EL0", 0x9F19, true, true,  {}  }, // 889
4410  { "SPMIIDR_EL1", "SPMIIDR_EL1", 0x84EC, true, false,  {}  }, // 890
4411  { "SPMINTENCLR_EL1", "SPMINTENCLR_EL1", 0x84F2, true, true,  {}  }, // 891
4412  { "SPMINTENSET_EL1", "SPMINTENSET_EL1", 0x84F1, true, true,  {}  }, // 892
4413  { "SPMOVSCLR_EL0", "SPMOVSCLR_EL0", 0x9CE3, true, true,  {}  }, // 893
4414  { "SPMOVSSET_EL0", "SPMOVSSET_EL0", 0x9CF3, true, true,  {}  }, // 894
4415  { "SPMROOTCR_EL3", "SPMROOTCR_EL3", 0xB4F7, true, true,  {}  }, // 895
4416  { "SPMSCR_EL1", "SPMSCR_EL1", 0xBCF7, true, true,  {}  }, // 896
4417  { "SPMSELR_EL0", "SPMSELR_EL0", 0x9CE5, true, true,  {}  }, // 897
4418  { "SPSel", "SPSel", 0xC210, true, true,  {}  }, // 898
4419  { "SPSR_abt", "SPSR_abt", 0xE219, true, true,  {}  }, // 899
4420  { "SPSR_EL1", "SPSR_EL1", 0xC200, true, true,  {}  }, // 900
4421  { "SPSR_EL12", "SPSR_EL12", 0xEA00, true, true,  {AArch64::FeatureVH}  }, // 901
4422  { "SPSR_EL2", "SPSR_EL2", 0xE200, true, true,  {}  }, // 902
4423  { "SPSR_EL3", "SPSR_EL3", 0xF200, true, true,  {}  }, // 903
4424  { "SPSR_fiq", "SPSR_fiq", 0xE21B, true, true,  {}  }, // 904
4425  { "SPSR_irq", "SPSR_irq", 0xE218, true, true,  {}  }, // 905
4426  { "SPSR_und", "SPSR_und", 0xE21A, true, true,  {}  }, // 906
4427  { "SP_EL0", "SP_EL0", 0xC208, true, true,  {}  }, // 907
4428  { "SP_EL1", "SP_EL1", 0xE208, true, true,  {}  }, // 908
4429  { "SP_EL2", "SP_EL2", 0xF208, true, true,  {}  }, // 909
4430  { "SSBS", "SSBS", 0xDA16, true, true,  {AArch64::FeatureSSBS}  }, // 910
4431  { "SVCR", "SVCR", 0xDA12, true, true,  {AArch64::FeatureSME}  }, // 911
4432  { "TCO", "TCO", 0xDA17, true, true,  {AArch64::FeatureMTE}  }, // 912
4433  { "TCR2_EL1", "TCR2_EL1", 0xC103, true, true,  {}  }, // 913
4434  { "TCR2_EL12", "TCR2_EL12", 0xE903, true, true,  {}  }, // 914
4435  { "TCR2_EL2", "TCR2_EL2", 0xE103, true, true,  {}  }, // 915
4436  { "TCR_EL1", "TCR_EL1", 0xC102, true, true,  {}  }, // 916
4437  { "TCR_EL12", "TCR_EL12", 0xE902, true, true,  {AArch64::FeatureVH}  }, // 917
4438  { "TCR_EL2", "TCR_EL2", 0xE102, true, true,  {}  }, // 918
4439  { "TCR_EL3", "TCR_EL3", 0xF102, true, true,  {}  }, // 919
4440  { "TEECR32_EL1", "TEECR32_EL1", 0x9000, true, true,  {}  }, // 920
4441  { "TEEHBR32_EL1", "TEEHBR32_EL1", 0x9080, true, true,  {}  }, // 921
4442  { "TFSRE0_EL1", "TFSRE0_EL1", 0xC2B1, true, true,  {AArch64::FeatureMTE}  }, // 922
4443  { "TFSR_EL1", "TFSR_EL1", 0xC2B0, true, true,  {AArch64::FeatureMTE}  }, // 923
4444  { "TFSR_EL12", "TFSR_EL12", 0xEAB0, true, true,  {AArch64::FeatureMTE}  }, // 924
4445  { "TFSR_EL2", "TFSR_EL2", 0xE2B0, true, true,  {AArch64::FeatureMTE}  }, // 925
4446  { "TFSR_EL3", "TFSR_EL3", 0xF2B0, true, true,  {AArch64::FeatureMTE}  }, // 926
4447  { "TPIDR2_EL0", "TPIDR2_EL0", 0xDE85, true, true,  {AArch64::FeatureSME}  }, // 927
4448  { "TPIDRRO_EL0", "TPIDRRO_EL0", 0xDE83, true, true,  {}  }, // 928
4449  { "TPIDR_EL0", "TPIDR_EL0", 0xDE82, true, true,  {}  }, // 929
4450  { "TPIDR_EL1", "TPIDR_EL1", 0xC684, true, true,  {}  }, // 930
4451  { "TPIDR_EL2", "TPIDR_EL2", 0xE682, true, true,  {}  }, // 931
4452  { "TPIDR_EL3", "TPIDR_EL3", 0xF682, true, true,  {}  }, // 932
4453  { "TRBBASER_EL1", "TRBBASER_EL1", 0xC4DA, true, true,  {AArch64::FeatureTRBE}  }, // 933
4454  { "TRBIDR_EL1", "TRBIDR_EL1", 0xC4DF, true, false,  {AArch64::FeatureTRBE}  }, // 934
4455  { "TRBLIMITR_EL1", "TRBLIMITR_EL1", 0xC4D8, true, true,  {AArch64::FeatureTRBE}  }, // 935
4456  { "TRBMAR_EL1", "TRBMAR_EL1", 0xC4DC, true, true,  {AArch64::FeatureTRBE}  }, // 936
4457  { "TRBPTR_EL1", "TRBPTR_EL1", 0xC4D9, true, true,  {AArch64::FeatureTRBE}  }, // 937
4458  { "TRBSR_EL1", "TRBSR_EL1", 0xC4DB, true, true,  {AArch64::FeatureTRBE}  }, // 938
4459  { "TRBTRG_EL1", "TRBTRG_EL1", 0xC4DE, true, true,  {AArch64::FeatureTRBE}  }, // 939
4460  { "TRCACATR0", "TRCACATR0", 0x8902, true, true,  {}  }, // 940
4461  { "TRCACATR1", "TRCACATR1", 0x8912, true, true,  {}  }, // 941
4462  { "TRCACATR10", "TRCACATR10", 0x8923, true, true,  {}  }, // 942
4463  { "TRCACATR11", "TRCACATR11", 0x8933, true, true,  {}  }, // 943
4464  { "TRCACATR12", "TRCACATR12", 0x8943, true, true,  {}  }, // 944
4465  { "TRCACATR13", "TRCACATR13", 0x8953, true, true,  {}  }, // 945
4466  { "TRCACATR14", "TRCACATR14", 0x8963, true, true,  {}  }, // 946
4467  { "TRCACATR15", "TRCACATR15", 0x8973, true, true,  {}  }, // 947
4468  { "TRCACATR2", "TRCACATR2", 0x8922, true, true,  {}  }, // 948
4469  { "TRCACATR3", "TRCACATR3", 0x8932, true, true,  {}  }, // 949
4470  { "TRCACATR4", "TRCACATR4", 0x8942, true, true,  {}  }, // 950
4471  { "TRCACATR5", "TRCACATR5", 0x8952, true, true,  {}  }, // 951
4472  { "TRCACATR6", "TRCACATR6", 0x8962, true, true,  {}  }, // 952
4473  { "TRCACATR7", "TRCACATR7", 0x8972, true, true,  {}  }, // 953
4474  { "TRCACATR8", "TRCACATR8", 0x8903, true, true,  {}  }, // 954
4475  { "TRCACATR9", "TRCACATR9", 0x8913, true, true,  {}  }, // 955
4476  { "TRCACVR0", "TRCACVR0", 0x8900, true, true,  {}  }, // 956
4477  { "TRCACVR1", "TRCACVR1", 0x8910, true, true,  {}  }, // 957
4478  { "TRCACVR10", "TRCACVR10", 0x8921, true, true,  {}  }, // 958
4479  { "TRCACVR11", "TRCACVR11", 0x8931, true, true,  {}  }, // 959
4480  { "TRCACVR12", "TRCACVR12", 0x8941, true, true,  {}  }, // 960
4481  { "TRCACVR13", "TRCACVR13", 0x8951, true, true,  {}  }, // 961
4482  { "TRCACVR14", "TRCACVR14", 0x8961, true, true,  {}  }, // 962
4483  { "TRCACVR15", "TRCACVR15", 0x8971, true, true,  {}  }, // 963
4484  { "TRCACVR2", "TRCACVR2", 0x8920, true, true,  {}  }, // 964
4485  { "TRCACVR3", "TRCACVR3", 0x8930, true, true,  {}  }, // 965
4486  { "TRCACVR4", "TRCACVR4", 0x8940, true, true,  {}  }, // 966
4487  { "TRCACVR5", "TRCACVR5", 0x8950, true, true,  {}  }, // 967
4488  { "TRCACVR6", "TRCACVR6", 0x8960, true, true,  {}  }, // 968
4489  { "TRCACVR7", "TRCACVR7", 0x8970, true, true,  {}  }, // 969
4490  { "TRCACVR8", "TRCACVR8", 0x8901, true, true,  {}  }, // 970
4491  { "TRCACVR9", "TRCACVR9", 0x8911, true, true,  {}  }, // 971
4492  { "TRCAUTHSTATUS", "TRCAUTHSTATUS", 0x8BF6, true, false,  {}  }, // 972
4493  { "TRCAUXCTLR", "TRCAUXCTLR", 0x8830, true, true,  {}  }, // 973
4494  { "TRCBBCTLR", "TRCBBCTLR", 0x8878, true, true,  {}  }, // 974
4495  { "TRCCCCTLR", "TRCCCCTLR", 0x8870, true, true,  {}  }, // 975
4496  { "TRCCIDCCTLR0", "TRCCIDCCTLR0", 0x8982, true, true,  {}  }, // 976
4497  { "TRCCIDCCTLR1", "TRCCIDCCTLR1", 0x898A, true, true,  {}  }, // 977
4498  { "TRCCIDCVR0", "TRCCIDCVR0", 0x8980, true, true,  {}  }, // 978
4499  { "TRCCIDCVR1", "TRCCIDCVR1", 0x8990, true, true,  {}  }, // 979
4500  { "TRCCIDCVR2", "TRCCIDCVR2", 0x89A0, true, true,  {}  }, // 980
4501  { "TRCCIDCVR3", "TRCCIDCVR3", 0x89B0, true, true,  {}  }, // 981
4502  { "TRCCIDCVR4", "TRCCIDCVR4", 0x89C0, true, true,  {}  }, // 982
4503  { "TRCCIDCVR5", "TRCCIDCVR5", 0x89D0, true, true,  {}  }, // 983
4504  { "TRCCIDCVR6", "TRCCIDCVR6", 0x89E0, true, true,  {}  }, // 984
4505  { "TRCCIDCVR7", "TRCCIDCVR7", 0x89F0, true, true,  {}  }, // 985
4506  { "TRCCIDR0", "TRCCIDR0", 0x8BE7, true, false,  {}  }, // 986
4507  { "TRCCIDR1", "TRCCIDR1", 0x8BEF, true, false,  {}  }, // 987
4508  { "TRCCIDR2", "TRCCIDR2", 0x8BF7, true, false,  {}  }, // 988
4509  { "TRCCIDR3", "TRCCIDR3", 0x8BFF, true, false,  {}  }, // 989
4510  { "TRCCLAIMCLR", "TRCCLAIMCLR", 0x8BCE, true, true,  {}  }, // 990
4511  { "TRCCLAIMSET", "TRCCLAIMSET", 0x8BC6, true, true,  {}  }, // 991
4512  { "TRCCNTCTLR0", "TRCCNTCTLR0", 0x8825, true, true,  {}  }, // 992
4513  { "TRCCNTCTLR1", "TRCCNTCTLR1", 0x882D, true, true,  {}  }, // 993
4514  { "TRCCNTCTLR2", "TRCCNTCTLR2", 0x8835, true, true,  {}  }, // 994
4515  { "TRCCNTCTLR3", "TRCCNTCTLR3", 0x883D, true, true,  {}  }, // 995
4516  { "TRCCNTRLDVR0", "TRCCNTRLDVR0", 0x8805, true, true,  {}  }, // 996
4517  { "TRCCNTRLDVR1", "TRCCNTRLDVR1", 0x880D, true, true,  {}  }, // 997
4518  { "TRCCNTRLDVR2", "TRCCNTRLDVR2", 0x8815, true, true,  {}  }, // 998
4519  { "TRCCNTRLDVR3", "TRCCNTRLDVR3", 0x881D, true, true,  {}  }, // 999
4520  { "TRCCNTVR0", "TRCCNTVR0", 0x8845, true, true,  {}  }, // 1000
4521  { "TRCCNTVR1", "TRCCNTVR1", 0x884D, true, true,  {}  }, // 1001
4522  { "TRCCNTVR2", "TRCCNTVR2", 0x8855, true, true,  {}  }, // 1002
4523  { "TRCCNTVR3", "TRCCNTVR3", 0x885D, true, true,  {}  }, // 1003
4524  { "TRCCONFIGR", "TRCCONFIGR", 0x8820, true, true,  {}  }, // 1004
4525  { "TRCDEVAFF0", "TRCDEVAFF0", 0x8BD6, true, false,  {}  }, // 1005
4526  { "TRCDEVAFF1", "TRCDEVAFF1", 0x8BDE, true, false,  {}  }, // 1006
4527  { "TRCDEVARCH", "TRCDEVARCH", 0x8BFE, true, false,  {}  }, // 1007
4528  { "TRCDEVID", "TRCDEVID", 0x8B97, true, false,  {}  }, // 1008
4529  { "TRCDEVTYPE", "TRCDEVTYPE", 0x8B9F, true, false,  {}  }, // 1009
4530  { "TRCDVCMR0", "TRCDVCMR0", 0x8906, true, true,  {}  }, // 1010
4531  { "TRCDVCMR1", "TRCDVCMR1", 0x8926, true, true,  {}  }, // 1011
4532  { "TRCDVCMR2", "TRCDVCMR2", 0x8946, true, true,  {}  }, // 1012
4533  { "TRCDVCMR3", "TRCDVCMR3", 0x8966, true, true,  {}  }, // 1013
4534  { "TRCDVCMR4", "TRCDVCMR4", 0x8907, true, true,  {}  }, // 1014
4535  { "TRCDVCMR5", "TRCDVCMR5", 0x8927, true, true,  {}  }, // 1015
4536  { "TRCDVCMR6", "TRCDVCMR6", 0x8947, true, true,  {}  }, // 1016
4537  { "TRCDVCMR7", "TRCDVCMR7", 0x8967, true, true,  {}  }, // 1017
4538  { "TRCDVCVR0", "TRCDVCVR0", 0x8904, true, true,  {}  }, // 1018
4539  { "TRCDVCVR1", "TRCDVCVR1", 0x8924, true, true,  {}  }, // 1019
4540  { "TRCDVCVR2", "TRCDVCVR2", 0x8944, true, true,  {}  }, // 1020
4541  { "TRCDVCVR3", "TRCDVCVR3", 0x8964, true, true,  {}  }, // 1021
4542  { "TRCDVCVR4", "TRCDVCVR4", 0x8905, true, true,  {}  }, // 1022
4543  { "TRCDVCVR5", "TRCDVCVR5", 0x8925, true, true,  {}  }, // 1023
4544  { "TRCDVCVR6", "TRCDVCVR6", 0x8945, true, true,  {}  }, // 1024
4545  { "TRCDVCVR7", "TRCDVCVR7", 0x8965, true, true,  {}  }, // 1025
4546  { "TRCEVENTCTL0R", "TRCEVENTCTL0R", 0x8840, true, true,  {}  }, // 1026
4547  { "TRCEVENTCTL1R", "TRCEVENTCTL1R", 0x8848, true, true,  {}  }, // 1027
4548  { "TRCEXTINSELR", "TRCEXTINSELR", 0x8844, true, true,  {}  }, // 1028
4549  { "TRCEXTINSELR0", "TRCEXTINSELR0", 0x8844, true, true,  {AArch64::FeatureETE}  }, // 1029
4550  { "TRCEXTINSELR1", "TRCEXTINSELR1", 0x884C, true, true,  {AArch64::FeatureETE}  }, // 1030
4551  { "TRCEXTINSELR2", "TRCEXTINSELR2", 0x8854, true, true,  {AArch64::FeatureETE}  }, // 1031
4552  { "TRCEXTINSELR3", "TRCEXTINSELR3", 0x885C, true, true,  {AArch64::FeatureETE}  }, // 1032
4553  { "TRCIDR0", "TRCIDR0", 0x8847, true, false,  {}  }, // 1033
4554  { "TRCIDR1", "TRCIDR1", 0x884F, true, false,  {}  }, // 1034
4555  { "TRCIDR10", "TRCIDR10", 0x8816, true, false,  {}  }, // 1035
4556  { "TRCIDR11", "TRCIDR11", 0x881E, true, false,  {}  }, // 1036
4557  { "TRCIDR12", "TRCIDR12", 0x8826, true, false,  {}  }, // 1037
4558  { "TRCIDR13", "TRCIDR13", 0x882E, true, false,  {}  }, // 1038
4559  { "TRCIDR2", "TRCIDR2", 0x8857, true, false,  {}  }, // 1039
4560  { "TRCIDR3", "TRCIDR3", 0x885F, true, false,  {}  }, // 1040
4561  { "TRCIDR4", "TRCIDR4", 0x8867, true, false,  {}  }, // 1041
4562  { "TRCIDR5", "TRCIDR5", 0x886F, true, false,  {}  }, // 1042
4563  { "TRCIDR6", "TRCIDR6", 0x8877, true, false,  {}  }, // 1043
4564  { "TRCIDR7", "TRCIDR7", 0x887F, true, false,  {}  }, // 1044
4565  { "TRCIDR8", "TRCIDR8", 0x8806, true, false,  {}  }, // 1045
4566  { "TRCIDR9", "TRCIDR9", 0x880E, true, false,  {}  }, // 1046
4567  { "TRCIMSPEC0", "TRCIMSPEC0", 0x8807, true, true,  {}  }, // 1047
4568  { "TRCIMSPEC1", "TRCIMSPEC1", 0x880F, true, true,  {}  }, // 1048
4569  { "TRCIMSPEC2", "TRCIMSPEC2", 0x8817, true, true,  {}  }, // 1049
4570  { "TRCIMSPEC3", "TRCIMSPEC3", 0x881F, true, true,  {}  }, // 1050
4571  { "TRCIMSPEC4", "TRCIMSPEC4", 0x8827, true, true,  {}  }, // 1051
4572  { "TRCIMSPEC5", "TRCIMSPEC5", 0x882F, true, true,  {}  }, // 1052
4573  { "TRCIMSPEC6", "TRCIMSPEC6", 0x8837, true, true,  {}  }, // 1053
4574  { "TRCIMSPEC7", "TRCIMSPEC7", 0x883F, true, true,  {}  }, // 1054
4575  { "TRCITCTRL", "TRCITCTRL", 0x8B84, true, true,  {}  }, // 1055
4576  { "TRCITECR_EL1", "TRCITECR_EL1", 0xC093, true, true,  {AArch64::FeatureITE}  }, // 1056
4577  { "TRCITECR_EL12", "TRCITECR_EL12", 0xE893, true, true,  {AArch64::FeatureITE}  }, // 1057
4578  { "TRCITECR_EL2", "TRCITECR_EL2", 0xE093, true, true,  {AArch64::FeatureITE}  }, // 1058
4579  { "TRCITEEDCR", "TRCITEEDCR", 0x8811, true, true,  {AArch64::FeatureITE}  }, // 1059
4580  { "TRCLAR", "TRCLAR", 0x8BE6, false, true,  {}  }, // 1060
4581  { "TRCLSR", "TRCLSR", 0x8BEE, true, false,  {}  }, // 1061
4582  { "TRCOSLAR", "TRCOSLAR", 0x8884, false, true,  {}  }, // 1062
4583  { "TRCOSLSR", "TRCOSLSR", 0x888C, true, false,  {}  }, // 1063
4584  { "TRCPDCR", "TRCPDCR", 0x88A4, true, true,  {}  }, // 1064
4585  { "TRCPDSR", "TRCPDSR", 0x88AC, true, false,  {}  }, // 1065
4586  { "TRCPIDR0", "TRCPIDR0", 0x8BC7, true, false,  {}  }, // 1066
4587  { "TRCPIDR1", "TRCPIDR1", 0x8BCF, true, false,  {}  }, // 1067
4588  { "TRCPIDR2", "TRCPIDR2", 0x8BD7, true, false,  {}  }, // 1068
4589  { "TRCPIDR3", "TRCPIDR3", 0x8BDF, true, false,  {}  }, // 1069
4590  { "TRCPIDR4", "TRCPIDR4", 0x8BA7, true, false,  {}  }, // 1070
4591  { "TRCPIDR5", "TRCPIDR5", 0x8BAF, true, false,  {}  }, // 1071
4592  { "TRCPIDR6", "TRCPIDR6", 0x8BB7, true, false,  {}  }, // 1072
4593  { "TRCPIDR7", "TRCPIDR7", 0x8BBF, true, false,  {}  }, // 1073
4594  { "TRCPRGCTLR", "TRCPRGCTLR", 0x8808, true, true,  {}  }, // 1074
4595  { "TRCPROCSELR", "TRCPROCSELR", 0x8810, true, true,  {}  }, // 1075
4596  { "TRCQCTLR", "TRCQCTLR", 0x8809, true, true,  {}  }, // 1076
4597  { "TRCRSCTLR10", "TRCRSCTLR10", 0x88D0, true, true,  {}  }, // 1077
4598  { "TRCRSCTLR11", "TRCRSCTLR11", 0x88D8, true, true,  {}  }, // 1078
4599  { "TRCRSCTLR12", "TRCRSCTLR12", 0x88E0, true, true,  {}  }, // 1079
4600  { "TRCRSCTLR13", "TRCRSCTLR13", 0x88E8, true, true,  {}  }, // 1080
4601  { "TRCRSCTLR14", "TRCRSCTLR14", 0x88F0, true, true,  {}  }, // 1081
4602  { "TRCRSCTLR15", "TRCRSCTLR15", 0x88F8, true, true,  {}  }, // 1082
4603  { "TRCRSCTLR16", "TRCRSCTLR16", 0x8881, true, true,  {}  }, // 1083
4604  { "TRCRSCTLR17", "TRCRSCTLR17", 0x8889, true, true,  {}  }, // 1084
4605  { "TRCRSCTLR18", "TRCRSCTLR18", 0x8891, true, true,  {}  }, // 1085
4606  { "TRCRSCTLR19", "TRCRSCTLR19", 0x8899, true, true,  {}  }, // 1086
4607  { "TRCRSCTLR2", "TRCRSCTLR2", 0x8890, true, true,  {}  }, // 1087
4608  { "TRCRSCTLR20", "TRCRSCTLR20", 0x88A1, true, true,  {}  }, // 1088
4609  { "TRCRSCTLR21", "TRCRSCTLR21", 0x88A9, true, true,  {}  }, // 1089
4610  { "TRCRSCTLR22", "TRCRSCTLR22", 0x88B1, true, true,  {}  }, // 1090
4611  { "TRCRSCTLR23", "TRCRSCTLR23", 0x88B9, true, true,  {}  }, // 1091
4612  { "TRCRSCTLR24", "TRCRSCTLR24", 0x88C1, true, true,  {}  }, // 1092
4613  { "TRCRSCTLR25", "TRCRSCTLR25", 0x88C9, true, true,  {}  }, // 1093
4614  { "TRCRSCTLR26", "TRCRSCTLR26", 0x88D1, true, true,  {}  }, // 1094
4615  { "TRCRSCTLR27", "TRCRSCTLR27", 0x88D9, true, true,  {}  }, // 1095
4616  { "TRCRSCTLR28", "TRCRSCTLR28", 0x88E1, true, true,  {}  }, // 1096
4617  { "TRCRSCTLR29", "TRCRSCTLR29", 0x88E9, true, true,  {}  }, // 1097
4618  { "TRCRSCTLR3", "TRCRSCTLR3", 0x8898, true, true,  {}  }, // 1098
4619  { "TRCRSCTLR30", "TRCRSCTLR30", 0x88F1, true, true,  {}  }, // 1099
4620  { "TRCRSCTLR31", "TRCRSCTLR31", 0x88F9, true, true,  {}  }, // 1100
4621  { "TRCRSCTLR4", "TRCRSCTLR4", 0x88A0, true, true,  {}  }, // 1101
4622  { "TRCRSCTLR5", "TRCRSCTLR5", 0x88A8, true, true,  {}  }, // 1102
4623  { "TRCRSCTLR6", "TRCRSCTLR6", 0x88B0, true, true,  {}  }, // 1103
4624  { "TRCRSCTLR7", "TRCRSCTLR7", 0x88B8, true, true,  {}  }, // 1104
4625  { "TRCRSCTLR8", "TRCRSCTLR8", 0x88C0, true, true,  {}  }, // 1105
4626  { "TRCRSCTLR9", "TRCRSCTLR9", 0x88C8, true, true,  {}  }, // 1106
4627  { "TRCRSR", "TRCRSR", 0x8850, true, true,  {AArch64::FeatureETE}  }, // 1107
4628  { "TRCSEQEVR0", "TRCSEQEVR0", 0x8804, true, true,  {}  }, // 1108
4629  { "TRCSEQEVR1", "TRCSEQEVR1", 0x880C, true, true,  {}  }, // 1109
4630  { "TRCSEQEVR2", "TRCSEQEVR2", 0x8814, true, true,  {}  }, // 1110
4631  { "TRCSEQRSTEVR", "TRCSEQRSTEVR", 0x8834, true, true,  {}  }, // 1111
4632  { "TRCSEQSTR", "TRCSEQSTR", 0x883C, true, true,  {}  }, // 1112
4633  { "TRCSSCCR0", "TRCSSCCR0", 0x8882, true, true,  {}  }, // 1113
4634  { "TRCSSCCR1", "TRCSSCCR1", 0x888A, true, true,  {}  }, // 1114
4635  { "TRCSSCCR2", "TRCSSCCR2", 0x8892, true, true,  {}  }, // 1115
4636  { "TRCSSCCR3", "TRCSSCCR3", 0x889A, true, true,  {}  }, // 1116
4637  { "TRCSSCCR4", "TRCSSCCR4", 0x88A2, true, true,  {}  }, // 1117
4638  { "TRCSSCCR5", "TRCSSCCR5", 0x88AA, true, true,  {}  }, // 1118
4639  { "TRCSSCCR6", "TRCSSCCR6", 0x88B2, true, true,  {}  }, // 1119
4640  { "TRCSSCCR7", "TRCSSCCR7", 0x88BA, true, true,  {}  }, // 1120
4641  { "TRCSSCSR0", "TRCSSCSR0", 0x88C2, true, true,  {}  }, // 1121
4642  { "TRCSSCSR1", "TRCSSCSR1", 0x88CA, true, true,  {}  }, // 1122
4643  { "TRCSSCSR2", "TRCSSCSR2", 0x88D2, true, true,  {}  }, // 1123
4644  { "TRCSSCSR3", "TRCSSCSR3", 0x88DA, true, true,  {}  }, // 1124
4645  { "TRCSSCSR4", "TRCSSCSR4", 0x88E2, true, true,  {}  }, // 1125
4646  { "TRCSSCSR5", "TRCSSCSR5", 0x88EA, true, true,  {}  }, // 1126
4647  { "TRCSSCSR6", "TRCSSCSR6", 0x88F2, true, true,  {}  }, // 1127
4648  { "TRCSSCSR7", "TRCSSCSR7", 0x88FA, true, true,  {}  }, // 1128
4649  { "TRCSSPCICR0", "TRCSSPCICR0", 0x8883, true, true,  {}  }, // 1129
4650  { "TRCSSPCICR1", "TRCSSPCICR1", 0x888B, true, true,  {}  }, // 1130
4651  { "TRCSSPCICR2", "TRCSSPCICR2", 0x8893, true, true,  {}  }, // 1131
4652  { "TRCSSPCICR3", "TRCSSPCICR3", 0x889B, true, true,  {}  }, // 1132
4653  { "TRCSSPCICR4", "TRCSSPCICR4", 0x88A3, true, true,  {}  }, // 1133
4654  { "TRCSSPCICR5", "TRCSSPCICR5", 0x88AB, true, true,  {}  }, // 1134
4655  { "TRCSSPCICR6", "TRCSSPCICR6", 0x88B3, true, true,  {}  }, // 1135
4656  { "TRCSSPCICR7", "TRCSSPCICR7", 0x88BB, true, true,  {}  }, // 1136
4657  { "TRCSTALLCTLR", "TRCSTALLCTLR", 0x8858, true, true,  {}  }, // 1137
4658  { "TRCSTATR", "TRCSTATR", 0x8818, true, false,  {}  }, // 1138
4659  { "TRCSYNCPR", "TRCSYNCPR", 0x8868, true, true,  {}  }, // 1139
4660  { "TRCTRACEIDR", "TRCTRACEIDR", 0x8801, true, true,  {}  }, // 1140
4661  { "TRCTSCTLR", "TRCTSCTLR", 0x8860, true, true,  {}  }, // 1141
4662  { "TRCVDARCCTLR", "TRCVDARCCTLR", 0x8852, true, true,  {}  }, // 1142
4663  { "TRCVDCTLR", "TRCVDCTLR", 0x8842, true, true,  {}  }, // 1143
4664  { "TRCVDSACCTLR", "TRCVDSACCTLR", 0x884A, true, true,  {}  }, // 1144
4665  { "TRCVICTLR", "TRCVICTLR", 0x8802, true, true,  {}  }, // 1145
4666  { "TRCVIIECTLR", "TRCVIIECTLR", 0x880A, true, true,  {}  }, // 1146
4667  { "TRCVIPCSSCTLR", "TRCVIPCSSCTLR", 0x881A, true, true,  {}  }, // 1147
4668  { "TRCVISSCTLR", "TRCVISSCTLR", 0x8812, true, true,  {}  }, // 1148
4669  { "TRCVMIDCCTLR0", "TRCVMIDCCTLR0", 0x8992, true, true,  {}  }, // 1149
4670  { "TRCVMIDCCTLR1", "TRCVMIDCCTLR1", 0x899A, true, true,  {}  }, // 1150
4671  { "TRCVMIDCVR0", "TRCVMIDCVR0", 0x8981, true, true,  {}  }, // 1151
4672  { "TRCVMIDCVR1", "TRCVMIDCVR1", 0x8991, true, true,  {}  }, // 1152
4673  { "TRCVMIDCVR2", "TRCVMIDCVR2", 0x89A1, true, true,  {}  }, // 1153
4674  { "TRCVMIDCVR3", "TRCVMIDCVR3", 0x89B1, true, true,  {}  }, // 1154
4675  { "TRCVMIDCVR4", "TRCVMIDCVR4", 0x89C1, true, true,  {}  }, // 1155
4676  { "TRCVMIDCVR5", "TRCVMIDCVR5", 0x89D1, true, true,  {}  }, // 1156
4677  { "TRCVMIDCVR6", "TRCVMIDCVR6", 0x89E1, true, true,  {}  }, // 1157
4678  { "TRCVMIDCVR7", "TRCVMIDCVR7", 0x89F1, true, true,  {}  }, // 1158
4679  { "TRFCR_EL1", "TRFCR_EL1", 0xC091, true, true,  {AArch64::FeatureTRACEV8_4}  }, // 1159
4680  { "TRFCR_EL12", "TRFCR_EL12", 0xE891, true, true,  {AArch64::FeatureTRACEV8_4}  }, // 1160
4681  { "TRFCR_EL2", "TRFCR_EL2", 0xE091, true, true,  {AArch64::FeatureTRACEV8_4}  }, // 1161
4682  { "TTBR0_EL1", "TTBR0_EL1", 0xC100, true, true,  {}  }, // 1162
4683  { "TTBR0_EL12", "TTBR0_EL12", 0xE900, true, true,  {AArch64::FeatureVH}  }, // 1163
4684  { "TTBR0_EL2", "VSCTLR_EL2", 0xE100, true, true,  {AArch64::FeatureEL2VMSA}  }, // 1164
4685  { "TTBR0_EL3", "TTBR0_EL3", 0xF100, true, true,  {}  }, // 1165
4686  { "TTBR1_EL1", "TTBR1_EL1", 0xC101, true, true,  {}  }, // 1166
4687  { "TTBR1_EL12", "TTBR1_EL12", 0xE901, true, true,  {AArch64::FeatureVH}  }, // 1167
4688  { "TTBR1_EL2", "TTBR1_EL2", 0xE101, true, true,  {AArch64::FeatureVH}  }, // 1168
4689  { "UAO", "UAO", 0xC214, true, true,  {AArch64::FeaturePsUAO}  }, // 1169
4690  { "VBAR_EL1", "VBAR_EL1", 0xC600, true, true,  {}  }, // 1170
4691  { "VBAR_EL12", "VBAR_EL12", 0xEE00, true, true,  {AArch64::FeatureVH}  }, // 1171
4692  { "VBAR_EL2", "VBAR_EL2", 0xE600, true, true,  {}  }, // 1172
4693  { "VBAR_EL3", "VBAR_EL3", 0xF600, true, true,  {}  }, // 1173
4694  { "VDISR_EL2", "VDISR_EL2", 0xE609, true, true,  {AArch64::FeatureRAS}  }, // 1174
4695  { "VMECID_A_EL2", "VMECID_A_EL2", 0xE549, true, true,  {AArch64::FeatureMEC}  }, // 1175
4696  { "VMECID_P_EL2", "VMECID_P_EL2", 0xE548, true, true,  {AArch64::FeatureMEC}  }, // 1176
4697  { "VMPIDR_EL2", "VMPIDR_EL2", 0xE005, true, true,  {}  }, // 1177
4698  { "VNCR_EL2", "VNCR_EL2", 0xE110, true, true,  {AArch64::FeatureNV}  }, // 1178
4699  { "VPIDR_EL2", "VPIDR_EL2", 0xE000, true, true,  {}  }, // 1179
4700  { "VSCTLR_EL2", "TTBR0_EL2", 0xE100, true, true,  {AArch64::HasV8_0rOps}  }, // 1180
4701  { "VSESR_EL2", "VSESR_EL2", 0xE293, true, true,  {AArch64::FeatureRAS}  }, // 1181
4702  { "VSTCR_EL2", "VSTCR_EL2", 0xE132, true, true,  {AArch64::FeatureSEL2}  }, // 1182
4703  { "VSTTBR_EL2", "VSTTBR_EL2", 0xE130, true, true,  {AArch64::HasV8_0aOps}  }, // 1183
4704  { "VTCR_EL2", "VTCR_EL2", 0xE10A, true, true,  {}  }, // 1184
4705  { "VTTBR_EL2", "VTTBR_EL2", 0xE108, true, true,  {AArch64::FeatureEL2VMSA}  }, // 1185
4706  { "ZCR_EL1", "ZCR_EL1", 0xC090, true, true,  {AArch64::FeatureSVE}  }, // 1186
4707  { "ZCR_EL12", "ZCR_EL12", 0xE890, true, true,  {AArch64::FeatureSVE}  }, // 1187
4708  { "ZCR_EL2", "ZCR_EL2", 0xE090, true, true,  {AArch64::FeatureSVE}  }, // 1188
4709  { "ZCR_EL3", "ZCR_EL3", 0xF090, true, true,  {AArch64::FeatureSVE}  }, // 1189
4710 };
4711
4712const SysReg *lookupSysRegByName(StringRef Name) {
4713  struct IndexType {
4714    const char * Name;
4715    unsigned _index;
4716  };
4717  static const struct IndexType Index[] = {
4718    { "ACCDATA_EL1", 0 },
4719    { "ACTLR_EL1", 1 },
4720    { "ACTLR_EL2", 2 },
4721    { "ACTLR_EL3", 3 },
4722    { "AFSR0_EL1", 4 },
4723    { "AFSR0_EL12", 5 },
4724    { "AFSR0_EL2", 6 },
4725    { "AFSR0_EL3", 7 },
4726    { "AFSR1_EL1", 8 },
4727    { "AFSR1_EL12", 9 },
4728    { "AFSR1_EL2", 10 },
4729    { "AFSR1_EL3", 11 },
4730    { "AIDR_EL1", 12 },
4731    { "ALLINT", 13 },
4732    { "AMAIR2_EL1", 14 },
4733    { "AMAIR2_EL12", 15 },
4734    { "AMAIR2_EL2", 16 },
4735    { "AMAIR2_EL3", 17 },
4736    { "AMAIR_EL1", 18 },
4737    { "AMAIR_EL12", 19 },
4738    { "AMAIR_EL2", 20 },
4739    { "AMAIR_EL3", 21 },
4740    { "AMCFGR_EL0", 22 },
4741    { "AMCG1IDR_EL0", 23 },
4742    { "AMCGCR_EL0", 24 },
4743    { "AMCNTENCLR0_EL0", 25 },
4744    { "AMCNTENCLR1_EL0", 26 },
4745    { "AMCNTENSET0_EL0", 27 },
4746    { "AMCNTENSET1_EL0", 28 },
4747    { "AMCR_EL0", 29 },
4748    { "AMEVCNTR00_EL0", 30 },
4749    { "AMEVCNTR01_EL0", 31 },
4750    { "AMEVCNTR02_EL0", 32 },
4751    { "AMEVCNTR03_EL0", 33 },
4752    { "AMEVCNTR10_EL0", 34 },
4753    { "AMEVCNTR110_EL0", 35 },
4754    { "AMEVCNTR111_EL0", 36 },
4755    { "AMEVCNTR112_EL0", 37 },
4756    { "AMEVCNTR113_EL0", 38 },
4757    { "AMEVCNTR114_EL0", 39 },
4758    { "AMEVCNTR115_EL0", 40 },
4759    { "AMEVCNTR11_EL0", 41 },
4760    { "AMEVCNTR12_EL0", 42 },
4761    { "AMEVCNTR13_EL0", 43 },
4762    { "AMEVCNTR14_EL0", 44 },
4763    { "AMEVCNTR15_EL0", 45 },
4764    { "AMEVCNTR16_EL0", 46 },
4765    { "AMEVCNTR17_EL0", 47 },
4766    { "AMEVCNTR18_EL0", 48 },
4767    { "AMEVCNTR19_EL0", 49 },
4768    { "AMEVCNTVOFF00_EL2", 50 },
4769    { "AMEVCNTVOFF010_EL2", 51 },
4770    { "AMEVCNTVOFF011_EL2", 52 },
4771    { "AMEVCNTVOFF012_EL2", 53 },
4772    { "AMEVCNTVOFF013_EL2", 54 },
4773    { "AMEVCNTVOFF014_EL2", 55 },
4774    { "AMEVCNTVOFF015_EL2", 56 },
4775    { "AMEVCNTVOFF01_EL2", 57 },
4776    { "AMEVCNTVOFF02_EL2", 58 },
4777    { "AMEVCNTVOFF03_EL2", 59 },
4778    { "AMEVCNTVOFF04_EL2", 60 },
4779    { "AMEVCNTVOFF05_EL2", 61 },
4780    { "AMEVCNTVOFF06_EL2", 62 },
4781    { "AMEVCNTVOFF07_EL2", 63 },
4782    { "AMEVCNTVOFF08_EL2", 64 },
4783    { "AMEVCNTVOFF09_EL2", 65 },
4784    { "AMEVCNTVOFF10_EL2", 66 },
4785    { "AMEVCNTVOFF110_EL2", 67 },
4786    { "AMEVCNTVOFF111_EL2", 68 },
4787    { "AMEVCNTVOFF112_EL2", 69 },
4788    { "AMEVCNTVOFF113_EL2", 70 },
4789    { "AMEVCNTVOFF114_EL2", 71 },
4790    { "AMEVCNTVOFF115_EL2", 72 },
4791    { "AMEVCNTVOFF11_EL2", 73 },
4792    { "AMEVCNTVOFF12_EL2", 74 },
4793    { "AMEVCNTVOFF13_EL2", 75 },
4794    { "AMEVCNTVOFF14_EL2", 76 },
4795    { "AMEVCNTVOFF15_EL2", 77 },
4796    { "AMEVCNTVOFF16_EL2", 78 },
4797    { "AMEVCNTVOFF17_EL2", 79 },
4798    { "AMEVCNTVOFF18_EL2", 80 },
4799    { "AMEVCNTVOFF19_EL2", 81 },
4800    { "AMEVTYPER00_EL0", 82 },
4801    { "AMEVTYPER01_EL0", 83 },
4802    { "AMEVTYPER02_EL0", 84 },
4803    { "AMEVTYPER03_EL0", 85 },
4804    { "AMEVTYPER10_EL0", 86 },
4805    { "AMEVTYPER110_EL0", 87 },
4806    { "AMEVTYPER111_EL0", 88 },
4807    { "AMEVTYPER112_EL0", 89 },
4808    { "AMEVTYPER113_EL0", 90 },
4809    { "AMEVTYPER114_EL0", 91 },
4810    { "AMEVTYPER115_EL0", 92 },
4811    { "AMEVTYPER11_EL0", 93 },
4812    { "AMEVTYPER12_EL0", 94 },
4813    { "AMEVTYPER13_EL0", 95 },
4814    { "AMEVTYPER14_EL0", 96 },
4815    { "AMEVTYPER15_EL0", 97 },
4816    { "AMEVTYPER16_EL0", 98 },
4817    { "AMEVTYPER17_EL0", 99 },
4818    { "AMEVTYPER18_EL0", 100 },
4819    { "AMEVTYPER19_EL0", 101 },
4820    { "AMUSERENR_EL0", 102 },
4821    { "APDAKEYHI_EL1", 103 },
4822    { "APDAKEYLO_EL1", 104 },
4823    { "APDBKEYHI_EL1", 105 },
4824    { "APDBKEYLO_EL1", 106 },
4825    { "APGAKEYHI_EL1", 107 },
4826    { "APGAKEYLO_EL1", 108 },
4827    { "APIAKEYHI_EL1", 109 },
4828    { "APIAKEYLO_EL1", 110 },
4829    { "APIBKEYHI_EL1", 111 },
4830    { "APIBKEYLO_EL1", 112 },
4831    { "BRBCR_EL1", 113 },
4832    { "BRBCR_EL12", 114 },
4833    { "BRBCR_EL2", 115 },
4834    { "BRBFCR_EL1", 116 },
4835    { "BRBIDR0_EL1", 117 },
4836    { "BRBINF0_EL1", 118 },
4837    { "BRBINF10_EL1", 119 },
4838    { "BRBINF11_EL1", 120 },
4839    { "BRBINF12_EL1", 121 },
4840    { "BRBINF13_EL1", 122 },
4841    { "BRBINF14_EL1", 123 },
4842    { "BRBINF15_EL1", 124 },
4843    { "BRBINF16_EL1", 125 },
4844    { "BRBINF17_EL1", 126 },
4845    { "BRBINF18_EL1", 127 },
4846    { "BRBINF19_EL1", 128 },
4847    { "BRBINF1_EL1", 129 },
4848    { "BRBINF20_EL1", 130 },
4849    { "BRBINF21_EL1", 131 },
4850    { "BRBINF22_EL1", 132 },
4851    { "BRBINF23_EL1", 133 },
4852    { "BRBINF24_EL1", 134 },
4853    { "BRBINF25_EL1", 135 },
4854    { "BRBINF26_EL1", 136 },
4855    { "BRBINF27_EL1", 137 },
4856    { "BRBINF28_EL1", 138 },
4857    { "BRBINF29_EL1", 139 },
4858    { "BRBINF2_EL1", 140 },
4859    { "BRBINF30_EL1", 141 },
4860    { "BRBINF31_EL1", 142 },
4861    { "BRBINF3_EL1", 143 },
4862    { "BRBINF4_EL1", 144 },
4863    { "BRBINF5_EL1", 145 },
4864    { "BRBINF6_EL1", 146 },
4865    { "BRBINF7_EL1", 147 },
4866    { "BRBINF8_EL1", 148 },
4867    { "BRBINF9_EL1", 149 },
4868    { "BRBINFINJ_EL1", 150 },
4869    { "BRBSRC0_EL1", 151 },
4870    { "BRBSRC10_EL1", 152 },
4871    { "BRBSRC11_EL1", 153 },
4872    { "BRBSRC12_EL1", 154 },
4873    { "BRBSRC13_EL1", 155 },
4874    { "BRBSRC14_EL1", 156 },
4875    { "BRBSRC15_EL1", 157 },
4876    { "BRBSRC16_EL1", 158 },
4877    { "BRBSRC17_EL1", 159 },
4878    { "BRBSRC18_EL1", 160 },
4879    { "BRBSRC19_EL1", 161 },
4880    { "BRBSRC1_EL1", 162 },
4881    { "BRBSRC20_EL1", 163 },
4882    { "BRBSRC21_EL1", 164 },
4883    { "BRBSRC22_EL1", 165 },
4884    { "BRBSRC23_EL1", 166 },
4885    { "BRBSRC24_EL1", 167 },
4886    { "BRBSRC25_EL1", 168 },
4887    { "BRBSRC26_EL1", 169 },
4888    { "BRBSRC27_EL1", 170 },
4889    { "BRBSRC28_EL1", 171 },
4890    { "BRBSRC29_EL1", 172 },
4891    { "BRBSRC2_EL1", 173 },
4892    { "BRBSRC30_EL1", 174 },
4893    { "BRBSRC31_EL1", 175 },
4894    { "BRBSRC3_EL1", 176 },
4895    { "BRBSRC4_EL1", 177 },
4896    { "BRBSRC5_EL1", 178 },
4897    { "BRBSRC6_EL1", 179 },
4898    { "BRBSRC7_EL1", 180 },
4899    { "BRBSRC8_EL1", 181 },
4900    { "BRBSRC9_EL1", 182 },
4901    { "BRBSRCINJ_EL1", 183 },
4902    { "BRBTGT0_EL1", 184 },
4903    { "BRBTGT10_EL1", 185 },
4904    { "BRBTGT11_EL1", 186 },
4905    { "BRBTGT12_EL1", 187 },
4906    { "BRBTGT13_EL1", 188 },
4907    { "BRBTGT14_EL1", 189 },
4908    { "BRBTGT15_EL1", 190 },
4909    { "BRBTGT16_EL1", 191 },
4910    { "BRBTGT17_EL1", 192 },
4911    { "BRBTGT18_EL1", 193 },
4912    { "BRBTGT19_EL1", 194 },
4913    { "BRBTGT1_EL1", 195 },
4914    { "BRBTGT20_EL1", 196 },
4915    { "BRBTGT21_EL1", 197 },
4916    { "BRBTGT22_EL1", 198 },
4917    { "BRBTGT23_EL1", 199 },
4918    { "BRBTGT24_EL1", 200 },
4919    { "BRBTGT25_EL1", 201 },
4920    { "BRBTGT26_EL1", 202 },
4921    { "BRBTGT27_EL1", 203 },
4922    { "BRBTGT28_EL1", 204 },
4923    { "BRBTGT29_EL1", 205 },
4924    { "BRBTGT2_EL1", 206 },
4925    { "BRBTGT30_EL1", 207 },
4926    { "BRBTGT31_EL1", 208 },
4927    { "BRBTGT3_EL1", 209 },
4928    { "BRBTGT4_EL1", 210 },
4929    { "BRBTGT5_EL1", 211 },
4930    { "BRBTGT6_EL1", 212 },
4931    { "BRBTGT7_EL1", 213 },
4932    { "BRBTGT8_EL1", 214 },
4933    { "BRBTGT9_EL1", 215 },
4934    { "BRBTGTINJ_EL1", 216 },
4935    { "BRBTS_EL1", 217 },
4936    { "CCSIDR2_EL1", 218 },
4937    { "CCSIDR_EL1", 219 },
4938    { "CLIDR_EL1", 220 },
4939    { "CNTFRQ_EL0", 221 },
4940    { "CNTHCTL_EL2", 222 },
4941    { "CNTHPS_CTL_EL2", 223 },
4942    { "CNTHPS_CVAL_EL2", 224 },
4943    { "CNTHPS_TVAL_EL2", 225 },
4944    { "CNTHP_CTL_EL2", 226 },
4945    { "CNTHP_CVAL_EL2", 227 },
4946    { "CNTHP_TVAL_EL2", 228 },
4947    { "CNTHVS_CTL_EL2", 229 },
4948    { "CNTHVS_CVAL_EL2", 230 },
4949    { "CNTHVS_TVAL_EL2", 231 },
4950    { "CNTHV_CTL_EL2", 232 },
4951    { "CNTHV_CVAL_EL2", 233 },
4952    { "CNTHV_TVAL_EL2", 234 },
4953    { "CNTISCALE_EL2", 235 },
4954    { "CNTKCTL_EL1", 236 },
4955    { "CNTKCTL_EL12", 237 },
4956    { "CNTPCTSS_EL0", 238 },
4957    { "CNTPCT_EL0", 239 },
4958    { "CNTPOFF_EL2", 240 },
4959    { "CNTPS_CTL_EL1", 241 },
4960    { "CNTPS_CVAL_EL1", 242 },
4961    { "CNTPS_TVAL_EL1", 243 },
4962    { "CNTP_CTL_EL0", 244 },
4963    { "CNTP_CTL_EL02", 245 },
4964    { "CNTP_CVAL_EL0", 246 },
4965    { "CNTP_CVAL_EL02", 247 },
4966    { "CNTP_TVAL_EL0", 248 },
4967    { "CNTP_TVAL_EL02", 249 },
4968    { "CNTSCALE_EL2", 250 },
4969    { "CNTVCTSS_EL0", 251 },
4970    { "CNTVCT_EL0", 252 },
4971    { "CNTVFRQ_EL2", 253 },
4972    { "CNTVOFF_EL2", 254 },
4973    { "CNTV_CTL_EL0", 255 },
4974    { "CNTV_CTL_EL02", 256 },
4975    { "CNTV_CVAL_EL0", 257 },
4976    { "CNTV_CVAL_EL02", 258 },
4977    { "CNTV_TVAL_EL0", 259 },
4978    { "CNTV_TVAL_EL02", 260 },
4979    { "CONTEXTIDR_EL1", 261 },
4980    { "CONTEXTIDR_EL12", 262 },
4981    { "CONTEXTIDR_EL2", 263 },
4982    { "CPACR_EL1", 264 },
4983    { "CPACR_EL12", 265 },
4984    { "CPM_IOACC_CTL_EL3", 266 },
4985    { "CPTR_EL2", 267 },
4986    { "CPTR_EL3", 268 },
4987    { "CSSELR_EL1", 269 },
4988    { "CTR_EL0", 270 },
4989    { "CURRENTEL", 271 },
4990    { "DACR32_EL2", 272 },
4991    { "DAIF", 273 },
4992    { "DBGAUTHSTATUS_EL1", 274 },
4993    { "DBGBCR0_EL1", 275 },
4994    { "DBGBCR10_EL1", 276 },
4995    { "DBGBCR11_EL1", 277 },
4996    { "DBGBCR12_EL1", 278 },
4997    { "DBGBCR13_EL1", 279 },
4998    { "DBGBCR14_EL1", 280 },
4999    { "DBGBCR15_EL1", 281 },
5000    { "DBGBCR1_EL1", 282 },
5001    { "DBGBCR2_EL1", 283 },
5002    { "DBGBCR3_EL1", 284 },
5003    { "DBGBCR4_EL1", 285 },
5004    { "DBGBCR5_EL1", 286 },
5005    { "DBGBCR6_EL1", 287 },
5006    { "DBGBCR7_EL1", 288 },
5007    { "DBGBCR8_EL1", 289 },
5008    { "DBGBCR9_EL1", 290 },
5009    { "DBGBVR0_EL1", 291 },
5010    { "DBGBVR10_EL1", 292 },
5011    { "DBGBVR11_EL1", 293 },
5012    { "DBGBVR12_EL1", 294 },
5013    { "DBGBVR13_EL1", 295 },
5014    { "DBGBVR14_EL1", 296 },
5015    { "DBGBVR15_EL1", 297 },
5016    { "DBGBVR1_EL1", 298 },
5017    { "DBGBVR2_EL1", 299 },
5018    { "DBGBVR3_EL1", 300 },
5019    { "DBGBVR4_EL1", 301 },
5020    { "DBGBVR5_EL1", 302 },
5021    { "DBGBVR6_EL1", 303 },
5022    { "DBGBVR7_EL1", 304 },
5023    { "DBGBVR8_EL1", 305 },
5024    { "DBGBVR9_EL1", 306 },
5025    { "DBGCLAIMCLR_EL1", 307 },
5026    { "DBGCLAIMSET_EL1", 308 },
5027    { "DBGDTRRX_EL0", 309 },
5028    { "DBGDTRTX_EL0", 310 },
5029    { "DBGDTR_EL0", 311 },
5030    { "DBGPRCR_EL1", 312 },
5031    { "DBGVCR32_EL2", 313 },
5032    { "DBGWCR0_EL1", 314 },
5033    { "DBGWCR10_EL1", 315 },
5034    { "DBGWCR11_EL1", 316 },
5035    { "DBGWCR12_EL1", 317 },
5036    { "DBGWCR13_EL1", 318 },
5037    { "DBGWCR14_EL1", 319 },
5038    { "DBGWCR15_EL1", 320 },
5039    { "DBGWCR1_EL1", 321 },
5040    { "DBGWCR2_EL1", 322 },
5041    { "DBGWCR3_EL1", 323 },
5042    { "DBGWCR4_EL1", 324 },
5043    { "DBGWCR5_EL1", 325 },
5044    { "DBGWCR6_EL1", 326 },
5045    { "DBGWCR7_EL1", 327 },
5046    { "DBGWCR8_EL1", 328 },
5047    { "DBGWCR9_EL1", 329 },
5048    { "DBGWVR0_EL1", 330 },
5049    { "DBGWVR10_EL1", 331 },
5050    { "DBGWVR11_EL1", 332 },
5051    { "DBGWVR12_EL1", 333 },
5052    { "DBGWVR13_EL1", 334 },
5053    { "DBGWVR14_EL1", 335 },
5054    { "DBGWVR15_EL1", 336 },
5055    { "DBGWVR1_EL1", 337 },
5056    { "DBGWVR2_EL1", 338 },
5057    { "DBGWVR3_EL1", 339 },
5058    { "DBGWVR4_EL1", 340 },
5059    { "DBGWVR5_EL1", 341 },
5060    { "DBGWVR6_EL1", 342 },
5061    { "DBGWVR7_EL1", 343 },
5062    { "DBGWVR8_EL1", 344 },
5063    { "DBGWVR9_EL1", 345 },
5064    { "DCZID_EL0", 346 },
5065    { "DISR_EL1", 347 },
5066    { "DIT", 348 },
5067    { "DLR_EL0", 349 },
5068    { "DSPSR_EL0", 350 },
5069    { "ELR_EL1", 351 },
5070    { "ELR_EL12", 352 },
5071    { "ELR_EL2", 353 },
5072    { "ELR_EL3", 354 },
5073    { "ERRIDR_EL1", 355 },
5074    { "ERRSELR_EL1", 356 },
5075    { "ERXADDR_EL1", 357 },
5076    { "ERXCTLR_EL1", 358 },
5077    { "ERXFR_EL1", 359 },
5078    { "ERXGSR_EL1", 360 },
5079    { "ERXMISC0_EL1", 361 },
5080    { "ERXMISC1_EL1", 362 },
5081    { "ERXMISC2_EL1", 363 },
5082    { "ERXMISC3_EL1", 364 },
5083    { "ERXPFGCDN_EL1", 365 },
5084    { "ERXPFGCTL_EL1", 366 },
5085    { "ERXPFGF_EL1", 367 },
5086    { "ERXSTATUS_EL1", 368 },
5087    { "ESR_EL1", 369 },
5088    { "ESR_EL12", 370 },
5089    { "ESR_EL2", 371 },
5090    { "ESR_EL3", 372 },
5091    { "FAR_EL1", 373 },
5092    { "FAR_EL12", 374 },
5093    { "FAR_EL2", 375 },
5094    { "FAR_EL3", 376 },
5095    { "FPCR", 377 },
5096    { "FPEXC32_EL2", 378 },
5097    { "FPSR", 379 },
5098    { "GCR_EL1", 380 },
5099    { "GMID_EL1", 381 },
5100    { "GPCCR_EL3", 382 },
5101    { "GPTBR_EL3", 383 },
5102    { "HACR_EL2", 384 },
5103    { "HAFGRTR_EL2", 385 },
5104    { "HCRX_EL2", 386 },
5105    { "HCR_EL2", 387 },
5106    { "HDFGRTR2_EL2", 388 },
5107    { "HDFGRTR_EL2", 389 },
5108    { "HDFGWTR2_EL2", 390 },
5109    { "HDFGWTR_EL2", 391 },
5110    { "HFGITR2_EL2", 392 },
5111    { "HFGITR_EL2", 393 },
5112    { "HFGRTR2_EL2", 394 },
5113    { "HFGRTR_EL2", 395 },
5114    { "HFGWTR2_EL2", 396 },
5115    { "HFGWTR_EL2", 397 },
5116    { "HPFAR_EL2", 398 },
5117    { "HSTR_EL2", 399 },
5118    { "ICC_AP0R0_EL1", 400 },
5119    { "ICC_AP0R1_EL1", 401 },
5120    { "ICC_AP0R2_EL1", 402 },
5121    { "ICC_AP0R3_EL1", 403 },
5122    { "ICC_AP1R0_EL1", 404 },
5123    { "ICC_AP1R1_EL1", 405 },
5124    { "ICC_AP1R2_EL1", 406 },
5125    { "ICC_AP1R3_EL1", 407 },
5126    { "ICC_ASGI1R_EL1", 408 },
5127    { "ICC_BPR0_EL1", 409 },
5128    { "ICC_BPR1_EL1", 410 },
5129    { "ICC_CTLR_EL1", 411 },
5130    { "ICC_CTLR_EL3", 412 },
5131    { "ICC_DIR_EL1", 413 },
5132    { "ICC_EOIR0_EL1", 414 },
5133    { "ICC_EOIR1_EL1", 415 },
5134    { "ICC_HPPIR0_EL1", 416 },
5135    { "ICC_HPPIR1_EL1", 417 },
5136    { "ICC_IAR0_EL1", 418 },
5137    { "ICC_IAR1_EL1", 419 },
5138    { "ICC_IGRPEN0_EL1", 420 },
5139    { "ICC_IGRPEN1_EL1", 421 },
5140    { "ICC_IGRPEN1_EL3", 422 },
5141    { "ICC_NMIAR1_EL1", 423 },
5142    { "ICC_PMR_EL1", 424 },
5143    { "ICC_RPR_EL1", 425 },
5144    { "ICC_SGI0R_EL1", 426 },
5145    { "ICC_SGI1R_EL1", 427 },
5146    { "ICC_SRE_EL1", 428 },
5147    { "ICC_SRE_EL2", 429 },
5148    { "ICC_SRE_EL3", 430 },
5149    { "ICH_AP0R0_EL2", 431 },
5150    { "ICH_AP0R1_EL2", 432 },
5151    { "ICH_AP0R2_EL2", 433 },
5152    { "ICH_AP0R3_EL2", 434 },
5153    { "ICH_AP1R0_EL2", 435 },
5154    { "ICH_AP1R1_EL2", 436 },
5155    { "ICH_AP1R2_EL2", 437 },
5156    { "ICH_AP1R3_EL2", 438 },
5157    { "ICH_EISR_EL2", 439 },
5158    { "ICH_ELRSR_EL2", 440 },
5159    { "ICH_HCR_EL2", 441 },
5160    { "ICH_LR0_EL2", 442 },
5161    { "ICH_LR10_EL2", 443 },
5162    { "ICH_LR11_EL2", 444 },
5163    { "ICH_LR12_EL2", 445 },
5164    { "ICH_LR13_EL2", 446 },
5165    { "ICH_LR14_EL2", 447 },
5166    { "ICH_LR15_EL2", 448 },
5167    { "ICH_LR1_EL2", 449 },
5168    { "ICH_LR2_EL2", 450 },
5169    { "ICH_LR3_EL2", 451 },
5170    { "ICH_LR4_EL2", 452 },
5171    { "ICH_LR5_EL2", 453 },
5172    { "ICH_LR6_EL2", 454 },
5173    { "ICH_LR7_EL2", 455 },
5174    { "ICH_LR8_EL2", 456 },
5175    { "ICH_LR9_EL2", 457 },
5176    { "ICH_MISR_EL2", 458 },
5177    { "ICH_VMCR_EL2", 459 },
5178    { "ICH_VTR_EL2", 460 },
5179    { "ID_AA64AFR0_EL1", 461 },
5180    { "ID_AA64AFR1_EL1", 462 },
5181    { "ID_AA64DFR0_EL1", 463 },
5182    { "ID_AA64DFR1_EL1", 464 },
5183    { "ID_AA64ISAR0_EL1", 465 },
5184    { "ID_AA64ISAR1_EL1", 466 },
5185    { "ID_AA64ISAR2_EL1", 467 },
5186    { "ID_AA64MMFR0_EL1", 468 },
5187    { "ID_AA64MMFR1_EL1", 469 },
5188    { "ID_AA64MMFR2_EL1", 470 },
5189    { "ID_AA64MMFR3_EL1", 471 },
5190    { "ID_AA64MMFR4_EL1", 472 },
5191    { "ID_AA64PFR0_EL1", 473 },
5192    { "ID_AA64PFR1_EL1", 474 },
5193    { "ID_AA64PFR2_EL1", 475 },
5194    { "ID_AA64SMFR0_EL1", 476 },
5195    { "ID_AA64ZFR0_EL1", 477 },
5196    { "ID_AFR0_EL1", 478 },
5197    { "ID_DFR0_EL1", 479 },
5198    { "ID_DFR1_EL1", 480 },
5199    { "ID_ISAR0_EL1", 481 },
5200    { "ID_ISAR1_EL1", 482 },
5201    { "ID_ISAR2_EL1", 483 },
5202    { "ID_ISAR3_EL1", 484 },
5203    { "ID_ISAR4_EL1", 485 },
5204    { "ID_ISAR5_EL1", 486 },
5205    { "ID_ISAR6_EL1", 487 },
5206    { "ID_MMFR0_EL1", 488 },
5207    { "ID_MMFR1_EL1", 489 },
5208    { "ID_MMFR2_EL1", 490 },
5209    { "ID_MMFR3_EL1", 491 },
5210    { "ID_MMFR4_EL1", 492 },
5211    { "ID_MMFR5_EL1", 493 },
5212    { "ID_PFR0_EL1", 494 },
5213    { "ID_PFR1_EL1", 495 },
5214    { "ID_PFR2_EL1", 496 },
5215    { "IFSR32_EL2", 497 },
5216    { "ISR_EL1", 498 },
5217    { "LORC_EL1", 499 },
5218    { "LOREA_EL1", 500 },
5219    { "LORID_EL1", 501 },
5220    { "LORN_EL1", 502 },
5221    { "LORSA_EL1", 503 },
5222    { "MAIR2_EL1", 504 },
5223    { "MAIR2_EL12", 505 },
5224    { "MAIR2_EL2", 506 },
5225    { "MAIR2_EL3", 507 },
5226    { "MAIR_EL1", 508 },
5227    { "MAIR_EL12", 509 },
5228    { "MAIR_EL2", 510 },
5229    { "MAIR_EL3", 511 },
5230    { "MDCCINT_EL1", 512 },
5231    { "MDCCSR_EL0", 513 },
5232    { "MDCR_EL2", 514 },
5233    { "MDCR_EL3", 515 },
5234    { "MDRAR_EL1", 516 },
5235    { "MDSCR_EL1", 517 },
5236    { "MDSELR_EL1", 518 },
5237    { "MECIDR_EL2", 519 },
5238    { "MECID_A0_EL2", 520 },
5239    { "MECID_A1_EL2", 521 },
5240    { "MECID_P0_EL2", 522 },
5241    { "MECID_P1_EL2", 523 },
5242    { "MECID_RL_A_EL3", 524 },
5243    { "MFAR_EL3", 525 },
5244    { "MIDR_EL1", 526 },
5245    { "MPAM0_EL1", 527 },
5246    { "MPAM1_EL1", 528 },
5247    { "MPAM1_EL12", 529 },
5248    { "MPAM2_EL2", 530 },
5249    { "MPAM3_EL3", 531 },
5250    { "MPAMHCR_EL2", 532 },
5251    { "MPAMIDR_EL1", 533 },
5252    { "MPAMSM_EL1", 534 },
5253    { "MPAMVPM0_EL2", 535 },
5254    { "MPAMVPM1_EL2", 536 },
5255    { "MPAMVPM2_EL2", 537 },
5256    { "MPAMVPM3_EL2", 538 },
5257    { "MPAMVPM4_EL2", 539 },
5258    { "MPAMVPM5_EL2", 540 },
5259    { "MPAMVPM6_EL2", 541 },
5260    { "MPAMVPM7_EL2", 542 },
5261    { "MPAMVPMV_EL2", 543 },
5262    { "MPIDR_EL1", 544 },
5263    { "MPUIR_EL1", 545 },
5264    { "MPUIR_EL2", 546 },
5265    { "MVFR0_EL1", 547 },
5266    { "MVFR1_EL1", 548 },
5267    { "MVFR2_EL1", 549 },
5268    { "NZCV", 550 },
5269    { "OSDLR_EL1", 551 },
5270    { "OSDTRRX_EL1", 552 },
5271    { "OSDTRTX_EL1", 553 },
5272    { "OSECCR_EL1", 554 },
5273    { "OSLAR_EL1", 555 },
5274    { "OSLSR_EL1", 556 },
5275    { "PAN", 557 },
5276    { "PAR_EL1", 558 },
5277    { "PFAR_EL1", 559 },
5278    { "PFAR_EL12", 560 },
5279    { "PFAR_EL2", 561 },
5280    { "PIRE0_EL1", 562 },
5281    { "PIRE0_EL12", 563 },
5282    { "PIRE0_EL2", 564 },
5283    { "PIR_EL1", 565 },
5284    { "PIR_EL12", 566 },
5285    { "PIR_EL2", 567 },
5286    { "PIR_EL3", 568 },
5287    { "PM", 569 },
5288    { "PMBIDR_EL1", 570 },
5289    { "PMBLIMITR_EL1", 571 },
5290    { "PMBPTR_EL1", 572 },
5291    { "PMBSR_EL1", 573 },
5292    { "PMCCFILTR_EL0", 574 },
5293    { "PMCCNTR_EL0", 575 },
5294    { "PMCCNTSVR_EL1", 576 },
5295    { "PMCEID0_EL0", 577 },
5296    { "PMCEID1_EL0", 578 },
5297    { "PMCNTENCLR_EL0", 579 },
5298    { "PMCNTENSET_EL0", 580 },
5299    { "PMCR_EL0", 581 },
5300    { "PMECR_EL1", 582 },
5301    { "PMEVCNTR0_EL0", 583 },
5302    { "PMEVCNTR10_EL0", 584 },
5303    { "PMEVCNTR11_EL0", 585 },
5304    { "PMEVCNTR12_EL0", 586 },
5305    { "PMEVCNTR13_EL0", 587 },
5306    { "PMEVCNTR14_EL0", 588 },
5307    { "PMEVCNTR15_EL0", 589 },
5308    { "PMEVCNTR16_EL0", 590 },
5309    { "PMEVCNTR17_EL0", 591 },
5310    { "PMEVCNTR18_EL0", 592 },
5311    { "PMEVCNTR19_EL0", 593 },
5312    { "PMEVCNTR1_EL0", 594 },
5313    { "PMEVCNTR20_EL0", 595 },
5314    { "PMEVCNTR21_EL0", 596 },
5315    { "PMEVCNTR22_EL0", 597 },
5316    { "PMEVCNTR23_EL0", 598 },
5317    { "PMEVCNTR24_EL0", 599 },
5318    { "PMEVCNTR25_EL0", 600 },
5319    { "PMEVCNTR26_EL0", 601 },
5320    { "PMEVCNTR27_EL0", 602 },
5321    { "PMEVCNTR28_EL0", 603 },
5322    { "PMEVCNTR29_EL0", 604 },
5323    { "PMEVCNTR2_EL0", 605 },
5324    { "PMEVCNTR30_EL0", 606 },
5325    { "PMEVCNTR3_EL0", 607 },
5326    { "PMEVCNTR4_EL0", 608 },
5327    { "PMEVCNTR5_EL0", 609 },
5328    { "PMEVCNTR6_EL0", 610 },
5329    { "PMEVCNTR7_EL0", 611 },
5330    { "PMEVCNTR8_EL0", 612 },
5331    { "PMEVCNTR9_EL0", 613 },
5332    { "PMEVCNTSVR0_EL1", 614 },
5333    { "PMEVCNTSVR10_EL1", 615 },
5334    { "PMEVCNTSVR11_EL1", 616 },
5335    { "PMEVCNTSVR12_EL1", 617 },
5336    { "PMEVCNTSVR13_EL1", 618 },
5337    { "PMEVCNTSVR14_EL1", 619 },
5338    { "PMEVCNTSVR15_EL1", 620 },
5339    { "PMEVCNTSVR16_EL1", 621 },
5340    { "PMEVCNTSVR17_EL1", 622 },
5341    { "PMEVCNTSVR18_EL1", 623 },
5342    { "PMEVCNTSVR19_EL1", 624 },
5343    { "PMEVCNTSVR1_EL1", 625 },
5344    { "PMEVCNTSVR20_EL1", 626 },
5345    { "PMEVCNTSVR21_EL1", 627 },
5346    { "PMEVCNTSVR22_EL1", 628 },
5347    { "PMEVCNTSVR23_EL1", 629 },
5348    { "PMEVCNTSVR24_EL1", 630 },
5349    { "PMEVCNTSVR25_EL1", 631 },
5350    { "PMEVCNTSVR26_EL1", 632 },
5351    { "PMEVCNTSVR27_EL1", 633 },
5352    { "PMEVCNTSVR28_EL1", 634 },
5353    { "PMEVCNTSVR29_EL1", 635 },
5354    { "PMEVCNTSVR2_EL1", 636 },
5355    { "PMEVCNTSVR30_EL1", 637 },
5356    { "PMEVCNTSVR3_EL1", 638 },
5357    { "PMEVCNTSVR4_EL1", 639 },
5358    { "PMEVCNTSVR5_EL1", 640 },
5359    { "PMEVCNTSVR6_EL1", 641 },
5360    { "PMEVCNTSVR7_EL1", 642 },
5361    { "PMEVCNTSVR8_EL1", 643 },
5362    { "PMEVCNTSVR9_EL1", 644 },
5363    { "PMEVTYPER0_EL0", 645 },
5364    { "PMEVTYPER10_EL0", 646 },
5365    { "PMEVTYPER11_EL0", 647 },
5366    { "PMEVTYPER12_EL0", 648 },
5367    { "PMEVTYPER13_EL0", 649 },
5368    { "PMEVTYPER14_EL0", 650 },
5369    { "PMEVTYPER15_EL0", 651 },
5370    { "PMEVTYPER16_EL0", 652 },
5371    { "PMEVTYPER17_EL0", 653 },
5372    { "PMEVTYPER18_EL0", 654 },
5373    { "PMEVTYPER19_EL0", 655 },
5374    { "PMEVTYPER1_EL0", 656 },
5375    { "PMEVTYPER20_EL0", 657 },
5376    { "PMEVTYPER21_EL0", 658 },
5377    { "PMEVTYPER22_EL0", 659 },
5378    { "PMEVTYPER23_EL0", 660 },
5379    { "PMEVTYPER24_EL0", 661 },
5380    { "PMEVTYPER25_EL0", 662 },
5381    { "PMEVTYPER26_EL0", 663 },
5382    { "PMEVTYPER27_EL0", 664 },
5383    { "PMEVTYPER28_EL0", 665 },
5384    { "PMEVTYPER29_EL0", 666 },
5385    { "PMEVTYPER2_EL0", 667 },
5386    { "PMEVTYPER30_EL0", 668 },
5387    { "PMEVTYPER3_EL0", 669 },
5388    { "PMEVTYPER4_EL0", 670 },
5389    { "PMEVTYPER5_EL0", 671 },
5390    { "PMEVTYPER6_EL0", 672 },
5391    { "PMEVTYPER7_EL0", 673 },
5392    { "PMEVTYPER8_EL0", 674 },
5393    { "PMEVTYPER9_EL0", 675 },
5394    { "PMIAR_EL1", 676 },
5395    { "PMICFILTR_EL0", 677 },
5396    { "PMICNTR_EL0", 678 },
5397    { "PMICNTSVR_EL1", 679 },
5398    { "PMINTENCLR_EL1", 680 },
5399    { "PMINTENSET_EL1", 681 },
5400    { "PMMIR_EL1", 682 },
5401    { "PMOVSCLR_EL0", 683 },
5402    { "PMOVSSET_EL0", 684 },
5403    { "PMSCR_EL1", 685 },
5404    { "PMSCR_EL12", 686 },
5405    { "PMSCR_EL2", 687 },
5406    { "PMSDSFR_EL1", 688 },
5407    { "PMSELR_EL0", 689 },
5408    { "PMSEVFR_EL1", 690 },
5409    { "PMSFCR_EL1", 691 },
5410    { "PMSICR_EL1", 692 },
5411    { "PMSIDR_EL1", 693 },
5412    { "PMSIRR_EL1", 694 },
5413    { "PMSLATFR_EL1", 695 },
5414    { "PMSNEVFR_EL1", 696 },
5415    { "PMSSCR_EL1", 697 },
5416    { "PMSWINC_EL0", 698 },
5417    { "PMUACR_EL1", 699 },
5418    { "PMUSERENR_EL0", 700 },
5419    { "PMXEVCNTR_EL0", 701 },
5420    { "PMXEVTYPER_EL0", 702 },
5421    { "PMZR_EL0", 703 },
5422    { "POR_EL0", 704 },
5423    { "POR_EL1", 705 },
5424    { "POR_EL12", 706 },
5425    { "POR_EL2", 707 },
5426    { "POR_EL3", 708 },
5427    { "PRBAR10_EL1", 709 },
5428    { "PRBAR10_EL2", 710 },
5429    { "PRBAR11_EL1", 711 },
5430    { "PRBAR11_EL2", 712 },
5431    { "PRBAR12_EL1", 713 },
5432    { "PRBAR12_EL2", 714 },
5433    { "PRBAR13_EL1", 715 },
5434    { "PRBAR13_EL2", 716 },
5435    { "PRBAR14_EL1", 717 },
5436    { "PRBAR14_EL2", 718 },
5437    { "PRBAR15_EL1", 719 },
5438    { "PRBAR15_EL2", 720 },
5439    { "PRBAR1_EL1", 721 },
5440    { "PRBAR1_EL2", 722 },
5441    { "PRBAR2_EL1", 723 },
5442    { "PRBAR2_EL2", 724 },
5443    { "PRBAR3_EL1", 725 },
5444    { "PRBAR3_EL2", 726 },
5445    { "PRBAR4_EL1", 727 },
5446    { "PRBAR4_EL2", 728 },
5447    { "PRBAR5_EL1", 729 },
5448    { "PRBAR5_EL2", 730 },
5449    { "PRBAR6_EL1", 731 },
5450    { "PRBAR6_EL2", 732 },
5451    { "PRBAR7_EL1", 733 },
5452    { "PRBAR7_EL2", 734 },
5453    { "PRBAR8_EL1", 735 },
5454    { "PRBAR8_EL2", 736 },
5455    { "PRBAR9_EL1", 737 },
5456    { "PRBAR9_EL2", 738 },
5457    { "PRBAR_EL1", 739 },
5458    { "PRBAR_EL2", 740 },
5459    { "PRENR_EL1", 741 },
5460    { "PRENR_EL2", 742 },
5461    { "PRLAR10_EL1", 743 },
5462    { "PRLAR10_EL2", 744 },
5463    { "PRLAR11_EL1", 745 },
5464    { "PRLAR11_EL2", 746 },
5465    { "PRLAR12_EL1", 747 },
5466    { "PRLAR12_EL2", 748 },
5467    { "PRLAR13_EL1", 749 },
5468    { "PRLAR13_EL2", 750 },
5469    { "PRLAR14_EL1", 751 },
5470    { "PRLAR14_EL2", 752 },
5471    { "PRLAR15_EL1", 753 },
5472    { "PRLAR15_EL2", 754 },
5473    { "PRLAR1_EL1", 755 },
5474    { "PRLAR1_EL2", 756 },
5475    { "PRLAR2_EL1", 757 },
5476    { "PRLAR2_EL2", 758 },
5477    { "PRLAR3_EL1", 759 },
5478    { "PRLAR3_EL2", 760 },
5479    { "PRLAR4_EL1", 761 },
5480    { "PRLAR4_EL2", 762 },
5481    { "PRLAR5_EL1", 763 },
5482    { "PRLAR5_EL2", 764 },
5483    { "PRLAR6_EL1", 765 },
5484    { "PRLAR6_EL2", 766 },
5485    { "PRLAR7_EL1", 767 },
5486    { "PRLAR7_EL2", 768 },
5487    { "PRLAR8_EL1", 769 },
5488    { "PRLAR8_EL2", 770 },
5489    { "PRLAR9_EL1", 771 },
5490    { "PRLAR9_EL2", 772 },
5491    { "PRLAR_EL1", 773 },
5492    { "PRLAR_EL2", 774 },
5493    { "PRSELR_EL1", 775 },
5494    { "PRSELR_EL2", 776 },
5495    { "RCWMASK_EL1", 777 },
5496    { "RCWSMASK_EL1", 778 },
5497    { "REVIDR_EL1", 779 },
5498    { "RGSR_EL1", 780 },
5499    { "RMR_EL1", 781 },
5500    { "RMR_EL2", 782 },
5501    { "RMR_EL3", 783 },
5502    { "RNDR", 784 },
5503    { "RNDRRS", 785 },
5504    { "RVBAR_EL1", 786 },
5505    { "RVBAR_EL2", 787 },
5506    { "RVBAR_EL3", 788 },
5507    { "S2PIR_EL2", 789 },
5508    { "S2POR_EL1", 790 },
5509    { "SCR_EL3", 791 },
5510    { "SCTLR2_EL1", 792 },
5511    { "SCTLR2_EL12", 793 },
5512    { "SCTLR2_EL2", 794 },
5513    { "SCTLR2_EL3", 795 },
5514    { "SCTLR_EL1", 796 },
5515    { "SCTLR_EL12", 797 },
5516    { "SCTLR_EL2", 798 },
5517    { "SCTLR_EL3", 799 },
5518    { "SCXTNUM_EL0", 800 },
5519    { "SCXTNUM_EL1", 801 },
5520    { "SCXTNUM_EL12", 802 },
5521    { "SCXTNUM_EL2", 803 },
5522    { "SCXTNUM_EL3", 804 },
5523    { "SDER32_EL2", 805 },
5524    { "SDER32_EL3", 806 },
5525    { "SMCR_EL1", 807 },
5526    { "SMCR_EL12", 808 },
5527    { "SMCR_EL2", 809 },
5528    { "SMCR_EL3", 810 },
5529    { "SMIDR_EL1", 811 },
5530    { "SMPRIMAP_EL2", 812 },
5531    { "SMPRI_EL1", 813 },
5532    { "SPMACCESSR_EL1", 814 },
5533    { "SPMACCESSR_EL12", 815 },
5534    { "SPMACCESSR_EL2", 816 },
5535    { "SPMACCESSR_EL3", 817 },
5536    { "SPMCFGR_EL1", 818 },
5537    { "SPMCGCR0_EL1", 819 },
5538    { "SPMCGCR1_EL1", 820 },
5539    { "SPMCNTENCLR_EL0", 821 },
5540    { "SPMCNTENSET_EL0", 822 },
5541    { "SPMCR_EL0", 823 },
5542    { "SPMDEVAFF_EL1", 824 },
5543    { "SPMDEVARCH_EL1", 825 },
5544    { "SPMEVCNTR0_EL0", 826 },
5545    { "SPMEVCNTR10_EL0", 827 },
5546    { "SPMEVCNTR11_EL0", 828 },
5547    { "SPMEVCNTR12_EL0", 829 },
5548    { "SPMEVCNTR13_EL0", 830 },
5549    { "SPMEVCNTR14_EL0", 831 },
5550    { "SPMEVCNTR15_EL0", 832 },
5551    { "SPMEVCNTR1_EL0", 833 },
5552    { "SPMEVCNTR2_EL0", 834 },
5553    { "SPMEVCNTR3_EL0", 835 },
5554    { "SPMEVCNTR4_EL0", 836 },
5555    { "SPMEVCNTR5_EL0", 837 },
5556    { "SPMEVCNTR6_EL0", 838 },
5557    { "SPMEVCNTR7_EL0", 839 },
5558    { "SPMEVCNTR8_EL0", 840 },
5559    { "SPMEVCNTR9_EL0", 841 },
5560    { "SPMEVFILT2R0_EL0", 842 },
5561    { "SPMEVFILT2R10_EL0", 843 },
5562    { "SPMEVFILT2R11_EL0", 844 },
5563    { "SPMEVFILT2R12_EL0", 845 },
5564    { "SPMEVFILT2R13_EL0", 846 },
5565    { "SPMEVFILT2R14_EL0", 847 },
5566    { "SPMEVFILT2R15_EL0", 848 },
5567    { "SPMEVFILT2R1_EL0", 849 },
5568    { "SPMEVFILT2R2_EL0", 850 },
5569    { "SPMEVFILT2R3_EL0", 851 },
5570    { "SPMEVFILT2R4_EL0", 852 },
5571    { "SPMEVFILT2R5_EL0", 853 },
5572    { "SPMEVFILT2R6_EL0", 854 },
5573    { "SPMEVFILT2R7_EL0", 855 },
5574    { "SPMEVFILT2R8_EL0", 856 },
5575    { "SPMEVFILT2R9_EL0", 857 },
5576    { "SPMEVFILTR0_EL0", 858 },
5577    { "SPMEVFILTR10_EL0", 859 },
5578    { "SPMEVFILTR11_EL0", 860 },
5579    { "SPMEVFILTR12_EL0", 861 },
5580    { "SPMEVFILTR13_EL0", 862 },
5581    { "SPMEVFILTR14_EL0", 863 },
5582    { "SPMEVFILTR15_EL0", 864 },
5583    { "SPMEVFILTR1_EL0", 865 },
5584    { "SPMEVFILTR2_EL0", 866 },
5585    { "SPMEVFILTR3_EL0", 867 },
5586    { "SPMEVFILTR4_EL0", 868 },
5587    { "SPMEVFILTR5_EL0", 869 },
5588    { "SPMEVFILTR6_EL0", 870 },
5589    { "SPMEVFILTR7_EL0", 871 },
5590    { "SPMEVFILTR8_EL0", 872 },
5591    { "SPMEVFILTR9_EL0", 873 },
5592    { "SPMEVTYPER0_EL0", 874 },
5593    { "SPMEVTYPER10_EL0", 875 },
5594    { "SPMEVTYPER11_EL0", 876 },
5595    { "SPMEVTYPER12_EL0", 877 },
5596    { "SPMEVTYPER13_EL0", 878 },
5597    { "SPMEVTYPER14_EL0", 879 },
5598    { "SPMEVTYPER15_EL0", 880 },
5599    { "SPMEVTYPER1_EL0", 881 },
5600    { "SPMEVTYPER2_EL0", 882 },
5601    { "SPMEVTYPER3_EL0", 883 },
5602    { "SPMEVTYPER4_EL0", 884 },
5603    { "SPMEVTYPER5_EL0", 885 },
5604    { "SPMEVTYPER6_EL0", 886 },
5605    { "SPMEVTYPER7_EL0", 887 },
5606    { "SPMEVTYPER8_EL0", 888 },
5607    { "SPMEVTYPER9_EL0", 889 },
5608    { "SPMIIDR_EL1", 890 },
5609    { "SPMINTENCLR_EL1", 891 },
5610    { "SPMINTENSET_EL1", 892 },
5611    { "SPMOVSCLR_EL0", 893 },
5612    { "SPMOVSSET_EL0", 894 },
5613    { "SPMROOTCR_EL3", 895 },
5614    { "SPMSCR_EL1", 896 },
5615    { "SPMSELR_EL0", 897 },
5616    { "SPSEL", 898 },
5617    { "SPSR_ABT", 899 },
5618    { "SPSR_EL1", 900 },
5619    { "SPSR_EL12", 901 },
5620    { "SPSR_EL2", 902 },
5621    { "SPSR_EL3", 903 },
5622    { "SPSR_FIQ", 904 },
5623    { "SPSR_IRQ", 905 },
5624    { "SPSR_UND", 906 },
5625    { "SP_EL0", 907 },
5626    { "SP_EL1", 908 },
5627    { "SP_EL2", 909 },
5628    { "SSBS", 910 },
5629    { "SVCR", 911 },
5630    { "TCO", 912 },
5631    { "TCR2_EL1", 913 },
5632    { "TCR2_EL12", 914 },
5633    { "TCR2_EL2", 915 },
5634    { "TCR_EL1", 916 },
5635    { "TCR_EL12", 917 },
5636    { "TCR_EL2", 918 },
5637    { "TCR_EL3", 919 },
5638    { "TEECR32_EL1", 920 },
5639    { "TEEHBR32_EL1", 921 },
5640    { "TFSRE0_EL1", 922 },
5641    { "TFSR_EL1", 923 },
5642    { "TFSR_EL12", 924 },
5643    { "TFSR_EL2", 925 },
5644    { "TFSR_EL3", 926 },
5645    { "TPIDR2_EL0", 927 },
5646    { "TPIDRRO_EL0", 928 },
5647    { "TPIDR_EL0", 929 },
5648    { "TPIDR_EL1", 930 },
5649    { "TPIDR_EL2", 931 },
5650    { "TPIDR_EL3", 932 },
5651    { "TRBBASER_EL1", 933 },
5652    { "TRBIDR_EL1", 934 },
5653    { "TRBLIMITR_EL1", 935 },
5654    { "TRBMAR_EL1", 936 },
5655    { "TRBPTR_EL1", 937 },
5656    { "TRBSR_EL1", 938 },
5657    { "TRBTRG_EL1", 939 },
5658    { "TRCACATR0", 940 },
5659    { "TRCACATR1", 941 },
5660    { "TRCACATR10", 942 },
5661    { "TRCACATR11", 943 },
5662    { "TRCACATR12", 944 },
5663    { "TRCACATR13", 945 },
5664    { "TRCACATR14", 946 },
5665    { "TRCACATR15", 947 },
5666    { "TRCACATR2", 948 },
5667    { "TRCACATR3", 949 },
5668    { "TRCACATR4", 950 },
5669    { "TRCACATR5", 951 },
5670    { "TRCACATR6", 952 },
5671    { "TRCACATR7", 953 },
5672    { "TRCACATR8", 954 },
5673    { "TRCACATR9", 955 },
5674    { "TRCACVR0", 956 },
5675    { "TRCACVR1", 957 },
5676    { "TRCACVR10", 958 },
5677    { "TRCACVR11", 959 },
5678    { "TRCACVR12", 960 },
5679    { "TRCACVR13", 961 },
5680    { "TRCACVR14", 962 },
5681    { "TRCACVR15", 963 },
5682    { "TRCACVR2", 964 },
5683    { "TRCACVR3", 965 },
5684    { "TRCACVR4", 966 },
5685    { "TRCACVR5", 967 },
5686    { "TRCACVR6", 968 },
5687    { "TRCACVR7", 969 },
5688    { "TRCACVR8", 970 },
5689    { "TRCACVR9", 971 },
5690    { "TRCAUTHSTATUS", 972 },
5691    { "TRCAUXCTLR", 973 },
5692    { "TRCBBCTLR", 974 },
5693    { "TRCCCCTLR", 975 },
5694    { "TRCCIDCCTLR0", 976 },
5695    { "TRCCIDCCTLR1", 977 },
5696    { "TRCCIDCVR0", 978 },
5697    { "TRCCIDCVR1", 979 },
5698    { "TRCCIDCVR2", 980 },
5699    { "TRCCIDCVR3", 981 },
5700    { "TRCCIDCVR4", 982 },
5701    { "TRCCIDCVR5", 983 },
5702    { "TRCCIDCVR6", 984 },
5703    { "TRCCIDCVR7", 985 },
5704    { "TRCCIDR0", 986 },
5705    { "TRCCIDR1", 987 },
5706    { "TRCCIDR2", 988 },
5707    { "TRCCIDR3", 989 },
5708    { "TRCCLAIMCLR", 990 },
5709    { "TRCCLAIMSET", 991 },
5710    { "TRCCNTCTLR0", 992 },
5711    { "TRCCNTCTLR1", 993 },
5712    { "TRCCNTCTLR2", 994 },
5713    { "TRCCNTCTLR3", 995 },
5714    { "TRCCNTRLDVR0", 996 },
5715    { "TRCCNTRLDVR1", 997 },
5716    { "TRCCNTRLDVR2", 998 },
5717    { "TRCCNTRLDVR3", 999 },
5718    { "TRCCNTVR0", 1000 },
5719    { "TRCCNTVR1", 1001 },
5720    { "TRCCNTVR2", 1002 },
5721    { "TRCCNTVR3", 1003 },
5722    { "TRCCONFIGR", 1004 },
5723    { "TRCDEVAFF0", 1005 },
5724    { "TRCDEVAFF1", 1006 },
5725    { "TRCDEVARCH", 1007 },
5726    { "TRCDEVID", 1008 },
5727    { "TRCDEVTYPE", 1009 },
5728    { "TRCDVCMR0", 1010 },
5729    { "TRCDVCMR1", 1011 },
5730    { "TRCDVCMR2", 1012 },
5731    { "TRCDVCMR3", 1013 },
5732    { "TRCDVCMR4", 1014 },
5733    { "TRCDVCMR5", 1015 },
5734    { "TRCDVCMR6", 1016 },
5735    { "TRCDVCMR7", 1017 },
5736    { "TRCDVCVR0", 1018 },
5737    { "TRCDVCVR1", 1019 },
5738    { "TRCDVCVR2", 1020 },
5739    { "TRCDVCVR3", 1021 },
5740    { "TRCDVCVR4", 1022 },
5741    { "TRCDVCVR5", 1023 },
5742    { "TRCDVCVR6", 1024 },
5743    { "TRCDVCVR7", 1025 },
5744    { "TRCEVENTCTL0R", 1026 },
5745    { "TRCEVENTCTL1R", 1027 },
5746    { "TRCEXTINSELR", 1028 },
5747    { "TRCEXTINSELR0", 1029 },
5748    { "TRCEXTINSELR1", 1030 },
5749    { "TRCEXTINSELR2", 1031 },
5750    { "TRCEXTINSELR3", 1032 },
5751    { "TRCIDR0", 1033 },
5752    { "TRCIDR1", 1034 },
5753    { "TRCIDR10", 1035 },
5754    { "TRCIDR11", 1036 },
5755    { "TRCIDR12", 1037 },
5756    { "TRCIDR13", 1038 },
5757    { "TRCIDR2", 1039 },
5758    { "TRCIDR3", 1040 },
5759    { "TRCIDR4", 1041 },
5760    { "TRCIDR5", 1042 },
5761    { "TRCIDR6", 1043 },
5762    { "TRCIDR7", 1044 },
5763    { "TRCIDR8", 1045 },
5764    { "TRCIDR9", 1046 },
5765    { "TRCIMSPEC0", 1047 },
5766    { "TRCIMSPEC1", 1048 },
5767    { "TRCIMSPEC2", 1049 },
5768    { "TRCIMSPEC3", 1050 },
5769    { "TRCIMSPEC4", 1051 },
5770    { "TRCIMSPEC5", 1052 },
5771    { "TRCIMSPEC6", 1053 },
5772    { "TRCIMSPEC7", 1054 },
5773    { "TRCITCTRL", 1055 },
5774    { "TRCITECR_EL1", 1056 },
5775    { "TRCITECR_EL12", 1057 },
5776    { "TRCITECR_EL2", 1058 },
5777    { "TRCITEEDCR", 1059 },
5778    { "TRCLAR", 1060 },
5779    { "TRCLSR", 1061 },
5780    { "TRCOSLAR", 1062 },
5781    { "TRCOSLSR", 1063 },
5782    { "TRCPDCR", 1064 },
5783    { "TRCPDSR", 1065 },
5784    { "TRCPIDR0", 1066 },
5785    { "TRCPIDR1", 1067 },
5786    { "TRCPIDR2", 1068 },
5787    { "TRCPIDR3", 1069 },
5788    { "TRCPIDR4", 1070 },
5789    { "TRCPIDR5", 1071 },
5790    { "TRCPIDR6", 1072 },
5791    { "TRCPIDR7", 1073 },
5792    { "TRCPRGCTLR", 1074 },
5793    { "TRCPROCSELR", 1075 },
5794    { "TRCQCTLR", 1076 },
5795    { "TRCRSCTLR10", 1077 },
5796    { "TRCRSCTLR11", 1078 },
5797    { "TRCRSCTLR12", 1079 },
5798    { "TRCRSCTLR13", 1080 },
5799    { "TRCRSCTLR14", 1081 },
5800    { "TRCRSCTLR15", 1082 },
5801    { "TRCRSCTLR16", 1083 },
5802    { "TRCRSCTLR17", 1084 },
5803    { "TRCRSCTLR18", 1085 },
5804    { "TRCRSCTLR19", 1086 },
5805    { "TRCRSCTLR2", 1087 },
5806    { "TRCRSCTLR20", 1088 },
5807    { "TRCRSCTLR21", 1089 },
5808    { "TRCRSCTLR22", 1090 },
5809    { "TRCRSCTLR23", 1091 },
5810    { "TRCRSCTLR24", 1092 },
5811    { "TRCRSCTLR25", 1093 },
5812    { "TRCRSCTLR26", 1094 },
5813    { "TRCRSCTLR27", 1095 },
5814    { "TRCRSCTLR28", 1096 },
5815    { "TRCRSCTLR29", 1097 },
5816    { "TRCRSCTLR3", 1098 },
5817    { "TRCRSCTLR30", 1099 },
5818    { "TRCRSCTLR31", 1100 },
5819    { "TRCRSCTLR4", 1101 },
5820    { "TRCRSCTLR5", 1102 },
5821    { "TRCRSCTLR6", 1103 },
5822    { "TRCRSCTLR7", 1104 },
5823    { "TRCRSCTLR8", 1105 },
5824    { "TRCRSCTLR9", 1106 },
5825    { "TRCRSR", 1107 },
5826    { "TRCSEQEVR0", 1108 },
5827    { "TRCSEQEVR1", 1109 },
5828    { "TRCSEQEVR2", 1110 },
5829    { "TRCSEQRSTEVR", 1111 },
5830    { "TRCSEQSTR", 1112 },
5831    { "TRCSSCCR0", 1113 },
5832    { "TRCSSCCR1", 1114 },
5833    { "TRCSSCCR2", 1115 },
5834    { "TRCSSCCR3", 1116 },
5835    { "TRCSSCCR4", 1117 },
5836    { "TRCSSCCR5", 1118 },
5837    { "TRCSSCCR6", 1119 },
5838    { "TRCSSCCR7", 1120 },
5839    { "TRCSSCSR0", 1121 },
5840    { "TRCSSCSR1", 1122 },
5841    { "TRCSSCSR2", 1123 },
5842    { "TRCSSCSR3", 1124 },
5843    { "TRCSSCSR4", 1125 },
5844    { "TRCSSCSR5", 1126 },
5845    { "TRCSSCSR6", 1127 },
5846    { "TRCSSCSR7", 1128 },
5847    { "TRCSSPCICR0", 1129 },
5848    { "TRCSSPCICR1", 1130 },
5849    { "TRCSSPCICR2", 1131 },
5850    { "TRCSSPCICR3", 1132 },
5851    { "TRCSSPCICR4", 1133 },
5852    { "TRCSSPCICR5", 1134 },
5853    { "TRCSSPCICR6", 1135 },
5854    { "TRCSSPCICR7", 1136 },
5855    { "TRCSTALLCTLR", 1137 },
5856    { "TRCSTATR", 1138 },
5857    { "TRCSYNCPR", 1139 },
5858    { "TRCTRACEIDR", 1140 },
5859    { "TRCTSCTLR", 1141 },
5860    { "TRCVDARCCTLR", 1142 },
5861    { "TRCVDCTLR", 1143 },
5862    { "TRCVDSACCTLR", 1144 },
5863    { "TRCVICTLR", 1145 },
5864    { "TRCVIIECTLR", 1146 },
5865    { "TRCVIPCSSCTLR", 1147 },
5866    { "TRCVISSCTLR", 1148 },
5867    { "TRCVMIDCCTLR0", 1149 },
5868    { "TRCVMIDCCTLR1", 1150 },
5869    { "TRCVMIDCVR0", 1151 },
5870    { "TRCVMIDCVR1", 1152 },
5871    { "TRCVMIDCVR2", 1153 },
5872    { "TRCVMIDCVR3", 1154 },
5873    { "TRCVMIDCVR4", 1155 },
5874    { "TRCVMIDCVR5", 1156 },
5875    { "TRCVMIDCVR6", 1157 },
5876    { "TRCVMIDCVR7", 1158 },
5877    { "TRFCR_EL1", 1159 },
5878    { "TRFCR_EL12", 1160 },
5879    { "TRFCR_EL2", 1161 },
5880    { "TTBR0_EL1", 1162 },
5881    { "TTBR0_EL12", 1163 },
5882    { "TTBR0_EL2", 1164 },
5883    { "TTBR0_EL3", 1165 },
5884    { "TTBR1_EL1", 1166 },
5885    { "TTBR1_EL12", 1167 },
5886    { "TTBR1_EL2", 1168 },
5887    { "UAO", 1169 },
5888    { "VBAR_EL1", 1170 },
5889    { "VBAR_EL12", 1171 },
5890    { "VBAR_EL2", 1172 },
5891    { "VBAR_EL3", 1173 },
5892    { "VDISR_EL2", 1174 },
5893    { "VMECID_A_EL2", 1175 },
5894    { "VMECID_P_EL2", 1176 },
5895    { "VMPIDR_EL2", 1177 },
5896    { "VNCR_EL2", 1178 },
5897    { "VPIDR_EL2", 1179 },
5898    { "VSCTLR_EL2", 1180 },
5899    { "VSESR_EL2", 1181 },
5900    { "VSTCR_EL2", 1182 },
5901    { "VSTTBR_EL2", 1183 },
5902    { "VTCR_EL2", 1184 },
5903    { "VTTBR_EL2", 1185 },
5904    { "ZCR_EL1", 1186 },
5905    { "ZCR_EL12", 1187 },
5906    { "ZCR_EL2", 1188 },
5907    { "ZCR_EL3", 1189 },
5908  };
5909
5910  struct KeyType {
5911    std::string Name;
5912  };
5913  KeyType Key = {Name.upper()};
5914  auto Table = ArrayRef(Index);
5915  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
5916    [](const IndexType &LHS, const KeyType &RHS) {
5917      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
5918      if (CmpName < 0) return true;
5919      if (CmpName > 0) return false;
5920      return false;
5921    });
5922
5923  if (Idx == Table.end() ||
5924      Key.Name != Idx->Name)
5925    return nullptr;
5926  return &SysRegsList[Idx->_index];
5927}
5928
5929const SysReg *lookupSysRegByEncoding(uint16_t Encoding) {
5930  struct IndexType {
5931    uint16_t Encoding;
5932    unsigned _index;
5933  };
5934  static const struct IndexType Index[] = {
5935    { 0x8002, 552 },
5936    { 0x8004, 291 },
5937    { 0x8005, 275 },
5938    { 0x8006, 330 },
5939    { 0x8007, 314 },
5940    { 0x800C, 298 },
5941    { 0x800D, 282 },
5942    { 0x800E, 337 },
5943    { 0x800F, 321 },
5944    { 0x8010, 512 },
5945    { 0x8012, 517 },
5946    { 0x8014, 299 },
5947    { 0x8015, 283 },
5948    { 0x8016, 338 },
5949    { 0x8017, 322 },
5950    { 0x801A, 553 },
5951    { 0x801C, 300 },
5952    { 0x801D, 284 },
5953    { 0x801E, 339 },
5954    { 0x801F, 323 },
5955    { 0x8022, 518 },
5956    { 0x8024, 301 },
5957    { 0x8025, 285 },
5958    { 0x8026, 340 },
5959    { 0x8027, 324 },
5960    { 0x802C, 302 },
5961    { 0x802D, 286 },
5962    { 0x802E, 341 },
5963    { 0x802F, 325 },
5964    { 0x8032, 554 },
5965    { 0x8034, 303 },
5966    { 0x8035, 287 },
5967    { 0x8036, 342 },
5968    { 0x8037, 326 },
5969    { 0x803C, 304 },
5970    { 0x803D, 288 },
5971    { 0x803E, 343 },
5972    { 0x803F, 327 },
5973    { 0x8044, 305 },
5974    { 0x8045, 289 },
5975    { 0x8046, 344 },
5976    { 0x8047, 328 },
5977    { 0x804C, 306 },
5978    { 0x804D, 290 },
5979    { 0x804E, 345 },
5980    { 0x804F, 329 },
5981    { 0x8054, 292 },
5982    { 0x8055, 276 },
5983    { 0x8056, 331 },
5984    { 0x8057, 315 },
5985    { 0x805C, 293 },
5986    { 0x805D, 277 },
5987    { 0x805E, 332 },
5988    { 0x805F, 316 },
5989    { 0x8064, 294 },
5990    { 0x8065, 278 },
5991    { 0x8066, 333 },
5992    { 0x8067, 317 },
5993    { 0x806C, 295 },
5994    { 0x806D, 279 },
5995    { 0x806E, 334 },
5996    { 0x806F, 318 },
5997    { 0x8074, 296 },
5998    { 0x8075, 280 },
5999    { 0x8076, 335 },
6000    { 0x8077, 319 },
6001    { 0x807C, 297 },
6002    { 0x807D, 281 },
6003    { 0x807E, 336 },
6004    { 0x807F, 320 },
6005    { 0x8080, 516 },
6006    { 0x8084, 555 },
6007    { 0x808C, 556 },
6008    { 0x809C, 551 },
6009    { 0x80A4, 312 },
6010    { 0x83C6, 308 },
6011    { 0x83CE, 307 },
6012    { 0x83F6, 274 },
6013    { 0x84E8, 819 },
6014    { 0x84E9, 820 },
6015    { 0x84EB, 814 },
6016    { 0x84EC, 890 },
6017    { 0x84ED, 825 },
6018    { 0x84EE, 824 },
6019    { 0x84EF, 818 },
6020    { 0x84F1, 892 },
6021    { 0x84F2, 891 },
6022    { 0x8740, 614 },
6023    { 0x8741, 625 },
6024    { 0x8742, 636 },
6025    { 0x8743, 638 },
6026    { 0x8744, 639 },
6027    { 0x8745, 640 },
6028    { 0x8746, 641 },
6029    { 0x8747, 642 },
6030    { 0x8748, 643 },
6031    { 0x8749, 644 },
6032    { 0x874A, 615 },
6033    { 0x874B, 616 },
6034    { 0x874C, 617 },
6035    { 0x874D, 618 },
6036    { 0x874E, 619 },
6037    { 0x874F, 620 },
6038    { 0x8750, 621 },
6039    { 0x8751, 622 },
6040    { 0x8752, 623 },
6041    { 0x8753, 624 },
6042    { 0x8754, 626 },
6043    { 0x8755, 627 },
6044    { 0x8756, 628 },
6045    { 0x8757, 629 },
6046    { 0x8758, 630 },
6047    { 0x8759, 631 },
6048    { 0x875A, 632 },
6049    { 0x875B, 633 },
6050    { 0x875C, 634 },
6051    { 0x875D, 635 },
6052    { 0x875E, 637 },
6053    { 0x875F, 576 },
6054    { 0x8760, 679 },
6055    { 0x8801, 1140 },
6056    { 0x8802, 1145 },
6057    { 0x8804, 1108 },
6058    { 0x8805, 996 },
6059    { 0x8806, 1045 },
6060    { 0x8807, 1047 },
6061    { 0x8808, 1074 },
6062    { 0x8809, 1076 },
6063    { 0x880A, 1146 },
6064    { 0x880C, 1109 },
6065    { 0x880D, 997 },
6066    { 0x880E, 1046 },
6067    { 0x880F, 1048 },
6068    { 0x8810, 1075 },
6069    { 0x8811, 1059 },
6070    { 0x8812, 1148 },
6071    { 0x8814, 1110 },
6072    { 0x8815, 998 },
6073    { 0x8816, 1035 },
6074    { 0x8817, 1049 },
6075    { 0x8818, 1138 },
6076    { 0x881A, 1147 },
6077    { 0x881D, 999 },
6078    { 0x881E, 1036 },
6079    { 0x881F, 1050 },
6080    { 0x8820, 1004 },
6081    { 0x8825, 992 },
6082    { 0x8826, 1037 },
6083    { 0x8827, 1051 },
6084    { 0x882D, 993 },
6085    { 0x882E, 1038 },
6086    { 0x882F, 1052 },
6087    { 0x8830, 973 },
6088    { 0x8834, 1111 },
6089    { 0x8835, 994 },
6090    { 0x8837, 1053 },
6091    { 0x883C, 1112 },
6092    { 0x883D, 995 },
6093    { 0x883F, 1054 },
6094    { 0x8840, 1026 },
6095    { 0x8842, 1143 },
6096    { 0x8844, 1028 },
6097    { 0x8844, 1029 },
6098    { 0x8845, 1000 },
6099    { 0x8847, 1033 },
6100    { 0x8848, 1027 },
6101    { 0x884A, 1144 },
6102    { 0x884C, 1030 },
6103    { 0x884D, 1001 },
6104    { 0x884F, 1034 },
6105    { 0x8850, 1107 },
6106    { 0x8852, 1142 },
6107    { 0x8854, 1031 },
6108    { 0x8855, 1002 },
6109    { 0x8857, 1039 },
6110    { 0x8858, 1137 },
6111    { 0x885C, 1032 },
6112    { 0x885D, 1003 },
6113    { 0x885F, 1040 },
6114    { 0x8860, 1141 },
6115    { 0x8867, 1041 },
6116    { 0x8868, 1139 },
6117    { 0x886F, 1042 },
6118    { 0x8870, 975 },
6119    { 0x8877, 1043 },
6120    { 0x8878, 974 },
6121    { 0x887F, 1044 },
6122    { 0x8881, 1083 },
6123    { 0x8882, 1113 },
6124    { 0x8883, 1129 },
6125    { 0x8884, 1062 },
6126    { 0x8889, 1084 },
6127    { 0x888A, 1114 },
6128    { 0x888B, 1130 },
6129    { 0x888C, 1063 },
6130    { 0x8890, 1087 },
6131    { 0x8891, 1085 },
6132    { 0x8892, 1115 },
6133    { 0x8893, 1131 },
6134    { 0x8898, 1098 },
6135    { 0x8899, 1086 },
6136    { 0x889A, 1116 },
6137    { 0x889B, 1132 },
6138    { 0x88A0, 1101 },
6139    { 0x88A1, 1088 },
6140    { 0x88A2, 1117 },
6141    { 0x88A3, 1133 },
6142    { 0x88A4, 1064 },
6143    { 0x88A8, 1102 },
6144    { 0x88A9, 1089 },
6145    { 0x88AA, 1118 },
6146    { 0x88AB, 1134 },
6147    { 0x88AC, 1065 },
6148    { 0x88B0, 1103 },
6149    { 0x88B1, 1090 },
6150    { 0x88B2, 1119 },
6151    { 0x88B3, 1135 },
6152    { 0x88B8, 1104 },
6153    { 0x88B9, 1091 },
6154    { 0x88BA, 1120 },
6155    { 0x88BB, 1136 },
6156    { 0x88C0, 1105 },
6157    { 0x88C1, 1092 },
6158    { 0x88C2, 1121 },
6159    { 0x88C8, 1106 },
6160    { 0x88C9, 1093 },
6161    { 0x88CA, 1122 },
6162    { 0x88D0, 1077 },
6163    { 0x88D1, 1094 },
6164    { 0x88D2, 1123 },
6165    { 0x88D8, 1078 },
6166    { 0x88D9, 1095 },
6167    { 0x88DA, 1124 },
6168    { 0x88E0, 1079 },
6169    { 0x88E1, 1096 },
6170    { 0x88E2, 1125 },
6171    { 0x88E8, 1080 },
6172    { 0x88E9, 1097 },
6173    { 0x88EA, 1126 },
6174    { 0x88F0, 1081 },
6175    { 0x88F1, 1099 },
6176    { 0x88F2, 1127 },
6177    { 0x88F8, 1082 },
6178    { 0x88F9, 1100 },
6179    { 0x88FA, 1128 },
6180    { 0x8900, 956 },
6181    { 0x8901, 970 },
6182    { 0x8902, 940 },
6183    { 0x8903, 954 },
6184    { 0x8904, 1018 },
6185    { 0x8905, 1022 },
6186    { 0x8906, 1010 },
6187    { 0x8907, 1014 },
6188    { 0x8910, 957 },
6189    { 0x8911, 971 },
6190    { 0x8912, 941 },
6191    { 0x8913, 955 },
6192    { 0x8920, 964 },
6193    { 0x8921, 958 },
6194    { 0x8922, 948 },
6195    { 0x8923, 942 },
6196    { 0x8924, 1019 },
6197    { 0x8925, 1023 },
6198    { 0x8926, 1011 },
6199    { 0x8927, 1015 },
6200    { 0x8930, 965 },
6201    { 0x8931, 959 },
6202    { 0x8932, 949 },
6203    { 0x8933, 943 },
6204    { 0x8940, 966 },
6205    { 0x8941, 960 },
6206    { 0x8942, 950 },
6207    { 0x8943, 944 },
6208    { 0x8944, 1020 },
6209    { 0x8945, 1024 },
6210    { 0x8946, 1012 },
6211    { 0x8947, 1016 },
6212    { 0x8950, 967 },
6213    { 0x8951, 961 },
6214    { 0x8952, 951 },
6215    { 0x8953, 945 },
6216    { 0x8960, 968 },
6217    { 0x8961, 962 },
6218    { 0x8962, 952 },
6219    { 0x8963, 946 },
6220    { 0x8964, 1021 },
6221    { 0x8965, 1025 },
6222    { 0x8966, 1013 },
6223    { 0x8967, 1017 },
6224    { 0x8970, 969 },
6225    { 0x8971, 963 },
6226    { 0x8972, 953 },
6227    { 0x8973, 947 },
6228    { 0x8980, 978 },
6229    { 0x8981, 1151 },
6230    { 0x8982, 976 },
6231    { 0x898A, 977 },
6232    { 0x8990, 979 },
6233    { 0x8991, 1152 },
6234    { 0x8992, 1149 },
6235    { 0x899A, 1150 },
6236    { 0x89A0, 980 },
6237    { 0x89A1, 1153 },
6238    { 0x89B0, 981 },
6239    { 0x89B1, 1154 },
6240    { 0x89C0, 982 },
6241    { 0x89C1, 1155 },
6242    { 0x89D0, 983 },
6243    { 0x89D1, 1156 },
6244    { 0x89E0, 984 },
6245    { 0x89E1, 1157 },
6246    { 0x89F0, 985 },
6247    { 0x89F1, 1158 },
6248    { 0x8B84, 1055 },
6249    { 0x8B97, 1008 },
6250    { 0x8B9F, 1009 },
6251    { 0x8BA7, 1070 },
6252    { 0x8BAF, 1071 },
6253    { 0x8BB7, 1072 },
6254    { 0x8BBF, 1073 },
6255    { 0x8BC6, 991 },
6256    { 0x8BC7, 1066 },
6257    { 0x8BCE, 990 },
6258    { 0x8BCF, 1067 },
6259    { 0x8BD6, 1005 },
6260    { 0x8BD7, 1068 },
6261    { 0x8BDE, 1006 },
6262    { 0x8BDF, 1069 },
6263    { 0x8BE6, 1060 },
6264    { 0x8BE7, 986 },
6265    { 0x8BEE, 1061 },
6266    { 0x8BEF, 987 },
6267    { 0x8BF6, 972 },
6268    { 0x8BF7, 988 },
6269    { 0x8BFE, 1007 },
6270    { 0x8BFF, 989 },
6271    { 0x8C00, 118 },
6272    { 0x8C01, 151 },
6273    { 0x8C02, 184 },
6274    { 0x8C04, 125 },
6275    { 0x8C05, 158 },
6276    { 0x8C06, 191 },
6277    { 0x8C08, 129 },
6278    { 0x8C09, 162 },
6279    { 0x8C0A, 195 },
6280    { 0x8C0C, 126 },
6281    { 0x8C0D, 159 },
6282    { 0x8C0E, 192 },
6283    { 0x8C10, 140 },
6284    { 0x8C11, 173 },
6285    { 0x8C12, 206 },
6286    { 0x8C14, 127 },
6287    { 0x8C15, 160 },
6288    { 0x8C16, 193 },
6289    { 0x8C18, 143 },
6290    { 0x8C19, 176 },
6291    { 0x8C1A, 209 },
6292    { 0x8C1C, 128 },
6293    { 0x8C1D, 161 },
6294    { 0x8C1E, 194 },
6295    { 0x8C20, 144 },
6296    { 0x8C21, 177 },
6297    { 0x8C22, 210 },
6298    { 0x8C24, 130 },
6299    { 0x8C25, 163 },
6300    { 0x8C26, 196 },
6301    { 0x8C28, 145 },
6302    { 0x8C29, 178 },
6303    { 0x8C2A, 211 },
6304    { 0x8C2C, 131 },
6305    { 0x8C2D, 164 },
6306    { 0x8C2E, 197 },
6307    { 0x8C30, 146 },
6308    { 0x8C31, 179 },
6309    { 0x8C32, 212 },
6310    { 0x8C34, 132 },
6311    { 0x8C35, 165 },
6312    { 0x8C36, 198 },
6313    { 0x8C38, 147 },
6314    { 0x8C39, 180 },
6315    { 0x8C3A, 213 },
6316    { 0x8C3C, 133 },
6317    { 0x8C3D, 166 },
6318    { 0x8C3E, 199 },
6319    { 0x8C40, 148 },
6320    { 0x8C41, 181 },
6321    { 0x8C42, 214 },
6322    { 0x8C44, 134 },
6323    { 0x8C45, 167 },
6324    { 0x8C46, 200 },
6325    { 0x8C48, 149 },
6326    { 0x8C49, 182 },
6327    { 0x8C4A, 215 },
6328    { 0x8C4C, 135 },
6329    { 0x8C4D, 168 },
6330    { 0x8C4E, 201 },
6331    { 0x8C50, 119 },
6332    { 0x8C51, 152 },
6333    { 0x8C52, 185 },
6334    { 0x8C54, 136 },
6335    { 0x8C55, 169 },
6336    { 0x8C56, 202 },
6337    { 0x8C58, 120 },
6338    { 0x8C59, 153 },
6339    { 0x8C5A, 186 },
6340    { 0x8C5C, 137 },
6341    { 0x8C5D, 170 },
6342    { 0x8C5E, 203 },
6343    { 0x8C60, 121 },
6344    { 0x8C61, 154 },
6345    { 0x8C62, 187 },
6346    { 0x8C64, 138 },
6347    { 0x8C65, 171 },
6348    { 0x8C66, 204 },
6349    { 0x8C68, 122 },
6350    { 0x8C69, 155 },
6351    { 0x8C6A, 188 },
6352    { 0x8C6C, 139 },
6353    { 0x8C6D, 172 },
6354    { 0x8C6E, 205 },
6355    { 0x8C70, 123 },
6356    { 0x8C71, 156 },
6357    { 0x8C72, 189 },
6358    { 0x8C74, 141 },
6359    { 0x8C75, 174 },
6360    { 0x8C76, 207 },
6361    { 0x8C78, 124 },
6362    { 0x8C79, 157 },
6363    { 0x8C7A, 190 },
6364    { 0x8C7C, 142 },
6365    { 0x8C7D, 175 },
6366    { 0x8C7E, 208 },
6367    { 0x8C80, 113 },
6368    { 0x8C81, 116 },
6369    { 0x8C82, 217 },
6370    { 0x8C88, 150 },
6371    { 0x8C89, 183 },
6372    { 0x8C8A, 216 },
6373    { 0x8C90, 117 },
6374    { 0x9000, 920 },
6375    { 0x9080, 921 },
6376    { 0x9808, 513 },
6377    { 0x9820, 311 },
6378    { 0x9828, 309 },
6379    { 0x9828, 310 },
6380    { 0x9CE0, 823 },
6381    { 0x9CE1, 822 },
6382    { 0x9CE2, 821 },
6383    { 0x9CE3, 893 },
6384    { 0x9CE5, 897 },
6385    { 0x9CF3, 894 },
6386    { 0x9F00, 826 },
6387    { 0x9F01, 833 },
6388    { 0x9F02, 834 },
6389    { 0x9F03, 835 },
6390    { 0x9F04, 836 },
6391    { 0x9F05, 837 },
6392    { 0x9F06, 838 },
6393    { 0x9F07, 839 },
6394    { 0x9F08, 840 },
6395    { 0x9F09, 841 },
6396    { 0x9F0A, 827 },
6397    { 0x9F0B, 828 },
6398    { 0x9F0C, 829 },
6399    { 0x9F0D, 830 },
6400    { 0x9F0E, 831 },
6401    { 0x9F0F, 832 },
6402    { 0x9F10, 874 },
6403    { 0x9F11, 881 },
6404    { 0x9F12, 882 },
6405    { 0x9F13, 883 },
6406    { 0x9F14, 884 },
6407    { 0x9F15, 885 },
6408    { 0x9F16, 886 },
6409    { 0x9F17, 887 },
6410    { 0x9F18, 888 },
6411    { 0x9F19, 889 },
6412    { 0x9F1A, 875 },
6413    { 0x9F1B, 876 },
6414    { 0x9F1C, 877 },
6415    { 0x9F1D, 878 },
6416    { 0x9F1E, 879 },
6417    { 0x9F1F, 880 },
6418    { 0x9F20, 858 },
6419    { 0x9F21, 865 },
6420    { 0x9F22, 866 },
6421    { 0x9F23, 867 },
6422    { 0x9F24, 868 },
6423    { 0x9F25, 869 },
6424    { 0x9F26, 870 },
6425    { 0x9F27, 871 },
6426    { 0x9F28, 872 },
6427    { 0x9F29, 873 },
6428    { 0x9F2A, 859 },
6429    { 0x9F2B, 860 },
6430    { 0x9F2C, 861 },
6431    { 0x9F2D, 862 },
6432    { 0x9F2E, 863 },
6433    { 0x9F2F, 864 },
6434    { 0x9F30, 842 },
6435    { 0x9F31, 849 },
6436    { 0x9F32, 850 },
6437    { 0x9F33, 851 },
6438    { 0x9F34, 852 },
6439    { 0x9F35, 853 },
6440    { 0x9F36, 854 },
6441    { 0x9F37, 855 },
6442    { 0x9F38, 856 },
6443    { 0x9F39, 857 },
6444    { 0x9F3A, 843 },
6445    { 0x9F3B, 844 },
6446    { 0x9F3C, 845 },
6447    { 0x9F3D, 846 },
6448    { 0x9F3E, 847 },
6449    { 0x9F3F, 848 },
6450    { 0xA038, 313 },
6451    { 0xA480, 115 },
6452    { 0xA4EB, 816 },
6453    { 0xAC80, 114 },
6454    { 0xACEB, 815 },
6455    { 0xB4EB, 817 },
6456    { 0xB4F7, 895 },
6457    { 0xBCF7, 896 },
6458    { 0xC000, 526 },
6459    { 0xC004, 545 },
6460    { 0xC005, 544 },
6461    { 0xC006, 779 },
6462    { 0xC008, 494 },
6463    { 0xC009, 495 },
6464    { 0xC00A, 479 },
6465    { 0xC00B, 478 },
6466    { 0xC00C, 488 },
6467    { 0xC00D, 489 },
6468    { 0xC00E, 490 },
6469    { 0xC00F, 491 },
6470    { 0xC010, 481 },
6471    { 0xC011, 482 },
6472    { 0xC012, 483 },
6473    { 0xC013, 484 },
6474    { 0xC014, 485 },
6475    { 0xC015, 486 },
6476    { 0xC016, 492 },
6477    { 0xC017, 487 },
6478    { 0xC018, 547 },
6479    { 0xC019, 548 },
6480    { 0xC01A, 549 },
6481    { 0xC01C, 496 },
6482    { 0xC01D, 480 },
6483    { 0xC01E, 493 },
6484    { 0xC020, 473 },
6485    { 0xC021, 474 },
6486    { 0xC022, 475 },
6487    { 0xC024, 477 },
6488    { 0xC025, 476 },
6489    { 0xC028, 463 },
6490    { 0xC029, 464 },
6491    { 0xC02C, 461 },
6492    { 0xC02D, 462 },
6493    { 0xC030, 465 },
6494    { 0xC031, 466 },
6495    { 0xC032, 467 },
6496    { 0xC038, 468 },
6497    { 0xC039, 469 },
6498    { 0xC03A, 470 },
6499    { 0xC03B, 471 },
6500    { 0xC03C, 472 },
6501    { 0xC080, 796 },
6502    { 0xC081, 1 },
6503    { 0xC082, 264 },
6504    { 0xC083, 792 },
6505    { 0xC085, 780 },
6506    { 0xC086, 380 },
6507    { 0xC090, 1186 },
6508    { 0xC091, 1159 },
6509    { 0xC093, 1056 },
6510    { 0xC094, 813 },
6511    { 0xC096, 807 },
6512    { 0xC100, 1162 },
6513    { 0xC101, 1166 },
6514    { 0xC102, 916 },
6515    { 0xC103, 913 },
6516    { 0xC108, 110 },
6517    { 0xC109, 109 },
6518    { 0xC10A, 112 },
6519    { 0xC10B, 111 },
6520    { 0xC110, 104 },
6521    { 0xC111, 103 },
6522    { 0xC112, 106 },
6523    { 0xC113, 105 },
6524    { 0xC118, 108 },
6525    { 0xC119, 107 },
6526    { 0xC200, 900 },
6527    { 0xC201, 351 },
6528    { 0xC208, 907 },
6529    { 0xC210, 898 },
6530    { 0xC212, 271 },
6531    { 0xC213, 557 },
6532    { 0xC214, 1169 },
6533    { 0xC218, 13 },
6534    { 0xC219, 569 },
6535    { 0xC230, 424 },
6536    { 0xC288, 4 },
6537    { 0xC289, 8 },
6538    { 0xC290, 369 },
6539    { 0xC298, 355 },
6540    { 0xC299, 356 },
6541    { 0xC29A, 360 },
6542    { 0xC2A0, 359 },
6543    { 0xC2A1, 358 },
6544    { 0xC2A2, 368 },
6545    { 0xC2A3, 357 },
6546    { 0xC2A4, 367 },
6547    { 0xC2A5, 366 },
6548    { 0xC2A6, 365 },
6549    { 0xC2A8, 361 },
6550    { 0xC2A9, 362 },
6551    { 0xC2AA, 363 },
6552    { 0xC2AB, 364 },
6553    { 0xC2B0, 923 },
6554    { 0xC2B1, 922 },
6555    { 0xC300, 373 },
6556    { 0xC305, 559 },
6557    { 0xC309, 741 },
6558    { 0xC311, 775 },
6559    { 0xC340, 739 },
6560    { 0xC341, 773 },
6561    { 0xC344, 721 },
6562    { 0xC345, 755 },
6563    { 0xC348, 723 },
6564    { 0xC349, 757 },
6565    { 0xC34C, 725 },
6566    { 0xC34D, 759 },
6567    { 0xC350, 727 },
6568    { 0xC351, 761 },
6569    { 0xC354, 729 },
6570    { 0xC355, 763 },
6571    { 0xC358, 731 },
6572    { 0xC359, 765 },
6573    { 0xC35C, 733 },
6574    { 0xC35D, 767 },
6575    { 0xC360, 735 },
6576    { 0xC361, 769 },
6577    { 0xC364, 737 },
6578    { 0xC365, 771 },
6579    { 0xC368, 709 },
6580    { 0xC369, 743 },
6581    { 0xC36C, 711 },
6582    { 0xC36D, 745 },
6583    { 0xC370, 713 },
6584    { 0xC371, 747 },
6585    { 0xC374, 715 },
6586    { 0xC375, 749 },
6587    { 0xC378, 717 },
6588    { 0xC379, 751 },
6589    { 0xC37C, 719 },
6590    { 0xC37D, 753 },
6591    { 0xC3A0, 558 },
6592    { 0xC4C8, 685 },
6593    { 0xC4C9, 696 },
6594    { 0xC4CA, 692 },
6595    { 0xC4CB, 694 },
6596    { 0xC4CC, 691 },
6597    { 0xC4CD, 690 },
6598    { 0xC4CE, 695 },
6599    { 0xC4CF, 693 },
6600    { 0xC4D0, 571 },
6601    { 0xC4D1, 572 },
6602    { 0xC4D3, 573 },
6603    { 0xC4D4, 688 },
6604    { 0xC4D7, 570 },
6605    { 0xC4D8, 935 },
6606    { 0xC4D9, 937 },
6607    { 0xC4DA, 933 },
6608    { 0xC4DB, 938 },
6609    { 0xC4DC, 936 },
6610    { 0xC4DE, 939 },
6611    { 0xC4DF, 934 },
6612    { 0xC4EB, 697 },
6613    { 0xC4F1, 681 },
6614    { 0xC4F2, 680 },
6615    { 0xC4F4, 699 },
6616    { 0xC4F5, 582 },
6617    { 0xC4F6, 682 },
6618    { 0xC4F7, 676 },
6619    { 0xC510, 508 },
6620    { 0xC511, 504 },
6621    { 0xC512, 562 },
6622    { 0xC513, 565 },
6623    { 0xC514, 705 },
6624    { 0xC515, 790 },
6625    { 0xC518, 18 },
6626    { 0xC519, 14 },
6627    { 0xC520, 503 },
6628    { 0xC521, 500 },
6629    { 0xC522, 502 },
6630    { 0xC523, 499 },
6631    { 0xC524, 533 },
6632    { 0xC527, 501 },
6633    { 0xC528, 528 },
6634    { 0xC529, 527 },
6635    { 0xC52B, 534 },
6636    { 0xC600, 1170 },
6637    { 0xC601, 786 },
6638    { 0xC602, 781 },
6639    { 0xC608, 498 },
6640    { 0xC609, 347 },
6641    { 0xC640, 418 },
6642    { 0xC641, 414 },
6643    { 0xC642, 416 },
6644    { 0xC643, 409 },
6645    { 0xC644, 400 },
6646    { 0xC645, 401 },
6647    { 0xC646, 402 },
6648    { 0xC647, 403 },
6649    { 0xC648, 404 },
6650    { 0xC649, 405 },
6651    { 0xC64A, 406 },
6652    { 0xC64B, 407 },
6653    { 0xC64D, 423 },
6654    { 0xC659, 413 },
6655    { 0xC65B, 425 },
6656    { 0xC65D, 427 },
6657    { 0xC65E, 408 },
6658    { 0xC65F, 426 },
6659    { 0xC660, 419 },
6660    { 0xC661, 415 },
6661    { 0xC662, 417 },
6662    { 0xC663, 410 },
6663    { 0xC664, 411 },
6664    { 0xC665, 428 },
6665    { 0xC666, 420 },
6666    { 0xC667, 421 },
6667    { 0xC681, 261 },
6668    { 0xC683, 778 },
6669    { 0xC684, 930 },
6670    { 0xC685, 0 },
6671    { 0xC686, 777 },
6672    { 0xC687, 801 },
6673    { 0xC708, 236 },
6674    { 0xC800, 219 },
6675    { 0xC801, 220 },
6676    { 0xC802, 218 },
6677    { 0xC804, 381 },
6678    { 0xC806, 811 },
6679    { 0xC807, 12 },
6680    { 0xD000, 269 },
6681    { 0xD801, 270 },
6682    { 0xD807, 346 },
6683    { 0xD920, 784 },
6684    { 0xD921, 785 },
6685    { 0xDA10, 550 },
6686    { 0xDA11, 273 },
6687    { 0xDA12, 911 },
6688    { 0xDA15, 348 },
6689    { 0xDA16, 910 },
6690    { 0xDA17, 912 },
6691    { 0xDA20, 377 },
6692    { 0xDA21, 379 },
6693    { 0xDA28, 350 },
6694    { 0xDA29, 349 },
6695    { 0xDCA0, 678 },
6696    { 0xDCB0, 677 },
6697    { 0xDCE0, 581 },
6698    { 0xDCE1, 580 },
6699    { 0xDCE2, 579 },
6700    { 0xDCE3, 683 },
6701    { 0xDCE4, 698 },
6702    { 0xDCE5, 689 },
6703    { 0xDCE6, 577 },
6704    { 0xDCE7, 578 },
6705    { 0xDCE8, 575 },
6706    { 0xDCE9, 702 },
6707    { 0xDCEA, 701 },
6708    { 0xDCEC, 703 },
6709    { 0xDCF0, 700 },
6710    { 0xDCF3, 684 },
6711    { 0xDD14, 704 },
6712    { 0xDE82, 929 },
6713    { 0xDE83, 928 },
6714    { 0xDE85, 927 },
6715    { 0xDE87, 800 },
6716    { 0xDE90, 29 },
6717    { 0xDE91, 22 },
6718    { 0xDE92, 24 },
6719    { 0xDE93, 102 },
6720    { 0xDE94, 25 },
6721    { 0xDE95, 27 },
6722    { 0xDE96, 23 },
6723    { 0xDE98, 26 },
6724    { 0xDE99, 28 },
6725    { 0xDEA0, 30 },
6726    { 0xDEA1, 31 },
6727    { 0xDEA2, 32 },
6728    { 0xDEA3, 33 },
6729    { 0xDEB0, 82 },
6730    { 0xDEB1, 83 },
6731    { 0xDEB2, 84 },
6732    { 0xDEB3, 85 },
6733    { 0xDEE0, 34 },
6734    { 0xDEE1, 41 },
6735    { 0xDEE2, 42 },
6736    { 0xDEE3, 43 },
6737    { 0xDEE4, 44 },
6738    { 0xDEE5, 45 },
6739    { 0xDEE6, 46 },
6740    { 0xDEE7, 47 },
6741    { 0xDEE8, 48 },
6742    { 0xDEE9, 49 },
6743    { 0xDEEA, 35 },
6744    { 0xDEEB, 36 },
6745    { 0xDEEC, 37 },
6746    { 0xDEED, 38 },
6747    { 0xDEEE, 39 },
6748    { 0xDEEF, 40 },
6749    { 0xDEF0, 86 },
6750    { 0xDEF1, 93 },
6751    { 0xDEF2, 94 },
6752    { 0xDEF3, 95 },
6753    { 0xDEF4, 96 },
6754    { 0xDEF5, 97 },
6755    { 0xDEF6, 98 },
6756    { 0xDEF7, 99 },
6757    { 0xDEF8, 100 },
6758    { 0xDEF9, 101 },
6759    { 0xDEFA, 87 },
6760    { 0xDEFB, 88 },
6761    { 0xDEFC, 89 },
6762    { 0xDEFD, 90 },
6763    { 0xDEFE, 91 },
6764    { 0xDEFF, 92 },
6765    { 0xDF00, 221 },
6766    { 0xDF01, 239 },
6767    { 0xDF02, 252 },
6768    { 0xDF05, 238 },
6769    { 0xDF06, 251 },
6770    { 0xDF10, 248 },
6771    { 0xDF11, 244 },
6772    { 0xDF12, 246 },
6773    { 0xDF18, 259 },
6774    { 0xDF19, 255 },
6775    { 0xDF1A, 257 },
6776    { 0xDF40, 583 },
6777    { 0xDF41, 594 },
6778    { 0xDF42, 605 },
6779    { 0xDF43, 607 },
6780    { 0xDF44, 608 },
6781    { 0xDF45, 609 },
6782    { 0xDF46, 610 },
6783    { 0xDF47, 611 },
6784    { 0xDF48, 612 },
6785    { 0xDF49, 613 },
6786    { 0xDF4A, 584 },
6787    { 0xDF4B, 585 },
6788    { 0xDF4C, 586 },
6789    { 0xDF4D, 587 },
6790    { 0xDF4E, 588 },
6791    { 0xDF4F, 589 },
6792    { 0xDF50, 590 },
6793    { 0xDF51, 591 },
6794    { 0xDF52, 592 },
6795    { 0xDF53, 593 },
6796    { 0xDF54, 595 },
6797    { 0xDF55, 596 },
6798    { 0xDF56, 597 },
6799    { 0xDF57, 598 },
6800    { 0xDF58, 599 },
6801    { 0xDF59, 600 },
6802    { 0xDF5A, 601 },
6803    { 0xDF5B, 602 },
6804    { 0xDF5C, 603 },
6805    { 0xDF5D, 604 },
6806    { 0xDF5E, 606 },
6807    { 0xDF60, 645 },
6808    { 0xDF61, 656 },
6809    { 0xDF62, 667 },
6810    { 0xDF63, 669 },
6811    { 0xDF64, 670 },
6812    { 0xDF65, 671 },
6813    { 0xDF66, 672 },
6814    { 0xDF67, 673 },
6815    { 0xDF68, 674 },
6816    { 0xDF69, 675 },
6817    { 0xDF6A, 646 },
6818    { 0xDF6B, 647 },
6819    { 0xDF6C, 648 },
6820    { 0xDF6D, 649 },
6821    { 0xDF6E, 650 },
6822    { 0xDF6F, 651 },
6823    { 0xDF70, 652 },
6824    { 0xDF71, 653 },
6825    { 0xDF72, 654 },
6826    { 0xDF73, 655 },
6827    { 0xDF74, 657 },
6828    { 0xDF75, 658 },
6829    { 0xDF76, 659 },
6830    { 0xDF77, 660 },
6831    { 0xDF78, 661 },
6832    { 0xDF79, 662 },
6833    { 0xDF7A, 663 },
6834    { 0xDF7B, 664 },
6835    { 0xDF7C, 665 },
6836    { 0xDF7D, 666 },
6837    { 0xDF7E, 668 },
6838    { 0xDF7F, 574 },
6839    { 0xE000, 1179 },
6840    { 0xE004, 546 },
6841    { 0xE005, 1177 },
6842    { 0xE080, 798 },
6843    { 0xE081, 2 },
6844    { 0xE083, 794 },
6845    { 0xE088, 387 },
6846    { 0xE089, 514 },
6847    { 0xE08A, 267 },
6848    { 0xE08B, 399 },
6849    { 0xE08C, 395 },
6850    { 0xE08D, 397 },
6851    { 0xE08E, 393 },
6852    { 0xE08F, 384 },
6853    { 0xE090, 1188 },
6854    { 0xE091, 1161 },
6855    { 0xE092, 386 },
6856    { 0xE093, 1058 },
6857    { 0xE095, 812 },
6858    { 0xE096, 809 },
6859    { 0xE099, 805 },
6860    { 0xE100, 1164 },
6861    { 0xE100, 1180 },
6862    { 0xE101, 1168 },
6863    { 0xE102, 918 },
6864    { 0xE103, 915 },
6865    { 0xE108, 1185 },
6866    { 0xE10A, 1184 },
6867    { 0xE110, 1178 },
6868    { 0xE130, 1183 },
6869    { 0xE132, 1182 },
6870    { 0xE180, 272 },
6871    { 0xE188, 388 },
6872    { 0xE189, 390 },
6873    { 0xE18A, 394 },
6874    { 0xE18B, 396 },
6875    { 0xE18C, 389 },
6876    { 0xE18D, 391 },
6877    { 0xE18E, 385 },
6878    { 0xE18F, 392 },
6879    { 0xE200, 902 },
6880    { 0xE201, 353 },
6881    { 0xE208, 908 },
6882    { 0xE218, 905 },
6883    { 0xE219, 899 },
6884    { 0xE21A, 906 },
6885    { 0xE21B, 904 },
6886    { 0xE281, 497 },
6887    { 0xE288, 6 },
6888    { 0xE289, 10 },
6889    { 0xE290, 371 },
6890    { 0xE293, 1181 },
6891    { 0xE298, 378 },
6892    { 0xE2B0, 925 },
6893    { 0xE300, 375 },
6894    { 0xE304, 398 },
6895    { 0xE305, 561 },
6896    { 0xE309, 742 },
6897    { 0xE311, 776 },
6898    { 0xE340, 740 },
6899    { 0xE341, 774 },
6900    { 0xE344, 722 },
6901    { 0xE345, 756 },
6902    { 0xE348, 724 },
6903    { 0xE349, 758 },
6904    { 0xE34C, 726 },
6905    { 0xE34D, 760 },
6906    { 0xE350, 728 },
6907    { 0xE351, 762 },
6908    { 0xE354, 730 },
6909    { 0xE355, 764 },
6910    { 0xE358, 732 },
6911    { 0xE359, 766 },
6912    { 0xE35C, 734 },
6913    { 0xE35D, 768 },
6914    { 0xE360, 736 },
6915    { 0xE361, 770 },
6916    { 0xE364, 738 },
6917    { 0xE365, 772 },
6918    { 0xE368, 710 },
6919    { 0xE369, 744 },
6920    { 0xE36C, 712 },
6921    { 0xE36D, 746 },
6922    { 0xE370, 714 },
6923    { 0xE371, 748 },
6924    { 0xE374, 716 },
6925    { 0xE375, 750 },
6926    { 0xE378, 718 },
6927    { 0xE379, 752 },
6928    { 0xE37C, 720 },
6929    { 0xE37D, 754 },
6930    { 0xE4C8, 687 },
6931    { 0xE509, 506 },
6932    { 0xE510, 510 },
6933    { 0xE512, 564 },
6934    { 0xE513, 567 },
6935    { 0xE514, 707 },
6936    { 0xE515, 789 },
6937    { 0xE518, 20 },
6938    { 0xE519, 16 },
6939    { 0xE520, 532 },
6940    { 0xE521, 543 },
6941    { 0xE528, 530 },
6942    { 0xE530, 535 },
6943    { 0xE531, 536 },
6944    { 0xE532, 537 },
6945    { 0xE533, 538 },
6946    { 0xE534, 539 },
6947    { 0xE535, 540 },
6948    { 0xE536, 541 },
6949    { 0xE537, 542 },
6950    { 0xE540, 522 },
6951    { 0xE541, 520 },
6952    { 0xE542, 523 },
6953    { 0xE543, 521 },
6954    { 0xE547, 519 },
6955    { 0xE548, 1176 },
6956    { 0xE549, 1175 },
6957    { 0xE600, 1172 },
6958    { 0xE601, 787 },
6959    { 0xE602, 782 },
6960    { 0xE609, 1174 },
6961    { 0xE640, 431 },
6962    { 0xE641, 432 },
6963    { 0xE642, 433 },
6964    { 0xE643, 434 },
6965    { 0xE648, 435 },
6966    { 0xE649, 436 },
6967    { 0xE64A, 437 },
6968    { 0xE64B, 438 },
6969    { 0xE64D, 429 },
6970    { 0xE658, 441 },
6971    { 0xE659, 460 },
6972    { 0xE65A, 458 },
6973    { 0xE65B, 439 },
6974    { 0xE65D, 440 },
6975    { 0xE65F, 459 },
6976    { 0xE660, 442 },
6977    { 0xE661, 449 },
6978    { 0xE662, 450 },
6979    { 0xE663, 451 },
6980    { 0xE664, 452 },
6981    { 0xE665, 453 },
6982    { 0xE666, 454 },
6983    { 0xE667, 455 },
6984    { 0xE668, 456 },
6985    { 0xE669, 457 },
6986    { 0xE66A, 443 },
6987    { 0xE66B, 444 },
6988    { 0xE66C, 445 },
6989    { 0xE66D, 446 },
6990    { 0xE66E, 447 },
6991    { 0xE66F, 448 },
6992    { 0xE681, 263 },
6993    { 0xE682, 931 },
6994    { 0xE687, 803 },
6995    { 0xE6C0, 50 },
6996    { 0xE6C1, 57 },
6997    { 0xE6C2, 58 },
6998    { 0xE6C3, 59 },
6999    { 0xE6C4, 60 },
7000    { 0xE6C5, 61 },
7001    { 0xE6C6, 62 },
7002    { 0xE6C7, 63 },
7003    { 0xE6C8, 64 },
7004    { 0xE6C9, 65 },
7005    { 0xE6CA, 51 },
7006    { 0xE6CB, 52 },
7007    { 0xE6CC, 53 },
7008    { 0xE6CD, 54 },
7009    { 0xE6CE, 55 },
7010    { 0xE6CF, 56 },
7011    { 0xE6D0, 66 },
7012    { 0xE6D1, 73 },
7013    { 0xE6D2, 74 },
7014    { 0xE6D3, 75 },
7015    { 0xE6D4, 76 },
7016    { 0xE6D5, 77 },
7017    { 0xE6D6, 78 },
7018    { 0xE6D7, 79 },
7019    { 0xE6D8, 80 },
7020    { 0xE6D9, 81 },
7021    { 0xE6DA, 67 },
7022    { 0xE6DB, 68 },
7023    { 0xE6DC, 69 },
7024    { 0xE6DD, 70 },
7025    { 0xE6DE, 71 },
7026    { 0xE6DF, 72 },
7027    { 0xE703, 254 },
7028    { 0xE704, 250 },
7029    { 0xE705, 235 },
7030    { 0xE706, 240 },
7031    { 0xE707, 253 },
7032    { 0xE708, 222 },
7033    { 0xE710, 228 },
7034    { 0xE711, 226 },
7035    { 0xE712, 227 },
7036    { 0xE718, 234 },
7037    { 0xE719, 232 },
7038    { 0xE71A, 233 },
7039    { 0xE720, 231 },
7040    { 0xE721, 229 },
7041    { 0xE722, 230 },
7042    { 0xE728, 225 },
7043    { 0xE729, 223 },
7044    { 0xE72A, 224 },
7045    { 0xE880, 797 },
7046    { 0xE882, 265 },
7047    { 0xE883, 793 },
7048    { 0xE890, 1187 },
7049    { 0xE891, 1160 },
7050    { 0xE893, 1057 },
7051    { 0xE896, 808 },
7052    { 0xE900, 1163 },
7053    { 0xE901, 1167 },
7054    { 0xE902, 917 },
7055    { 0xE903, 914 },
7056    { 0xEA00, 901 },
7057    { 0xEA01, 352 },
7058    { 0xEA88, 5 },
7059    { 0xEA89, 9 },
7060    { 0xEA90, 370 },
7061    { 0xEAB0, 924 },
7062    { 0xEB00, 374 },
7063    { 0xEB05, 560 },
7064    { 0xECC8, 686 },
7065    { 0xED10, 509 },
7066    { 0xED11, 505 },
7067    { 0xED12, 563 },
7068    { 0xED13, 566 },
7069    { 0xED14, 706 },
7070    { 0xED18, 19 },
7071    { 0xED19, 15 },
7072    { 0xED28, 529 },
7073    { 0xEE00, 1171 },
7074    { 0xEE81, 262 },
7075    { 0xEE87, 802 },
7076    { 0xEF08, 237 },
7077    { 0xEF10, 249 },
7078    { 0xEF11, 245 },
7079    { 0xEF12, 247 },
7080    { 0xEF18, 260 },
7081    { 0xEF19, 256 },
7082    { 0xEF1A, 258 },
7083    { 0xF080, 799 },
7084    { 0xF081, 3 },
7085    { 0xF083, 795 },
7086    { 0xF088, 791 },
7087    { 0xF089, 806 },
7088    { 0xF08A, 268 },
7089    { 0xF090, 1189 },
7090    { 0xF096, 810 },
7091    { 0xF099, 515 },
7092    { 0xF100, 1165 },
7093    { 0xF102, 919 },
7094    { 0xF10C, 383 },
7095    { 0xF10E, 382 },
7096    { 0xF200, 903 },
7097    { 0xF201, 354 },
7098    { 0xF208, 909 },
7099    { 0xF288, 7 },
7100    { 0xF289, 11 },
7101    { 0xF290, 372 },
7102    { 0xF2B0, 926 },
7103    { 0xF300, 376 },
7104    { 0xF305, 525 },
7105    { 0xF509, 507 },
7106    { 0xF510, 511 },
7107    { 0xF513, 568 },
7108    { 0xF514, 708 },
7109    { 0xF518, 21 },
7110    { 0xF519, 17 },
7111    { 0xF528, 531 },
7112    { 0xF551, 524 },
7113    { 0xF600, 1173 },
7114    { 0xF601, 788 },
7115    { 0xF602, 783 },
7116    { 0xF664, 412 },
7117    { 0xF665, 430 },
7118    { 0xF667, 422 },
7119    { 0xF682, 932 },
7120    { 0xF687, 804 },
7121    { 0xFF10, 243 },
7122    { 0xFF11, 241 },
7123    { 0xFF12, 242 },
7124    { 0xFF90, 266 },
7125  };
7126
7127  struct KeyType {
7128    uint16_t Encoding;
7129  };
7130  KeyType Key = {Encoding};
7131  auto Table = ArrayRef(Index);
7132  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
7133    [](const IndexType &LHS, const KeyType &RHS) {
7134      if (LHS.Encoding < RHS.Encoding)
7135        return true;
7136      if (LHS.Encoding > RHS.Encoding)
7137        return false;
7138      return false;
7139    });
7140
7141  if (Idx == Table.end() ||
7142      Key.Encoding != Idx->Encoding)
7143    return nullptr;
7144  return &SysRegsList[Idx->_index];
7145}
7146#endif
7147
7148#ifdef GET_TSB_DECL
7149const TSB *lookupTSBByName(StringRef Name);
7150const TSB *lookupTSBByEncoding(uint8_t Encoding);
7151#endif
7152
7153#ifdef GET_TSB_IMPL
7154constexpr TSB TSBsList[] = {
7155  { "csync", 0x0,  {AArch64::FeatureTRACEV8_4}  }, // 0
7156 };
7157
7158const TSB *lookupTSBByName(StringRef Name) {
7159  struct IndexType {
7160    const char * Name;
7161    unsigned _index;
7162  };
7163  static const struct IndexType Index[] = {
7164    { "CSYNC", 0 },
7165  };
7166
7167  struct KeyType {
7168    std::string Name;
7169  };
7170  KeyType Key = {Name.upper()};
7171  auto Table = ArrayRef(Index);
7172  auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
7173    [](const IndexType &LHS, const KeyType &RHS) {
7174      int CmpName = StringRef(LHS.Name).compare(RHS.Name);
7175      if (CmpName < 0) return true;
7176      if (CmpName > 0) return false;
7177      return false;
7178    });
7179
7180  if (Idx == Table.end() ||
7181      Key.Name != Idx->Name)
7182    return nullptr;
7183  return &TSBsList[Idx->_index];
7184}
7185
7186const TSB *lookupTSBByEncoding(uint8_t Encoding) {
7187  struct IndexType {
7188    uint8_t Encoding;
7189    unsigned _index;
7190  };
7191  static const struct IndexType Index[] = {
7192    { 0x0, 0 },
7193  };
7194
7195  auto Table = ArrayRef(Index);
7196  size_t Idx = Encoding;
7197  return Idx >= Table.size() ? nullptr : &TSBsList[Table[Idx]._index];
7198}
7199#endif
7200
7201#undef GET_AT_DECL
7202#undef GET_AT_IMPL
7203#undef GET_BTI_DECL
7204#undef GET_BTI_IMPL
7205#undef GET_DBNXS_DECL
7206#undef GET_DBNXS_IMPL
7207#undef GET_DB_DECL
7208#undef GET_DB_IMPL
7209#undef GET_DC_DECL
7210#undef GET_DC_IMPL
7211#undef GET_EXACTFPIMM_DECL
7212#undef GET_EXACTFPIMM_IMPL
7213#undef GET_IC_DECL
7214#undef GET_IC_IMPL
7215#undef GET_ISB_DECL
7216#undef GET_ISB_IMPL
7217#undef GET_PRFM_DECL
7218#undef GET_PRFM_IMPL
7219#undef GET_PSB_DECL
7220#undef GET_PSB_IMPL
7221#undef GET_PSTATEIMM0_15_DECL
7222#undef GET_PSTATEIMM0_15_IMPL
7223#undef GET_PSTATEIMM0_1_DECL
7224#undef GET_PSTATEIMM0_1_IMPL
7225#undef GET_RPRFM_DECL
7226#undef GET_RPRFM_IMPL
7227#undef GET_SVCR_DECL
7228#undef GET_SVCR_IMPL
7229#undef GET_SVEPREDPAT_DECL
7230#undef GET_SVEPREDPAT_IMPL
7231#undef GET_SVEPRFM_DECL
7232#undef GET_SVEPRFM_IMPL
7233#undef GET_SVEVECLENSPECIFIER_DECL
7234#undef GET_SVEVECLENSPECIFIER_IMPL
7235#undef GET_SYSREG_DECL
7236#undef GET_SYSREG_IMPL
7237#undef GET_TLBITable_DECL
7238#undef GET_TLBITable_IMPL
7239#undef GET_TSB_DECL
7240#undef GET_TSB_IMPL
7241