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