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