#ifdef GET_AT_DECL
enum ATValues {
S1E1R = 960,
S1E2R = 9152,
S1E3R = 13248,
S1E1W = 961,
S1E2W = 9153,
S1E3W = 13249,
S1E0R = 962,
S1E0W = 963,
S12E1R = 9156,
S12E1W = 9157,
S12E0R = 9158,
S12E0W = 9159,
S1E1RP = 968,
S1E1WP = 969,
S1E1A = 970,
S1E2A = 9162,
S1E3A = 13258,
};
#endif
#ifdef GET_BTI_DECL
enum BTIValues {
c = 2,
j = 4,
jc = 6,
};
#endif
#ifdef GET_DB_DECL
enum DBValues {
oshld = 1,
oshst = 2,
osh = 3,
nshld = 5,
nshst = 6,
nsh = 7,
ishld = 9,
ishst = 10,
ish = 11,
ld = 13,
st = 14,
sy = 15,
};
#endif
#ifdef GET_DBNXS_DECL
enum DBnXSValues {
oshnxs = 3,
nshnxs = 7,
ishnxs = 11,
synxs = 15,
};
#endif
#ifdef GET_DC_DECL
enum DCValues {
ZVA = 7073,
IVAC = 945,
ISW = 946,
CVAC = 7121,
CSW = 978,
CVAU = 7129,
CIVAC = 7153,
CISW = 1010,
CVAP = 7137,
CVADP = 7145,
IGVAC = 947,
IGSW = 948,
CGSW = 980,
CIGSW = 1012,
CGVAC = 7123,
CGVAP = 7139,
CGVADP = 7147,
CIGVAC = 7155,
GVA = 7075,
IGDVAC = 949,
IGDSW = 950,
CGDSW = 982,
CIGDSW = 1014,
CGDVAC = 7125,
CGDVAP = 7141,
CGDVADP = 7149,
CIGDVAC = 7157,
GZVA = 7076,
CIPAE = 9200,
CIGDPAE = 9207,
};
#endif
#ifdef GET_EXACTFPIMM_DECL
enum ExactFPImmValues {
zero = 0,
half = 1,
one = 2,
two = 3,
};
#endif
#ifdef GET_IC_DECL
enum ICValues {
IALLUIS = 904,
IALLU = 936,
IVAU = 7081,
};
#endif
#ifdef GET_ISB_DECL
enum ISBValues {
sy = 15,
};
#endif
#ifdef GET_PRFM_DECL
enum PRFMValues {
pldl1keep = 0,
pldl1strm = 1,
pldl2keep = 2,
pldl2strm = 3,
pldl3keep = 4,
pldl3strm = 5,
pldslckeep = 6,
pldslcstrm = 7,
plil1keep = 8,
plil1strm = 9,
plil2keep = 10,
plil2strm = 11,
plil3keep = 12,
plil3strm = 13,
plislckeep = 14,
plislcstrm = 15,
pstl1keep = 16,
pstl1strm = 17,
pstl2keep = 18,
pstl2strm = 19,
pstl3keep = 20,
pstl3strm = 21,
pstslckeep = 22,
pstslcstrm = 23,
};
#endif
#ifdef GET_PSB_DECL
enum PSBValues {
csync = 17,
};
#endif
#ifdef GET_PSTATEIMM0_1_DECL
enum PStateImm0_1Values {
ALLINT = 8,
PM = 72,
};
#endif
#ifdef GET_PSTATEIMM0_15_DECL
enum PStateImm0_15Values {
SPSel = 5,
DAIFSet = 30,
DAIFClr = 31,
PAN = 4,
UAO = 3,
DIT = 26,
SSBS = 25,
TCO = 28,
};
#endif
#ifdef GET_RPRFM_DECL
enum RPRFMValues {
pldkeep = 0,
pstkeep = 1,
pldstrm = 4,
pststrm = 5,
};
#endif
#ifdef GET_SVCR_DECL
enum SVCRValues { … };
#endif
#ifdef GET_SVEPREDPAT_DECL
enum SVEPREDPATValues {
pow2 = 0,
vl1 = 1,
vl2 = 2,
vl3 = 3,
vl4 = 4,
vl5 = 5,
vl6 = 6,
vl7 = 7,
vl8 = 8,
vl16 = 9,
vl32 = 10,
vl64 = 11,
vl128 = 12,
vl256 = 13,
mul4 = 29,
mul3 = 30,
all = 31,
};
#endif
#ifdef GET_SVEPRFM_DECL
enum SVEPRFMValues {
pldl1keep = 0,
pldl1strm = 1,
pldl2keep = 2,
pldl2strm = 3,
pldl3keep = 4,
pldl3strm = 5,
pstl1keep = 8,
pstl1strm = 9,
pstl2keep = 10,
pstl2strm = 11,
pstl3keep = 12,
pstl3strm = 13,
};
#endif
#ifdef GET_SVEVECLENSPECIFIER_DECL
enum SVEVECLENSPECIFIERValues {
vlx2 = 0,
vlx4 = 1,
};
#endif
#ifdef GET_SYSREG_DECL
enum SysRegValues {
MDCCSR_EL0 = 38920,
DBGDTRRX_EL0 = 38952,
MDRAR_EL1 = 32896,
OSLSR_EL1 = 32908,
DBGAUTHSTATUS_EL1 = 33782,
PMCEID0_EL0 = 56550,
PMCEID1_EL0 = 56551,
PMMIR_EL1 = 50422,
MIDR_EL1 = 49152,
CCSIDR_EL1 = 51200,
CCSIDR2_EL1 = 51202,
CLIDR_EL1 = 51201,
CTR_EL0 = 55297,
MPIDR_EL1 = 49157,
REVIDR_EL1 = 49158,
AIDR_EL1 = 51207,
DCZID_EL0 = 55303,
ID_PFR0_EL1 = 49160,
ID_PFR1_EL1 = 49161,
ID_PFR2_EL1 = 49180,
ID_DFR0_EL1 = 49162,
ID_DFR1_EL1 = 49181,
ID_AFR0_EL1 = 49163,
ID_MMFR0_EL1 = 49164,
ID_MMFR1_EL1 = 49165,
ID_MMFR2_EL1 = 49166,
ID_MMFR3_EL1 = 49167,
ID_ISAR0_EL1 = 49168,
ID_ISAR1_EL1 = 49169,
ID_ISAR2_EL1 = 49170,
ID_ISAR3_EL1 = 49171,
ID_ISAR4_EL1 = 49172,
ID_ISAR5_EL1 = 49173,
ID_ISAR6_EL1 = 49175,
ID_AA64PFR0_EL1 = 49184,
ID_AA64PFR1_EL1 = 49185,
ID_AA64PFR2_EL1 = 49186,
ID_AA64DFR0_EL1 = 49192,
ID_AA64DFR1_EL1 = 49193,
ID_AA64DFR2_EL1 = 49194,
ID_AA64AFR0_EL1 = 49196,
ID_AA64AFR1_EL1 = 49197,
ID_AA64ISAR0_EL1 = 49200,
ID_AA64ISAR1_EL1 = 49201,
ID_AA64ISAR2_EL1 = 49202,
ID_AA64ISAR3_EL1 = 49203,
ID_AA64MMFR0_EL1 = 49208,
ID_AA64MMFR1_EL1 = 49209,
ID_AA64MMFR2_EL1 = 49210,
ID_AA64MMFR3_EL1 = 49211,
ID_AA64MMFR4_EL1 = 49212,
MVFR0_EL1 = 49176,
MVFR1_EL1 = 49177,
MVFR2_EL1 = 49178,
RVBAR_EL1 = 50689,
RVBAR_EL2 = 58881,
RVBAR_EL3 = 62977,
ISR_EL1 = 50696,
CNTPCT_EL0 = 57089,
CNTVCT_EL0 = 57090,
ID_MMFR4_EL1 = 49174,
ID_MMFR5_EL1 = 49182,
TRCSTATR = 34840,
TRCIDR8 = 34822,
TRCIDR9 = 34830,
TRCIDR10 = 34838,
TRCIDR11 = 34846,
TRCIDR12 = 34854,
TRCIDR13 = 34862,
TRCIDR0 = 34887,
TRCIDR1 = 34895,
TRCIDR2 = 34903,
TRCIDR3 = 34911,
TRCIDR4 = 34919,
TRCIDR5 = 34927,
TRCIDR6 = 34935,
TRCIDR7 = 34943,
TRCOSLSR = 34956,
TRCPDSR = 34988,
TRCDEVAFF0 = 35798,
TRCDEVAFF1 = 35806,
TRCLSR = 35822,
TRCAUTHSTATUS = 35830,
TRCDEVARCH = 35838,
TRCDEVID = 35735,
TRCDEVTYPE = 35743,
TRCPIDR4 = 35751,
TRCPIDR5 = 35759,
TRCPIDR6 = 35767,
TRCPIDR7 = 35775,
TRCPIDR0 = 35783,
TRCPIDR1 = 35791,
TRCPIDR2 = 35799,
TRCPIDR3 = 35807,
TRCCIDR0 = 35815,
TRCCIDR1 = 35823,
TRCCIDR2 = 35831,
TRCCIDR3 = 35839,
ICC_IAR1_EL1 = 50784,
ICC_IAR0_EL1 = 50752,
ICC_HPPIR1_EL1 = 50786,
ICC_HPPIR0_EL1 = 50754,
ICC_RPR_EL1 = 50779,
ICH_VTR_EL2 = 58969,
ICH_EISR_EL2 = 58971,
ICH_ELRSR_EL2 = 58973,
ID_AA64ZFR0_EL1 = 49188,
LORID_EL1 = 50471,
ERRIDR_EL1 = 49816,
ERXFR_EL1 = 49824,
RNDR = 55584,
RNDRRS = 55585,
SCXTNUM_EL0 = 56967,
SCXTNUM_EL1 = 50823,
SCXTNUM_EL2 = 59015,
SCXTNUM_EL3 = 63111,
SCXTNUM_EL12 = 61063,
GPCCR_EL3 = 61710,
GPTBR_EL3 = 61708,
MFAR_EL3 = 62213,
MECIDR_EL2 = 58695,
MECID_P0_EL2 = 58688,
MECID_A0_EL2 = 58689,
MECID_P1_EL2 = 58690,
MECID_A1_EL2 = 58691,
VMECID_P_EL2 = 58696,
VMECID_A_EL2 = 58697,
MECID_RL_A_EL3 = 62801,
ID_AA64SMFR0_EL1 = 49189,
DBGDTRTX_EL0 = 38952,
OSLAR_EL1 = 32900,
PMSWINC_EL0 = 56548,
TRCOSLAR = 34948,
TRCLAR = 35814,
ICC_EOIR1_EL1 = 50785,
ICC_EOIR0_EL1 = 50753,
ICC_DIR_EL1 = 50777,
ICC_SGI1R_EL1 = 50781,
ICC_ASGI1R_EL1 = 50782,
ICC_SGI0R_EL1 = 50783,
OSDTRRX_EL1 = 32770,
OSDTRTX_EL1 = 32794,
TEECR32_EL1 = 36864,
MDCCINT_EL1 = 32784,
MDSCR_EL1 = 32786,
DBGDTR_EL0 = 38944,
OSECCR_EL1 = 32818,
DBGVCR32_EL2 = 41016,
DBGBVR0_EL1 = 32772,
DBGBCR0_EL1 = 32773,
DBGWVR0_EL1 = 32774,
DBGWCR0_EL1 = 32775,
DBGBVR1_EL1 = 32780,
DBGBCR1_EL1 = 32781,
DBGWVR1_EL1 = 32782,
DBGWCR1_EL1 = 32783,
DBGBVR2_EL1 = 32788,
DBGBCR2_EL1 = 32789,
DBGWVR2_EL1 = 32790,
DBGWCR2_EL1 = 32791,
DBGBVR3_EL1 = 32796,
DBGBCR3_EL1 = 32797,
DBGWVR3_EL1 = 32798,
DBGWCR3_EL1 = 32799,
DBGBVR4_EL1 = 32804,
DBGBCR4_EL1 = 32805,
DBGWVR4_EL1 = 32806,
DBGWCR4_EL1 = 32807,
DBGBVR5_EL1 = 32812,
DBGBCR5_EL1 = 32813,
DBGWVR5_EL1 = 32814,
DBGWCR5_EL1 = 32815,
DBGBVR6_EL1 = 32820,
DBGBCR6_EL1 = 32821,
DBGWVR6_EL1 = 32822,
DBGWCR6_EL1 = 32823,
DBGBVR7_EL1 = 32828,
DBGBCR7_EL1 = 32829,
DBGWVR7_EL1 = 32830,
DBGWCR7_EL1 = 32831,
DBGBVR8_EL1 = 32836,
DBGBCR8_EL1 = 32837,
DBGWVR8_EL1 = 32838,
DBGWCR8_EL1 = 32839,
DBGBVR9_EL1 = 32844,
DBGBCR9_EL1 = 32845,
DBGWVR9_EL1 = 32846,
DBGWCR9_EL1 = 32847,
DBGBVR10_EL1 = 32852,
DBGBCR10_EL1 = 32853,
DBGWVR10_EL1 = 32854,
DBGWCR10_EL1 = 32855,
DBGBVR11_EL1 = 32860,
DBGBCR11_EL1 = 32861,
DBGWVR11_EL1 = 32862,
DBGWCR11_EL1 = 32863,
DBGBVR12_EL1 = 32868,
DBGBCR12_EL1 = 32869,
DBGWVR12_EL1 = 32870,
DBGWCR12_EL1 = 32871,
DBGBVR13_EL1 = 32876,
DBGBCR13_EL1 = 32877,
DBGWVR13_EL1 = 32878,
DBGWCR13_EL1 = 32879,
DBGBVR14_EL1 = 32884,
DBGBCR14_EL1 = 32885,
DBGWVR14_EL1 = 32886,
DBGWCR14_EL1 = 32887,
DBGBVR15_EL1 = 32892,
DBGBCR15_EL1 = 32893,
DBGWVR15_EL1 = 32894,
DBGWCR15_EL1 = 32895,
TEEHBR32_EL1 = 36992,
OSDLR_EL1 = 32924,
DBGPRCR_EL1 = 32932,
DBGCLAIMSET_EL1 = 33734,
DBGCLAIMCLR_EL1 = 33742,
CSSELR_EL1 = 53248,
VPIDR_EL2 = 57344,
VMPIDR_EL2 = 57349,
CPACR_EL1 = 49282,
SCTLR_EL1 = 49280,
SCTLR_EL2 = 57472,
SCTLR_EL3 = 61568,
ACTLR_EL1 = 49281,
ACTLR_EL12 = 59521,
ACTLR_EL2 = 57473,
ACTLR_EL3 = 61569,
HCR_EL2 = 57480,
HCRX_EL2 = 57490,
SCR_EL3 = 61576,
MDCR_EL2 = 57481,
SDER32_EL3 = 61577,
CPTR_EL2 = 57482,
CPTR_EL3 = 61578,
HSTR_EL2 = 57483,
HACR_EL2 = 57487,
MDCR_EL3 = 61593,
TTBR0_EL1 = 49408,
TTBR0_EL3 = 61696,
TTBR0_EL2 = 57600,
VTTBR_EL2 = 57608,
TTBR1_EL1 = 49409,
TCR_EL1 = 49410,
TCR_EL2 = 57602,
TCR_EL3 = 61698,
VTCR_EL2 = 57610,
DACR32_EL2 = 57728,
SPSR_EL1 = 49664,
SPSR_EL2 = 57856,
SPSR_EL3 = 61952,
ELR_EL1 = 49665,
ELR_EL2 = 57857,
ELR_EL3 = 61953,
SP_EL0 = 49672,
SP_EL1 = 57864,
SP_EL2 = 61960,
SPSel = 49680,
NZCV = 55824,
DAIF = 55825,
CurrentEL = 49682,
SPSR_irq = 57880,
SPSR_abt = 57881,
SPSR_und = 57882,
SPSR_fiq = 57883,
FPCR = 55840,
FPSR = 55841,
DSPSR_EL0 = 55848,
DLR_EL0 = 55849,
IFSR32_EL2 = 57985,
AFSR0_EL1 = 49800,
AFSR0_EL2 = 57992,
AFSR0_EL3 = 62088,
AFSR1_EL1 = 49801,
AFSR1_EL2 = 57993,
AFSR1_EL3 = 62089,
ESR_EL1 = 49808,
ESR_EL2 = 58000,
ESR_EL3 = 62096,
FPEXC32_EL2 = 58008,
FAR_EL1 = 49920,
FAR_EL2 = 58112,
FAR_EL3 = 62208,
HPFAR_EL2 = 58116,
PAR_EL1 = 50080,
PMCR_EL0 = 56544,
PMCNTENSET_EL0 = 56545,
PMCNTENCLR_EL0 = 56546,
PMOVSCLR_EL0 = 56547,
PMSELR_EL0 = 56549,
PMCCNTR_EL0 = 56552,
PMXEVTYPER_EL0 = 56553,
PMXEVCNTR_EL0 = 56554,
PMUSERENR_EL0 = 56560,
PMINTENSET_EL1 = 50417,
PMINTENCLR_EL1 = 50418,
PMOVSSET_EL0 = 56563,
MAIR_EL1 = 50448,
MAIR_EL2 = 58640,
MAIR_EL3 = 62736,
AMAIR_EL1 = 50456,
AMAIR_EL2 = 58648,
AMAIR_EL3 = 62744,
VBAR_EL1 = 50688,
VBAR_EL2 = 58880,
VBAR_EL3 = 62976,
RMR_EL1 = 50690,
RMR_EL2 = 58882,
RMR_EL3 = 62978,
CONTEXTIDR_EL1 = 50817,
TPIDR_EL0 = 56962,
TPIDR_EL2 = 59010,
TPIDR_EL3 = 63106,
TPIDRRO_EL0 = 56963,
TPIDR_EL1 = 50820,
CNTFRQ_EL0 = 57088,
CNTVOFF_EL2 = 59139,
CNTKCTL_EL1 = 50952,
CNTHCTL_EL2 = 59144,
CNTP_TVAL_EL0 = 57104,
CNTHP_TVAL_EL2 = 59152,
CNTPS_TVAL_EL1 = 65296,
CNTP_CTL_EL0 = 57105,
CNTHP_CTL_EL2 = 59153,
CNTPS_CTL_EL1 = 65297,
CNTP_CVAL_EL0 = 57106,
CNTHP_CVAL_EL2 = 59154,
CNTPS_CVAL_EL1 = 65298,
CNTV_TVAL_EL0 = 57112,
CNTV_CTL_EL0 = 57113,
CNTV_CVAL_EL0 = 57114,
PMEVCNTR0_EL0 = 57152,
PMEVCNTR1_EL0 = 57153,
PMEVCNTR2_EL0 = 57154,
PMEVCNTR3_EL0 = 57155,
PMEVCNTR4_EL0 = 57156,
PMEVCNTR5_EL0 = 57157,
PMEVCNTR6_EL0 = 57158,
PMEVCNTR7_EL0 = 57159,
PMEVCNTR8_EL0 = 57160,
PMEVCNTR9_EL0 = 57161,
PMEVCNTR10_EL0 = 57162,
PMEVCNTR11_EL0 = 57163,
PMEVCNTR12_EL0 = 57164,
PMEVCNTR13_EL0 = 57165,
PMEVCNTR14_EL0 = 57166,
PMEVCNTR15_EL0 = 57167,
PMEVCNTR16_EL0 = 57168,
PMEVCNTR17_EL0 = 57169,
PMEVCNTR18_EL0 = 57170,
PMEVCNTR19_EL0 = 57171,
PMEVCNTR20_EL0 = 57172,
PMEVCNTR21_EL0 = 57173,
PMEVCNTR22_EL0 = 57174,
PMEVCNTR23_EL0 = 57175,
PMEVCNTR24_EL0 = 57176,
PMEVCNTR25_EL0 = 57177,
PMEVCNTR26_EL0 = 57178,
PMEVCNTR27_EL0 = 57179,
PMEVCNTR28_EL0 = 57180,
PMEVCNTR29_EL0 = 57181,
PMEVCNTR30_EL0 = 57182,
PMCCFILTR_EL0 = 57215,
PMEVTYPER0_EL0 = 57184,
PMEVTYPER1_EL0 = 57185,
PMEVTYPER2_EL0 = 57186,
PMEVTYPER3_EL0 = 57187,
PMEVTYPER4_EL0 = 57188,
PMEVTYPER5_EL0 = 57189,
PMEVTYPER6_EL0 = 57190,
PMEVTYPER7_EL0 = 57191,
PMEVTYPER8_EL0 = 57192,
PMEVTYPER9_EL0 = 57193,
PMEVTYPER10_EL0 = 57194,
PMEVTYPER11_EL0 = 57195,
PMEVTYPER12_EL0 = 57196,
PMEVTYPER13_EL0 = 57197,
PMEVTYPER14_EL0 = 57198,
PMEVTYPER15_EL0 = 57199,
PMEVTYPER16_EL0 = 57200,
PMEVTYPER17_EL0 = 57201,
PMEVTYPER18_EL0 = 57202,
PMEVTYPER19_EL0 = 57203,
PMEVTYPER20_EL0 = 57204,
PMEVTYPER21_EL0 = 57205,
PMEVTYPER22_EL0 = 57206,
PMEVTYPER23_EL0 = 57207,
PMEVTYPER24_EL0 = 57208,
PMEVTYPER25_EL0 = 57209,
PMEVTYPER26_EL0 = 57210,
PMEVTYPER27_EL0 = 57211,
PMEVTYPER28_EL0 = 57212,
PMEVTYPER29_EL0 = 57213,
PMEVTYPER30_EL0 = 57214,
TRCPRGCTLR = 34824,
TRCPROCSELR = 34832,
TRCCONFIGR = 34848,
TRCAUXCTLR = 34864,
TRCEVENTCTL0R = 34880,
TRCEVENTCTL1R = 34888,
TRCSTALLCTLR = 34904,
TRCTSCTLR = 34912,
TRCSYNCPR = 34920,
TRCCCCTLR = 34928,
TRCBBCTLR = 34936,
TRCTRACEIDR = 34817,
TRCQCTLR = 34825,
TRCVICTLR = 34818,
TRCVIIECTLR = 34826,
TRCVISSCTLR = 34834,
TRCVIPCSSCTLR = 34842,
TRCVDCTLR = 34882,
TRCVDSACCTLR = 34890,
TRCVDARCCTLR = 34898,
TRCSEQEVR0 = 34820,
TRCSEQEVR1 = 34828,
TRCSEQEVR2 = 34836,
TRCSEQRSTEVR = 34868,
TRCSEQSTR = 34876,
TRCEXTINSELR = 34884,
TRCCNTRLDVR0 = 34821,
TRCCNTRLDVR1 = 34829,
TRCCNTRLDVR2 = 34837,
TRCCNTRLDVR3 = 34845,
TRCCNTCTLR0 = 34853,
TRCCNTCTLR1 = 34861,
TRCCNTCTLR2 = 34869,
TRCCNTCTLR3 = 34877,
TRCCNTVR0 = 34885,
TRCCNTVR1 = 34893,
TRCCNTVR2 = 34901,
TRCCNTVR3 = 34909,
TRCIMSPEC0 = 34823,
TRCIMSPEC1 = 34831,
TRCIMSPEC2 = 34839,
TRCIMSPEC3 = 34847,
TRCIMSPEC4 = 34855,
TRCIMSPEC5 = 34863,
TRCIMSPEC6 = 34871,
TRCIMSPEC7 = 34879,
TRCRSCTLR2 = 34960,
TRCRSCTLR3 = 34968,
TRCRSCTLR4 = 34976,
TRCRSCTLR5 = 34984,
TRCRSCTLR6 = 34992,
TRCRSCTLR7 = 35000,
TRCRSCTLR8 = 35008,
TRCRSCTLR9 = 35016,
TRCRSCTLR10 = 35024,
TRCRSCTLR11 = 35032,
TRCRSCTLR12 = 35040,
TRCRSCTLR13 = 35048,
TRCRSCTLR14 = 35056,
TRCRSCTLR15 = 35064,
TRCRSCTLR16 = 34945,
TRCRSCTLR17 = 34953,
TRCRSCTLR18 = 34961,
TRCRSCTLR19 = 34969,
TRCRSCTLR20 = 34977,
TRCRSCTLR21 = 34985,
TRCRSCTLR22 = 34993,
TRCRSCTLR23 = 35001,
TRCRSCTLR24 = 35009,
TRCRSCTLR25 = 35017,
TRCRSCTLR26 = 35025,
TRCRSCTLR27 = 35033,
TRCRSCTLR28 = 35041,
TRCRSCTLR29 = 35049,
TRCRSCTLR30 = 35057,
TRCRSCTLR31 = 35065,
TRCSSCCR0 = 34946,
TRCSSCCR1 = 34954,
TRCSSCCR2 = 34962,
TRCSSCCR3 = 34970,
TRCSSCCR4 = 34978,
TRCSSCCR5 = 34986,
TRCSSCCR6 = 34994,
TRCSSCCR7 = 35002,
TRCSSCSR0 = 35010,
TRCSSCSR1 = 35018,
TRCSSCSR2 = 35026,
TRCSSCSR3 = 35034,
TRCSSCSR4 = 35042,
TRCSSCSR5 = 35050,
TRCSSCSR6 = 35058,
TRCSSCSR7 = 35066,
TRCSSPCICR0 = 34947,
TRCSSPCICR1 = 34955,
TRCSSPCICR2 = 34963,
TRCSSPCICR3 = 34971,
TRCSSPCICR4 = 34979,
TRCSSPCICR5 = 34987,
TRCSSPCICR6 = 34995,
TRCSSPCICR7 = 35003,
TRCPDCR = 34980,
TRCACVR0 = 35072,
TRCACVR1 = 35088,
TRCACVR2 = 35104,
TRCACVR3 = 35120,
TRCACVR4 = 35136,
TRCACVR5 = 35152,
TRCACVR6 = 35168,
TRCACVR7 = 35184,
TRCACVR8 = 35073,
TRCACVR9 = 35089,
TRCACVR10 = 35105,
TRCACVR11 = 35121,
TRCACVR12 = 35137,
TRCACVR13 = 35153,
TRCACVR14 = 35169,
TRCACVR15 = 35185,
TRCACATR0 = 35074,
TRCACATR1 = 35090,
TRCACATR2 = 35106,
TRCACATR3 = 35122,
TRCACATR4 = 35138,
TRCACATR5 = 35154,
TRCACATR6 = 35170,
TRCACATR7 = 35186,
TRCACATR8 = 35075,
TRCACATR9 = 35091,
TRCACATR10 = 35107,
TRCACATR11 = 35123,
TRCACATR12 = 35139,
TRCACATR13 = 35155,
TRCACATR14 = 35171,
TRCACATR15 = 35187,
TRCDVCVR0 = 35076,
TRCDVCVR1 = 35108,
TRCDVCVR2 = 35140,
TRCDVCVR3 = 35172,
TRCDVCVR4 = 35077,
TRCDVCVR5 = 35109,
TRCDVCVR6 = 35141,
TRCDVCVR7 = 35173,
TRCDVCMR0 = 35078,
TRCDVCMR1 = 35110,
TRCDVCMR2 = 35142,
TRCDVCMR3 = 35174,
TRCDVCMR4 = 35079,
TRCDVCMR5 = 35111,
TRCDVCMR6 = 35143,
TRCDVCMR7 = 35175,
TRCCIDCVR0 = 35200,
TRCCIDCVR1 = 35216,
TRCCIDCVR2 = 35232,
TRCCIDCVR3 = 35248,
TRCCIDCVR4 = 35264,
TRCCIDCVR5 = 35280,
TRCCIDCVR6 = 35296,
TRCCIDCVR7 = 35312,
TRCVMIDCVR0 = 35201,
TRCVMIDCVR1 = 35217,
TRCVMIDCVR2 = 35233,
TRCVMIDCVR3 = 35249,
TRCVMIDCVR4 = 35265,
TRCVMIDCVR5 = 35281,
TRCVMIDCVR6 = 35297,
TRCVMIDCVR7 = 35313,
TRCCIDCCTLR0 = 35202,
TRCCIDCCTLR1 = 35210,
TRCVMIDCCTLR0 = 35218,
TRCVMIDCCTLR1 = 35226,
TRCITCTRL = 35716,
TRCCLAIMSET = 35782,
TRCCLAIMCLR = 35790,
ICC_BPR1_EL1 = 50787,
ICC_BPR0_EL1 = 50755,
ICC_PMR_EL1 = 49712,
ICC_CTLR_EL1 = 50788,
ICC_CTLR_EL3 = 63076,
ICC_SRE_EL1 = 50789,
ICC_SRE_EL2 = 58957,
ICC_SRE_EL3 = 63077,
ICC_IGRPEN0_EL1 = 50790,
ICC_IGRPEN1_EL1 = 50791,
ICC_IGRPEN1_EL3 = 63079,
ICC_AP0R0_EL1 = 50756,
ICC_AP0R1_EL1 = 50757,
ICC_AP0R2_EL1 = 50758,
ICC_AP0R3_EL1 = 50759,
ICC_AP1R0_EL1 = 50760,
ICC_AP1R1_EL1 = 50761,
ICC_AP1R2_EL1 = 50762,
ICC_AP1R3_EL1 = 50763,
ICH_AP0R0_EL2 = 58944,
ICH_AP0R1_EL2 = 58945,
ICH_AP0R2_EL2 = 58946,
ICH_AP0R3_EL2 = 58947,
ICH_AP1R0_EL2 = 58952,
ICH_AP1R1_EL2 = 58953,
ICH_AP1R2_EL2 = 58954,
ICH_AP1R3_EL2 = 58955,
ICH_HCR_EL2 = 58968,
ICH_MISR_EL2 = 58970,
ICH_VMCR_EL2 = 58975,
ICH_LR0_EL2 = 58976,
ICH_LR1_EL2 = 58977,
ICH_LR2_EL2 = 58978,
ICH_LR3_EL2 = 58979,
ICH_LR4_EL2 = 58980,
ICH_LR5_EL2 = 58981,
ICH_LR6_EL2 = 58982,
ICH_LR7_EL2 = 58983,
ICH_LR8_EL2 = 58984,
ICH_LR9_EL2 = 58985,
ICH_LR10_EL2 = 58986,
ICH_LR11_EL2 = 58987,
ICH_LR12_EL2 = 58988,
ICH_LR13_EL2 = 58989,
ICH_LR14_EL2 = 58990,
ICH_LR15_EL2 = 58991,
VSCTLR_EL2 = 57600,
MPUIR_EL1 = 49156,
MPUIR_EL2 = 57348,
PRENR_EL1 = 49929,
PRENR_EL2 = 58121,
PRSELR_EL1 = 49937,
PRSELR_EL2 = 58129,
PRBAR_EL1 = 49984,
PRBAR_EL2 = 58176,
PRLAR_EL1 = 49985,
PRLAR_EL2 = 58177,
PRBAR1_EL1 = 49988,
PRLAR1_EL1 = 49989,
PRBAR1_EL2 = 58180,
PRLAR1_EL2 = 58181,
PRBAR2_EL1 = 49992,
PRLAR2_EL1 = 49993,
PRBAR2_EL2 = 58184,
PRLAR2_EL2 = 58185,
PRBAR3_EL1 = 49996,
PRLAR3_EL1 = 49997,
PRBAR3_EL2 = 58188,
PRLAR3_EL2 = 58189,
PRBAR4_EL1 = 50000,
PRLAR4_EL1 = 50001,
PRBAR4_EL2 = 58192,
PRLAR4_EL2 = 58193,
PRBAR5_EL1 = 50004,
PRLAR5_EL1 = 50005,
PRBAR5_EL2 = 58196,
PRLAR5_EL2 = 58197,
PRBAR6_EL1 = 50008,
PRLAR6_EL1 = 50009,
PRBAR6_EL2 = 58200,
PRLAR6_EL2 = 58201,
PRBAR7_EL1 = 50012,
PRLAR7_EL1 = 50013,
PRBAR7_EL2 = 58204,
PRLAR7_EL2 = 58205,
PRBAR8_EL1 = 50016,
PRLAR8_EL1 = 50017,
PRBAR8_EL2 = 58208,
PRLAR8_EL2 = 58209,
PRBAR9_EL1 = 50020,
PRLAR9_EL1 = 50021,
PRBAR9_EL2 = 58212,
PRLAR9_EL2 = 58213,
PRBAR10_EL1 = 50024,
PRLAR10_EL1 = 50025,
PRBAR10_EL2 = 58216,
PRLAR10_EL2 = 58217,
PRBAR11_EL1 = 50028,
PRLAR11_EL1 = 50029,
PRBAR11_EL2 = 58220,
PRLAR11_EL2 = 58221,
PRBAR12_EL1 = 50032,
PRLAR12_EL1 = 50033,
PRBAR12_EL2 = 58224,
PRLAR12_EL2 = 58225,
PRBAR13_EL1 = 50036,
PRLAR13_EL1 = 50037,
PRBAR13_EL2 = 58228,
PRLAR13_EL2 = 58229,
PRBAR14_EL1 = 50040,
PRLAR14_EL1 = 50041,
PRBAR14_EL2 = 58232,
PRLAR14_EL2 = 58233,
PRBAR15_EL1 = 50044,
PRLAR15_EL1 = 50045,
PRBAR15_EL2 = 58236,
PRLAR15_EL2 = 58237,
PAN = 49683,
LORSA_EL1 = 50464,
LOREA_EL1 = 50465,
LORN_EL1 = 50466,
LORC_EL1 = 50467,
TTBR1_EL2 = 57601,
CNTHV_TVAL_EL2 = 59160,
CNTHV_CVAL_EL2 = 59162,
CNTHV_CTL_EL2 = 59161,
SCTLR_EL12 = 59520,
CPACR_EL12 = 59522,
TTBR0_EL12 = 59648,
TTBR1_EL12 = 59649,
TCR_EL12 = 59650,
AFSR0_EL12 = 60040,
AFSR1_EL12 = 60041,
ESR_EL12 = 60048,
FAR_EL12 = 60160,
MAIR_EL12 = 60688,
AMAIR_EL12 = 60696,
VBAR_EL12 = 60928,
CONTEXTIDR_EL12 = 61057,
CNTKCTL_EL12 = 61192,
CNTP_TVAL_EL02 = 61200,
CNTP_CTL_EL02 = 61201,
CNTP_CVAL_EL02 = 61202,
CNTV_TVAL_EL02 = 61208,
CNTV_CTL_EL02 = 61209,
CNTV_CVAL_EL02 = 61210,
SPSR_EL12 = 59904,
ELR_EL12 = 59905,
CONTEXTIDR_EL2 = 59009,
UAO = 49684,
PMBLIMITR_EL1 = 50384,
PMBPTR_EL1 = 50385,
PMBSR_EL1 = 50387,
PMBIDR_EL1 = 50391,
PMSCR_EL2 = 58568,
PMSCR_EL12 = 60616,
PMSCR_EL1 = 50376,
PMSICR_EL1 = 50378,
PMSIRR_EL1 = 50379,
PMSFCR_EL1 = 50380,
PMSEVFR_EL1 = 50381,
PMSLATFR_EL1 = 50382,
PMSIDR_EL1 = 50383,
ERRSELR_EL1 = 49817,
ERXCTLR_EL1 = 49825,
ERXSTATUS_EL1 = 49826,
ERXADDR_EL1 = 49827,
ERXMISC0_EL1 = 49832,
ERXMISC1_EL1 = 49833,
DISR_EL1 = 50697,
VDISR_EL2 = 58889,
VSESR_EL2 = 58003,
APIAKeyLo_EL1 = 49416,
APIAKeyHi_EL1 = 49417,
APIBKeyLo_EL1 = 49418,
APIBKeyHi_EL1 = 49419,
APDAKeyLo_EL1 = 49424,
APDAKeyHi_EL1 = 49425,
APDBKeyLo_EL1 = 49426,
APDBKeyHi_EL1 = 49427,
APGAKeyLo_EL1 = 49432,
APGAKeyHi_EL1 = 49433,
VSTCR_EL2 = 57650,
VSTTBR_EL2 = 57648,
CNTHVS_TVAL_EL2 = 59168,
CNTHVS_CVAL_EL2 = 59170,
CNTHVS_CTL_EL2 = 59169,
CNTHPS_TVAL_EL2 = 59176,
CNTHPS_CVAL_EL2 = 59178,
CNTHPS_CTL_EL2 = 59177,
SDER32_EL2 = 57497,
ERXPFGCTL_EL1 = 49829,
ERXPFGCDN_EL1 = 49830,
ERXMISC2_EL1 = 49834,
ERXMISC3_EL1 = 49835,
ERXPFGF_EL1 = 49828,
MPAM0_EL1 = 50473,
MPAM1_EL1 = 50472,
MPAM2_EL2 = 58664,
MPAM3_EL3 = 62760,
MPAM1_EL12 = 60712,
MPAMHCR_EL2 = 58656,
MPAMVPMV_EL2 = 58657,
MPAMVPM0_EL2 = 58672,
MPAMVPM1_EL2 = 58673,
MPAMVPM2_EL2 = 58674,
MPAMVPM3_EL2 = 58675,
MPAMVPM4_EL2 = 58676,
MPAMVPM5_EL2 = 58677,
MPAMVPM6_EL2 = 58678,
MPAMVPM7_EL2 = 58679,
MPAMIDR_EL1 = 50468,
AMCR_EL0 = 56976,
AMCFGR_EL0 = 56977,
AMCGCR_EL0 = 56978,
AMUSERENR_EL0 = 56979,
AMCNTENCLR0_EL0 = 56980,
AMCNTENSET0_EL0 = 56981,
AMEVCNTR00_EL0 = 56992,
AMEVCNTR01_EL0 = 56993,
AMEVCNTR02_EL0 = 56994,
AMEVCNTR03_EL0 = 56995,
AMEVTYPER00_EL0 = 57008,
AMEVTYPER01_EL0 = 57009,
AMEVTYPER02_EL0 = 57010,
AMEVTYPER03_EL0 = 57011,
AMCNTENCLR1_EL0 = 56984,
AMCNTENSET1_EL0 = 56985,
AMEVCNTR10_EL0 = 57056,
AMEVCNTR11_EL0 = 57057,
AMEVCNTR12_EL0 = 57058,
AMEVCNTR13_EL0 = 57059,
AMEVCNTR14_EL0 = 57060,
AMEVCNTR15_EL0 = 57061,
AMEVCNTR16_EL0 = 57062,
AMEVCNTR17_EL0 = 57063,
AMEVCNTR18_EL0 = 57064,
AMEVCNTR19_EL0 = 57065,
AMEVCNTR110_EL0 = 57066,
AMEVCNTR111_EL0 = 57067,
AMEVCNTR112_EL0 = 57068,
AMEVCNTR113_EL0 = 57069,
AMEVCNTR114_EL0 = 57070,
AMEVCNTR115_EL0 = 57071,
AMEVTYPER10_EL0 = 57072,
AMEVTYPER11_EL0 = 57073,
AMEVTYPER12_EL0 = 57074,
AMEVTYPER13_EL0 = 57075,
AMEVTYPER14_EL0 = 57076,
AMEVTYPER15_EL0 = 57077,
AMEVTYPER16_EL0 = 57078,
AMEVTYPER17_EL0 = 57079,
AMEVTYPER18_EL0 = 57080,
AMEVTYPER19_EL0 = 57081,
AMEVTYPER110_EL0 = 57082,
AMEVTYPER111_EL0 = 57083,
AMEVTYPER112_EL0 = 57084,
AMEVTYPER113_EL0 = 57085,
AMEVTYPER114_EL0 = 57086,
AMEVTYPER115_EL0 = 57087,
TRFCR_EL1 = 49297,
TRFCR_EL2 = 57489,
TRFCR_EL12 = 59537,
DIT = 55829,
VNCR_EL2 = 57616,
ZCR_EL1 = 49296,
ZCR_EL2 = 57488,
ZCR_EL3 = 61584,
ZCR_EL12 = 59536,
SSBS = 55830,
TCO = 55831,
GCR_EL1 = 49286,
RGSR_EL1 = 49285,
TFSR_EL1 = 49840,
TFSR_EL2 = 58032,
TFSR_EL3 = 62128,
TFSR_EL12 = 60080,
TFSRE0_EL1 = 49841,
GMID_EL1 = 51204,
TRCRSR = 34896,
TRCEXTINSELR0 = 34884,
TRCEXTINSELR1 = 34892,
TRCEXTINSELR2 = 34900,
TRCEXTINSELR3 = 34908,
TRBLIMITR_EL1 = 50392,
TRBPTR_EL1 = 50393,
TRBBASER_EL1 = 50394,
TRBSR_EL1 = 50395,
TRBMAR_EL1 = 50396,
TRBMPAM_EL1 = 50397,
TRBTRG_EL1 = 50398,
TRBIDR_EL1 = 50399,
AMCG1IDR_EL0 = 56982,
AMEVCNTVOFF00_EL2 = 59072,
AMEVCNTVOFF10_EL2 = 59088,
AMEVCNTVOFF01_EL2 = 59073,
AMEVCNTVOFF11_EL2 = 59089,
AMEVCNTVOFF02_EL2 = 59074,
AMEVCNTVOFF12_EL2 = 59090,
AMEVCNTVOFF03_EL2 = 59075,
AMEVCNTVOFF13_EL2 = 59091,
AMEVCNTVOFF04_EL2 = 59076,
AMEVCNTVOFF14_EL2 = 59092,
AMEVCNTVOFF05_EL2 = 59077,
AMEVCNTVOFF15_EL2 = 59093,
AMEVCNTVOFF06_EL2 = 59078,
AMEVCNTVOFF16_EL2 = 59094,
AMEVCNTVOFF07_EL2 = 59079,
AMEVCNTVOFF17_EL2 = 59095,
AMEVCNTVOFF08_EL2 = 59080,
AMEVCNTVOFF18_EL2 = 59096,
AMEVCNTVOFF09_EL2 = 59081,
AMEVCNTVOFF19_EL2 = 59097,
AMEVCNTVOFF010_EL2 = 59082,
AMEVCNTVOFF110_EL2 = 59098,
AMEVCNTVOFF011_EL2 = 59083,
AMEVCNTVOFF111_EL2 = 59099,
AMEVCNTVOFF012_EL2 = 59084,
AMEVCNTVOFF112_EL2 = 59100,
AMEVCNTVOFF013_EL2 = 59085,
AMEVCNTVOFF113_EL2 = 59101,
AMEVCNTVOFF014_EL2 = 59086,
AMEVCNTVOFF114_EL2 = 59102,
AMEVCNTVOFF015_EL2 = 59087,
AMEVCNTVOFF115_EL2 = 59103,
HFGRTR_EL2 = 57484,
HFGWTR_EL2 = 57485,
HFGITR_EL2 = 57486,
HDFGRTR_EL2 = 57740,
HDFGWTR_EL2 = 57741,
HAFGRTR_EL2 = 57742,
HDFGRTR2_EL2 = 57736,
HDFGWTR2_EL2 = 57737,
HFGRTR2_EL2 = 57738,
HFGWTR2_EL2 = 57739,
HFGITR2_EL2 = 57743,
CNTSCALE_EL2 = 59140,
CNTISCALE_EL2 = 59141,
CNTPOFF_EL2 = 59142,
CNTVFRQ_EL2 = 59143,
CNTPCTSS_EL0 = 57093,
CNTVCTSS_EL0 = 57094,
ACCDATA_EL1 = 50821,
BRBCR_EL1 = 35968,
BRBCR_EL12 = 44160,
BRBCR_EL2 = 42112,
BRBFCR_EL1 = 35969,
BRBIDR0_EL1 = 35984,
BRBINFINJ_EL1 = 35976,
BRBSRCINJ_EL1 = 35977,
BRBTGTINJ_EL1 = 35978,
BRBTS_EL1 = 35970,
BRBINF0_EL1 = 35840,
BRBSRC0_EL1 = 35841,
BRBTGT0_EL1 = 35842,
BRBINF1_EL1 = 35848,
BRBSRC1_EL1 = 35849,
BRBTGT1_EL1 = 35850,
BRBINF2_EL1 = 35856,
BRBSRC2_EL1 = 35857,
BRBTGT2_EL1 = 35858,
BRBINF3_EL1 = 35864,
BRBSRC3_EL1 = 35865,
BRBTGT3_EL1 = 35866,
BRBINF4_EL1 = 35872,
BRBSRC4_EL1 = 35873,
BRBTGT4_EL1 = 35874,
BRBINF5_EL1 = 35880,
BRBSRC5_EL1 = 35881,
BRBTGT5_EL1 = 35882,
BRBINF6_EL1 = 35888,
BRBSRC6_EL1 = 35889,
BRBTGT6_EL1 = 35890,
BRBINF7_EL1 = 35896,
BRBSRC7_EL1 = 35897,
BRBTGT7_EL1 = 35898,
BRBINF8_EL1 = 35904,
BRBSRC8_EL1 = 35905,
BRBTGT8_EL1 = 35906,
BRBINF9_EL1 = 35912,
BRBSRC9_EL1 = 35913,
BRBTGT9_EL1 = 35914,
BRBINF10_EL1 = 35920,
BRBSRC10_EL1 = 35921,
BRBTGT10_EL1 = 35922,
BRBINF11_EL1 = 35928,
BRBSRC11_EL1 = 35929,
BRBTGT11_EL1 = 35930,
BRBINF12_EL1 = 35936,
BRBSRC12_EL1 = 35937,
BRBTGT12_EL1 = 35938,
BRBINF13_EL1 = 35944,
BRBSRC13_EL1 = 35945,
BRBTGT13_EL1 = 35946,
BRBINF14_EL1 = 35952,
BRBSRC14_EL1 = 35953,
BRBTGT14_EL1 = 35954,
BRBINF15_EL1 = 35960,
BRBSRC15_EL1 = 35961,
BRBTGT15_EL1 = 35962,
BRBINF16_EL1 = 35844,
BRBSRC16_EL1 = 35845,
BRBTGT16_EL1 = 35846,
BRBINF17_EL1 = 35852,
BRBSRC17_EL1 = 35853,
BRBTGT17_EL1 = 35854,
BRBINF18_EL1 = 35860,
BRBSRC18_EL1 = 35861,
BRBTGT18_EL1 = 35862,
BRBINF19_EL1 = 35868,
BRBSRC19_EL1 = 35869,
BRBTGT19_EL1 = 35870,
BRBINF20_EL1 = 35876,
BRBSRC20_EL1 = 35877,
BRBTGT20_EL1 = 35878,
BRBINF21_EL1 = 35884,
BRBSRC21_EL1 = 35885,
BRBTGT21_EL1 = 35886,
BRBINF22_EL1 = 35892,
BRBSRC22_EL1 = 35893,
BRBTGT22_EL1 = 35894,
BRBINF23_EL1 = 35900,
BRBSRC23_EL1 = 35901,
BRBTGT23_EL1 = 35902,
BRBINF24_EL1 = 35908,
BRBSRC24_EL1 = 35909,
BRBTGT24_EL1 = 35910,
BRBINF25_EL1 = 35916,
BRBSRC25_EL1 = 35917,
BRBTGT25_EL1 = 35918,
BRBINF26_EL1 = 35924,
BRBSRC26_EL1 = 35925,
BRBTGT26_EL1 = 35926,
BRBINF27_EL1 = 35932,
BRBSRC27_EL1 = 35933,
BRBTGT27_EL1 = 35934,
BRBINF28_EL1 = 35940,
BRBSRC28_EL1 = 35941,
BRBTGT28_EL1 = 35942,
BRBINF29_EL1 = 35948,
BRBSRC29_EL1 = 35949,
BRBTGT29_EL1 = 35950,
BRBINF30_EL1 = 35956,
BRBSRC30_EL1 = 35957,
BRBTGT30_EL1 = 35958,
BRBINF31_EL1 = 35964,
BRBSRC31_EL1 = 35965,
BRBTGT31_EL1 = 35966,
PMSNEVFR_EL1 = 50377,
SMCR_EL1 = 49302,
SMCR_EL2 = 57494,
SMCR_EL3 = 61590,
SMCR_EL12 = 59542,
SVCR = 55826,
SMPRI_EL1 = 49300,
SMPRIMAP_EL2 = 57493,
SMIDR_EL1 = 51206,
TPIDR2_EL0 = 56965,
MPAMSM_EL1 = 50475,
ALLINT = 49688,
ICC_NMIAR1_EL1 = 50765,
GCSCR_EL1 = 49448,
GCSPR_EL1 = 49449,
GCSCRE0_EL1 = 49450,
GCSPR_EL0 = 55593,
GCSCR_EL2 = 57640,
GCSPR_EL2 = 57641,
GCSCR_EL12 = 59688,
GCSPR_EL12 = 59689,
GCSCR_EL3 = 61736,
GCSPR_EL3 = 61737,
AMAIR2_EL1 = 50457,
AMAIR2_EL12 = 60697,
AMAIR2_EL2 = 58649,
AMAIR2_EL3 = 62745,
MAIR2_EL1 = 50449,
MAIR2_EL12 = 60689,
MAIR2_EL2 = 58633,
MAIR2_EL3 = 62729,
PIRE0_EL1 = 50450,
PIRE0_EL12 = 60690,
PIRE0_EL2 = 58642,
PIR_EL1 = 50451,
PIR_EL12 = 60691,
PIR_EL2 = 58643,
PIR_EL3 = 62739,
S2PIR_EL2 = 58645,
POR_EL0 = 56596,
POR_EL1 = 50452,
POR_EL12 = 60692,
POR_EL2 = 58644,
POR_EL3 = 62740,
S2POR_EL1 = 50453,
SCTLR2_EL1 = 49283,
SCTLR2_EL12 = 59523,
SCTLR2_EL2 = 57475,
SCTLR2_EL3 = 61571,
TCR2_EL1 = 49411,
TCR2_EL12 = 59651,
TCR2_EL2 = 57603,
RCWMASK_EL1 = 50822,
RCWSMASK_EL1 = 50819,
MDSELR_EL1 = 32802,
PMUACR_EL1 = 50420,
PMCCNTSVR_EL1 = 34655,
PMICNTSVR_EL1 = 34656,
PMSSCR_EL1 = 50411,
PMEVCNTSVR0_EL1 = 34624,
PMEVCNTSVR1_EL1 = 34625,
PMEVCNTSVR2_EL1 = 34626,
PMEVCNTSVR3_EL1 = 34627,
PMEVCNTSVR4_EL1 = 34628,
PMEVCNTSVR5_EL1 = 34629,
PMEVCNTSVR6_EL1 = 34630,
PMEVCNTSVR7_EL1 = 34631,
PMEVCNTSVR8_EL1 = 34632,
PMEVCNTSVR9_EL1 = 34633,
PMEVCNTSVR10_EL1 = 34634,
PMEVCNTSVR11_EL1 = 34635,
PMEVCNTSVR12_EL1 = 34636,
PMEVCNTSVR13_EL1 = 34637,
PMEVCNTSVR14_EL1 = 34638,
PMEVCNTSVR15_EL1 = 34639,
PMEVCNTSVR16_EL1 = 34640,
PMEVCNTSVR17_EL1 = 34641,
PMEVCNTSVR18_EL1 = 34642,
PMEVCNTSVR19_EL1 = 34643,
PMEVCNTSVR20_EL1 = 34644,
PMEVCNTSVR21_EL1 = 34645,
PMEVCNTSVR22_EL1 = 34646,
PMEVCNTSVR23_EL1 = 34647,
PMEVCNTSVR24_EL1 = 34648,
PMEVCNTSVR25_EL1 = 34649,
PMEVCNTSVR26_EL1 = 34650,
PMEVCNTSVR27_EL1 = 34651,
PMEVCNTSVR28_EL1 = 34652,
PMEVCNTSVR29_EL1 = 34653,
PMEVCNTSVR30_EL1 = 34654,
PMICNTR_EL0 = 56480,
PMICFILTR_EL0 = 56496,
PMZR_EL0 = 56556,
PMECR_EL1 = 50421,
PMIAR_EL1 = 50423,
SPMACCESSR_EL1 = 34027,
SPMACCESSR_EL12 = 44267,
SPMACCESSR_EL2 = 42219,
SPMACCESSR_EL3 = 46315,
SPMCNTENCLR_EL0 = 40162,
SPMCNTENSET_EL0 = 40161,
SPMCR_EL0 = 40160,
SPMDEVAFF_EL1 = 34030,
SPMDEVARCH_EL1 = 34029,
SPMEVCNTR0_EL0 = 40704,
SPMEVFILT2R0_EL0 = 40752,
SPMEVFILTR0_EL0 = 40736,
SPMEVTYPER0_EL0 = 40720,
SPMEVCNTR1_EL0 = 40705,
SPMEVFILT2R1_EL0 = 40753,
SPMEVFILTR1_EL0 = 40737,
SPMEVTYPER1_EL0 = 40721,
SPMEVCNTR2_EL0 = 40706,
SPMEVFILT2R2_EL0 = 40754,
SPMEVFILTR2_EL0 = 40738,
SPMEVTYPER2_EL0 = 40722,
SPMEVCNTR3_EL0 = 40707,
SPMEVFILT2R3_EL0 = 40755,
SPMEVFILTR3_EL0 = 40739,
SPMEVTYPER3_EL0 = 40723,
SPMEVCNTR4_EL0 = 40708,
SPMEVFILT2R4_EL0 = 40756,
SPMEVFILTR4_EL0 = 40740,
SPMEVTYPER4_EL0 = 40724,
SPMEVCNTR5_EL0 = 40709,
SPMEVFILT2R5_EL0 = 40757,
SPMEVFILTR5_EL0 = 40741,
SPMEVTYPER5_EL0 = 40725,
SPMEVCNTR6_EL0 = 40710,
SPMEVFILT2R6_EL0 = 40758,
SPMEVFILTR6_EL0 = 40742,
SPMEVTYPER6_EL0 = 40726,
SPMEVCNTR7_EL0 = 40711,
SPMEVFILT2R7_EL0 = 40759,
SPMEVFILTR7_EL0 = 40743,
SPMEVTYPER7_EL0 = 40727,
SPMEVCNTR8_EL0 = 40712,
SPMEVFILT2R8_EL0 = 40760,
SPMEVFILTR8_EL0 = 40744,
SPMEVTYPER8_EL0 = 40728,
SPMEVCNTR9_EL0 = 40713,
SPMEVFILT2R9_EL0 = 40761,
SPMEVFILTR9_EL0 = 40745,
SPMEVTYPER9_EL0 = 40729,
SPMEVCNTR10_EL0 = 40714,
SPMEVFILT2R10_EL0 = 40762,
SPMEVFILTR10_EL0 = 40746,
SPMEVTYPER10_EL0 = 40730,
SPMEVCNTR11_EL0 = 40715,
SPMEVFILT2R11_EL0 = 40763,
SPMEVFILTR11_EL0 = 40747,
SPMEVTYPER11_EL0 = 40731,
SPMEVCNTR12_EL0 = 40716,
SPMEVFILT2R12_EL0 = 40764,
SPMEVFILTR12_EL0 = 40748,
SPMEVTYPER12_EL0 = 40732,
SPMEVCNTR13_EL0 = 40717,
SPMEVFILT2R13_EL0 = 40765,
SPMEVFILTR13_EL0 = 40749,
SPMEVTYPER13_EL0 = 40733,
SPMEVCNTR14_EL0 = 40718,
SPMEVFILT2R14_EL0 = 40766,
SPMEVFILTR14_EL0 = 40750,
SPMEVTYPER14_EL0 = 40734,
SPMEVCNTR15_EL0 = 40719,
SPMEVFILT2R15_EL0 = 40767,
SPMEVFILTR15_EL0 = 40751,
SPMEVTYPER15_EL0 = 40735,
SPMIIDR_EL1 = 34028,
SPMINTENCLR_EL1 = 34034,
SPMINTENSET_EL1 = 34033,
SPMOVSCLR_EL0 = 40163,
SPMOVSSET_EL0 = 40179,
SPMSELR_EL0 = 40165,
SPMCGCR0_EL1 = 34024,
SPMCGCR1_EL1 = 34025,
SPMCFGR_EL1 = 34031,
SPMROOTCR_EL3 = 46327,
SPMSCR_EL1 = 48375,
TRCITEEDCR = 34833,
TRCITECR_EL1 = 49299,
TRCITECR_EL12 = 59539,
TRCITECR_EL2 = 57491,
PMSDSFR_EL1 = 50388,
ERXGSR_EL1 = 49818,
PFAR_EL1 = 49925,
PFAR_EL12 = 60165,
PFAR_EL2 = 58117,
PM = 49689,
ID_AA64FPFR0_EL1 = 49191,
FPMR = 55842,
MDSTEPOP_EL1 = 32810,
SPMZR_EL0 = 40164,
VDISR_EL3 = 62985,
VSESR_EL3 = 62099,
HDBSSBR_EL2 = 57626,
HDBSSPROD_EL2 = 57627,
HACDBSBR_EL2 = 57628,
HACDBSCONS_EL2 = 57629,
FGWTE3_EL3 = 61581,
};
#endif
#ifdef GET_TSB_DECL
enum TSBValues {
csync = 0,
};
#endif
#ifdef GET_TLBITable_DECL
const TLBI *lookupTLBIByEncoding(uint16_t Encoding);
const TLBI *lookupTLBIByName(StringRef Name);
#endif
#ifdef GET_TLBITable_IMPL
constexpr TLBI TLBITable[] = {
{ "ALLE1", 0x243C, false, { } },
{ "ALLE1IS", 0x241C, false, { } },
{ "ALLE1ISnXS", 0x249C, false, { AArch64::FeatureXS } },
{ "ALLE1nXS", 0x24BC, false, { AArch64::FeatureXS } },
{ "ALLE1OS", 0x240C, false, { AArch64::FeatureTLB_RMI } },
{ "ALLE1OSnXS", 0x248C, false, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "ALLE2", 0x2438, false, { } },
{ "ALLE2IS", 0x2418, false, { } },
{ "ALLE2ISnXS", 0x2498, false, { AArch64::FeatureXS } },
{ "ALLE2nXS", 0x24B8, false, { AArch64::FeatureXS } },
{ "ALLE2OS", 0x2408, false, { AArch64::FeatureTLB_RMI } },
{ "ALLE2OSnXS", 0x2488, false, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "ALLE3", 0x3438, false, { } },
{ "ALLE3IS", 0x3418, false, { } },
{ "ALLE3ISnXS", 0x3498, false, { AArch64::FeatureXS } },
{ "ALLE3nXS", 0x34B8, false, { AArch64::FeatureXS } },
{ "ALLE3OS", 0x3408, false, { AArch64::FeatureTLB_RMI } },
{ "ALLE3OSnXS", 0x3488, false, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "ASIDE1", 0x43A, true, { } },
{ "ASIDE1IS", 0x41A, true, { } },
{ "ASIDE1ISnXS", 0x49A, true, { AArch64::FeatureXS } },
{ "ASIDE1nXS", 0x4BA, true, { AArch64::FeatureXS } },
{ "ASIDE1OS", 0x40A, true, { AArch64::FeatureTLB_RMI } },
{ "ASIDE1OSnXS", 0x48A, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "IPAS2E1", 0x2421, true, { } },
{ "IPAS2E1IS", 0x2401, true, { } },
{ "IPAS2E1ISnXS", 0x2481, true, { AArch64::FeatureXS } },
{ "IPAS2E1nXS", 0x24A1, true, { AArch64::FeatureXS } },
{ "IPAS2E1OS", 0x2420, true, { AArch64::FeatureTLB_RMI } },
{ "IPAS2E1OSnXS", 0x24A0, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "IPAS2LE1", 0x2425, true, { } },
{ "IPAS2LE1IS", 0x2405, true, { } },
{ "IPAS2LE1ISnXS", 0x2485, true, { AArch64::FeatureXS } },
{ "IPAS2LE1nXS", 0x24A5, true, { AArch64::FeatureXS } },
{ "IPAS2LE1OS", 0x2424, true, { AArch64::FeatureTLB_RMI } },
{ "IPAS2LE1OSnXS", 0x24A4, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "PAALL", 0x343C, false, { AArch64::FeatureRME } },
{ "PAALLnXS", 0x34BC, false, { AArch64::FeatureRME, AArch64::FeatureXS } },
{ "PAALLOS", 0x340C, false, { AArch64::FeatureRME } },
{ "PAALLOSnXS", 0x348C, false, { AArch64::FeatureRME, AArch64::FeatureXS } },
{ "RIPAS2E1", 0x2422, true, { AArch64::FeatureTLB_RMI } },
{ "RIPAS2E1IS", 0x2402, true, { AArch64::FeatureTLB_RMI } },
{ "RIPAS2E1ISnXS", 0x2482, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RIPAS2E1nXS", 0x24A2, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RIPAS2E1OS", 0x2423, true, { AArch64::FeatureTLB_RMI } },
{ "RIPAS2E1OSnXS", 0x24A3, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RIPAS2LE1", 0x2426, true, { AArch64::FeatureTLB_RMI } },
{ "RIPAS2LE1IS", 0x2406, true, { AArch64::FeatureTLB_RMI } },
{ "RIPAS2LE1ISnXS", 0x2486, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RIPAS2LE1nXS", 0x24A6, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RIPAS2LE1OS", 0x2427, true, { AArch64::FeatureTLB_RMI } },
{ "RIPAS2LE1OSnXS", 0x24A7, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RPALOS", 0x3427, true, { AArch64::FeatureRME } },
{ "RPALOSnXS", 0x34A7, true, { AArch64::FeatureRME, AArch64::FeatureXS } },
{ "RPAOS", 0x3423, true, { AArch64::FeatureRME } },
{ "RPAOSnXS", 0x34A3, true, { AArch64::FeatureRME, AArch64::FeatureXS } },
{ "RVAAE1", 0x433, true, { AArch64::FeatureTLB_RMI } },
{ "RVAAE1IS", 0x413, true, { AArch64::FeatureTLB_RMI } },
{ "RVAAE1ISnXS", 0x493, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVAAE1nXS", 0x4B3, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVAAE1OS", 0x42B, true, { AArch64::FeatureTLB_RMI } },
{ "RVAAE1OSnXS", 0x4AB, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVAALE1", 0x437, true, { AArch64::FeatureTLB_RMI } },
{ "RVAALE1IS", 0x417, true, { AArch64::FeatureTLB_RMI } },
{ "RVAALE1ISnXS", 0x497, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVAALE1nXS", 0x4B7, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVAALE1OS", 0x42F, true, { AArch64::FeatureTLB_RMI } },
{ "RVAALE1OSnXS", 0x4AF, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVAE1", 0x431, true, { AArch64::FeatureTLB_RMI } },
{ "RVAE1IS", 0x411, true, { AArch64::FeatureTLB_RMI } },
{ "RVAE1ISnXS", 0x491, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVAE1nXS", 0x4B1, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVAE1OS", 0x429, true, { AArch64::FeatureTLB_RMI } },
{ "RVAE1OSnXS", 0x4A9, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVAE2", 0x2431, true, { AArch64::FeatureTLB_RMI } },
{ "RVAE2IS", 0x2411, true, { AArch64::FeatureTLB_RMI } },
{ "RVAE2ISnXS", 0x2491, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVAE2nXS", 0x24B1, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVAE2OS", 0x2429, true, { AArch64::FeatureTLB_RMI } },
{ "RVAE2OSnXS", 0x24A9, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVAE3", 0x3431, true, { AArch64::FeatureTLB_RMI } },
{ "RVAE3IS", 0x3411, true, { AArch64::FeatureTLB_RMI } },
{ "RVAE3ISnXS", 0x3491, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVAE3nXS", 0x34B1, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVAE3OS", 0x3429, true, { AArch64::FeatureTLB_RMI } },
{ "RVAE3OSnXS", 0x34A9, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVALE1", 0x435, true, { AArch64::FeatureTLB_RMI } },
{ "RVALE1IS", 0x415, true, { AArch64::FeatureTLB_RMI } },
{ "RVALE1ISnXS", 0x495, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVALE1nXS", 0x4B5, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVALE1OS", 0x42D, true, { AArch64::FeatureTLB_RMI } },
{ "RVALE1OSnXS", 0x4AD, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVALE2", 0x2435, true, { AArch64::FeatureTLB_RMI } },
{ "RVALE2IS", 0x2415, true, { AArch64::FeatureTLB_RMI } },
{ "RVALE2ISnXS", 0x2495, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVALE2nXS", 0x24B5, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVALE2OS", 0x242D, true, { AArch64::FeatureTLB_RMI } },
{ "RVALE2OSnXS", 0x24AD, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVALE3", 0x3435, true, { AArch64::FeatureTLB_RMI } },
{ "RVALE3IS", 0x3415, true, { AArch64::FeatureTLB_RMI } },
{ "RVALE3ISnXS", 0x3495, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVALE3nXS", 0x34B5, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "RVALE3OS", 0x342D, true, { AArch64::FeatureTLB_RMI } },
{ "RVALE3OSnXS", 0x34AD, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "VAAE1", 0x43B, true, { } },
{ "VAAE1IS", 0x41B, true, { } },
{ "VAAE1ISnXS", 0x49B, true, { AArch64::FeatureXS } },
{ "VAAE1nXS", 0x4BB, true, { AArch64::FeatureXS } },
{ "VAAE1OS", 0x40B, true, { AArch64::FeatureTLB_RMI } },
{ "VAAE1OSnXS", 0x48B, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "VAALE1", 0x43F, true, { } },
{ "VAALE1IS", 0x41F, true, { } },
{ "VAALE1ISnXS", 0x49F, true, { AArch64::FeatureXS } },
{ "VAALE1nXS", 0x4BF, true, { AArch64::FeatureXS } },
{ "VAALE1OS", 0x40F, true, { AArch64::FeatureTLB_RMI } },
{ "VAALE1OSnXS", 0x48F, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "VAE1", 0x439, true, { } },
{ "VAE1IS", 0x419, true, { } },
{ "VAE1ISnXS", 0x499, true, { AArch64::FeatureXS } },
{ "VAE1nXS", 0x4B9, true, { AArch64::FeatureXS } },
{ "VAE1OS", 0x409, true, { AArch64::FeatureTLB_RMI } },
{ "VAE1OSnXS", 0x489, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "VAE2", 0x2439, true, { } },
{ "VAE2IS", 0x2419, true, { } },
{ "VAE2ISnXS", 0x2499, true, { AArch64::FeatureXS } },
{ "VAE2nXS", 0x24B9, true, { AArch64::FeatureXS } },
{ "VAE2OS", 0x2409, true, { AArch64::FeatureTLB_RMI } },
{ "VAE2OSnXS", 0x2489, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "VAE3", 0x3439, true, { } },
{ "VAE3IS", 0x3419, true, { } },
{ "VAE3ISnXS", 0x3499, true, { AArch64::FeatureXS } },
{ "VAE3nXS", 0x34B9, true, { AArch64::FeatureXS } },
{ "VAE3OS", 0x3409, true, { AArch64::FeatureTLB_RMI } },
{ "VAE3OSnXS", 0x3489, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "VALE1", 0x43D, true, { } },
{ "VALE1IS", 0x41D, true, { } },
{ "VALE1ISnXS", 0x49D, true, { AArch64::FeatureXS } },
{ "VALE1nXS", 0x4BD, true, { AArch64::FeatureXS } },
{ "VALE1OS", 0x40D, true, { AArch64::FeatureTLB_RMI } },
{ "VALE1OSnXS", 0x48D, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "VALE2", 0x243D, true, { } },
{ "VALE2IS", 0x241D, true, { } },
{ "VALE2ISnXS", 0x249D, true, { AArch64::FeatureXS } },
{ "VALE2nXS", 0x24BD, true, { AArch64::FeatureXS } },
{ "VALE2OS", 0x240D, true, { AArch64::FeatureTLB_RMI } },
{ "VALE2OSnXS", 0x248D, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "VALE3", 0x343D, true, { } },
{ "VALE3IS", 0x341D, true, { } },
{ "VALE3ISnXS", 0x349D, true, { AArch64::FeatureXS } },
{ "VALE3nXS", 0x34BD, true, { AArch64::FeatureXS } },
{ "VALE3OS", 0x340D, true, { AArch64::FeatureTLB_RMI } },
{ "VALE3OSnXS", 0x348D, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "VMALLE1", 0x438, false, { } },
{ "VMALLE1IS", 0x418, false, { } },
{ "VMALLE1ISnXS", 0x498, false, { AArch64::FeatureXS } },
{ "VMALLE1nXS", 0x4B8, false, { AArch64::FeatureXS } },
{ "VMALLE1OS", 0x408, false, { AArch64::FeatureTLB_RMI } },
{ "VMALLE1OSnXS", 0x488, false, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "VMALLS12E1", 0x243E, false, { } },
{ "VMALLS12E1IS", 0x241E, false, { } },
{ "VMALLS12E1ISnXS", 0x249E, false, { AArch64::FeatureXS } },
{ "VMALLS12E1nXS", 0x24BE, false, { AArch64::FeatureXS } },
{ "VMALLS12E1OS", 0x240E, false, { AArch64::FeatureTLB_RMI } },
{ "VMALLS12E1OSnXS", 0x248E, false, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } },
{ "VMALLWS2E1", 0x2432, false, { AArch64::FeatureTLBIW } },
{ "VMALLWS2E1IS", 0x2412, false, { AArch64::FeatureTLBIW } },
{ "VMALLWS2E1ISnXS", 0x2492, false, { AArch64::FeatureTLBIW, AArch64::FeatureXS } },
{ "VMALLWS2E1nXS", 0x24B2, false, { AArch64::FeatureTLBIW, AArch64::FeatureXS } },
{ "VMALLWS2E1OS", 0x242A, false, { AArch64::FeatureTLBIW } },
{ "VMALLWS2E1OSnXS", 0x24AA, false, { AArch64::FeatureTLBIW, AArch64::FeatureXS } },
};
const TLBI *lookupTLBIByEncoding(uint16_t Encoding) {
struct IndexType {
uint16_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x408, 156 },
{ 0x409, 120 },
{ 0x40A, 22 },
{ 0x40B, 108 },
{ 0x40D, 138 },
{ 0x40F, 114 },
{ 0x411, 69 },
{ 0x413, 57 },
{ 0x415, 87 },
{ 0x417, 63 },
{ 0x418, 153 },
{ 0x419, 117 },
{ 0x41A, 19 },
{ 0x41B, 105 },
{ 0x41D, 135 },
{ 0x41F, 111 },
{ 0x429, 72 },
{ 0x42B, 60 },
{ 0x42D, 90 },
{ 0x42F, 66 },
{ 0x431, 68 },
{ 0x433, 56 },
{ 0x435, 86 },
{ 0x437, 62 },
{ 0x438, 152 },
{ 0x439, 116 },
{ 0x43A, 18 },
{ 0x43B, 104 },
{ 0x43D, 134 },
{ 0x43F, 110 },
{ 0x488, 157 },
{ 0x489, 121 },
{ 0x48A, 23 },
{ 0x48B, 109 },
{ 0x48D, 139 },
{ 0x48F, 115 },
{ 0x491, 70 },
{ 0x493, 58 },
{ 0x495, 88 },
{ 0x497, 64 },
{ 0x498, 154 },
{ 0x499, 118 },
{ 0x49A, 20 },
{ 0x49B, 106 },
{ 0x49D, 136 },
{ 0x49F, 112 },
{ 0x4A9, 73 },
{ 0x4AB, 61 },
{ 0x4AD, 91 },
{ 0x4AF, 67 },
{ 0x4B1, 71 },
{ 0x4B3, 59 },
{ 0x4B5, 89 },
{ 0x4B7, 65 },
{ 0x4B8, 155 },
{ 0x4B9, 119 },
{ 0x4BA, 21 },
{ 0x4BB, 107 },
{ 0x4BD, 137 },
{ 0x4BF, 113 },
{ 0x2401, 25 },
{ 0x2402, 41 },
{ 0x2405, 31 },
{ 0x2406, 47 },
{ 0x2408, 10 },
{ 0x2409, 126 },
{ 0x240C, 4 },
{ 0x240D, 144 },
{ 0x240E, 162 },
{ 0x2411, 75 },
{ 0x2412, 165 },
{ 0x2415, 93 },
{ 0x2418, 7 },
{ 0x2419, 123 },
{ 0x241C, 1 },
{ 0x241D, 141 },
{ 0x241E, 159 },
{ 0x2420, 28 },
{ 0x2421, 24 },
{ 0x2422, 40 },
{ 0x2423, 44 },
{ 0x2424, 34 },
{ 0x2425, 30 },
{ 0x2426, 46 },
{ 0x2427, 50 },
{ 0x2429, 78 },
{ 0x242A, 168 },
{ 0x242D, 96 },
{ 0x2431, 74 },
{ 0x2432, 164 },
{ 0x2435, 92 },
{ 0x2438, 6 },
{ 0x2439, 122 },
{ 0x243C, 0 },
{ 0x243D, 140 },
{ 0x243E, 158 },
{ 0x2481, 26 },
{ 0x2482, 42 },
{ 0x2485, 32 },
{ 0x2486, 48 },
{ 0x2488, 11 },
{ 0x2489, 127 },
{ 0x248C, 5 },
{ 0x248D, 145 },
{ 0x248E, 163 },
{ 0x2491, 76 },
{ 0x2492, 166 },
{ 0x2495, 94 },
{ 0x2498, 8 },
{ 0x2499, 124 },
{ 0x249C, 2 },
{ 0x249D, 142 },
{ 0x249E, 160 },
{ 0x24A0, 29 },
{ 0x24A1, 27 },
{ 0x24A2, 43 },
{ 0x24A3, 45 },
{ 0x24A4, 35 },
{ 0x24A5, 33 },
{ 0x24A6, 49 },
{ 0x24A7, 51 },
{ 0x24A9, 79 },
{ 0x24AA, 169 },
{ 0x24AD, 97 },
{ 0x24B1, 77 },
{ 0x24B2, 167 },
{ 0x24B5, 95 },
{ 0x24B8, 9 },
{ 0x24B9, 125 },
{ 0x24BC, 3 },
{ 0x24BD, 143 },
{ 0x24BE, 161 },
{ 0x3408, 16 },
{ 0x3409, 132 },
{ 0x340C, 38 },
{ 0x340D, 150 },
{ 0x3411, 81 },
{ 0x3415, 99 },
{ 0x3418, 13 },
{ 0x3419, 129 },
{ 0x341D, 147 },
{ 0x3423, 54 },
{ 0x3427, 52 },
{ 0x3429, 84 },
{ 0x342D, 102 },
{ 0x3431, 80 },
{ 0x3435, 98 },
{ 0x3438, 12 },
{ 0x3439, 128 },
{ 0x343C, 36 },
{ 0x343D, 146 },
{ 0x3488, 17 },
{ 0x3489, 133 },
{ 0x348C, 39 },
{ 0x348D, 151 },
{ 0x3491, 82 },
{ 0x3495, 100 },
{ 0x3498, 14 },
{ 0x3499, 130 },
{ 0x349D, 148 },
{ 0x34A3, 55 },
{ 0x34A7, 53 },
{ 0x34A9, 85 },
{ 0x34AD, 103 },
{ 0x34B1, 83 },
{ 0x34B5, 101 },
{ 0x34B8, 15 },
{ 0x34B9, 131 },
{ 0x34BC, 37 },
{ 0x34BD, 149 },
};
struct KeyType {
uint16_t Encoding;
};
KeyType Key = {Encoding};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Encoding != Idx->Encoding)
return nullptr;
return &TLBITable[Idx->_index];
}
const TLBI *lookupTLBIByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "ALLE1", 0 },
{ "ALLE1IS", 1 },
{ "ALLE1ISNXS", 2 },
{ "ALLE1NXS", 3 },
{ "ALLE1OS", 4 },
{ "ALLE1OSNXS", 5 },
{ "ALLE2", 6 },
{ "ALLE2IS", 7 },
{ "ALLE2ISNXS", 8 },
{ "ALLE2NXS", 9 },
{ "ALLE2OS", 10 },
{ "ALLE2OSNXS", 11 },
{ "ALLE3", 12 },
{ "ALLE3IS", 13 },
{ "ALLE3ISNXS", 14 },
{ "ALLE3NXS", 15 },
{ "ALLE3OS", 16 },
{ "ALLE3OSNXS", 17 },
{ "ASIDE1", 18 },
{ "ASIDE1IS", 19 },
{ "ASIDE1ISNXS", 20 },
{ "ASIDE1NXS", 21 },
{ "ASIDE1OS", 22 },
{ "ASIDE1OSNXS", 23 },
{ "IPAS2E1", 24 },
{ "IPAS2E1IS", 25 },
{ "IPAS2E1ISNXS", 26 },
{ "IPAS2E1NXS", 27 },
{ "IPAS2E1OS", 28 },
{ "IPAS2E1OSNXS", 29 },
{ "IPAS2LE1", 30 },
{ "IPAS2LE1IS", 31 },
{ "IPAS2LE1ISNXS", 32 },
{ "IPAS2LE1NXS", 33 },
{ "IPAS2LE1OS", 34 },
{ "IPAS2LE1OSNXS", 35 },
{ "PAALL", 36 },
{ "PAALLNXS", 37 },
{ "PAALLOS", 38 },
{ "PAALLOSNXS", 39 },
{ "RIPAS2E1", 40 },
{ "RIPAS2E1IS", 41 },
{ "RIPAS2E1ISNXS", 42 },
{ "RIPAS2E1NXS", 43 },
{ "RIPAS2E1OS", 44 },
{ "RIPAS2E1OSNXS", 45 },
{ "RIPAS2LE1", 46 },
{ "RIPAS2LE1IS", 47 },
{ "RIPAS2LE1ISNXS", 48 },
{ "RIPAS2LE1NXS", 49 },
{ "RIPAS2LE1OS", 50 },
{ "RIPAS2LE1OSNXS", 51 },
{ "RPALOS", 52 },
{ "RPALOSNXS", 53 },
{ "RPAOS", 54 },
{ "RPAOSNXS", 55 },
{ "RVAAE1", 56 },
{ "RVAAE1IS", 57 },
{ "RVAAE1ISNXS", 58 },
{ "RVAAE1NXS", 59 },
{ "RVAAE1OS", 60 },
{ "RVAAE1OSNXS", 61 },
{ "RVAALE1", 62 },
{ "RVAALE1IS", 63 },
{ "RVAALE1ISNXS", 64 },
{ "RVAALE1NXS", 65 },
{ "RVAALE1OS", 66 },
{ "RVAALE1OSNXS", 67 },
{ "RVAE1", 68 },
{ "RVAE1IS", 69 },
{ "RVAE1ISNXS", 70 },
{ "RVAE1NXS", 71 },
{ "RVAE1OS", 72 },
{ "RVAE1OSNXS", 73 },
{ "RVAE2", 74 },
{ "RVAE2IS", 75 },
{ "RVAE2ISNXS", 76 },
{ "RVAE2NXS", 77 },
{ "RVAE2OS", 78 },
{ "RVAE2OSNXS", 79 },
{ "RVAE3", 80 },
{ "RVAE3IS", 81 },
{ "RVAE3ISNXS", 82 },
{ "RVAE3NXS", 83 },
{ "RVAE3OS", 84 },
{ "RVAE3OSNXS", 85 },
{ "RVALE1", 86 },
{ "RVALE1IS", 87 },
{ "RVALE1ISNXS", 88 },
{ "RVALE1NXS", 89 },
{ "RVALE1OS", 90 },
{ "RVALE1OSNXS", 91 },
{ "RVALE2", 92 },
{ "RVALE2IS", 93 },
{ "RVALE2ISNXS", 94 },
{ "RVALE2NXS", 95 },
{ "RVALE2OS", 96 },
{ "RVALE2OSNXS", 97 },
{ "RVALE3", 98 },
{ "RVALE3IS", 99 },
{ "RVALE3ISNXS", 100 },
{ "RVALE3NXS", 101 },
{ "RVALE3OS", 102 },
{ "RVALE3OSNXS", 103 },
{ "VAAE1", 104 },
{ "VAAE1IS", 105 },
{ "VAAE1ISNXS", 106 },
{ "VAAE1NXS", 107 },
{ "VAAE1OS", 108 },
{ "VAAE1OSNXS", 109 },
{ "VAALE1", 110 },
{ "VAALE1IS", 111 },
{ "VAALE1ISNXS", 112 },
{ "VAALE1NXS", 113 },
{ "VAALE1OS", 114 },
{ "VAALE1OSNXS", 115 },
{ "VAE1", 116 },
{ "VAE1IS", 117 },
{ "VAE1ISNXS", 118 },
{ "VAE1NXS", 119 },
{ "VAE1OS", 120 },
{ "VAE1OSNXS", 121 },
{ "VAE2", 122 },
{ "VAE2IS", 123 },
{ "VAE2ISNXS", 124 },
{ "VAE2NXS", 125 },
{ "VAE2OS", 126 },
{ "VAE2OSNXS", 127 },
{ "VAE3", 128 },
{ "VAE3IS", 129 },
{ "VAE3ISNXS", 130 },
{ "VAE3NXS", 131 },
{ "VAE3OS", 132 },
{ "VAE3OSNXS", 133 },
{ "VALE1", 134 },
{ "VALE1IS", 135 },
{ "VALE1ISNXS", 136 },
{ "VALE1NXS", 137 },
{ "VALE1OS", 138 },
{ "VALE1OSNXS", 139 },
{ "VALE2", 140 },
{ "VALE2IS", 141 },
{ "VALE2ISNXS", 142 },
{ "VALE2NXS", 143 },
{ "VALE2OS", 144 },
{ "VALE2OSNXS", 145 },
{ "VALE3", 146 },
{ "VALE3IS", 147 },
{ "VALE3ISNXS", 148 },
{ "VALE3NXS", 149 },
{ "VALE3OS", 150 },
{ "VALE3OSNXS", 151 },
{ "VMALLE1", 152 },
{ "VMALLE1IS", 153 },
{ "VMALLE1ISNXS", 154 },
{ "VMALLE1NXS", 155 },
{ "VMALLE1OS", 156 },
{ "VMALLE1OSNXS", 157 },
{ "VMALLS12E1", 158 },
{ "VMALLS12E1IS", 159 },
{ "VMALLS12E1ISNXS", 160 },
{ "VMALLS12E1NXS", 161 },
{ "VMALLS12E1OS", 162 },
{ "VMALLS12E1OSNXS", 163 },
{ "VMALLWS2E1", 164 },
{ "VMALLWS2E1IS", 165 },
{ "VMALLWS2E1ISNXS", 166 },
{ "VMALLWS2E1NXS", 167 },
{ "VMALLWS2E1OS", 168 },
{ "VMALLWS2E1OSNXS", 169 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &TLBITable[Idx->_index];
}
#endif
#ifdef GET_AT_DECL
const AT *lookupATByName(StringRef Name);
const AT *lookupATByEncoding(uint16_t Encoding);
#endif
#ifdef GET_AT_IMPL
constexpr AT ATsList[] = {
{ "S12E0R", 0x23C6, {} },
{ "S12E0W", 0x23C7, {} },
{ "S12E1R", 0x23C4, {} },
{ "S12E1W", 0x23C5, {} },
{ "S1E0R", 0x3C2, {} },
{ "S1E0W", 0x3C3, {} },
{ "S1E1A", 0x3CA, {} },
{ "S1E1R", 0x3C0, {} },
{ "S1E1RP", 0x3C8, {AArch64::FeaturePAN_RWV} },
{ "S1E1W", 0x3C1, {} },
{ "S1E1WP", 0x3C9, {AArch64::FeaturePAN_RWV} },
{ "S1E2A", 0x23CA, {} },
{ "S1E2R", 0x23C0, {} },
{ "S1E2W", 0x23C1, {} },
{ "S1E3A", 0x33CA, {} },
{ "S1E3R", 0x33C0, {} },
{ "S1E3W", 0x33C1, {} },
};
const AT *lookupATByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "S12E0R", 0 },
{ "S12E0W", 1 },
{ "S12E1R", 2 },
{ "S12E1W", 3 },
{ "S1E0R", 4 },
{ "S1E0W", 5 },
{ "S1E1A", 6 },
{ "S1E1R", 7 },
{ "S1E1RP", 8 },
{ "S1E1W", 9 },
{ "S1E1WP", 10 },
{ "S1E2A", 11 },
{ "S1E2R", 12 },
{ "S1E2W", 13 },
{ "S1E3A", 14 },
{ "S1E3R", 15 },
{ "S1E3W", 16 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &ATsList[Idx->_index];
}
const AT *lookupATByEncoding(uint16_t Encoding) {
struct IndexType {
uint16_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x3C0, 7 },
{ 0x3C1, 9 },
{ 0x3C2, 4 },
{ 0x3C3, 5 },
{ 0x3C8, 8 },
{ 0x3C9, 10 },
{ 0x3CA, 6 },
{ 0x23C0, 12 },
{ 0x23C1, 13 },
{ 0x23C4, 2 },
{ 0x23C5, 3 },
{ 0x23C6, 0 },
{ 0x23C7, 1 },
{ 0x23CA, 11 },
{ 0x33C0, 15 },
{ 0x33C1, 16 },
{ 0x33CA, 14 },
};
struct KeyType {
uint16_t Encoding;
};
KeyType Key = {Encoding};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Encoding != Idx->Encoding)
return nullptr;
return &ATsList[Idx->_index];
}
#endif
#ifdef GET_BTI_DECL
const BTI *lookupBTIByName(StringRef Name);
const BTI *lookupBTIByEncoding(uint8_t Encoding);
#endif
#ifdef GET_BTI_IMPL
constexpr BTI BTIsList[] = {
{ "c", 0x2 },
{ "j", 0x4 },
{ "jc", 0x6 },
};
const BTI *lookupBTIByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "C", 0 },
{ "J", 1 },
{ "JC", 2 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &BTIsList[Idx->_index];
}
const BTI *lookupBTIByEncoding(uint8_t Encoding) {
struct IndexType {
uint8_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x2, 0 },
{ 0x4, 1 },
{ 0x6, 2 },
};
struct KeyType {
uint8_t Encoding;
};
KeyType Key = {Encoding};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Encoding != Idx->Encoding)
return nullptr;
return &BTIsList[Idx->_index];
}
#endif
#ifdef GET_DB_DECL
const DB *lookupDBByName(StringRef Name);
const DB *lookupDBByEncoding(uint8_t Encoding);
#endif
#ifdef GET_DB_IMPL
constexpr DB DBsList[] = {
{ "ish", 0xB },
{ "ishld", 0x9 },
{ "ishst", 0xA },
{ "ld", 0xD },
{ "nsh", 0x7 },
{ "nshld", 0x5 },
{ "nshst", 0x6 },
{ "osh", 0x3 },
{ "oshld", 0x1 },
{ "oshst", 0x2 },
{ "st", 0xE },
{ "sy", 0xF },
};
const DB *lookupDBByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "ISH", 0 },
{ "ISHLD", 1 },
{ "ISHST", 2 },
{ "LD", 3 },
{ "NSH", 4 },
{ "NSHLD", 5 },
{ "NSHST", 6 },
{ "OSH", 7 },
{ "OSHLD", 8 },
{ "OSHST", 9 },
{ "ST", 10 },
{ "SY", 11 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &DBsList[Idx->_index];
}
const DB *lookupDBByEncoding(uint8_t Encoding) {
struct IndexType {
uint8_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x1, 8 },
{ 0x2, 9 },
{ 0x3, 7 },
{ 0x5, 5 },
{ 0x6, 6 },
{ 0x7, 4 },
{ 0x9, 1 },
{ 0xA, 2 },
{ 0xB, 0 },
{ 0xD, 3 },
{ 0xE, 10 },
{ 0xF, 11 },
};
struct KeyType {
uint8_t Encoding;
};
KeyType Key = {Encoding};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Encoding != Idx->Encoding)
return nullptr;
return &DBsList[Idx->_index];
}
#endif
#ifdef GET_DBNXS_DECL
const DBnXS *lookupDBnXSByName(StringRef Name);
const DBnXS *lookupDBnXSByEncoding(uint8_t Encoding);
const DBnXS *lookupDBnXSByImmValue(uint8_t ImmValue);
#endif
#ifdef GET_DBNXS_IMPL
constexpr DBnXS DBnXSsList[] = {
{ "ishnxs", 0xB, 0x18, {AArch64::FeatureXS} },
{ "nshnxs", 0x7, 0x14, {AArch64::FeatureXS} },
{ "oshnxs", 0x3, 0x10, {AArch64::FeatureXS} },
{ "synxs", 0xF, 0x1C, {AArch64::FeatureXS} },
};
const DBnXS *lookupDBnXSByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "ISHNXS", 0 },
{ "NSHNXS", 1 },
{ "OSHNXS", 2 },
{ "SYNXS", 3 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &DBnXSsList[Idx->_index];
}
const DBnXS *lookupDBnXSByEncoding(uint8_t Encoding) {
struct IndexType {
uint8_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x3, 2 },
{ 0x7, 1 },
{ 0xB, 0 },
{ 0xF, 3 },
};
struct KeyType {
uint8_t Encoding;
};
KeyType Key = {Encoding};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Encoding != Idx->Encoding)
return nullptr;
return &DBnXSsList[Idx->_index];
}
const DBnXS *lookupDBnXSByImmValue(uint8_t ImmValue) {
struct IndexType {
uint8_t ImmValue;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x10, 2 },
{ 0x14, 1 },
{ 0x18, 0 },
{ 0x1C, 3 },
};
struct KeyType {
uint8_t ImmValue;
};
KeyType Key = {ImmValue};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
if (LHS.ImmValue < RHS.ImmValue)
return true;
if (LHS.ImmValue > RHS.ImmValue)
return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.ImmValue != Idx->ImmValue)
return nullptr;
return &DBnXSsList[Idx->_index];
}
#endif
#ifdef GET_DC_DECL
const DC *lookupDCByName(StringRef Name);
const DC *lookupDCByEncoding(uint16_t Encoding);
#endif
#ifdef GET_DC_IMPL
constexpr DC DCsList[] = {
{ "CGDSW", 0x3D6, {AArch64::FeatureMTE} },
{ "CGDVAC", 0x1BD5, {AArch64::FeatureMTE} },
{ "CGDVADP", 0x1BED, {AArch64::FeatureMTE} },
{ "CGDVAP", 0x1BE5, {AArch64::FeatureMTE} },
{ "CGSW", 0x3D4, {AArch64::FeatureMTE} },
{ "CGVAC", 0x1BD3, {AArch64::FeatureMTE} },
{ "CGVADP", 0x1BEB, {AArch64::FeatureMTE} },
{ "CGVAP", 0x1BE3, {AArch64::FeatureMTE} },
{ "CIGDPAE", 0x23F7, {AArch64::FeatureMEC} },
{ "CIGDSW", 0x3F6, {AArch64::FeatureMTE} },
{ "CIGDVAC", 0x1BF5, {AArch64::FeatureMTE} },
{ "CIGSW", 0x3F4, {AArch64::FeatureMTE} },
{ "CIGVAC", 0x1BF3, {AArch64::FeatureMTE} },
{ "CIPAE", 0x23F0, {AArch64::FeatureMEC} },
{ "CISW", 0x3F2, {} },
{ "CIVAC", 0x1BF1, {} },
{ "CSW", 0x3D2, {} },
{ "CVAC", 0x1BD1, {} },
{ "CVADP", 0x1BE9, {AArch64::FeatureCacheDeepPersist} },
{ "CVAP", 0x1BE1, {AArch64::FeatureCCPP} },
{ "CVAU", 0x1BD9, {} },
{ "GVA", 0x1BA3, {AArch64::FeatureMTE} },
{ "GZVA", 0x1BA4, {AArch64::FeatureMTE} },
{ "IGDSW", 0x3B6, {AArch64::FeatureMTE} },
{ "IGDVAC", 0x3B5, {AArch64::FeatureMTE} },
{ "IGSW", 0x3B4, {AArch64::FeatureMTE} },
{ "IGVAC", 0x3B3, {AArch64::FeatureMTE} },
{ "ISW", 0x3B2, {} },
{ "IVAC", 0x3B1, {} },
{ "ZVA", 0x1BA1, {} },
};
const DC *lookupDCByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "CGDSW", 0 },
{ "CGDVAC", 1 },
{ "CGDVADP", 2 },
{ "CGDVAP", 3 },
{ "CGSW", 4 },
{ "CGVAC", 5 },
{ "CGVADP", 6 },
{ "CGVAP", 7 },
{ "CIGDPAE", 8 },
{ "CIGDSW", 9 },
{ "CIGDVAC", 10 },
{ "CIGSW", 11 },
{ "CIGVAC", 12 },
{ "CIPAE", 13 },
{ "CISW", 14 },
{ "CIVAC", 15 },
{ "CSW", 16 },
{ "CVAC", 17 },
{ "CVADP", 18 },
{ "CVAP", 19 },
{ "CVAU", 20 },
{ "GVA", 21 },
{ "GZVA", 22 },
{ "IGDSW", 23 },
{ "IGDVAC", 24 },
{ "IGSW", 25 },
{ "IGVAC", 26 },
{ "ISW", 27 },
{ "IVAC", 28 },
{ "ZVA", 29 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &DCsList[Idx->_index];
}
const DC *lookupDCByEncoding(uint16_t Encoding) {
struct IndexType {
uint16_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x3B1, 28 },
{ 0x3B2, 27 },
{ 0x3B3, 26 },
{ 0x3B4, 25 },
{ 0x3B5, 24 },
{ 0x3B6, 23 },
{ 0x3D2, 16 },
{ 0x3D4, 4 },
{ 0x3D6, 0 },
{ 0x3F2, 14 },
{ 0x3F4, 11 },
{ 0x3F6, 9 },
{ 0x1BA1, 29 },
{ 0x1BA3, 21 },
{ 0x1BA4, 22 },
{ 0x1BD1, 17 },
{ 0x1BD3, 5 },
{ 0x1BD5, 1 },
{ 0x1BD9, 20 },
{ 0x1BE1, 19 },
{ 0x1BE3, 7 },
{ 0x1BE5, 3 },
{ 0x1BE9, 18 },
{ 0x1BEB, 6 },
{ 0x1BED, 2 },
{ 0x1BF1, 15 },
{ 0x1BF3, 12 },
{ 0x1BF5, 10 },
{ 0x23F0, 13 },
{ 0x23F7, 8 },
};
struct KeyType {
uint16_t Encoding;
};
KeyType Key = {Encoding};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Encoding != Idx->Encoding)
return nullptr;
return &DCsList[Idx->_index];
}
#endif
#ifdef GET_EXACTFPIMM_DECL
const ExactFPImm *lookupExactFPImmByEnum(uint8_t Enum);
const ExactFPImm *lookupExactFPImmByRepr(StringRef Repr);
#endif
#ifdef GET_EXACTFPIMM_IMPL
constexpr ExactFPImm ExactFPImmsList[] = {
{ "half", 0x1, "0.5" },
{ "one", 0x2, "1.0" },
{ "two", 0x3, "2.0" },
{ "zero", 0x0, "0.0" },
};
const ExactFPImm *lookupExactFPImmByEnum(uint8_t Enum) {
struct IndexType {
uint8_t Enum;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x0, 3 },
{ 0x1, 0 },
{ 0x2, 1 },
{ 0x3, 2 },
};
if ((Enum < 0x0) ||
(Enum > 0x3))
return nullptr;
auto Table = ArrayRef(Index);
size_t Idx = Enum - 0x0;
return &ExactFPImmsList[Table[Idx]._index];
}
const ExactFPImm *lookupExactFPImmByRepr(StringRef Repr) {
struct IndexType {
const char * Repr;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "0.0", 3 },
{ "0.5", 0 },
{ "1.0", 1 },
{ "2.0", 2 },
};
struct KeyType {
std::string Repr;
};
KeyType Key = {Repr.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpRepr = StringRef(LHS.Repr).compare(RHS.Repr);
if (CmpRepr < 0) return true;
if (CmpRepr > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Repr != Idx->Repr)
return nullptr;
return &ExactFPImmsList[Idx->_index];
}
#endif
#ifdef GET_IC_DECL
const IC *lookupICByName(StringRef Name);
const IC *lookupICByEncoding(uint16_t Encoding);
#endif
#ifdef GET_IC_IMPL
constexpr IC ICsList[] = {
{ "IALLU", 0x3A8, false },
{ "IALLUIS", 0x388, false },
{ "IVAU", 0x1BA9, true },
};
const IC *lookupICByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "IALLU", 0 },
{ "IALLUIS", 1 },
{ "IVAU", 2 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &ICsList[Idx->_index];
}
const IC *lookupICByEncoding(uint16_t Encoding) {
struct IndexType {
uint16_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x388, 1 },
{ 0x3A8, 0 },
{ 0x1BA9, 2 },
};
struct KeyType {
uint16_t Encoding;
};
KeyType Key = {Encoding};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Encoding != Idx->Encoding)
return nullptr;
return &ICsList[Idx->_index];
}
#endif
#ifdef GET_ISB_DECL
const ISB *lookupISBByName(StringRef Name);
const ISB *lookupISBByEncoding(uint8_t Encoding);
#endif
#ifdef GET_ISB_IMPL
constexpr ISB ISBsList[] = {
{ "sy", 0xF },
};
const ISB *lookupISBByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "SY", 0 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &ISBsList[Idx->_index];
}
const ISB *lookupISBByEncoding(uint8_t Encoding) {
struct IndexType {
uint8_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0xF, 0 },
};
if ((Encoding < 0xF) ||
(Encoding > 0xF))
return nullptr;
auto Table = ArrayRef(Index);
size_t Idx = Encoding - 0xF;
return &ISBsList[Table[Idx]._index];
}
#endif
#ifdef GET_PRFM_DECL
const PRFM *lookupPRFMByName(StringRef Name);
const PRFM *lookupPRFMByEncoding(uint8_t Encoding);
#endif
#ifdef GET_PRFM_IMPL
constexpr PRFM PRFMsList[] = {
{ "pldl1keep", 0x0, {} },
{ "pldl1strm", 0x1, {} },
{ "pldl2keep", 0x2, {} },
{ "pldl2strm", 0x3, {} },
{ "pldl3keep", 0x4, {} },
{ "pldl3strm", 0x5, {} },
{ "pldslckeep", 0x6, {AArch64::FeaturePRFM_SLC} },
{ "pldslcstrm", 0x7, {AArch64::FeaturePRFM_SLC} },
{ "plil1keep", 0x8, {} },
{ "plil1strm", 0x9, {} },
{ "plil2keep", 0xA, {} },
{ "plil2strm", 0xB, {} },
{ "plil3keep", 0xC, {} },
{ "plil3strm", 0xD, {} },
{ "plislckeep", 0xE, {AArch64::FeaturePRFM_SLC} },
{ "plislcstrm", 0xF, {AArch64::FeaturePRFM_SLC} },
{ "pstl1keep", 0x10, {} },
{ "pstl1strm", 0x11, {} },
{ "pstl2keep", 0x12, {} },
{ "pstl2strm", 0x13, {} },
{ "pstl3keep", 0x14, {} },
{ "pstl3strm", 0x15, {} },
{ "pstslckeep", 0x16, {AArch64::FeaturePRFM_SLC} },
{ "pstslcstrm", 0x17, {AArch64::FeaturePRFM_SLC} },
};
const PRFM *lookupPRFMByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "PLDL1KEEP", 0 },
{ "PLDL1STRM", 1 },
{ "PLDL2KEEP", 2 },
{ "PLDL2STRM", 3 },
{ "PLDL3KEEP", 4 },
{ "PLDL3STRM", 5 },
{ "PLDSLCKEEP", 6 },
{ "PLDSLCSTRM", 7 },
{ "PLIL1KEEP", 8 },
{ "PLIL1STRM", 9 },
{ "PLIL2KEEP", 10 },
{ "PLIL2STRM", 11 },
{ "PLIL3KEEP", 12 },
{ "PLIL3STRM", 13 },
{ "PLISLCKEEP", 14 },
{ "PLISLCSTRM", 15 },
{ "PSTL1KEEP", 16 },
{ "PSTL1STRM", 17 },
{ "PSTL2KEEP", 18 },
{ "PSTL2STRM", 19 },
{ "PSTL3KEEP", 20 },
{ "PSTL3STRM", 21 },
{ "PSTSLCKEEP", 22 },
{ "PSTSLCSTRM", 23 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &PRFMsList[Idx->_index];
}
const PRFM *lookupPRFMByEncoding(uint8_t Encoding) {
struct IndexType {
uint8_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x0, 0 },
{ 0x1, 1 },
{ 0x2, 2 },
{ 0x3, 3 },
{ 0x4, 4 },
{ 0x5, 5 },
{ 0x6, 6 },
{ 0x7, 7 },
{ 0x8, 8 },
{ 0x9, 9 },
{ 0xA, 10 },
{ 0xB, 11 },
{ 0xC, 12 },
{ 0xD, 13 },
{ 0xE, 14 },
{ 0xF, 15 },
{ 0x10, 16 },
{ 0x11, 17 },
{ 0x12, 18 },
{ 0x13, 19 },
{ 0x14, 20 },
{ 0x15, 21 },
{ 0x16, 22 },
{ 0x17, 23 },
};
if ((Encoding < 0x0) ||
(Encoding > 0x17))
return nullptr;
auto Table = ArrayRef(Index);
size_t Idx = Encoding - 0x0;
return &PRFMsList[Table[Idx]._index];
}
#endif
#ifdef GET_PSB_DECL
const PSB *lookupPSBByName(StringRef Name);
const PSB *lookupPSBByEncoding(uint8_t Encoding);
#endif
#ifdef GET_PSB_IMPL
constexpr PSB PSBsList[] = {
{ "csync", 0x11 },
};
const PSB *lookupPSBByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "CSYNC", 0 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &PSBsList[Idx->_index];
}
const PSB *lookupPSBByEncoding(uint8_t Encoding) {
struct IndexType {
uint8_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x11, 0 },
};
if ((Encoding < 0x11) ||
(Encoding > 0x11))
return nullptr;
auto Table = ArrayRef(Index);
size_t Idx = Encoding - 0x11;
return &PSBsList[Table[Idx]._index];
}
#endif
#ifdef GET_PSTATEIMM0_1_DECL
const PStateImm0_1 *lookupPStateImm0_1ByName(StringRef Name);
const PStateImm0_1 *lookupPStateImm0_1ByEncoding(uint16_t Encoding);
#endif
#ifdef GET_PSTATEIMM0_1_IMPL
constexpr PStateImm0_1 PStateImm0_1sList[] = {
{ "ALLINT", 0x8, {AArch64::FeatureNMI} },
{ "PM", 0x48, {} },
};
const PStateImm0_1 *lookupPStateImm0_1ByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "ALLINT", 0 },
{ "PM", 1 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &PStateImm0_1sList[Idx->_index];
}
const PStateImm0_1 *lookupPStateImm0_1ByEncoding(uint16_t Encoding) {
struct IndexType {
uint16_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x8, 0 },
{ 0x48, 1 },
};
struct KeyType {
uint16_t Encoding;
};
KeyType Key = {Encoding};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Encoding != Idx->Encoding)
return nullptr;
return &PStateImm0_1sList[Idx->_index];
}
#endif
#ifdef GET_PSTATEIMM0_15_DECL
const PStateImm0_15 *lookupPStateImm0_15ByName(StringRef Name);
const PStateImm0_15 *lookupPStateImm0_15ByEncoding(uint8_t Encoding);
#endif
#ifdef GET_PSTATEIMM0_15_IMPL
constexpr PStateImm0_15 PStateImm0_15sList[] = {
{ "DAIFClr", 0x1F, {} },
{ "DAIFSet", 0x1E, {} },
{ "DIT", 0x1A, {AArch64::FeatureDIT} },
{ "PAN", 0x4, {AArch64::FeaturePAN} },
{ "SPSel", 0x5, {} },
{ "SSBS", 0x19, {AArch64::FeatureSSBS} },
{ "TCO", 0x1C, {AArch64::FeatureMTE} },
{ "UAO", 0x3, {AArch64::FeaturePsUAO} },
};
const PStateImm0_15 *lookupPStateImm0_15ByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "DAIFCLR", 0 },
{ "DAIFSET", 1 },
{ "DIT", 2 },
{ "PAN", 3 },
{ "SPSEL", 4 },
{ "SSBS", 5 },
{ "TCO", 6 },
{ "UAO", 7 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &PStateImm0_15sList[Idx->_index];
}
const PStateImm0_15 *lookupPStateImm0_15ByEncoding(uint8_t Encoding) {
struct IndexType {
uint8_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x3, 7 },
{ 0x4, 3 },
{ 0x5, 4 },
{ 0x19, 5 },
{ 0x1A, 2 },
{ 0x1C, 6 },
{ 0x1E, 1 },
{ 0x1F, 0 },
};
struct KeyType {
uint8_t Encoding;
};
KeyType Key = {Encoding};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Encoding != Idx->Encoding)
return nullptr;
return &PStateImm0_15sList[Idx->_index];
}
#endif
#ifdef GET_RPRFM_DECL
const RPRFM *lookupRPRFMByName(StringRef Name);
const RPRFM *lookupRPRFMByEncoding(uint8_t Encoding);
#endif
#ifdef GET_RPRFM_IMPL
constexpr RPRFM RPRFMsList[] = {
{ "pldkeep", 0x0, {} },
{ "pldstrm", 0x4, {} },
{ "pstkeep", 0x1, {} },
{ "pststrm", 0x5, {} },
};
const RPRFM *lookupRPRFMByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "PLDKEEP", 0 },
{ "PLDSTRM", 1 },
{ "PSTKEEP", 2 },
{ "PSTSTRM", 3 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &RPRFMsList[Idx->_index];
}
const RPRFM *lookupRPRFMByEncoding(uint8_t Encoding) {
struct IndexType {
uint8_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x0, 0 },
{ 0x1, 2 },
{ 0x4, 1 },
{ 0x5, 3 },
};
struct KeyType {
uint8_t Encoding;
};
KeyType Key = {Encoding};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Encoding != Idx->Encoding)
return nullptr;
return &RPRFMsList[Idx->_index];
}
#endif
#ifdef GET_SVCR_DECL
const SVCR *lookupSVCRByName(StringRef Name);
const SVCR *lookupSVCRByEncoding(uint8_t Encoding);
#endif
#ifdef GET_SVCR_IMPL
constexpr SVCR SVCRsList[] = {
{ "SVCRSM", 0x1, {AArch64::FeatureSME} },
{ "SVCRSMZA", 0x3, {AArch64::FeatureSME} },
{ "SVCRZA", 0x2, {AArch64::FeatureSME} },
};
const SVCR *lookupSVCRByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "SVCRSM", 0 },
{ "SVCRSMZA", 1 },
{ "SVCRZA", 2 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &SVCRsList[Idx->_index];
}
const SVCR *lookupSVCRByEncoding(uint8_t Encoding) {
struct IndexType {
uint8_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x1, 0 },
{ 0x2, 2 },
{ 0x3, 1 },
};
if ((Encoding < 0x1) ||
(Encoding > 0x3))
return nullptr;
auto Table = ArrayRef(Index);
size_t Idx = Encoding - 0x1;
return &SVCRsList[Table[Idx]._index];
}
#endif
#ifdef GET_SVEPREDPAT_DECL
const SVEPREDPAT *lookupSVEPREDPATByName(StringRef Name);
const SVEPREDPAT *lookupSVEPREDPATByEncoding(uint8_t Encoding);
#endif
#ifdef GET_SVEPREDPAT_IMPL
constexpr SVEPREDPAT SVEPREDPATsList[] = {
{ "all", 0x1F },
{ "mul3", 0x1E },
{ "mul4", 0x1D },
{ "pow2", 0x0 },
{ "vl1", 0x1 },
{ "vl128", 0xC },
{ "vl16", 0x9 },
{ "vl2", 0x2 },
{ "vl256", 0xD },
{ "vl3", 0x3 },
{ "vl32", 0xA },
{ "vl4", 0x4 },
{ "vl5", 0x5 },
{ "vl6", 0x6 },
{ "vl64", 0xB },
{ "vl7", 0x7 },
{ "vl8", 0x8 },
};
const SVEPREDPAT *lookupSVEPREDPATByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "ALL", 0 },
{ "MUL3", 1 },
{ "MUL4", 2 },
{ "POW2", 3 },
{ "VL1", 4 },
{ "VL128", 5 },
{ "VL16", 6 },
{ "VL2", 7 },
{ "VL256", 8 },
{ "VL3", 9 },
{ "VL32", 10 },
{ "VL4", 11 },
{ "VL5", 12 },
{ "VL6", 13 },
{ "VL64", 14 },
{ "VL7", 15 },
{ "VL8", 16 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &SVEPREDPATsList[Idx->_index];
}
const SVEPREDPAT *lookupSVEPREDPATByEncoding(uint8_t Encoding) {
struct IndexType {
uint8_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x0, 3 },
{ 0x1, 4 },
{ 0x2, 7 },
{ 0x3, 9 },
{ 0x4, 11 },
{ 0x5, 12 },
{ 0x6, 13 },
{ 0x7, 15 },
{ 0x8, 16 },
{ 0x9, 6 },
{ 0xA, 10 },
{ 0xB, 14 },
{ 0xC, 5 },
{ 0xD, 8 },
{ 0x1D, 2 },
{ 0x1E, 1 },
{ 0x1F, 0 },
};
struct KeyType {
uint8_t Encoding;
};
KeyType Key = {Encoding};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Encoding != Idx->Encoding)
return nullptr;
return &SVEPREDPATsList[Idx->_index];
}
#endif
#ifdef GET_SVEPRFM_DECL
const SVEPRFM *lookupSVEPRFMByName(StringRef Name);
const SVEPRFM *lookupSVEPRFMByEncoding(uint8_t Encoding);
#endif
#ifdef GET_SVEPRFM_IMPL
constexpr SVEPRFM SVEPRFMsList[] = {
{ "pldl1keep", 0x0, {AArch64::FeatureSVE} },
{ "pldl1strm", 0x1, {AArch64::FeatureSVE} },
{ "pldl2keep", 0x2, {AArch64::FeatureSVE} },
{ "pldl2strm", 0x3, {AArch64::FeatureSVE} },
{ "pldl3keep", 0x4, {AArch64::FeatureSVE} },
{ "pldl3strm", 0x5, {AArch64::FeatureSVE} },
{ "pstl1keep", 0x8, {AArch64::FeatureSVE} },
{ "pstl1strm", 0x9, {AArch64::FeatureSVE} },
{ "pstl2keep", 0xA, {AArch64::FeatureSVE} },
{ "pstl2strm", 0xB, {AArch64::FeatureSVE} },
{ "pstl3keep", 0xC, {AArch64::FeatureSVE} },
{ "pstl3strm", 0xD, {AArch64::FeatureSVE} },
};
const SVEPRFM *lookupSVEPRFMByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "PLDL1KEEP", 0 },
{ "PLDL1STRM", 1 },
{ "PLDL2KEEP", 2 },
{ "PLDL2STRM", 3 },
{ "PLDL3KEEP", 4 },
{ "PLDL3STRM", 5 },
{ "PSTL1KEEP", 6 },
{ "PSTL1STRM", 7 },
{ "PSTL2KEEP", 8 },
{ "PSTL2STRM", 9 },
{ "PSTL3KEEP", 10 },
{ "PSTL3STRM", 11 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &SVEPRFMsList[Idx->_index];
}
const SVEPRFM *lookupSVEPRFMByEncoding(uint8_t Encoding) {
struct IndexType {
uint8_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x0, 0 },
{ 0x1, 1 },
{ 0x2, 2 },
{ 0x3, 3 },
{ 0x4, 4 },
{ 0x5, 5 },
{ 0x8, 6 },
{ 0x9, 7 },
{ 0xA, 8 },
{ 0xB, 9 },
{ 0xC, 10 },
{ 0xD, 11 },
};
struct KeyType {
uint8_t Encoding;
};
KeyType Key = {Encoding};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Encoding != Idx->Encoding)
return nullptr;
return &SVEPRFMsList[Idx->_index];
}
#endif
#ifdef GET_SVEVECLENSPECIFIER_DECL
const SVEVECLENSPECIFIER *lookupSVEVECLENSPECIFIERByName(StringRef Name);
const SVEVECLENSPECIFIER *lookupSVEVECLENSPECIFIERByEncoding(uint8_t Encoding);
#endif
#ifdef GET_SVEVECLENSPECIFIER_IMPL
constexpr SVEVECLENSPECIFIER SVEVECLENSPECIFIERsList[] = {
{ "vlx2", 0x0 },
{ "vlx4", 0x1 },
};
const SVEVECLENSPECIFIER *lookupSVEVECLENSPECIFIERByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "VLX2", 0 },
{ "VLX4", 1 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &SVEVECLENSPECIFIERsList[Idx->_index];
}
const SVEVECLENSPECIFIER *lookupSVEVECLENSPECIFIERByEncoding(uint8_t Encoding) {
struct IndexType {
uint8_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x0, 0 },
{ 0x1, 1 },
};
if ((Encoding < 0x0) ||
(Encoding > 0x1))
return nullptr;
auto Table = ArrayRef(Index);
size_t Idx = Encoding - 0x0;
return &SVEVECLENSPECIFIERsList[Table[Idx]._index];
}
#endif
#ifdef GET_SYSREG_DECL
const SysReg *lookupSysRegByName(StringRef Name);
const SysReg *lookupSysRegByEncoding(uint16_t Encoding);
#endif
#ifdef GET_SYSREG_IMPL
constexpr SysReg SysRegsList[] = {
{ "ACCDATA_EL1", "ACCDATA_EL1", 0xC685, true, true, {AArch64::FeatureLS64} },
{ "ACTLR_EL1", "ACTLR_EL1", 0xC081, true, true, {} },
{ "ACTLR_EL12", "ACTLR_EL12", 0xE881, true, true, {} },
{ "ACTLR_EL2", "ACTLR_EL2", 0xE081, true, true, {} },
{ "ACTLR_EL3", "ACTLR_EL3", 0xF081, true, true, {} },
{ "AFSR0_EL1", "AFSR0_EL1", 0xC288, true, true, {} },
{ "AFSR0_EL12", "AFSR0_EL12", 0xEA88, true, true, {AArch64::FeatureVH} },
{ "AFSR0_EL2", "AFSR0_EL2", 0xE288, true, true, {} },
{ "AFSR0_EL3", "AFSR0_EL3", 0xF288, true, true, {} },
{ "AFSR1_EL1", "AFSR1_EL1", 0xC289, true, true, {} },
{ "AFSR1_EL12", "AFSR1_EL12", 0xEA89, true, true, {AArch64::FeatureVH} },
{ "AFSR1_EL2", "AFSR1_EL2", 0xE289, true, true, {} },
{ "AFSR1_EL3", "AFSR1_EL3", 0xF289, true, true, {} },
{ "AIDR_EL1", "AIDR_EL1", 0xC807, true, false, {} },
{ "ALLINT", "ALLINT", 0xC218, true, true, {AArch64::FeatureNMI} },
{ "AMAIR2_EL1", "AMAIR2_EL1", 0xC519, true, true, {} },
{ "AMAIR2_EL12", "AMAIR2_EL12", 0xED19, true, true, {} },
{ "AMAIR2_EL2", "AMAIR2_EL2", 0xE519, true, true, {} },
{ "AMAIR2_EL3", "AMAIR2_EL3", 0xF519, true, true, {} },
{ "AMAIR_EL1", "AMAIR_EL1", 0xC518, true, true, {} },
{ "AMAIR_EL12", "AMAIR_EL12", 0xED18, true, true, {AArch64::FeatureVH} },
{ "AMAIR_EL2", "AMAIR_EL2", 0xE518, true, true, {} },
{ "AMAIR_EL3", "AMAIR_EL3", 0xF518, true, true, {} },
{ "AMCFGR_EL0", "AMCFGR_EL0", 0xDE91, true, false, {AArch64::FeatureAM} },
{ "AMCG1IDR_EL0", "AMCG1IDR_EL0", 0xDE96, true, false, {AArch64::FeatureAMVS} },
{ "AMCGCR_EL0", "AMCGCR_EL0", 0xDE92, true, false, {AArch64::FeatureAM} },
{ "AMCNTENCLR0_EL0", "AMCNTENCLR0_EL0", 0xDE94, true, true, {AArch64::FeatureAM} },
{ "AMCNTENCLR1_EL0", "AMCNTENCLR1_EL0", 0xDE98, true, true, {AArch64::FeatureAM} },
{ "AMCNTENSET0_EL0", "AMCNTENSET0_EL0", 0xDE95, true, true, {AArch64::FeatureAM} },
{ "AMCNTENSET1_EL0", "AMCNTENSET1_EL0", 0xDE99, true, true, {AArch64::FeatureAM} },
{ "AMCR_EL0", "AMCR_EL0", 0xDE90, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR00_EL0", "AMEVCNTR00_EL0", 0xDEA0, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR01_EL0", "AMEVCNTR01_EL0", 0xDEA1, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR02_EL0", "AMEVCNTR02_EL0", 0xDEA2, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR03_EL0", "AMEVCNTR03_EL0", 0xDEA3, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR10_EL0", "AMEVCNTR10_EL0", 0xDEE0, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR110_EL0", "AMEVCNTR110_EL0", 0xDEEA, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR111_EL0", "AMEVCNTR111_EL0", 0xDEEB, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR112_EL0", "AMEVCNTR112_EL0", 0xDEEC, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR113_EL0", "AMEVCNTR113_EL0", 0xDEED, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR114_EL0", "AMEVCNTR114_EL0", 0xDEEE, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR115_EL0", "AMEVCNTR115_EL0", 0xDEEF, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR11_EL0", "AMEVCNTR11_EL0", 0xDEE1, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR12_EL0", "AMEVCNTR12_EL0", 0xDEE2, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR13_EL0", "AMEVCNTR13_EL0", 0xDEE3, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR14_EL0", "AMEVCNTR14_EL0", 0xDEE4, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR15_EL0", "AMEVCNTR15_EL0", 0xDEE5, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR16_EL0", "AMEVCNTR16_EL0", 0xDEE6, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR17_EL0", "AMEVCNTR17_EL0", 0xDEE7, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR18_EL0", "AMEVCNTR18_EL0", 0xDEE8, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTR19_EL0", "AMEVCNTR19_EL0", 0xDEE9, true, true, {AArch64::FeatureAM} },
{ "AMEVCNTVOFF00_EL2", "AMEVCNTVOFF00_EL2", 0xE6C0, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF010_EL2", "AMEVCNTVOFF010_EL2", 0xE6CA, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF011_EL2", "AMEVCNTVOFF011_EL2", 0xE6CB, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF012_EL2", "AMEVCNTVOFF012_EL2", 0xE6CC, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF013_EL2", "AMEVCNTVOFF013_EL2", 0xE6CD, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF014_EL2", "AMEVCNTVOFF014_EL2", 0xE6CE, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF015_EL2", "AMEVCNTVOFF015_EL2", 0xE6CF, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF01_EL2", "AMEVCNTVOFF01_EL2", 0xE6C1, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF02_EL2", "AMEVCNTVOFF02_EL2", 0xE6C2, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF03_EL2", "AMEVCNTVOFF03_EL2", 0xE6C3, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF04_EL2", "AMEVCNTVOFF04_EL2", 0xE6C4, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF05_EL2", "AMEVCNTVOFF05_EL2", 0xE6C5, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF06_EL2", "AMEVCNTVOFF06_EL2", 0xE6C6, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF07_EL2", "AMEVCNTVOFF07_EL2", 0xE6C7, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF08_EL2", "AMEVCNTVOFF08_EL2", 0xE6C8, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF09_EL2", "AMEVCNTVOFF09_EL2", 0xE6C9, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF10_EL2", "AMEVCNTVOFF10_EL2", 0xE6D0, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF110_EL2", "AMEVCNTVOFF110_EL2", 0xE6DA, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF111_EL2", "AMEVCNTVOFF111_EL2", 0xE6DB, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF112_EL2", "AMEVCNTVOFF112_EL2", 0xE6DC, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF113_EL2", "AMEVCNTVOFF113_EL2", 0xE6DD, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF114_EL2", "AMEVCNTVOFF114_EL2", 0xE6DE, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF115_EL2", "AMEVCNTVOFF115_EL2", 0xE6DF, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF11_EL2", "AMEVCNTVOFF11_EL2", 0xE6D1, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF12_EL2", "AMEVCNTVOFF12_EL2", 0xE6D2, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF13_EL2", "AMEVCNTVOFF13_EL2", 0xE6D3, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF14_EL2", "AMEVCNTVOFF14_EL2", 0xE6D4, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF15_EL2", "AMEVCNTVOFF15_EL2", 0xE6D5, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF16_EL2", "AMEVCNTVOFF16_EL2", 0xE6D6, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF17_EL2", "AMEVCNTVOFF17_EL2", 0xE6D7, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF18_EL2", "AMEVCNTVOFF18_EL2", 0xE6D8, true, true, {AArch64::FeatureAMVS} },
{ "AMEVCNTVOFF19_EL2", "AMEVCNTVOFF19_EL2", 0xE6D9, true, true, {AArch64::FeatureAMVS} },
{ "AMEVTYPER00_EL0", "AMEVTYPER00_EL0", 0xDEB0, true, false, {AArch64::FeatureAM} },
{ "AMEVTYPER01_EL0", "AMEVTYPER01_EL0", 0xDEB1, true, false, {AArch64::FeatureAM} },
{ "AMEVTYPER02_EL0", "AMEVTYPER02_EL0", 0xDEB2, true, false, {AArch64::FeatureAM} },
{ "AMEVTYPER03_EL0", "AMEVTYPER03_EL0", 0xDEB3, true, false, {AArch64::FeatureAM} },
{ "AMEVTYPER10_EL0", "AMEVTYPER10_EL0", 0xDEF0, true, true, {AArch64::FeatureAM} },
{ "AMEVTYPER110_EL0", "AMEVTYPER110_EL0", 0xDEFA, true, true, {AArch64::FeatureAM} },
{ "AMEVTYPER111_EL0", "AMEVTYPER111_EL0", 0xDEFB, true, true, {AArch64::FeatureAM} },
{ "AMEVTYPER112_EL0", "AMEVTYPER112_EL0", 0xDEFC, true, true, {AArch64::FeatureAM} },
{ "AMEVTYPER113_EL0", "AMEVTYPER113_EL0", 0xDEFD, true, true, {AArch64::FeatureAM} },
{ "AMEVTYPER114_EL0", "AMEVTYPER114_EL0", 0xDEFE, true, true, {AArch64::FeatureAM} },
{ "AMEVTYPER115_EL0", "AMEVTYPER115_EL0", 0xDEFF, true, true, {AArch64::FeatureAM} },
{ "AMEVTYPER11_EL0", "AMEVTYPER11_EL0", 0xDEF1, true, true, {AArch64::FeatureAM} },
{ "AMEVTYPER12_EL0", "AMEVTYPER12_EL0", 0xDEF2, true, true, {AArch64::FeatureAM} },
{ "AMEVTYPER13_EL0", "AMEVTYPER13_EL0", 0xDEF3, true, true, {AArch64::FeatureAM} },
{ "AMEVTYPER14_EL0", "AMEVTYPER14_EL0", 0xDEF4, true, true, {AArch64::FeatureAM} },
{ "AMEVTYPER15_EL0", "AMEVTYPER15_EL0", 0xDEF5, true, true, {AArch64::FeatureAM} },
{ "AMEVTYPER16_EL0", "AMEVTYPER16_EL0", 0xDEF6, true, true, {AArch64::FeatureAM} },
{ "AMEVTYPER17_EL0", "AMEVTYPER17_EL0", 0xDEF7, true, true, {AArch64::FeatureAM} },
{ "AMEVTYPER18_EL0", "AMEVTYPER18_EL0", 0xDEF8, true, true, {AArch64::FeatureAM} },
{ "AMEVTYPER19_EL0", "AMEVTYPER19_EL0", 0xDEF9, true, true, {AArch64::FeatureAM} },
{ "AMUSERENR_EL0", "AMUSERENR_EL0", 0xDE93, true, true, {AArch64::FeatureAM} },
{ "APDAKeyHi_EL1", "APDAKeyHi_EL1", 0xC111, true, true, {AArch64::FeaturePAuth} },
{ "APDAKeyLo_EL1", "APDAKeyLo_EL1", 0xC110, true, true, {AArch64::FeaturePAuth} },
{ "APDBKeyHi_EL1", "APDBKeyHi_EL1", 0xC113, true, true, {AArch64::FeaturePAuth} },
{ "APDBKeyLo_EL1", "APDBKeyLo_EL1", 0xC112, true, true, {AArch64::FeaturePAuth} },
{ "APGAKeyHi_EL1", "APGAKeyHi_EL1", 0xC119, true, true, {AArch64::FeaturePAuth} },
{ "APGAKeyLo_EL1", "APGAKeyLo_EL1", 0xC118, true, true, {AArch64::FeaturePAuth} },
{ "APIAKeyHi_EL1", "APIAKeyHi_EL1", 0xC109, true, true, {AArch64::FeaturePAuth} },
{ "APIAKeyLo_EL1", "APIAKeyLo_EL1", 0xC108, true, true, {AArch64::FeaturePAuth} },
{ "APIBKeyHi_EL1", "APIBKeyHi_EL1", 0xC10B, true, true, {AArch64::FeaturePAuth} },
{ "APIBKeyLo_EL1", "APIBKeyLo_EL1", 0xC10A, true, true, {AArch64::FeaturePAuth} },
{ "BRBCR_EL1", "BRBCR_EL1", 0x8C80, true, true, {AArch64::FeatureBRBE} },
{ "BRBCR_EL12", "BRBCR_EL12", 0xAC80, true, true, {AArch64::FeatureBRBE} },
{ "BRBCR_EL2", "BRBCR_EL2", 0xA480, true, true, {AArch64::FeatureBRBE} },
{ "BRBFCR_EL1", "BRBFCR_EL1", 0x8C81, true, true, {AArch64::FeatureBRBE} },
{ "BRBIDR0_EL1", "BRBIDR0_EL1", 0x8C90, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF0_EL1", "BRBINF0_EL1", 0x8C00, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF10_EL1", "BRBINF10_EL1", 0x8C50, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF11_EL1", "BRBINF11_EL1", 0x8C58, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF12_EL1", "BRBINF12_EL1", 0x8C60, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF13_EL1", "BRBINF13_EL1", 0x8C68, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF14_EL1", "BRBINF14_EL1", 0x8C70, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF15_EL1", "BRBINF15_EL1", 0x8C78, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF16_EL1", "BRBINF16_EL1", 0x8C04, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF17_EL1", "BRBINF17_EL1", 0x8C0C, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF18_EL1", "BRBINF18_EL1", 0x8C14, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF19_EL1", "BRBINF19_EL1", 0x8C1C, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF1_EL1", "BRBINF1_EL1", 0x8C08, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF20_EL1", "BRBINF20_EL1", 0x8C24, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF21_EL1", "BRBINF21_EL1", 0x8C2C, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF22_EL1", "BRBINF22_EL1", 0x8C34, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF23_EL1", "BRBINF23_EL1", 0x8C3C, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF24_EL1", "BRBINF24_EL1", 0x8C44, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF25_EL1", "BRBINF25_EL1", 0x8C4C, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF26_EL1", "BRBINF26_EL1", 0x8C54, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF27_EL1", "BRBINF27_EL1", 0x8C5C, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF28_EL1", "BRBINF28_EL1", 0x8C64, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF29_EL1", "BRBINF29_EL1", 0x8C6C, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF2_EL1", "BRBINF2_EL1", 0x8C10, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF30_EL1", "BRBINF30_EL1", 0x8C74, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF31_EL1", "BRBINF31_EL1", 0x8C7C, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF3_EL1", "BRBINF3_EL1", 0x8C18, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF4_EL1", "BRBINF4_EL1", 0x8C20, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF5_EL1", "BRBINF5_EL1", 0x8C28, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF6_EL1", "BRBINF6_EL1", 0x8C30, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF7_EL1", "BRBINF7_EL1", 0x8C38, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF8_EL1", "BRBINF8_EL1", 0x8C40, true, false, {AArch64::FeatureBRBE} },
{ "BRBINF9_EL1", "BRBINF9_EL1", 0x8C48, true, false, {AArch64::FeatureBRBE} },
{ "BRBINFINJ_EL1", "BRBINFINJ_EL1", 0x8C88, true, true, {AArch64::FeatureBRBE} },
{ "BRBSRC0_EL1", "BRBSRC0_EL1", 0x8C01, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC10_EL1", "BRBSRC10_EL1", 0x8C51, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC11_EL1", "BRBSRC11_EL1", 0x8C59, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC12_EL1", "BRBSRC12_EL1", 0x8C61, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC13_EL1", "BRBSRC13_EL1", 0x8C69, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC14_EL1", "BRBSRC14_EL1", 0x8C71, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC15_EL1", "BRBSRC15_EL1", 0x8C79, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC16_EL1", "BRBSRC16_EL1", 0x8C05, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC17_EL1", "BRBSRC17_EL1", 0x8C0D, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC18_EL1", "BRBSRC18_EL1", 0x8C15, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC19_EL1", "BRBSRC19_EL1", 0x8C1D, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC1_EL1", "BRBSRC1_EL1", 0x8C09, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC20_EL1", "BRBSRC20_EL1", 0x8C25, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC21_EL1", "BRBSRC21_EL1", 0x8C2D, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC22_EL1", "BRBSRC22_EL1", 0x8C35, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC23_EL1", "BRBSRC23_EL1", 0x8C3D, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC24_EL1", "BRBSRC24_EL1", 0x8C45, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC25_EL1", "BRBSRC25_EL1", 0x8C4D, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC26_EL1", "BRBSRC26_EL1", 0x8C55, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC27_EL1", "BRBSRC27_EL1", 0x8C5D, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC28_EL1", "BRBSRC28_EL1", 0x8C65, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC29_EL1", "BRBSRC29_EL1", 0x8C6D, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC2_EL1", "BRBSRC2_EL1", 0x8C11, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC30_EL1", "BRBSRC30_EL1", 0x8C75, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC31_EL1", "BRBSRC31_EL1", 0x8C7D, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC3_EL1", "BRBSRC3_EL1", 0x8C19, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC4_EL1", "BRBSRC4_EL1", 0x8C21, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC5_EL1", "BRBSRC5_EL1", 0x8C29, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC6_EL1", "BRBSRC6_EL1", 0x8C31, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC7_EL1", "BRBSRC7_EL1", 0x8C39, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC8_EL1", "BRBSRC8_EL1", 0x8C41, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRC9_EL1", "BRBSRC9_EL1", 0x8C49, true, false, {AArch64::FeatureBRBE} },
{ "BRBSRCINJ_EL1", "BRBSRCINJ_EL1", 0x8C89, true, true, {AArch64::FeatureBRBE} },
{ "BRBTGT0_EL1", "BRBTGT0_EL1", 0x8C02, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT10_EL1", "BRBTGT10_EL1", 0x8C52, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT11_EL1", "BRBTGT11_EL1", 0x8C5A, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT12_EL1", "BRBTGT12_EL1", 0x8C62, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT13_EL1", "BRBTGT13_EL1", 0x8C6A, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT14_EL1", "BRBTGT14_EL1", 0x8C72, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT15_EL1", "BRBTGT15_EL1", 0x8C7A, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT16_EL1", "BRBTGT16_EL1", 0x8C06, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT17_EL1", "BRBTGT17_EL1", 0x8C0E, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT18_EL1", "BRBTGT18_EL1", 0x8C16, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT19_EL1", "BRBTGT19_EL1", 0x8C1E, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT1_EL1", "BRBTGT1_EL1", 0x8C0A, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT20_EL1", "BRBTGT20_EL1", 0x8C26, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT21_EL1", "BRBTGT21_EL1", 0x8C2E, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT22_EL1", "BRBTGT22_EL1", 0x8C36, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT23_EL1", "BRBTGT23_EL1", 0x8C3E, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT24_EL1", "BRBTGT24_EL1", 0x8C46, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT25_EL1", "BRBTGT25_EL1", 0x8C4E, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT26_EL1", "BRBTGT26_EL1", 0x8C56, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT27_EL1", "BRBTGT27_EL1", 0x8C5E, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT28_EL1", "BRBTGT28_EL1", 0x8C66, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT29_EL1", "BRBTGT29_EL1", 0x8C6E, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT2_EL1", "BRBTGT2_EL1", 0x8C12, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT30_EL1", "BRBTGT30_EL1", 0x8C76, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT31_EL1", "BRBTGT31_EL1", 0x8C7E, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT3_EL1", "BRBTGT3_EL1", 0x8C1A, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT4_EL1", "BRBTGT4_EL1", 0x8C22, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT5_EL1", "BRBTGT5_EL1", 0x8C2A, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT6_EL1", "BRBTGT6_EL1", 0x8C32, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT7_EL1", "BRBTGT7_EL1", 0x8C3A, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT8_EL1", "BRBTGT8_EL1", 0x8C42, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGT9_EL1", "BRBTGT9_EL1", 0x8C4A, true, false, {AArch64::FeatureBRBE} },
{ "BRBTGTINJ_EL1", "BRBTGTINJ_EL1", 0x8C8A, true, true, {AArch64::FeatureBRBE} },
{ "BRBTS_EL1", "BRBTS_EL1", 0x8C82, true, true, {AArch64::FeatureBRBE} },
{ "CCSIDR2_EL1", "CCSIDR2_EL1", 0xC802, true, false, {AArch64::FeatureCCIDX} },
{ "CCSIDR_EL1", "CCSIDR_EL1", 0xC800, true, false, {} },
{ "CLIDR_EL1", "CLIDR_EL1", 0xC801, true, false, {} },
{ "CNTFRQ_EL0", "CNTFRQ_EL0", 0xDF00, true, true, {} },
{ "CNTHCTL_EL2", "CNTHCTL_EL2", 0xE708, true, true, {} },
{ "CNTHPS_CTL_EL2", "CNTHPS_CTL_EL2", 0xE729, true, true, {AArch64::FeatureSEL2} },
{ "CNTHPS_CVAL_EL2", "CNTHPS_CVAL_EL2", 0xE72A, true, true, {AArch64::FeatureSEL2} },
{ "CNTHPS_TVAL_EL2", "CNTHPS_TVAL_EL2", 0xE728, true, true, {AArch64::FeatureSEL2} },
{ "CNTHP_CTL_EL2", "CNTHP_CTL_EL2", 0xE711, true, true, {} },
{ "CNTHP_CVAL_EL2", "CNTHP_CVAL_EL2", 0xE712, true, true, {} },
{ "CNTHP_TVAL_EL2", "CNTHP_TVAL_EL2", 0xE710, true, true, {} },
{ "CNTHVS_CTL_EL2", "CNTHVS_CTL_EL2", 0xE721, true, true, {AArch64::FeatureSEL2} },
{ "CNTHVS_CVAL_EL2", "CNTHVS_CVAL_EL2", 0xE722, true, true, {AArch64::FeatureSEL2} },
{ "CNTHVS_TVAL_EL2", "CNTHVS_TVAL_EL2", 0xE720, true, true, {AArch64::FeatureSEL2} },
{ "CNTHV_CTL_EL2", "CNTHV_CTL_EL2", 0xE719, true, true, {AArch64::FeatureVH} },
{ "CNTHV_CVAL_EL2", "CNTHV_CVAL_EL2", 0xE71A, true, true, {AArch64::FeatureVH} },
{ "CNTHV_TVAL_EL2", "CNTHV_TVAL_EL2", 0xE718, true, true, {AArch64::FeatureVH} },
{ "CNTISCALE_EL2", "CNTISCALE_EL2", 0xE705, true, true, {AArch64::FeatureEnhancedCounterVirtualization} },
{ "CNTKCTL_EL1", "CNTKCTL_EL1", 0xC708, true, true, {} },
{ "CNTKCTL_EL12", "CNTKCTL_EL12", 0xEF08, true, true, {AArch64::FeatureVH} },
{ "CNTPCTSS_EL0", "CNTPCTSS_EL0", 0xDF05, true, false, {AArch64::FeatureEnhancedCounterVirtualization} },
{ "CNTPCT_EL0", "CNTPCT_EL0", 0xDF01, true, false, {} },
{ "CNTPOFF_EL2", "CNTPOFF_EL2", 0xE706, true, true, {AArch64::FeatureEnhancedCounterVirtualization} },
{ "CNTPS_CTL_EL1", "CNTPS_CTL_EL1", 0xFF11, true, true, {} },
{ "CNTPS_CVAL_EL1", "CNTPS_CVAL_EL1", 0xFF12, true, true, {} },
{ "CNTPS_TVAL_EL1", "CNTPS_TVAL_EL1", 0xFF10, true, true, {} },
{ "CNTP_CTL_EL0", "CNTP_CTL_EL0", 0xDF11, true, true, {} },
{ "CNTP_CTL_EL02", "CNTP_CTL_EL02", 0xEF11, true, true, {AArch64::FeatureVH} },
{ "CNTP_CVAL_EL0", "CNTP_CVAL_EL0", 0xDF12, true, true, {} },
{ "CNTP_CVAL_EL02", "CNTP_CVAL_EL02", 0xEF12, true, true, {AArch64::FeatureVH} },
{ "CNTP_TVAL_EL0", "CNTP_TVAL_EL0", 0xDF10, true, true, {} },
{ "CNTP_TVAL_EL02", "CNTP_TVAL_EL02", 0xEF10, true, true, {AArch64::FeatureVH} },
{ "CNTSCALE_EL2", "CNTSCALE_EL2", 0xE704, true, true, {AArch64::FeatureEnhancedCounterVirtualization} },
{ "CNTVCTSS_EL0", "CNTVCTSS_EL0", 0xDF06, true, false, {AArch64::FeatureEnhancedCounterVirtualization} },
{ "CNTVCT_EL0", "CNTVCT_EL0", 0xDF02, true, false, {} },
{ "CNTVFRQ_EL2", "CNTVFRQ_EL2", 0xE707, true, true, {AArch64::FeatureEnhancedCounterVirtualization} },
{ "CNTVOFF_EL2", "CNTVOFF_EL2", 0xE703, true, true, {} },
{ "CNTV_CTL_EL0", "CNTV_CTL_EL0", 0xDF19, true, true, {} },
{ "CNTV_CTL_EL02", "CNTV_CTL_EL02", 0xEF19, true, true, {AArch64::FeatureVH} },
{ "CNTV_CVAL_EL0", "CNTV_CVAL_EL0", 0xDF1A, true, true, {} },
{ "CNTV_CVAL_EL02", "CNTV_CVAL_EL02", 0xEF1A, true, true, {AArch64::FeatureVH} },
{ "CNTV_TVAL_EL0", "CNTV_TVAL_EL0", 0xDF18, true, true, {} },
{ "CNTV_TVAL_EL02", "CNTV_TVAL_EL02", 0xEF18, true, true, {AArch64::FeatureVH} },
{ "CONTEXTIDR_EL1", "CONTEXTIDR_EL1", 0xC681, true, true, {} },
{ "CONTEXTIDR_EL12", "CONTEXTIDR_EL12", 0xEE81, true, true, {AArch64::FeatureVH} },
{ "CONTEXTIDR_EL2", "CONTEXTIDR_EL2", 0xE681, true, true, {AArch64::FeatureCONTEXTIDREL2} },
{ "CPACR_EL1", "CPACR_EL1", 0xC082, true, true, {} },
{ "CPACR_EL12", "CPACR_EL12", 0xE882, true, true, {AArch64::FeatureVH} },
{ "CPTR_EL2", "CPTR_EL2", 0xE08A, true, true, {} },
{ "CPTR_EL3", "CPTR_EL3", 0xF08A, true, true, {} },
{ "CSSELR_EL1", "CSSELR_EL1", 0xD000, true, true, {} },
{ "CTR_EL0", "CTR_EL0", 0xD801, true, false, {} },
{ "CurrentEL", "CurrentEL", 0xC212, true, false, {} },
{ "DACR32_EL2", "DACR32_EL2", 0xE180, true, true, {} },
{ "DAIF", "DAIF", 0xDA11, true, true, {} },
{ "DBGAUTHSTATUS_EL1", "DBGAUTHSTATUS_EL1", 0x83F6, true, false, {} },
{ "DBGBCR0_EL1", "DBGBCR0_EL1", 0x8005, true, true, {} },
{ "DBGBCR10_EL1", "DBGBCR10_EL1", 0x8055, true, true, {} },
{ "DBGBCR11_EL1", "DBGBCR11_EL1", 0x805D, true, true, {} },
{ "DBGBCR12_EL1", "DBGBCR12_EL1", 0x8065, true, true, {} },
{ "DBGBCR13_EL1", "DBGBCR13_EL1", 0x806D, true, true, {} },
{ "DBGBCR14_EL1", "DBGBCR14_EL1", 0x8075, true, true, {} },
{ "DBGBCR15_EL1", "DBGBCR15_EL1", 0x807D, true, true, {} },
{ "DBGBCR1_EL1", "DBGBCR1_EL1", 0x800D, true, true, {} },
{ "DBGBCR2_EL1", "DBGBCR2_EL1", 0x8015, true, true, {} },
{ "DBGBCR3_EL1", "DBGBCR3_EL1", 0x801D, true, true, {} },
{ "DBGBCR4_EL1", "DBGBCR4_EL1", 0x8025, true, true, {} },
{ "DBGBCR5_EL1", "DBGBCR5_EL1", 0x802D, true, true, {} },
{ "DBGBCR6_EL1", "DBGBCR6_EL1", 0x8035, true, true, {} },
{ "DBGBCR7_EL1", "DBGBCR7_EL1", 0x803D, true, true, {} },
{ "DBGBCR8_EL1", "DBGBCR8_EL1", 0x8045, true, true, {} },
{ "DBGBCR9_EL1", "DBGBCR9_EL1", 0x804D, true, true, {} },
{ "DBGBVR0_EL1", "DBGBVR0_EL1", 0x8004, true, true, {} },
{ "DBGBVR10_EL1", "DBGBVR10_EL1", 0x8054, true, true, {} },
{ "DBGBVR11_EL1", "DBGBVR11_EL1", 0x805C, true, true, {} },
{ "DBGBVR12_EL1", "DBGBVR12_EL1", 0x8064, true, true, {} },
{ "DBGBVR13_EL1", "DBGBVR13_EL1", 0x806C, true, true, {} },
{ "DBGBVR14_EL1", "DBGBVR14_EL1", 0x8074, true, true, {} },
{ "DBGBVR15_EL1", "DBGBVR15_EL1", 0x807C, true, true, {} },
{ "DBGBVR1_EL1", "DBGBVR1_EL1", 0x800C, true, true, {} },
{ "DBGBVR2_EL1", "DBGBVR2_EL1", 0x8014, true, true, {} },
{ "DBGBVR3_EL1", "DBGBVR3_EL1", 0x801C, true, true, {} },
{ "DBGBVR4_EL1", "DBGBVR4_EL1", 0x8024, true, true, {} },
{ "DBGBVR5_EL1", "DBGBVR5_EL1", 0x802C, true, true, {} },
{ "DBGBVR6_EL1", "DBGBVR6_EL1", 0x8034, true, true, {} },
{ "DBGBVR7_EL1", "DBGBVR7_EL1", 0x803C, true, true, {} },
{ "DBGBVR8_EL1", "DBGBVR8_EL1", 0x8044, true, true, {} },
{ "DBGBVR9_EL1", "DBGBVR9_EL1", 0x804C, true, true, {} },
{ "DBGCLAIMCLR_EL1", "DBGCLAIMCLR_EL1", 0x83CE, true, true, {} },
{ "DBGCLAIMSET_EL1", "DBGCLAIMSET_EL1", 0x83C6, true, true, {} },
{ "DBGDTRRX_EL0", "DBGDTRRX_EL0", 0x9828, true, false, {} },
{ "DBGDTRTX_EL0", "DBGDTRTX_EL0", 0x9828, false, true, {} },
{ "DBGDTR_EL0", "DBGDTR_EL0", 0x9820, true, true, {} },
{ "DBGPRCR_EL1", "DBGPRCR_EL1", 0x80A4, true, true, {} },
{ "DBGVCR32_EL2", "DBGVCR32_EL2", 0xA038, true, true, {} },
{ "DBGWCR0_EL1", "DBGWCR0_EL1", 0x8007, true, true, {} },
{ "DBGWCR10_EL1", "DBGWCR10_EL1", 0x8057, true, true, {} },
{ "DBGWCR11_EL1", "DBGWCR11_EL1", 0x805F, true, true, {} },
{ "DBGWCR12_EL1", "DBGWCR12_EL1", 0x8067, true, true, {} },
{ "DBGWCR13_EL1", "DBGWCR13_EL1", 0x806F, true, true, {} },
{ "DBGWCR14_EL1", "DBGWCR14_EL1", 0x8077, true, true, {} },
{ "DBGWCR15_EL1", "DBGWCR15_EL1", 0x807F, true, true, {} },
{ "DBGWCR1_EL1", "DBGWCR1_EL1", 0x800F, true, true, {} },
{ "DBGWCR2_EL1", "DBGWCR2_EL1", 0x8017, true, true, {} },
{ "DBGWCR3_EL1", "DBGWCR3_EL1", 0x801F, true, true, {} },
{ "DBGWCR4_EL1", "DBGWCR4_EL1", 0x8027, true, true, {} },
{ "DBGWCR5_EL1", "DBGWCR5_EL1", 0x802F, true, true, {} },
{ "DBGWCR6_EL1", "DBGWCR6_EL1", 0x8037, true, true, {} },
{ "DBGWCR7_EL1", "DBGWCR7_EL1", 0x803F, true, true, {} },
{ "DBGWCR8_EL1", "DBGWCR8_EL1", 0x8047, true, true, {} },
{ "DBGWCR9_EL1", "DBGWCR9_EL1", 0x804F, true, true, {} },
{ "DBGWVR0_EL1", "DBGWVR0_EL1", 0x8006, true, true, {} },
{ "DBGWVR10_EL1", "DBGWVR10_EL1", 0x8056, true, true, {} },
{ "DBGWVR11_EL1", "DBGWVR11_EL1", 0x805E, true, true, {} },
{ "DBGWVR12_EL1", "DBGWVR12_EL1", 0x8066, true, true, {} },
{ "DBGWVR13_EL1", "DBGWVR13_EL1", 0x806E, true, true, {} },
{ "DBGWVR14_EL1", "DBGWVR14_EL1", 0x8076, true, true, {} },
{ "DBGWVR15_EL1", "DBGWVR15_EL1", 0x807E, true, true, {} },
{ "DBGWVR1_EL1", "DBGWVR1_EL1", 0x800E, true, true, {} },
{ "DBGWVR2_EL1", "DBGWVR2_EL1", 0x8016, true, true, {} },
{ "DBGWVR3_EL1", "DBGWVR3_EL1", 0x801E, true, true, {} },
{ "DBGWVR4_EL1", "DBGWVR4_EL1", 0x8026, true, true, {} },
{ "DBGWVR5_EL1", "DBGWVR5_EL1", 0x802E, true, true, {} },
{ "DBGWVR6_EL1", "DBGWVR6_EL1", 0x8036, true, true, {} },
{ "DBGWVR7_EL1", "DBGWVR7_EL1", 0x803E, true, true, {} },
{ "DBGWVR8_EL1", "DBGWVR8_EL1", 0x8046, true, true, {} },
{ "DBGWVR9_EL1", "DBGWVR9_EL1", 0x804E, true, true, {} },
{ "DCZID_EL0", "DCZID_EL0", 0xD807, true, false, {} },
{ "DISR_EL1", "DISR_EL1", 0xC609, true, true, {AArch64::FeatureRAS} },
{ "DIT", "DIT", 0xDA15, true, true, {AArch64::FeatureDIT} },
{ "DLR_EL0", "DLR_EL0", 0xDA29, true, true, {} },
{ "DSPSR_EL0", "DSPSR_EL0", 0xDA28, true, true, {} },
{ "ELR_EL1", "ELR_EL1", 0xC201, true, true, {} },
{ "ELR_EL12", "ELR_EL12", 0xEA01, true, true, {AArch64::FeatureVH} },
{ "ELR_EL2", "ELR_EL2", 0xE201, true, true, {} },
{ "ELR_EL3", "ELR_EL3", 0xF201, true, true, {} },
{ "ERRIDR_EL1", "ERRIDR_EL1", 0xC298, true, false, {AArch64::FeatureRAS} },
{ "ERRSELR_EL1", "ERRSELR_EL1", 0xC299, true, true, {AArch64::FeatureRAS} },
{ "ERXADDR_EL1", "ERXADDR_EL1", 0xC2A3, true, true, {AArch64::FeatureRAS} },
{ "ERXCTLR_EL1", "ERXCTLR_EL1", 0xC2A1, true, true, {AArch64::FeatureRAS} },
{ "ERXFR_EL1", "ERXFR_EL1", 0xC2A0, true, false, {AArch64::FeatureRAS} },
{ "ERXGSR_EL1", "ERXGSR_EL1", 0xC29A, true, false, {AArch64::FeatureRASv2} },
{ "ERXMISC0_EL1", "ERXMISC0_EL1", 0xC2A8, true, true, {AArch64::FeatureRAS} },
{ "ERXMISC1_EL1", "ERXMISC1_EL1", 0xC2A9, true, true, {AArch64::FeatureRAS} },
{ "ERXMISC2_EL1", "ERXMISC2_EL1", 0xC2AA, true, true, {} },
{ "ERXMISC3_EL1", "ERXMISC3_EL1", 0xC2AB, true, true, {} },
{ "ERXPFGCDN_EL1", "ERXPFGCDN_EL1", 0xC2A6, true, true, {} },
{ "ERXPFGCTL_EL1", "ERXPFGCTL_EL1", 0xC2A5, true, true, {} },
{ "ERXPFGF_EL1", "ERXPFGF_EL1", 0xC2A4, true, false, {} },
{ "ERXSTATUS_EL1", "ERXSTATUS_EL1", 0xC2A2, true, true, {AArch64::FeatureRAS} },
{ "ESR_EL1", "ESR_EL1", 0xC290, true, true, {} },
{ "ESR_EL12", "ESR_EL12", 0xEA90, true, true, {AArch64::FeatureVH} },
{ "ESR_EL2", "ESR_EL2", 0xE290, true, true, {} },
{ "ESR_EL3", "ESR_EL3", 0xF290, true, true, {} },
{ "FAR_EL1", "FAR_EL1", 0xC300, true, true, {} },
{ "FAR_EL12", "FAR_EL12", 0xEB00, true, true, {AArch64::FeatureVH} },
{ "FAR_EL2", "FAR_EL2", 0xE300, true, true, {} },
{ "FAR_EL3", "FAR_EL3", 0xF300, true, true, {} },
{ "FGWTE3_EL3", "FGWTE3_EL3", 0xF08D, true, true, {} },
{ "FPCR", "FPCR", 0xDA20, true, true, {AArch64::FeatureFPARMv8} },
{ "FPEXC32_EL2", "FPEXC32_EL2", 0xE298, true, true, {} },
{ "FPMR", "FPMR", 0xDA22, true, true, {} },
{ "FPSR", "FPSR", 0xDA21, true, true, {AArch64::FeatureFPARMv8} },
{ "GCR_EL1", "GCR_EL1", 0xC086, true, true, {AArch64::FeatureMTE} },
{ "GCSCRE0_EL1", "GCSCRE0_EL1", 0xC12A, true, true, {} },
{ "GCSCR_EL1", "GCSCR_EL1", 0xC128, true, true, {} },
{ "GCSCR_EL12", "GCSCR_EL12", 0xE928, true, true, {} },
{ "GCSCR_EL2", "GCSCR_EL2", 0xE128, true, true, {} },
{ "GCSCR_EL3", "GCSCR_EL3", 0xF128, true, true, {} },
{ "GCSPR_EL0", "GCSPR_EL0", 0xD929, true, true, {} },
{ "GCSPR_EL1", "GCSPR_EL1", 0xC129, true, true, {} },
{ "GCSPR_EL12", "GCSPR_EL12", 0xE929, true, true, {} },
{ "GCSPR_EL2", "GCSPR_EL2", 0xE129, true, true, {} },
{ "GCSPR_EL3", "GCSPR_EL3", 0xF129, true, true, {} },
{ "GMID_EL1", "GMID_EL1", 0xC804, true, false, {AArch64::FeatureMTE} },
{ "GPCCR_EL3", "GPCCR_EL3", 0xF10E, true, true, {AArch64::FeatureRME} },
{ "GPTBR_EL3", "GPTBR_EL3", 0xF10C, true, true, {AArch64::FeatureRME} },
{ "HACDBSBR_EL2", "HACDBSBR_EL2", 0xE11C, true, true, {} },
{ "HACDBSCONS_EL2", "HACDBSCONS_EL2", 0xE11D, true, true, {} },
{ "HACR_EL2", "HACR_EL2", 0xE08F, true, true, {} },
{ "HAFGRTR_EL2", "HAFGRTR_EL2", 0xE18E, true, true, {AArch64::FeatureFineGrainedTraps} },
{ "HCRX_EL2", "HCRX_EL2", 0xE092, true, true, {AArch64::FeatureHCX} },
{ "HCR_EL2", "HCR_EL2", 0xE088, true, true, {} },
{ "HDBSSBR_EL2", "HDBSSBR_EL2", 0xE11A, true, true, {} },
{ "HDBSSPROD_EL2", "HDBSSPROD_EL2", 0xE11B, true, true, {} },
{ "HDFGRTR2_EL2", "HDFGRTR2_EL2", 0xE188, true, true, {AArch64::FeatureFineGrainedTraps} },
{ "HDFGRTR_EL2", "HDFGRTR_EL2", 0xE18C, true, true, {AArch64::FeatureFineGrainedTraps} },
{ "HDFGWTR2_EL2", "HDFGWTR2_EL2", 0xE189, true, true, {AArch64::FeatureFineGrainedTraps} },
{ "HDFGWTR_EL2", "HDFGWTR_EL2", 0xE18D, true, true, {AArch64::FeatureFineGrainedTraps} },
{ "HFGITR2_EL2", "HFGITR2_EL2", 0xE18F, true, true, {AArch64::FeatureFineGrainedTraps} },
{ "HFGITR_EL2", "HFGITR_EL2", 0xE08E, true, true, {AArch64::FeatureFineGrainedTraps} },
{ "HFGRTR2_EL2", "HFGRTR2_EL2", 0xE18A, true, true, {AArch64::FeatureFineGrainedTraps} },
{ "HFGRTR_EL2", "HFGRTR_EL2", 0xE08C, true, true, {AArch64::FeatureFineGrainedTraps} },
{ "HFGWTR2_EL2", "HFGWTR2_EL2", 0xE18B, true, true, {AArch64::FeatureFineGrainedTraps} },
{ "HFGWTR_EL2", "HFGWTR_EL2", 0xE08D, true, true, {AArch64::FeatureFineGrainedTraps} },
{ "HPFAR_EL2", "HPFAR_EL2", 0xE304, true, true, {} },
{ "HSTR_EL2", "HSTR_EL2", 0xE08B, true, true, {} },
{ "ICC_AP0R0_EL1", "ICC_AP0R0_EL1", 0xC644, true, true, {} },
{ "ICC_AP0R1_EL1", "ICC_AP0R1_EL1", 0xC645, true, true, {} },
{ "ICC_AP0R2_EL1", "ICC_AP0R2_EL1", 0xC646, true, true, {} },
{ "ICC_AP0R3_EL1", "ICC_AP0R3_EL1", 0xC647, true, true, {} },
{ "ICC_AP1R0_EL1", "ICC_AP1R0_EL1", 0xC648, true, true, {} },
{ "ICC_AP1R1_EL1", "ICC_AP1R1_EL1", 0xC649, true, true, {} },
{ "ICC_AP1R2_EL1", "ICC_AP1R2_EL1", 0xC64A, true, true, {} },
{ "ICC_AP1R3_EL1", "ICC_AP1R3_EL1", 0xC64B, true, true, {} },
{ "ICC_ASGI1R_EL1", "ICC_ASGI1R_EL1", 0xC65E, false, true, {} },
{ "ICC_BPR0_EL1", "ICC_BPR0_EL1", 0xC643, true, true, {} },
{ "ICC_BPR1_EL1", "ICC_BPR1_EL1", 0xC663, true, true, {} },
{ "ICC_CTLR_EL1", "ICC_CTLR_EL1", 0xC664, true, true, {} },
{ "ICC_CTLR_EL3", "ICC_CTLR_EL3", 0xF664, true, true, {} },
{ "ICC_DIR_EL1", "ICC_DIR_EL1", 0xC659, false, true, {} },
{ "ICC_EOIR0_EL1", "ICC_EOIR0_EL1", 0xC641, false, true, {} },
{ "ICC_EOIR1_EL1", "ICC_EOIR1_EL1", 0xC661, false, true, {} },
{ "ICC_HPPIR0_EL1", "ICC_HPPIR0_EL1", 0xC642, true, false, {} },
{ "ICC_HPPIR1_EL1", "ICC_HPPIR1_EL1", 0xC662, true, false, {} },
{ "ICC_IAR0_EL1", "ICC_IAR0_EL1", 0xC640, true, false, {} },
{ "ICC_IAR1_EL1", "ICC_IAR1_EL1", 0xC660, true, false, {} },
{ "ICC_IGRPEN0_EL1", "ICC_IGRPEN0_EL1", 0xC666, true, true, {} },
{ "ICC_IGRPEN1_EL1", "ICC_IGRPEN1_EL1", 0xC667, true, true, {} },
{ "ICC_IGRPEN1_EL3", "ICC_IGRPEN1_EL3", 0xF667, true, true, {} },
{ "ICC_NMIAR1_EL1", "ICC_NMIAR1_EL1", 0xC64D, true, false, {AArch64::FeatureNMI} },
{ "ICC_PMR_EL1", "ICC_PMR_EL1", 0xC230, true, true, {} },
{ "ICC_RPR_EL1", "ICC_RPR_EL1", 0xC65B, true, false, {} },
{ "ICC_SGI0R_EL1", "ICC_SGI0R_EL1", 0xC65F, false, true, {} },
{ "ICC_SGI1R_EL1", "ICC_SGI1R_EL1", 0xC65D, false, true, {} },
{ "ICC_SRE_EL1", "ICC_SRE_EL1", 0xC665, true, true, {} },
{ "ICC_SRE_EL2", "ICC_SRE_EL2", 0xE64D, true, true, {} },
{ "ICC_SRE_EL3", "ICC_SRE_EL3", 0xF665, true, true, {} },
{ "ICH_AP0R0_EL2", "ICH_AP0R0_EL2", 0xE640, true, true, {} },
{ "ICH_AP0R1_EL2", "ICH_AP0R1_EL2", 0xE641, true, true, {} },
{ "ICH_AP0R2_EL2", "ICH_AP0R2_EL2", 0xE642, true, true, {} },
{ "ICH_AP0R3_EL2", "ICH_AP0R3_EL2", 0xE643, true, true, {} },
{ "ICH_AP1R0_EL2", "ICH_AP1R0_EL2", 0xE648, true, true, {} },
{ "ICH_AP1R1_EL2", "ICH_AP1R1_EL2", 0xE649, true, true, {} },
{ "ICH_AP1R2_EL2", "ICH_AP1R2_EL2", 0xE64A, true, true, {} },
{ "ICH_AP1R3_EL2", "ICH_AP1R3_EL2", 0xE64B, true, true, {} },
{ "ICH_EISR_EL2", "ICH_EISR_EL2", 0xE65B, true, false, {} },
{ "ICH_ELRSR_EL2", "ICH_ELRSR_EL2", 0xE65D, true, false, {} },
{ "ICH_HCR_EL2", "ICH_HCR_EL2", 0xE658, true, true, {} },
{ "ICH_LR0_EL2", "ICH_LR0_EL2", 0xE660, true, true, {} },
{ "ICH_LR10_EL2", "ICH_LR10_EL2", 0xE66A, true, true, {} },
{ "ICH_LR11_EL2", "ICH_LR11_EL2", 0xE66B, true, true, {} },
{ "ICH_LR12_EL2", "ICH_LR12_EL2", 0xE66C, true, true, {} },
{ "ICH_LR13_EL2", "ICH_LR13_EL2", 0xE66D, true, true, {} },
{ "ICH_LR14_EL2", "ICH_LR14_EL2", 0xE66E, true, true, {} },
{ "ICH_LR15_EL2", "ICH_LR15_EL2", 0xE66F, true, true, {} },
{ "ICH_LR1_EL2", "ICH_LR1_EL2", 0xE661, true, true, {} },
{ "ICH_LR2_EL2", "ICH_LR2_EL2", 0xE662, true, true, {} },
{ "ICH_LR3_EL2", "ICH_LR3_EL2", 0xE663, true, true, {} },
{ "ICH_LR4_EL2", "ICH_LR4_EL2", 0xE664, true, true, {} },
{ "ICH_LR5_EL2", "ICH_LR5_EL2", 0xE665, true, true, {} },
{ "ICH_LR6_EL2", "ICH_LR6_EL2", 0xE666, true, true, {} },
{ "ICH_LR7_EL2", "ICH_LR7_EL2", 0xE667, true, true, {} },
{ "ICH_LR8_EL2", "ICH_LR8_EL2", 0xE668, true, true, {} },
{ "ICH_LR9_EL2", "ICH_LR9_EL2", 0xE669, true, true, {} },
{ "ICH_MISR_EL2", "ICH_MISR_EL2", 0xE65A, true, false, {} },
{ "ICH_VMCR_EL2", "ICH_VMCR_EL2", 0xE65F, true, true, {} },
{ "ICH_VTR_EL2", "ICH_VTR_EL2", 0xE659, true, false, {} },
{ "ID_AA64AFR0_EL1", "ID_AA64AFR0_EL1", 0xC02C, true, false, {} },
{ "ID_AA64AFR1_EL1", "ID_AA64AFR1_EL1", 0xC02D, true, false, {} },
{ "ID_AA64DFR0_EL1", "ID_AA64DFR0_EL1", 0xC028, true, false, {} },
{ "ID_AA64DFR1_EL1", "ID_AA64DFR1_EL1", 0xC029, true, false, {} },
{ "ID_AA64DFR2_EL1", "ID_AA64DFR2_EL1", 0xC02A, true, false, {} },
{ "ID_AA64FPFR0_EL1", "ID_AA64FPFR0_EL1", 0xC027, true, false, {} },
{ "ID_AA64ISAR0_EL1", "ID_AA64ISAR0_EL1", 0xC030, true, false, {} },
{ "ID_AA64ISAR1_EL1", "ID_AA64ISAR1_EL1", 0xC031, true, false, {} },
{ "ID_AA64ISAR2_EL1", "ID_AA64ISAR2_EL1", 0xC032, true, false, {} },
{ "ID_AA64ISAR3_EL1", "ID_AA64ISAR3_EL1", 0xC033, true, false, {} },
{ "ID_AA64MMFR0_EL1", "ID_AA64MMFR0_EL1", 0xC038, true, false, {} },
{ "ID_AA64MMFR1_EL1", "ID_AA64MMFR1_EL1", 0xC039, true, false, {} },
{ "ID_AA64MMFR2_EL1", "ID_AA64MMFR2_EL1", 0xC03A, true, false, {} },
{ "ID_AA64MMFR3_EL1", "ID_AA64MMFR3_EL1", 0xC03B, true, false, {} },
{ "ID_AA64MMFR4_EL1", "ID_AA64MMFR4_EL1", 0xC03C, true, false, {} },
{ "ID_AA64PFR0_EL1", "ID_AA64PFR0_EL1", 0xC020, true, false, {} },
{ "ID_AA64PFR1_EL1", "ID_AA64PFR1_EL1", 0xC021, true, false, {} },
{ "ID_AA64PFR2_EL1", "ID_AA64PFR2_EL1", 0xC022, true, false, {} },
{ "ID_AA64SMFR0_EL1", "ID_AA64SMFR0_EL1", 0xC025, true, false, {AArch64::FeatureSME} },
{ "ID_AA64ZFR0_EL1", "ID_AA64ZFR0_EL1", 0xC024, true, false, {AArch64::FeatureSVE} },
{ "ID_AFR0_EL1", "ID_AFR0_EL1", 0xC00B, true, false, {} },
{ "ID_DFR0_EL1", "ID_DFR0_EL1", 0xC00A, true, false, {} },
{ "ID_DFR1_EL1", "ID_DFR1_EL1", 0xC01D, true, false, {} },
{ "ID_ISAR0_EL1", "ID_ISAR0_EL1", 0xC010, true, false, {} },
{ "ID_ISAR1_EL1", "ID_ISAR1_EL1", 0xC011, true, false, {} },
{ "ID_ISAR2_EL1", "ID_ISAR2_EL1", 0xC012, true, false, {} },
{ "ID_ISAR3_EL1", "ID_ISAR3_EL1", 0xC013, true, false, {} },
{ "ID_ISAR4_EL1", "ID_ISAR4_EL1", 0xC014, true, false, {} },
{ "ID_ISAR5_EL1", "ID_ISAR5_EL1", 0xC015, true, false, {} },
{ "ID_ISAR6_EL1", "ID_ISAR6_EL1", 0xC017, true, false, {AArch64::HasV8_2aOps} },
{ "ID_MMFR0_EL1", "ID_MMFR0_EL1", 0xC00C, true, false, {} },
{ "ID_MMFR1_EL1", "ID_MMFR1_EL1", 0xC00D, true, false, {} },
{ "ID_MMFR2_EL1", "ID_MMFR2_EL1", 0xC00E, true, false, {} },
{ "ID_MMFR3_EL1", "ID_MMFR3_EL1", 0xC00F, true, false, {} },
{ "ID_MMFR4_EL1", "ID_MMFR4_EL1", 0xC016, true, false, {} },
{ "ID_MMFR5_EL1", "ID_MMFR5_EL1", 0xC01E, true, false, {} },
{ "ID_PFR0_EL1", "ID_PFR0_EL1", 0xC008, true, false, {} },
{ "ID_PFR1_EL1", "ID_PFR1_EL1", 0xC009, true, false, {} },
{ "ID_PFR2_EL1", "ID_PFR2_EL1", 0xC01C, true, false, {AArch64::FeatureSpecRestrict} },
{ "IFSR32_EL2", "IFSR32_EL2", 0xE281, true, true, {} },
{ "ISR_EL1", "ISR_EL1", 0xC608, true, false, {} },
{ "LORC_EL1", "LORC_EL1", 0xC523, true, true, {AArch64::FeatureLOR} },
{ "LOREA_EL1", "LOREA_EL1", 0xC521, true, true, {AArch64::FeatureLOR} },
{ "LORID_EL1", "LORID_EL1", 0xC527, true, false, {AArch64::FeatureLOR} },
{ "LORN_EL1", "LORN_EL1", 0xC522, true, true, {AArch64::FeatureLOR} },
{ "LORSA_EL1", "LORSA_EL1", 0xC520, true, true, {AArch64::FeatureLOR} },
{ "MAIR2_EL1", "MAIR2_EL1", 0xC511, true, true, {} },
{ "MAIR2_EL12", "MAIR2_EL12", 0xED11, true, true, {} },
{ "MAIR2_EL2", "MAIR2_EL2", 0xE509, true, true, {} },
{ "MAIR2_EL3", "MAIR2_EL3", 0xF509, true, true, {} },
{ "MAIR_EL1", "MAIR_EL1", 0xC510, true, true, {} },
{ "MAIR_EL12", "MAIR_EL12", 0xED10, true, true, {AArch64::FeatureVH} },
{ "MAIR_EL2", "MAIR_EL2", 0xE510, true, true, {} },
{ "MAIR_EL3", "MAIR_EL3", 0xF510, true, true, {} },
{ "MDCCINT_EL1", "MDCCINT_EL1", 0x8010, true, true, {} },
{ "MDCCSR_EL0", "MDCCSR_EL0", 0x9808, true, false, {} },
{ "MDCR_EL2", "MDCR_EL2", 0xE089, true, true, {} },
{ "MDCR_EL3", "MDCR_EL3", 0xF099, true, true, {} },
{ "MDRAR_EL1", "MDRAR_EL1", 0x8080, true, false, {} },
{ "MDSCR_EL1", "MDSCR_EL1", 0x8012, true, true, {} },
{ "MDSELR_EL1", "MDSELR_EL1", 0x8022, true, true, {} },
{ "MDSTEPOP_EL1", "MDSTEPOP_EL1", 0x802A, true, true, {} },
{ "MECIDR_EL2", "MECIDR_EL2", 0xE547, true, false, {AArch64::FeatureMEC} },
{ "MECID_A0_EL2", "MECID_A0_EL2", 0xE541, true, true, {AArch64::FeatureMEC} },
{ "MECID_A1_EL2", "MECID_A1_EL2", 0xE543, true, true, {AArch64::FeatureMEC} },
{ "MECID_P0_EL2", "MECID_P0_EL2", 0xE540, true, true, {AArch64::FeatureMEC} },
{ "MECID_P1_EL2", "MECID_P1_EL2", 0xE542, true, true, {AArch64::FeatureMEC} },
{ "MECID_RL_A_EL3", "MECID_RL_A_EL3", 0xF551, true, true, {AArch64::FeatureMEC} },
{ "MFAR_EL3", "MFAR_EL3", 0xF305, true, true, {} },
{ "MIDR_EL1", "MIDR_EL1", 0xC000, true, false, {} },
{ "MPAM0_EL1", "MPAM0_EL1", 0xC529, true, true, {AArch64::FeatureMPAM} },
{ "MPAM1_EL1", "MPAM1_EL1", 0xC528, true, true, {AArch64::FeatureMPAM} },
{ "MPAM1_EL12", "MPAM1_EL12", 0xED28, true, true, {AArch64::FeatureMPAM} },
{ "MPAM2_EL2", "MPAM2_EL2", 0xE528, true, true, {AArch64::FeatureMPAM} },
{ "MPAM3_EL3", "MPAM3_EL3", 0xF528, true, true, {AArch64::FeatureMPAM} },
{ "MPAMHCR_EL2", "MPAMHCR_EL2", 0xE520, true, true, {AArch64::FeatureMPAM} },
{ "MPAMIDR_EL1", "MPAMIDR_EL1", 0xC524, true, false, {AArch64::FeatureMPAM} },
{ "MPAMSM_EL1", "MPAMSM_EL1", 0xC52B, true, true, {AArch64::FeatureMPAM, AArch64::FeatureSME} },
{ "MPAMVPM0_EL2", "MPAMVPM0_EL2", 0xE530, true, true, {AArch64::FeatureMPAM} },
{ "MPAMVPM1_EL2", "MPAMVPM1_EL2", 0xE531, true, true, {AArch64::FeatureMPAM} },
{ "MPAMVPM2_EL2", "MPAMVPM2_EL2", 0xE532, true, true, {AArch64::FeatureMPAM} },
{ "MPAMVPM3_EL2", "MPAMVPM3_EL2", 0xE533, true, true, {AArch64::FeatureMPAM} },
{ "MPAMVPM4_EL2", "MPAMVPM4_EL2", 0xE534, true, true, {AArch64::FeatureMPAM} },
{ "MPAMVPM5_EL2", "MPAMVPM5_EL2", 0xE535, true, true, {AArch64::FeatureMPAM} },
{ "MPAMVPM6_EL2", "MPAMVPM6_EL2", 0xE536, true, true, {AArch64::FeatureMPAM} },
{ "MPAMVPM7_EL2", "MPAMVPM7_EL2", 0xE537, true, true, {AArch64::FeatureMPAM} },
{ "MPAMVPMV_EL2", "MPAMVPMV_EL2", 0xE521, true, true, {AArch64::FeatureMPAM} },
{ "MPIDR_EL1", "MPIDR_EL1", 0xC005, true, false, {} },
{ "MPUIR_EL1", "MPUIR_EL1", 0xC004, true, true, {AArch64::HasV8_0rOps} },
{ "MPUIR_EL2", "MPUIR_EL2", 0xE004, true, true, {AArch64::HasV8_0rOps} },
{ "MVFR0_EL1", "MVFR0_EL1", 0xC018, true, false, {} },
{ "MVFR1_EL1", "MVFR1_EL1", 0xC019, true, false, {} },
{ "MVFR2_EL1", "MVFR2_EL1", 0xC01A, true, false, {} },
{ "NZCV", "NZCV", 0xDA10, true, true, {} },
{ "OSDLR_EL1", "OSDLR_EL1", 0x809C, true, true, {} },
{ "OSDTRRX_EL1", "OSDTRRX_EL1", 0x8002, true, true, {} },
{ "OSDTRTX_EL1", "OSDTRTX_EL1", 0x801A, true, true, {} },
{ "OSECCR_EL1", "OSECCR_EL1", 0x8032, true, true, {} },
{ "OSLAR_EL1", "OSLAR_EL1", 0x8084, false, true, {} },
{ "OSLSR_EL1", "OSLSR_EL1", 0x808C, true, false, {} },
{ "PAN", "PAN", 0xC213, true, true, {AArch64::FeaturePAN} },
{ "PAR_EL1", "PAR_EL1", 0xC3A0, true, true, {} },
{ "PFAR_EL1", "PFAR_EL1", 0xC305, true, true, {} },
{ "PFAR_EL12", "PFAR_EL12", 0xEB05, true, true, {} },
{ "PFAR_EL2", "PFAR_EL2", 0xE305, true, true, {} },
{ "PIRE0_EL1", "PIRE0_EL1", 0xC512, true, true, {} },
{ "PIRE0_EL12", "PIRE0_EL12", 0xED12, true, true, {} },
{ "PIRE0_EL2", "PIRE0_EL2", 0xE512, true, true, {} },
{ "PIR_EL1", "PIR_EL1", 0xC513, true, true, {} },
{ "PIR_EL12", "PIR_EL12", 0xED13, true, true, {} },
{ "PIR_EL2", "PIR_EL2", 0xE513, true, true, {} },
{ "PIR_EL3", "PIR_EL3", 0xF513, true, true, {} },
{ "PM", "PM", 0xC219, true, true, {} },
{ "PMBIDR_EL1", "PMBIDR_EL1", 0xC4D7, true, false, {AArch64::FeatureSPE} },
{ "PMBLIMITR_EL1", "PMBLIMITR_EL1", 0xC4D0, true, true, {AArch64::FeatureSPE} },
{ "PMBPTR_EL1", "PMBPTR_EL1", 0xC4D1, true, true, {AArch64::FeatureSPE} },
{ "PMBSR_EL1", "PMBSR_EL1", 0xC4D3, true, true, {AArch64::FeatureSPE} },
{ "PMCCFILTR_EL0", "PMCCFILTR_EL0", 0xDF7F, true, true, {} },
{ "PMCCNTR_EL0", "PMCCNTR_EL0", 0xDCE8, true, true, {} },
{ "PMCCNTSVR_EL1", "PMCCNTSVR_EL1", 0x875F, true, false, {} },
{ "PMCEID0_EL0", "PMCEID0_EL0", 0xDCE6, true, false, {} },
{ "PMCEID1_EL0", "PMCEID1_EL0", 0xDCE7, true, false, {} },
{ "PMCNTENCLR_EL0", "PMCNTENCLR_EL0", 0xDCE2, true, true, {} },
{ "PMCNTENSET_EL0", "PMCNTENSET_EL0", 0xDCE1, true, true, {} },
{ "PMCR_EL0", "PMCR_EL0", 0xDCE0, true, true, {} },
{ "PMECR_EL1", "PMECR_EL1", 0xC4F5, true, true, {} },
{ "PMEVCNTR0_EL0", "PMEVCNTR0_EL0", 0xDF40, true, true, {} },
{ "PMEVCNTR10_EL0", "PMEVCNTR10_EL0", 0xDF4A, true, true, {} },
{ "PMEVCNTR11_EL0", "PMEVCNTR11_EL0", 0xDF4B, true, true, {} },
{ "PMEVCNTR12_EL0", "PMEVCNTR12_EL0", 0xDF4C, true, true, {} },
{ "PMEVCNTR13_EL0", "PMEVCNTR13_EL0", 0xDF4D, true, true, {} },
{ "PMEVCNTR14_EL0", "PMEVCNTR14_EL0", 0xDF4E, true, true, {} },
{ "PMEVCNTR15_EL0", "PMEVCNTR15_EL0", 0xDF4F, true, true, {} },
{ "PMEVCNTR16_EL0", "PMEVCNTR16_EL0", 0xDF50, true, true, {} },
{ "PMEVCNTR17_EL0", "PMEVCNTR17_EL0", 0xDF51, true, true, {} },
{ "PMEVCNTR18_EL0", "PMEVCNTR18_EL0", 0xDF52, true, true, {} },
{ "PMEVCNTR19_EL0", "PMEVCNTR19_EL0", 0xDF53, true, true, {} },
{ "PMEVCNTR1_EL0", "PMEVCNTR1_EL0", 0xDF41, true, true, {} },
{ "PMEVCNTR20_EL0", "PMEVCNTR20_EL0", 0xDF54, true, true, {} },
{ "PMEVCNTR21_EL0", "PMEVCNTR21_EL0", 0xDF55, true, true, {} },
{ "PMEVCNTR22_EL0", "PMEVCNTR22_EL0", 0xDF56, true, true, {} },
{ "PMEVCNTR23_EL0", "PMEVCNTR23_EL0", 0xDF57, true, true, {} },
{ "PMEVCNTR24_EL0", "PMEVCNTR24_EL0", 0xDF58, true, true, {} },
{ "PMEVCNTR25_EL0", "PMEVCNTR25_EL0", 0xDF59, true, true, {} },
{ "PMEVCNTR26_EL0", "PMEVCNTR26_EL0", 0xDF5A, true, true, {} },
{ "PMEVCNTR27_EL0", "PMEVCNTR27_EL0", 0xDF5B, true, true, {} },
{ "PMEVCNTR28_EL0", "PMEVCNTR28_EL0", 0xDF5C, true, true, {} },
{ "PMEVCNTR29_EL0", "PMEVCNTR29_EL0", 0xDF5D, true, true, {} },
{ "PMEVCNTR2_EL0", "PMEVCNTR2_EL0", 0xDF42, true, true, {} },
{ "PMEVCNTR30_EL0", "PMEVCNTR30_EL0", 0xDF5E, true, true, {} },
{ "PMEVCNTR3_EL0", "PMEVCNTR3_EL0", 0xDF43, true, true, {} },
{ "PMEVCNTR4_EL0", "PMEVCNTR4_EL0", 0xDF44, true, true, {} },
{ "PMEVCNTR5_EL0", "PMEVCNTR5_EL0", 0xDF45, true, true, {} },
{ "PMEVCNTR6_EL0", "PMEVCNTR6_EL0", 0xDF46, true, true, {} },
{ "PMEVCNTR7_EL0", "PMEVCNTR7_EL0", 0xDF47, true, true, {} },
{ "PMEVCNTR8_EL0", "PMEVCNTR8_EL0", 0xDF48, true, true, {} },
{ "PMEVCNTR9_EL0", "PMEVCNTR9_EL0", 0xDF49, true, true, {} },
{ "PMEVCNTSVR0_EL1", "PMEVCNTSVR0_EL1", 0x8740, true, false, {} },
{ "PMEVCNTSVR10_EL1", "PMEVCNTSVR10_EL1", 0x874A, true, false, {} },
{ "PMEVCNTSVR11_EL1", "PMEVCNTSVR11_EL1", 0x874B, true, false, {} },
{ "PMEVCNTSVR12_EL1", "PMEVCNTSVR12_EL1", 0x874C, true, false, {} },
{ "PMEVCNTSVR13_EL1", "PMEVCNTSVR13_EL1", 0x874D, true, false, {} },
{ "PMEVCNTSVR14_EL1", "PMEVCNTSVR14_EL1", 0x874E, true, false, {} },
{ "PMEVCNTSVR15_EL1", "PMEVCNTSVR15_EL1", 0x874F, true, false, {} },
{ "PMEVCNTSVR16_EL1", "PMEVCNTSVR16_EL1", 0x8750, true, false, {} },
{ "PMEVCNTSVR17_EL1", "PMEVCNTSVR17_EL1", 0x8751, true, false, {} },
{ "PMEVCNTSVR18_EL1", "PMEVCNTSVR18_EL1", 0x8752, true, false, {} },
{ "PMEVCNTSVR19_EL1", "PMEVCNTSVR19_EL1", 0x8753, true, false, {} },
{ "PMEVCNTSVR1_EL1", "PMEVCNTSVR1_EL1", 0x8741, true, false, {} },
{ "PMEVCNTSVR20_EL1", "PMEVCNTSVR20_EL1", 0x8754, true, false, {} },
{ "PMEVCNTSVR21_EL1", "PMEVCNTSVR21_EL1", 0x8755, true, false, {} },
{ "PMEVCNTSVR22_EL1", "PMEVCNTSVR22_EL1", 0x8756, true, false, {} },
{ "PMEVCNTSVR23_EL1", "PMEVCNTSVR23_EL1", 0x8757, true, false, {} },
{ "PMEVCNTSVR24_EL1", "PMEVCNTSVR24_EL1", 0x8758, true, false, {} },
{ "PMEVCNTSVR25_EL1", "PMEVCNTSVR25_EL1", 0x8759, true, false, {} },
{ "PMEVCNTSVR26_EL1", "PMEVCNTSVR26_EL1", 0x875A, true, false, {} },
{ "PMEVCNTSVR27_EL1", "PMEVCNTSVR27_EL1", 0x875B, true, false, {} },
{ "PMEVCNTSVR28_EL1", "PMEVCNTSVR28_EL1", 0x875C, true, false, {} },
{ "PMEVCNTSVR29_EL1", "PMEVCNTSVR29_EL1", 0x875D, true, false, {} },
{ "PMEVCNTSVR2_EL1", "PMEVCNTSVR2_EL1", 0x8742, true, false, {} },
{ "PMEVCNTSVR30_EL1", "PMEVCNTSVR30_EL1", 0x875E, true, false, {} },
{ "PMEVCNTSVR3_EL1", "PMEVCNTSVR3_EL1", 0x8743, true, false, {} },
{ "PMEVCNTSVR4_EL1", "PMEVCNTSVR4_EL1", 0x8744, true, false, {} },
{ "PMEVCNTSVR5_EL1", "PMEVCNTSVR5_EL1", 0x8745, true, false, {} },
{ "PMEVCNTSVR6_EL1", "PMEVCNTSVR6_EL1", 0x8746, true, false, {} },
{ "PMEVCNTSVR7_EL1", "PMEVCNTSVR7_EL1", 0x8747, true, false, {} },
{ "PMEVCNTSVR8_EL1", "PMEVCNTSVR8_EL1", 0x8748, true, false, {} },
{ "PMEVCNTSVR9_EL1", "PMEVCNTSVR9_EL1", 0x8749, true, false, {} },
{ "PMEVTYPER0_EL0", "PMEVTYPER0_EL0", 0xDF60, true, true, {} },
{ "PMEVTYPER10_EL0", "PMEVTYPER10_EL0", 0xDF6A, true, true, {} },
{ "PMEVTYPER11_EL0", "PMEVTYPER11_EL0", 0xDF6B, true, true, {} },
{ "PMEVTYPER12_EL0", "PMEVTYPER12_EL0", 0xDF6C, true, true, {} },
{ "PMEVTYPER13_EL0", "PMEVTYPER13_EL0", 0xDF6D, true, true, {} },
{ "PMEVTYPER14_EL0", "PMEVTYPER14_EL0", 0xDF6E, true, true, {} },
{ "PMEVTYPER15_EL0", "PMEVTYPER15_EL0", 0xDF6F, true, true, {} },
{ "PMEVTYPER16_EL0", "PMEVTYPER16_EL0", 0xDF70, true, true, {} },
{ "PMEVTYPER17_EL0", "PMEVTYPER17_EL0", 0xDF71, true, true, {} },
{ "PMEVTYPER18_EL0", "PMEVTYPER18_EL0", 0xDF72, true, true, {} },
{ "PMEVTYPER19_EL0", "PMEVTYPER19_EL0", 0xDF73, true, true, {} },
{ "PMEVTYPER1_EL0", "PMEVTYPER1_EL0", 0xDF61, true, true, {} },
{ "PMEVTYPER20_EL0", "PMEVTYPER20_EL0", 0xDF74, true, true, {} },
{ "PMEVTYPER21_EL0", "PMEVTYPER21_EL0", 0xDF75, true, true, {} },
{ "PMEVTYPER22_EL0", "PMEVTYPER22_EL0", 0xDF76, true, true, {} },
{ "PMEVTYPER23_EL0", "PMEVTYPER23_EL0", 0xDF77, true, true, {} },
{ "PMEVTYPER24_EL0", "PMEVTYPER24_EL0", 0xDF78, true, true, {} },
{ "PMEVTYPER25_EL0", "PMEVTYPER25_EL0", 0xDF79, true, true, {} },
{ "PMEVTYPER26_EL0", "PMEVTYPER26_EL0", 0xDF7A, true, true, {} },
{ "PMEVTYPER27_EL0", "PMEVTYPER27_EL0", 0xDF7B, true, true, {} },
{ "PMEVTYPER28_EL0", "PMEVTYPER28_EL0", 0xDF7C, true, true, {} },
{ "PMEVTYPER29_EL0", "PMEVTYPER29_EL0", 0xDF7D, true, true, {} },
{ "PMEVTYPER2_EL0", "PMEVTYPER2_EL0", 0xDF62, true, true, {} },
{ "PMEVTYPER30_EL0", "PMEVTYPER30_EL0", 0xDF7E, true, true, {} },
{ "PMEVTYPER3_EL0", "PMEVTYPER3_EL0", 0xDF63, true, true, {} },
{ "PMEVTYPER4_EL0", "PMEVTYPER4_EL0", 0xDF64, true, true, {} },
{ "PMEVTYPER5_EL0", "PMEVTYPER5_EL0", 0xDF65, true, true, {} },
{ "PMEVTYPER6_EL0", "PMEVTYPER6_EL0", 0xDF66, true, true, {} },
{ "PMEVTYPER7_EL0", "PMEVTYPER7_EL0", 0xDF67, true, true, {} },
{ "PMEVTYPER8_EL0", "PMEVTYPER8_EL0", 0xDF68, true, true, {} },
{ "PMEVTYPER9_EL0", "PMEVTYPER9_EL0", 0xDF69, true, true, {} },
{ "PMIAR_EL1", "PMIAR_EL1", 0xC4F7, true, true, {} },
{ "PMICFILTR_EL0", "PMICFILTR_EL0", 0xDCB0, true, true, {} },
{ "PMICNTR_EL0", "PMICNTR_EL0", 0xDCA0, true, true, {} },
{ "PMICNTSVR_EL1", "PMICNTSVR_EL1", 0x8760, true, false, {} },
{ "PMINTENCLR_EL1", "PMINTENCLR_EL1", 0xC4F2, true, true, {} },
{ "PMINTENSET_EL1", "PMINTENSET_EL1", 0xC4F1, true, true, {} },
{ "PMMIR_EL1", "PMMIR_EL1", 0xC4F6, true, false, {} },
{ "PMOVSCLR_EL0", "PMOVSCLR_EL0", 0xDCE3, true, true, {} },
{ "PMOVSSET_EL0", "PMOVSSET_EL0", 0xDCF3, true, true, {} },
{ "PMSCR_EL1", "PMSCR_EL1", 0xC4C8, true, true, {AArch64::FeatureSPE} },
{ "PMSCR_EL12", "PMSCR_EL12", 0xECC8, true, true, {AArch64::FeatureSPE} },
{ "PMSCR_EL2", "PMSCR_EL2", 0xE4C8, true, true, {AArch64::FeatureSPE} },
{ "PMSDSFR_EL1", "PMSDSFR_EL1", 0xC4D4, true, true, {} },
{ "PMSELR_EL0", "PMSELR_EL0", 0xDCE5, true, true, {} },
{ "PMSEVFR_EL1", "PMSEVFR_EL1", 0xC4CD, true, true, {AArch64::FeatureSPE} },
{ "PMSFCR_EL1", "PMSFCR_EL1", 0xC4CC, true, true, {AArch64::FeatureSPE} },
{ "PMSICR_EL1", "PMSICR_EL1", 0xC4CA, true, true, {AArch64::FeatureSPE} },
{ "PMSIDR_EL1", "PMSIDR_EL1", 0xC4CF, true, false, {AArch64::FeatureSPE} },
{ "PMSIRR_EL1", "PMSIRR_EL1", 0xC4CB, true, true, {AArch64::FeatureSPE} },
{ "PMSLATFR_EL1", "PMSLATFR_EL1", 0xC4CE, true, true, {AArch64::FeatureSPE} },
{ "PMSNEVFR_EL1", "PMSNEVFR_EL1", 0xC4C9, true, true, {AArch64::FeatureSPE_EEF} },
{ "PMSSCR_EL1", "PMSSCR_EL1", 0xC4EB, true, true, {} },
{ "PMSWINC_EL0", "PMSWINC_EL0", 0xDCE4, false, true, {} },
{ "PMUACR_EL1", "PMUACR_EL1", 0xC4F4, true, true, {} },
{ "PMUSERENR_EL0", "PMUSERENR_EL0", 0xDCF0, true, true, {} },
{ "PMXEVCNTR_EL0", "PMXEVCNTR_EL0", 0xDCEA, true, true, {} },
{ "PMXEVTYPER_EL0", "PMXEVTYPER_EL0", 0xDCE9, true, true, {} },
{ "PMZR_EL0", "PMZR_EL0", 0xDCEC, false, true, {} },
{ "POR_EL0", "POR_EL0", 0xDD14, true, true, {} },
{ "POR_EL1", "POR_EL1", 0xC514, true, true, {} },
{ "POR_EL12", "POR_EL12", 0xED14, true, true, {} },
{ "POR_EL2", "POR_EL2", 0xE514, true, true, {} },
{ "POR_EL3", "POR_EL3", 0xF514, true, true, {} },
{ "PRBAR10_EL1", "PRBAR10_EL1", 0xC368, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR10_EL2", "PRBAR10_EL2", 0xE368, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR11_EL1", "PRBAR11_EL1", 0xC36C, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR11_EL2", "PRBAR11_EL2", 0xE36C, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR12_EL1", "PRBAR12_EL1", 0xC370, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR12_EL2", "PRBAR12_EL2", 0xE370, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR13_EL1", "PRBAR13_EL1", 0xC374, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR13_EL2", "PRBAR13_EL2", 0xE374, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR14_EL1", "PRBAR14_EL1", 0xC378, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR14_EL2", "PRBAR14_EL2", 0xE378, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR15_EL1", "PRBAR15_EL1", 0xC37C, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR15_EL2", "PRBAR15_EL2", 0xE37C, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR1_EL1", "PRBAR1_EL1", 0xC344, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR1_EL2", "PRBAR1_EL2", 0xE344, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR2_EL1", "PRBAR2_EL1", 0xC348, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR2_EL2", "PRBAR2_EL2", 0xE348, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR3_EL1", "PRBAR3_EL1", 0xC34C, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR3_EL2", "PRBAR3_EL2", 0xE34C, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR4_EL1", "PRBAR4_EL1", 0xC350, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR4_EL2", "PRBAR4_EL2", 0xE350, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR5_EL1", "PRBAR5_EL1", 0xC354, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR5_EL2", "PRBAR5_EL2", 0xE354, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR6_EL1", "PRBAR6_EL1", 0xC358, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR6_EL2", "PRBAR6_EL2", 0xE358, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR7_EL1", "PRBAR7_EL1", 0xC35C, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR7_EL2", "PRBAR7_EL2", 0xE35C, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR8_EL1", "PRBAR8_EL1", 0xC360, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR8_EL2", "PRBAR8_EL2", 0xE360, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR9_EL1", "PRBAR9_EL1", 0xC364, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR9_EL2", "PRBAR9_EL2", 0xE364, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR_EL1", "PRBAR_EL1", 0xC340, true, true, {AArch64::HasV8_0rOps} },
{ "PRBAR_EL2", "PRBAR_EL2", 0xE340, true, true, {AArch64::HasV8_0rOps} },
{ "PRENR_EL1", "PRENR_EL1", 0xC309, true, true, {AArch64::HasV8_0rOps} },
{ "PRENR_EL2", "PRENR_EL2", 0xE309, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR10_EL1", "PRLAR10_EL1", 0xC369, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR10_EL2", "PRLAR10_EL2", 0xE369, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR11_EL1", "PRLAR11_EL1", 0xC36D, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR11_EL2", "PRLAR11_EL2", 0xE36D, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR12_EL1", "PRLAR12_EL1", 0xC371, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR12_EL2", "PRLAR12_EL2", 0xE371, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR13_EL1", "PRLAR13_EL1", 0xC375, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR13_EL2", "PRLAR13_EL2", 0xE375, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR14_EL1", "PRLAR14_EL1", 0xC379, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR14_EL2", "PRLAR14_EL2", 0xE379, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR15_EL1", "PRLAR15_EL1", 0xC37D, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR15_EL2", "PRLAR15_EL2", 0xE37D, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR1_EL1", "PRLAR1_EL1", 0xC345, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR1_EL2", "PRLAR1_EL2", 0xE345, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR2_EL1", "PRLAR2_EL1", 0xC349, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR2_EL2", "PRLAR2_EL2", 0xE349, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR3_EL1", "PRLAR3_EL1", 0xC34D, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR3_EL2", "PRLAR3_EL2", 0xE34D, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR4_EL1", "PRLAR4_EL1", 0xC351, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR4_EL2", "PRLAR4_EL2", 0xE351, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR5_EL1", "PRLAR5_EL1", 0xC355, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR5_EL2", "PRLAR5_EL2", 0xE355, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR6_EL1", "PRLAR6_EL1", 0xC359, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR6_EL2", "PRLAR6_EL2", 0xE359, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR7_EL1", "PRLAR7_EL1", 0xC35D, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR7_EL2", "PRLAR7_EL2", 0xE35D, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR8_EL1", "PRLAR8_EL1", 0xC361, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR8_EL2", "PRLAR8_EL2", 0xE361, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR9_EL1", "PRLAR9_EL1", 0xC365, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR9_EL2", "PRLAR9_EL2", 0xE365, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR_EL1", "PRLAR_EL1", 0xC341, true, true, {AArch64::HasV8_0rOps} },
{ "PRLAR_EL2", "PRLAR_EL2", 0xE341, true, true, {AArch64::HasV8_0rOps} },
{ "PRSELR_EL1", "PRSELR_EL1", 0xC311, true, true, {AArch64::HasV8_0rOps} },
{ "PRSELR_EL2", "PRSELR_EL2", 0xE311, true, true, {AArch64::HasV8_0rOps} },
{ "RCWMASK_EL1", "RCWMASK_EL1", 0xC686, true, true, {AArch64::FeatureTHE} },
{ "RCWSMASK_EL1", "RCWSMASK_EL1", 0xC683, true, true, {AArch64::FeatureTHE} },
{ "REVIDR_EL1", "REVIDR_EL1", 0xC006, true, false, {} },
{ "RGSR_EL1", "RGSR_EL1", 0xC085, true, true, {AArch64::FeatureMTE} },
{ "RMR_EL1", "RMR_EL1", 0xC602, true, true, {} },
{ "RMR_EL2", "RMR_EL2", 0xE602, true, true, {} },
{ "RMR_EL3", "RMR_EL3", 0xF602, true, true, {} },
{ "RNDR", "RNDR", 0xD920, true, false, {AArch64::FeatureRandGen} },
{ "RNDRRS", "RNDRRS", 0xD921, true, false, {AArch64::FeatureRandGen} },
{ "RVBAR_EL1", "RVBAR_EL1", 0xC601, true, false, {} },
{ "RVBAR_EL2", "RVBAR_EL2", 0xE601, true, false, {} },
{ "RVBAR_EL3", "RVBAR_EL3", 0xF601, true, false, {} },
{ "S2PIR_EL2", "S2PIR_EL2", 0xE515, true, true, {} },
{ "S2POR_EL1", "S2POR_EL1", 0xC515, true, true, {} },
{ "SCR_EL3", "SCR_EL3", 0xF088, true, true, {} },
{ "SCTLR2_EL1", "SCTLR2_EL1", 0xC083, true, true, {} },
{ "SCTLR2_EL12", "SCTLR2_EL12", 0xE883, true, true, {} },
{ "SCTLR2_EL2", "SCTLR2_EL2", 0xE083, true, true, {} },
{ "SCTLR2_EL3", "SCTLR2_EL3", 0xF083, true, true, {} },
{ "SCTLR_EL1", "SCTLR_EL1", 0xC080, true, true, {} },
{ "SCTLR_EL12", "SCTLR_EL12", 0xE880, true, true, {AArch64::FeatureVH} },
{ "SCTLR_EL2", "SCTLR_EL2", 0xE080, true, true, {} },
{ "SCTLR_EL3", "SCTLR_EL3", 0xF080, true, true, {} },
{ "SCXTNUM_EL0", "SCXTNUM_EL0", 0xDE87, true, true, {AArch64::FeatureSpecRestrict} },
{ "SCXTNUM_EL1", "SCXTNUM_EL1", 0xC687, true, true, {AArch64::FeatureSpecRestrict} },
{ "SCXTNUM_EL12", "SCXTNUM_EL12", 0xEE87, true, true, {AArch64::FeatureSpecRestrict} },
{ "SCXTNUM_EL2", "SCXTNUM_EL2", 0xE687, true, true, {AArch64::FeatureSpecRestrict} },
{ "SCXTNUM_EL3", "SCXTNUM_EL3", 0xF687, true, true, {AArch64::FeatureSpecRestrict} },
{ "SDER32_EL2", "SDER32_EL2", 0xE099, true, true, {AArch64::FeatureSEL2} },
{ "SDER32_EL3", "SDER32_EL3", 0xF089, true, true, {} },
{ "SMCR_EL1", "SMCR_EL1", 0xC096, true, true, {AArch64::FeatureSME} },
{ "SMCR_EL12", "SMCR_EL12", 0xE896, true, true, {AArch64::FeatureSME} },
{ "SMCR_EL2", "SMCR_EL2", 0xE096, true, true, {AArch64::FeatureSME} },
{ "SMCR_EL3", "SMCR_EL3", 0xF096, true, true, {AArch64::FeatureSME} },
{ "SMIDR_EL1", "SMIDR_EL1", 0xC806, true, false, {AArch64::FeatureSME} },
{ "SMPRIMAP_EL2", "SMPRIMAP_EL2", 0xE095, true, true, {AArch64::FeatureSME} },
{ "SMPRI_EL1", "SMPRI_EL1", 0xC094, true, true, {AArch64::FeatureSME} },
{ "SPMACCESSR_EL1", "SPMACCESSR_EL1", 0x84EB, true, true, {} },
{ "SPMACCESSR_EL12", "SPMACCESSR_EL12", 0xACEB, true, true, {} },
{ "SPMACCESSR_EL2", "SPMACCESSR_EL2", 0xA4EB, true, true, {} },
{ "SPMACCESSR_EL3", "SPMACCESSR_EL3", 0xB4EB, true, true, {} },
{ "SPMCFGR_EL1", "SPMCFGR_EL1", 0x84EF, true, false, {} },
{ "SPMCGCR0_EL1", "SPMCGCR0_EL1", 0x84E8, true, false, {} },
{ "SPMCGCR1_EL1", "SPMCGCR1_EL1", 0x84E9, true, false, {} },
{ "SPMCNTENCLR_EL0", "SPMCNTENCLR_EL0", 0x9CE2, true, true, {} },
{ "SPMCNTENSET_EL0", "SPMCNTENSET_EL0", 0x9CE1, true, true, {} },
{ "SPMCR_EL0", "SPMCR_EL0", 0x9CE0, true, true, {} },
{ "SPMDEVAFF_EL1", "SPMDEVAFF_EL1", 0x84EE, true, false, {} },
{ "SPMDEVARCH_EL1", "SPMDEVARCH_EL1", 0x84ED, true, false, {} },
{ "SPMEVCNTR0_EL0", "SPMEVCNTR0_EL0", 0x9F00, true, true, {} },
{ "SPMEVCNTR10_EL0", "SPMEVCNTR10_EL0", 0x9F0A, true, true, {} },
{ "SPMEVCNTR11_EL0", "SPMEVCNTR11_EL0", 0x9F0B, true, true, {} },
{ "SPMEVCNTR12_EL0", "SPMEVCNTR12_EL0", 0x9F0C, true, true, {} },
{ "SPMEVCNTR13_EL0", "SPMEVCNTR13_EL0", 0x9F0D, true, true, {} },
{ "SPMEVCNTR14_EL0", "SPMEVCNTR14_EL0", 0x9F0E, true, true, {} },
{ "SPMEVCNTR15_EL0", "SPMEVCNTR15_EL0", 0x9F0F, true, true, {} },
{ "SPMEVCNTR1_EL0", "SPMEVCNTR1_EL0", 0x9F01, true, true, {} },
{ "SPMEVCNTR2_EL0", "SPMEVCNTR2_EL0", 0x9F02, true, true, {} },
{ "SPMEVCNTR3_EL0", "SPMEVCNTR3_EL0", 0x9F03, true, true, {} },
{ "SPMEVCNTR4_EL0", "SPMEVCNTR4_EL0", 0x9F04, true, true, {} },
{ "SPMEVCNTR5_EL0", "SPMEVCNTR5_EL0", 0x9F05, true, true, {} },
{ "SPMEVCNTR6_EL0", "SPMEVCNTR6_EL0", 0x9F06, true, true, {} },
{ "SPMEVCNTR7_EL0", "SPMEVCNTR7_EL0", 0x9F07, true, true, {} },
{ "SPMEVCNTR8_EL0", "SPMEVCNTR8_EL0", 0x9F08, true, true, {} },
{ "SPMEVCNTR9_EL0", "SPMEVCNTR9_EL0", 0x9F09, true, true, {} },
{ "SPMEVFILT2R0_EL0", "SPMEVFILT2R0_EL0", 0x9F30, true, true, {} },
{ "SPMEVFILT2R10_EL0", "SPMEVFILT2R10_EL0", 0x9F3A, true, true, {} },
{ "SPMEVFILT2R11_EL0", "SPMEVFILT2R11_EL0", 0x9F3B, true, true, {} },
{ "SPMEVFILT2R12_EL0", "SPMEVFILT2R12_EL0", 0x9F3C, true, true, {} },
{ "SPMEVFILT2R13_EL0", "SPMEVFILT2R13_EL0", 0x9F3D, true, true, {} },
{ "SPMEVFILT2R14_EL0", "SPMEVFILT2R14_EL0", 0x9F3E, true, true, {} },
{ "SPMEVFILT2R15_EL0", "SPMEVFILT2R15_EL0", 0x9F3F, true, true, {} },
{ "SPMEVFILT2R1_EL0", "SPMEVFILT2R1_EL0", 0x9F31, true, true, {} },
{ "SPMEVFILT2R2_EL0", "SPMEVFILT2R2_EL0", 0x9F32, true, true, {} },
{ "SPMEVFILT2R3_EL0", "SPMEVFILT2R3_EL0", 0x9F33, true, true, {} },
{ "SPMEVFILT2R4_EL0", "SPMEVFILT2R4_EL0", 0x9F34, true, true, {} },
{ "SPMEVFILT2R5_EL0", "SPMEVFILT2R5_EL0", 0x9F35, true, true, {} },
{ "SPMEVFILT2R6_EL0", "SPMEVFILT2R6_EL0", 0x9F36, true, true, {} },
{ "SPMEVFILT2R7_EL0", "SPMEVFILT2R7_EL0", 0x9F37, true, true, {} },
{ "SPMEVFILT2R8_EL0", "SPMEVFILT2R8_EL0", 0x9F38, true, true, {} },
{ "SPMEVFILT2R9_EL0", "SPMEVFILT2R9_EL0", 0x9F39, true, true, {} },
{ "SPMEVFILTR0_EL0", "SPMEVFILTR0_EL0", 0x9F20, true, true, {} },
{ "SPMEVFILTR10_EL0", "SPMEVFILTR10_EL0", 0x9F2A, true, true, {} },
{ "SPMEVFILTR11_EL0", "SPMEVFILTR11_EL0", 0x9F2B, true, true, {} },
{ "SPMEVFILTR12_EL0", "SPMEVFILTR12_EL0", 0x9F2C, true, true, {} },
{ "SPMEVFILTR13_EL0", "SPMEVFILTR13_EL0", 0x9F2D, true, true, {} },
{ "SPMEVFILTR14_EL0", "SPMEVFILTR14_EL0", 0x9F2E, true, true, {} },
{ "SPMEVFILTR15_EL0", "SPMEVFILTR15_EL0", 0x9F2F, true, true, {} },
{ "SPMEVFILTR1_EL0", "SPMEVFILTR1_EL0", 0x9F21, true, true, {} },
{ "SPMEVFILTR2_EL0", "SPMEVFILTR2_EL0", 0x9F22, true, true, {} },
{ "SPMEVFILTR3_EL0", "SPMEVFILTR3_EL0", 0x9F23, true, true, {} },
{ "SPMEVFILTR4_EL0", "SPMEVFILTR4_EL0", 0x9F24, true, true, {} },
{ "SPMEVFILTR5_EL0", "SPMEVFILTR5_EL0", 0x9F25, true, true, {} },
{ "SPMEVFILTR6_EL0", "SPMEVFILTR6_EL0", 0x9F26, true, true, {} },
{ "SPMEVFILTR7_EL0", "SPMEVFILTR7_EL0", 0x9F27, true, true, {} },
{ "SPMEVFILTR8_EL0", "SPMEVFILTR8_EL0", 0x9F28, true, true, {} },
{ "SPMEVFILTR9_EL0", "SPMEVFILTR9_EL0", 0x9F29, true, true, {} },
{ "SPMEVTYPER0_EL0", "SPMEVTYPER0_EL0", 0x9F10, true, true, {} },
{ "SPMEVTYPER10_EL0", "SPMEVTYPER10_EL0", 0x9F1A, true, true, {} },
{ "SPMEVTYPER11_EL0", "SPMEVTYPER11_EL0", 0x9F1B, true, true, {} },
{ "SPMEVTYPER12_EL0", "SPMEVTYPER12_EL0", 0x9F1C, true, true, {} },
{ "SPMEVTYPER13_EL0", "SPMEVTYPER13_EL0", 0x9F1D, true, true, {} },
{ "SPMEVTYPER14_EL0", "SPMEVTYPER14_EL0", 0x9F1E, true, true, {} },
{ "SPMEVTYPER15_EL0", "SPMEVTYPER15_EL0", 0x9F1F, true, true, {} },
{ "SPMEVTYPER1_EL0", "SPMEVTYPER1_EL0", 0x9F11, true, true, {} },
{ "SPMEVTYPER2_EL0", "SPMEVTYPER2_EL0", 0x9F12, true, true, {} },
{ "SPMEVTYPER3_EL0", "SPMEVTYPER3_EL0", 0x9F13, true, true, {} },
{ "SPMEVTYPER4_EL0", "SPMEVTYPER4_EL0", 0x9F14, true, true, {} },
{ "SPMEVTYPER5_EL0", "SPMEVTYPER5_EL0", 0x9F15, true, true, {} },
{ "SPMEVTYPER6_EL0", "SPMEVTYPER6_EL0", 0x9F16, true, true, {} },
{ "SPMEVTYPER7_EL0", "SPMEVTYPER7_EL0", 0x9F17, true, true, {} },
{ "SPMEVTYPER8_EL0", "SPMEVTYPER8_EL0", 0x9F18, true, true, {} },
{ "SPMEVTYPER9_EL0", "SPMEVTYPER9_EL0", 0x9F19, true, true, {} },
{ "SPMIIDR_EL1", "SPMIIDR_EL1", 0x84EC, true, false, {} },
{ "SPMINTENCLR_EL1", "SPMINTENCLR_EL1", 0x84F2, true, true, {} },
{ "SPMINTENSET_EL1", "SPMINTENSET_EL1", 0x84F1, true, true, {} },
{ "SPMOVSCLR_EL0", "SPMOVSCLR_EL0", 0x9CE3, true, true, {} },
{ "SPMOVSSET_EL0", "SPMOVSSET_EL0", 0x9CF3, true, true, {} },
{ "SPMROOTCR_EL3", "SPMROOTCR_EL3", 0xB4F7, true, true, {} },
{ "SPMSCR_EL1", "SPMSCR_EL1", 0xBCF7, true, true, {} },
{ "SPMSELR_EL0", "SPMSELR_EL0", 0x9CE5, true, true, {} },
{ "SPMZR_EL0", "SPMZR_EL0", 0x9CE4, false, true, {} },
{ "SPSel", "SPSel", 0xC210, true, true, {} },
{ "SPSR_abt", "SPSR_abt", 0xE219, true, true, {} },
{ "SPSR_EL1", "SPSR_EL1", 0xC200, true, true, {} },
{ "SPSR_EL12", "SPSR_EL12", 0xEA00, true, true, {AArch64::FeatureVH} },
{ "SPSR_EL2", "SPSR_EL2", 0xE200, true, true, {} },
{ "SPSR_EL3", "SPSR_EL3", 0xF200, true, true, {} },
{ "SPSR_fiq", "SPSR_fiq", 0xE21B, true, true, {} },
{ "SPSR_irq", "SPSR_irq", 0xE218, true, true, {} },
{ "SPSR_und", "SPSR_und", 0xE21A, true, true, {} },
{ "SP_EL0", "SP_EL0", 0xC208, true, true, {} },
{ "SP_EL1", "SP_EL1", 0xE208, true, true, {} },
{ "SP_EL2", "SP_EL2", 0xF208, true, true, {} },
{ "SSBS", "SSBS", 0xDA16, true, true, {AArch64::FeatureSSBS} },
{ "SVCR", "SVCR", 0xDA12, true, true, {AArch64::FeatureSME} },
{ "TCO", "TCO", 0xDA17, true, true, {AArch64::FeatureMTE} },
{ "TCR2_EL1", "TCR2_EL1", 0xC103, true, true, {} },
{ "TCR2_EL12", "TCR2_EL12", 0xE903, true, true, {} },
{ "TCR2_EL2", "TCR2_EL2", 0xE103, true, true, {} },
{ "TCR_EL1", "TCR_EL1", 0xC102, true, true, {} },
{ "TCR_EL12", "TCR_EL12", 0xE902, true, true, {AArch64::FeatureVH} },
{ "TCR_EL2", "TCR_EL2", 0xE102, true, true, {} },
{ "TCR_EL3", "TCR_EL3", 0xF102, true, true, {} },
{ "TEECR32_EL1", "TEECR32_EL1", 0x9000, true, true, {} },
{ "TEEHBR32_EL1", "TEEHBR32_EL1", 0x9080, true, true, {} },
{ "TFSRE0_EL1", "TFSRE0_EL1", 0xC2B1, true, true, {AArch64::FeatureMTE} },
{ "TFSR_EL1", "TFSR_EL1", 0xC2B0, true, true, {AArch64::FeatureMTE} },
{ "TFSR_EL12", "TFSR_EL12", 0xEAB0, true, true, {AArch64::FeatureMTE} },
{ "TFSR_EL2", "TFSR_EL2", 0xE2B0, true, true, {AArch64::FeatureMTE} },
{ "TFSR_EL3", "TFSR_EL3", 0xF2B0, true, true, {AArch64::FeatureMTE} },
{ "TPIDR2_EL0", "TPIDR2_EL0", 0xDE85, true, true, {AArch64::FeatureSME} },
{ "TPIDRRO_EL0", "TPIDRRO_EL0", 0xDE83, true, true, {} },
{ "TPIDR_EL0", "TPIDR_EL0", 0xDE82, true, true, {} },
{ "TPIDR_EL1", "TPIDR_EL1", 0xC684, true, true, {} },
{ "TPIDR_EL2", "TPIDR_EL2", 0xE682, true, true, {} },
{ "TPIDR_EL3", "TPIDR_EL3", 0xF682, true, true, {} },
{ "TRBBASER_EL1", "TRBBASER_EL1", 0xC4DA, true, true, {AArch64::FeatureTRBE} },
{ "TRBIDR_EL1", "TRBIDR_EL1", 0xC4DF, true, false, {AArch64::FeatureTRBE} },
{ "TRBLIMITR_EL1", "TRBLIMITR_EL1", 0xC4D8, true, true, {AArch64::FeatureTRBE} },
{ "TRBMAR_EL1", "TRBMAR_EL1", 0xC4DC, true, true, {AArch64::FeatureTRBE} },
{ "TRBMPAM_EL1", "TRBMPAM_EL1", 0xC4DD, true, true, {AArch64::FeatureTRBE} },
{ "TRBPTR_EL1", "TRBPTR_EL1", 0xC4D9, true, true, {AArch64::FeatureTRBE} },
{ "TRBSR_EL1", "TRBSR_EL1", 0xC4DB, true, true, {AArch64::FeatureTRBE} },
{ "TRBTRG_EL1", "TRBTRG_EL1", 0xC4DE, true, true, {AArch64::FeatureTRBE} },
{ "TRCACATR0", "TRCACATR0", 0x8902, true, true, {} },
{ "TRCACATR1", "TRCACATR1", 0x8912, true, true, {} },
{ "TRCACATR10", "TRCACATR10", 0x8923, true, true, {} },
{ "TRCACATR11", "TRCACATR11", 0x8933, true, true, {} },
{ "TRCACATR12", "TRCACATR12", 0x8943, true, true, {} },
{ "TRCACATR13", "TRCACATR13", 0x8953, true, true, {} },
{ "TRCACATR14", "TRCACATR14", 0x8963, true, true, {} },
{ "TRCACATR15", "TRCACATR15", 0x8973, true, true, {} },
{ "TRCACATR2", "TRCACATR2", 0x8922, true, true, {} },
{ "TRCACATR3", "TRCACATR3", 0x8932, true, true, {} },
{ "TRCACATR4", "TRCACATR4", 0x8942, true, true, {} },
{ "TRCACATR5", "TRCACATR5", 0x8952, true, true, {} },
{ "TRCACATR6", "TRCACATR6", 0x8962, true, true, {} },
{ "TRCACATR7", "TRCACATR7", 0x8972, true, true, {} },
{ "TRCACATR8", "TRCACATR8", 0x8903, true, true, {} },
{ "TRCACATR9", "TRCACATR9", 0x8913, true, true, {} },
{ "TRCACVR0", "TRCACVR0", 0x8900, true, true, {} },
{ "TRCACVR1", "TRCACVR1", 0x8910, true, true, {} },
{ "TRCACVR10", "TRCACVR10", 0x8921, true, true, {} },
{ "TRCACVR11", "TRCACVR11", 0x8931, true, true, {} },
{ "TRCACVR12", "TRCACVR12", 0x8941, true, true, {} },
{ "TRCACVR13", "TRCACVR13", 0x8951, true, true, {} },
{ "TRCACVR14", "TRCACVR14", 0x8961, true, true, {} },
{ "TRCACVR15", "TRCACVR15", 0x8971, true, true, {} },
{ "TRCACVR2", "TRCACVR2", 0x8920, true, true, {} },
{ "TRCACVR3", "TRCACVR3", 0x8930, true, true, {} },
{ "TRCACVR4", "TRCACVR4", 0x8940, true, true, {} },
{ "TRCACVR5", "TRCACVR5", 0x8950, true, true, {} },
{ "TRCACVR6", "TRCACVR6", 0x8960, true, true, {} },
{ "TRCACVR7", "TRCACVR7", 0x8970, true, true, {} },
{ "TRCACVR8", "TRCACVR8", 0x8901, true, true, {} },
{ "TRCACVR9", "TRCACVR9", 0x8911, true, true, {} },
{ "TRCAUTHSTATUS", "TRCAUTHSTATUS", 0x8BF6, true, false, {} },
{ "TRCAUXCTLR", "TRCAUXCTLR", 0x8830, true, true, {} },
{ "TRCBBCTLR", "TRCBBCTLR", 0x8878, true, true, {} },
{ "TRCCCCTLR", "TRCCCCTLR", 0x8870, true, true, {} },
{ "TRCCIDCCTLR0", "TRCCIDCCTLR0", 0x8982, true, true, {} },
{ "TRCCIDCCTLR1", "TRCCIDCCTLR1", 0x898A, true, true, {} },
{ "TRCCIDCVR0", "TRCCIDCVR0", 0x8980, true, true, {} },
{ "TRCCIDCVR1", "TRCCIDCVR1", 0x8990, true, true, {} },
{ "TRCCIDCVR2", "TRCCIDCVR2", 0x89A0, true, true, {} },
{ "TRCCIDCVR3", "TRCCIDCVR3", 0x89B0, true, true, {} },
{ "TRCCIDCVR4", "TRCCIDCVR4", 0x89C0, true, true, {} },
{ "TRCCIDCVR5", "TRCCIDCVR5", 0x89D0, true, true, {} },
{ "TRCCIDCVR6", "TRCCIDCVR6", 0x89E0, true, true, {} },
{ "TRCCIDCVR7", "TRCCIDCVR7", 0x89F0, true, true, {} },
{ "TRCCIDR0", "TRCCIDR0", 0x8BE7, true, false, {} },
{ "TRCCIDR1", "TRCCIDR1", 0x8BEF, true, false, {} },
{ "TRCCIDR2", "TRCCIDR2", 0x8BF7, true, false, {} },
{ "TRCCIDR3", "TRCCIDR3", 0x8BFF, true, false, {} },
{ "TRCCLAIMCLR", "TRCCLAIMCLR", 0x8BCE, true, true, {} },
{ "TRCCLAIMSET", "TRCCLAIMSET", 0x8BC6, true, true, {} },
{ "TRCCNTCTLR0", "TRCCNTCTLR0", 0x8825, true, true, {} },
{ "TRCCNTCTLR1", "TRCCNTCTLR1", 0x882D, true, true, {} },
{ "TRCCNTCTLR2", "TRCCNTCTLR2", 0x8835, true, true, {} },
{ "TRCCNTCTLR3", "TRCCNTCTLR3", 0x883D, true, true, {} },
{ "TRCCNTRLDVR0", "TRCCNTRLDVR0", 0x8805, true, true, {} },
{ "TRCCNTRLDVR1", "TRCCNTRLDVR1", 0x880D, true, true, {} },
{ "TRCCNTRLDVR2", "TRCCNTRLDVR2", 0x8815, true, true, {} },
{ "TRCCNTRLDVR3", "TRCCNTRLDVR3", 0x881D, true, true, {} },
{ "TRCCNTVR0", "TRCCNTVR0", 0x8845, true, true, {} },
{ "TRCCNTVR1", "TRCCNTVR1", 0x884D, true, true, {} },
{ "TRCCNTVR2", "TRCCNTVR2", 0x8855, true, true, {} },
{ "TRCCNTVR3", "TRCCNTVR3", 0x885D, true, true, {} },
{ "TRCCONFIGR", "TRCCONFIGR", 0x8820, true, true, {} },
{ "TRCDEVAFF0", "TRCDEVAFF0", 0x8BD6, true, false, {} },
{ "TRCDEVAFF1", "TRCDEVAFF1", 0x8BDE, true, false, {} },
{ "TRCDEVARCH", "TRCDEVARCH", 0x8BFE, true, false, {} },
{ "TRCDEVID", "TRCDEVID", 0x8B97, true, false, {} },
{ "TRCDEVTYPE", "TRCDEVTYPE", 0x8B9F, true, false, {} },
{ "TRCDVCMR0", "TRCDVCMR0", 0x8906, true, true, {} },
{ "TRCDVCMR1", "TRCDVCMR1", 0x8926, true, true, {} },
{ "TRCDVCMR2", "TRCDVCMR2", 0x8946, true, true, {} },
{ "TRCDVCMR3", "TRCDVCMR3", 0x8966, true, true, {} },
{ "TRCDVCMR4", "TRCDVCMR4", 0x8907, true, true, {} },
{ "TRCDVCMR5", "TRCDVCMR5", 0x8927, true, true, {} },
{ "TRCDVCMR6", "TRCDVCMR6", 0x8947, true, true, {} },
{ "TRCDVCMR7", "TRCDVCMR7", 0x8967, true, true, {} },
{ "TRCDVCVR0", "TRCDVCVR0", 0x8904, true, true, {} },
{ "TRCDVCVR1", "TRCDVCVR1", 0x8924, true, true, {} },
{ "TRCDVCVR2", "TRCDVCVR2", 0x8944, true, true, {} },
{ "TRCDVCVR3", "TRCDVCVR3", 0x8964, true, true, {} },
{ "TRCDVCVR4", "TRCDVCVR4", 0x8905, true, true, {} },
{ "TRCDVCVR5", "TRCDVCVR5", 0x8925, true, true, {} },
{ "TRCDVCVR6", "TRCDVCVR6", 0x8945, true, true, {} },
{ "TRCDVCVR7", "TRCDVCVR7", 0x8965, true, true, {} },
{ "TRCEVENTCTL0R", "TRCEVENTCTL0R", 0x8840, true, true, {} },
{ "TRCEVENTCTL1R", "TRCEVENTCTL1R", 0x8848, true, true, {} },
{ "TRCEXTINSELR", "TRCEXTINSELR", 0x8844, true, true, {} },
{ "TRCEXTINSELR0", "TRCEXTINSELR0", 0x8844, true, true, {AArch64::FeatureETE} },
{ "TRCEXTINSELR1", "TRCEXTINSELR1", 0x884C, true, true, {AArch64::FeatureETE} },
{ "TRCEXTINSELR2", "TRCEXTINSELR2", 0x8854, true, true, {AArch64::FeatureETE} },
{ "TRCEXTINSELR3", "TRCEXTINSELR3", 0x885C, true, true, {AArch64::FeatureETE} },
{ "TRCIDR0", "TRCIDR0", 0x8847, true, false, {} },
{ "TRCIDR1", "TRCIDR1", 0x884F, true, false, {} },
{ "TRCIDR10", "TRCIDR10", 0x8816, true, false, {} },
{ "TRCIDR11", "TRCIDR11", 0x881E, true, false, {} },
{ "TRCIDR12", "TRCIDR12", 0x8826, true, false, {} },
{ "TRCIDR13", "TRCIDR13", 0x882E, true, false, {} },
{ "TRCIDR2", "TRCIDR2", 0x8857, true, false, {} },
{ "TRCIDR3", "TRCIDR3", 0x885F, true, false, {} },
{ "TRCIDR4", "TRCIDR4", 0x8867, true, false, {} },
{ "TRCIDR5", "TRCIDR5", 0x886F, true, false, {} },
{ "TRCIDR6", "TRCIDR6", 0x8877, true, false, {} },
{ "TRCIDR7", "TRCIDR7", 0x887F, true, false, {} },
{ "TRCIDR8", "TRCIDR8", 0x8806, true, false, {} },
{ "TRCIDR9", "TRCIDR9", 0x880E, true, false, {} },
{ "TRCIMSPEC0", "TRCIMSPEC0", 0x8807, true, true, {} },
{ "TRCIMSPEC1", "TRCIMSPEC1", 0x880F, true, true, {} },
{ "TRCIMSPEC2", "TRCIMSPEC2", 0x8817, true, true, {} },
{ "TRCIMSPEC3", "TRCIMSPEC3", 0x881F, true, true, {} },
{ "TRCIMSPEC4", "TRCIMSPEC4", 0x8827, true, true, {} },
{ "TRCIMSPEC5", "TRCIMSPEC5", 0x882F, true, true, {} },
{ "TRCIMSPEC6", "TRCIMSPEC6", 0x8837, true, true, {} },
{ "TRCIMSPEC7", "TRCIMSPEC7", 0x883F, true, true, {} },
{ "TRCITCTRL", "TRCITCTRL", 0x8B84, true, true, {} },
{ "TRCITECR_EL1", "TRCITECR_EL1", 0xC093, true, true, {AArch64::FeatureITE} },
{ "TRCITECR_EL12", "TRCITECR_EL12", 0xE893, true, true, {AArch64::FeatureITE} },
{ "TRCITECR_EL2", "TRCITECR_EL2", 0xE093, true, true, {AArch64::FeatureITE} },
{ "TRCITEEDCR", "TRCITEEDCR", 0x8811, true, true, {AArch64::FeatureITE} },
{ "TRCLAR", "TRCLAR", 0x8BE6, false, true, {} },
{ "TRCLSR", "TRCLSR", 0x8BEE, true, false, {} },
{ "TRCOSLAR", "TRCOSLAR", 0x8884, false, true, {} },
{ "TRCOSLSR", "TRCOSLSR", 0x888C, true, false, {} },
{ "TRCPDCR", "TRCPDCR", 0x88A4, true, true, {} },
{ "TRCPDSR", "TRCPDSR", 0x88AC, true, false, {} },
{ "TRCPIDR0", "TRCPIDR0", 0x8BC7, true, false, {} },
{ "TRCPIDR1", "TRCPIDR1", 0x8BCF, true, false, {} },
{ "TRCPIDR2", "TRCPIDR2", 0x8BD7, true, false, {} },
{ "TRCPIDR3", "TRCPIDR3", 0x8BDF, true, false, {} },
{ "TRCPIDR4", "TRCPIDR4", 0x8BA7, true, false, {} },
{ "TRCPIDR5", "TRCPIDR5", 0x8BAF, true, false, {} },
{ "TRCPIDR6", "TRCPIDR6", 0x8BB7, true, false, {} },
{ "TRCPIDR7", "TRCPIDR7", 0x8BBF, true, false, {} },
{ "TRCPRGCTLR", "TRCPRGCTLR", 0x8808, true, true, {} },
{ "TRCPROCSELR", "TRCPROCSELR", 0x8810, true, true, {} },
{ "TRCQCTLR", "TRCQCTLR", 0x8809, true, true, {} },
{ "TRCRSCTLR10", "TRCRSCTLR10", 0x88D0, true, true, {} },
{ "TRCRSCTLR11", "TRCRSCTLR11", 0x88D8, true, true, {} },
{ "TRCRSCTLR12", "TRCRSCTLR12", 0x88E0, true, true, {} },
{ "TRCRSCTLR13", "TRCRSCTLR13", 0x88E8, true, true, {} },
{ "TRCRSCTLR14", "TRCRSCTLR14", 0x88F0, true, true, {} },
{ "TRCRSCTLR15", "TRCRSCTLR15", 0x88F8, true, true, {} },
{ "TRCRSCTLR16", "TRCRSCTLR16", 0x8881, true, true, {} },
{ "TRCRSCTLR17", "TRCRSCTLR17", 0x8889, true, true, {} },
{ "TRCRSCTLR18", "TRCRSCTLR18", 0x8891, true, true, {} },
{ "TRCRSCTLR19", "TRCRSCTLR19", 0x8899, true, true, {} },
{ "TRCRSCTLR2", "TRCRSCTLR2", 0x8890, true, true, {} },
{ "TRCRSCTLR20", "TRCRSCTLR20", 0x88A1, true, true, {} },
{ "TRCRSCTLR21", "TRCRSCTLR21", 0x88A9, true, true, {} },
{ "TRCRSCTLR22", "TRCRSCTLR22", 0x88B1, true, true, {} },
{ "TRCRSCTLR23", "TRCRSCTLR23", 0x88B9, true, true, {} },
{ "TRCRSCTLR24", "TRCRSCTLR24", 0x88C1, true, true, {} },
{ "TRCRSCTLR25", "TRCRSCTLR25", 0x88C9, true, true, {} },
{ "TRCRSCTLR26", "TRCRSCTLR26", 0x88D1, true, true, {} },
{ "TRCRSCTLR27", "TRCRSCTLR27", 0x88D9, true, true, {} },
{ "TRCRSCTLR28", "TRCRSCTLR28", 0x88E1, true, true, {} },
{ "TRCRSCTLR29", "TRCRSCTLR29", 0x88E9, true, true, {} },
{ "TRCRSCTLR3", "TRCRSCTLR3", 0x8898, true, true, {} },
{ "TRCRSCTLR30", "TRCRSCTLR30", 0x88F1, true, true, {} },
{ "TRCRSCTLR31", "TRCRSCTLR31", 0x88F9, true, true, {} },
{ "TRCRSCTLR4", "TRCRSCTLR4", 0x88A0, true, true, {} },
{ "TRCRSCTLR5", "TRCRSCTLR5", 0x88A8, true, true, {} },
{ "TRCRSCTLR6", "TRCRSCTLR6", 0x88B0, true, true, {} },
{ "TRCRSCTLR7", "TRCRSCTLR7", 0x88B8, true, true, {} },
{ "TRCRSCTLR8", "TRCRSCTLR8", 0x88C0, true, true, {} },
{ "TRCRSCTLR9", "TRCRSCTLR9", 0x88C8, true, true, {} },
{ "TRCRSR", "TRCRSR", 0x8850, true, true, {AArch64::FeatureETE} },
{ "TRCSEQEVR0", "TRCSEQEVR0", 0x8804, true, true, {} },
{ "TRCSEQEVR1", "TRCSEQEVR1", 0x880C, true, true, {} },
{ "TRCSEQEVR2", "TRCSEQEVR2", 0x8814, true, true, {} },
{ "TRCSEQRSTEVR", "TRCSEQRSTEVR", 0x8834, true, true, {} },
{ "TRCSEQSTR", "TRCSEQSTR", 0x883C, true, true, {} },
{ "TRCSSCCR0", "TRCSSCCR0", 0x8882, true, true, {} },
{ "TRCSSCCR1", "TRCSSCCR1", 0x888A, true, true, {} },
{ "TRCSSCCR2", "TRCSSCCR2", 0x8892, true, true, {} },
{ "TRCSSCCR3", "TRCSSCCR3", 0x889A, true, true, {} },
{ "TRCSSCCR4", "TRCSSCCR4", 0x88A2, true, true, {} },
{ "TRCSSCCR5", "TRCSSCCR5", 0x88AA, true, true, {} },
{ "TRCSSCCR6", "TRCSSCCR6", 0x88B2, true, true, {} },
{ "TRCSSCCR7", "TRCSSCCR7", 0x88BA, true, true, {} },
{ "TRCSSCSR0", "TRCSSCSR0", 0x88C2, true, true, {} },
{ "TRCSSCSR1", "TRCSSCSR1", 0x88CA, true, true, {} },
{ "TRCSSCSR2", "TRCSSCSR2", 0x88D2, true, true, {} },
{ "TRCSSCSR3", "TRCSSCSR3", 0x88DA, true, true, {} },
{ "TRCSSCSR4", "TRCSSCSR4", 0x88E2, true, true, {} },
{ "TRCSSCSR5", "TRCSSCSR5", 0x88EA, true, true, {} },
{ "TRCSSCSR6", "TRCSSCSR6", 0x88F2, true, true, {} },
{ "TRCSSCSR7", "TRCSSCSR7", 0x88FA, true, true, {} },
{ "TRCSSPCICR0", "TRCSSPCICR0", 0x8883, true, true, {} },
{ "TRCSSPCICR1", "TRCSSPCICR1", 0x888B, true, true, {} },
{ "TRCSSPCICR2", "TRCSSPCICR2", 0x8893, true, true, {} },
{ "TRCSSPCICR3", "TRCSSPCICR3", 0x889B, true, true, {} },
{ "TRCSSPCICR4", "TRCSSPCICR4", 0x88A3, true, true, {} },
{ "TRCSSPCICR5", "TRCSSPCICR5", 0x88AB, true, true, {} },
{ "TRCSSPCICR6", "TRCSSPCICR6", 0x88B3, true, true, {} },
{ "TRCSSPCICR7", "TRCSSPCICR7", 0x88BB, true, true, {} },
{ "TRCSTALLCTLR", "TRCSTALLCTLR", 0x8858, true, true, {} },
{ "TRCSTATR", "TRCSTATR", 0x8818, true, false, {} },
{ "TRCSYNCPR", "TRCSYNCPR", 0x8868, true, true, {} },
{ "TRCTRACEIDR", "TRCTRACEIDR", 0x8801, true, true, {} },
{ "TRCTSCTLR", "TRCTSCTLR", 0x8860, true, true, {} },
{ "TRCVDARCCTLR", "TRCVDARCCTLR", 0x8852, true, true, {} },
{ "TRCVDCTLR", "TRCVDCTLR", 0x8842, true, true, {} },
{ "TRCVDSACCTLR", "TRCVDSACCTLR", 0x884A, true, true, {} },
{ "TRCVICTLR", "TRCVICTLR", 0x8802, true, true, {} },
{ "TRCVIIECTLR", "TRCVIIECTLR", 0x880A, true, true, {} },
{ "TRCVIPCSSCTLR", "TRCVIPCSSCTLR", 0x881A, true, true, {} },
{ "TRCVISSCTLR", "TRCVISSCTLR", 0x8812, true, true, {} },
{ "TRCVMIDCCTLR0", "TRCVMIDCCTLR0", 0x8992, true, true, {} },
{ "TRCVMIDCCTLR1", "TRCVMIDCCTLR1", 0x899A, true, true, {} },
{ "TRCVMIDCVR0", "TRCVMIDCVR0", 0x8981, true, true, {} },
{ "TRCVMIDCVR1", "TRCVMIDCVR1", 0x8991, true, true, {} },
{ "TRCVMIDCVR2", "TRCVMIDCVR2", 0x89A1, true, true, {} },
{ "TRCVMIDCVR3", "TRCVMIDCVR3", 0x89B1, true, true, {} },
{ "TRCVMIDCVR4", "TRCVMIDCVR4", 0x89C1, true, true, {} },
{ "TRCVMIDCVR5", "TRCVMIDCVR5", 0x89D1, true, true, {} },
{ "TRCVMIDCVR6", "TRCVMIDCVR6", 0x89E1, true, true, {} },
{ "TRCVMIDCVR7", "TRCVMIDCVR7", 0x89F1, true, true, {} },
{ "TRFCR_EL1", "TRFCR_EL1", 0xC091, true, true, {AArch64::FeatureTRACEV8_4} },
{ "TRFCR_EL12", "TRFCR_EL12", 0xE891, true, true, {AArch64::FeatureTRACEV8_4} },
{ "TRFCR_EL2", "TRFCR_EL2", 0xE091, true, true, {AArch64::FeatureTRACEV8_4} },
{ "TTBR0_EL1", "TTBR0_EL1", 0xC100, true, true, {} },
{ "TTBR0_EL12", "TTBR0_EL12", 0xE900, true, true, {AArch64::FeatureVH} },
{ "TTBR0_EL2", "VSCTLR_EL2", 0xE100, true, true, {AArch64::FeatureEL2VMSA} },
{ "TTBR0_EL3", "TTBR0_EL3", 0xF100, true, true, {} },
{ "TTBR1_EL1", "TTBR1_EL1", 0xC101, true, true, {} },
{ "TTBR1_EL12", "TTBR1_EL12", 0xE901, true, true, {AArch64::FeatureVH} },
{ "TTBR1_EL2", "TTBR1_EL2", 0xE101, true, true, {AArch64::FeatureVH} },
{ "UAO", "UAO", 0xC214, true, true, {AArch64::FeaturePsUAO} },
{ "VBAR_EL1", "VBAR_EL1", 0xC600, true, true, {} },
{ "VBAR_EL12", "VBAR_EL12", 0xEE00, true, true, {AArch64::FeatureVH} },
{ "VBAR_EL2", "VBAR_EL2", 0xE600, true, true, {} },
{ "VBAR_EL3", "VBAR_EL3", 0xF600, true, true, {} },
{ "VDISR_EL2", "VDISR_EL2", 0xE609, true, true, {AArch64::FeatureRAS} },
{ "VDISR_EL3", "VDISR_EL3", 0xF609, true, true, {} },
{ "VMECID_A_EL2", "VMECID_A_EL2", 0xE549, true, true, {AArch64::FeatureMEC} },
{ "VMECID_P_EL2", "VMECID_P_EL2", 0xE548, true, true, {AArch64::FeatureMEC} },
{ "VMPIDR_EL2", "VMPIDR_EL2", 0xE005, true, true, {} },
{ "VNCR_EL2", "VNCR_EL2", 0xE110, true, true, {AArch64::FeatureNV} },
{ "VPIDR_EL2", "VPIDR_EL2", 0xE000, true, true, {} },
{ "VSCTLR_EL2", "TTBR0_EL2", 0xE100, true, true, {AArch64::HasV8_0rOps} },
{ "VSESR_EL2", "VSESR_EL2", 0xE293, true, true, {AArch64::FeatureRAS} },
{ "VSESR_EL3", "VSESR_EL3", 0xF293, true, true, {} },
{ "VSTCR_EL2", "VSTCR_EL2", 0xE132, true, true, {AArch64::FeatureSEL2} },
{ "VSTTBR_EL2", "VSTTBR_EL2", 0xE130, true, true, {AArch64::HasV8_0aOps} },
{ "VTCR_EL2", "VTCR_EL2", 0xE10A, true, true, {} },
{ "VTTBR_EL2", "VTTBR_EL2", 0xE108, true, true, {AArch64::FeatureEL2VMSA} },
{ "ZCR_EL1", "ZCR_EL1", 0xC090, true, true, {AArch64::FeatureSVE} },
{ "ZCR_EL12", "ZCR_EL12", 0xE890, true, true, {AArch64::FeatureSVE} },
{ "ZCR_EL2", "ZCR_EL2", 0xE090, true, true, {AArch64::FeatureSVE} },
{ "ZCR_EL3", "ZCR_EL3", 0xF090, true, true, {AArch64::FeatureSVE} },
};
const SysReg *lookupSysRegByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "ACCDATA_EL1", 0 },
{ "ACTLR_EL1", 1 },
{ "ACTLR_EL12", 2 },
{ "ACTLR_EL2", 3 },
{ "ACTLR_EL3", 4 },
{ "AFSR0_EL1", 5 },
{ "AFSR0_EL12", 6 },
{ "AFSR0_EL2", 7 },
{ "AFSR0_EL3", 8 },
{ "AFSR1_EL1", 9 },
{ "AFSR1_EL12", 10 },
{ "AFSR1_EL2", 11 },
{ "AFSR1_EL3", 12 },
{ "AIDR_EL1", 13 },
{ "ALLINT", 14 },
{ "AMAIR2_EL1", 15 },
{ "AMAIR2_EL12", 16 },
{ "AMAIR2_EL2", 17 },
{ "AMAIR2_EL3", 18 },
{ "AMAIR_EL1", 19 },
{ "AMAIR_EL12", 20 },
{ "AMAIR_EL2", 21 },
{ "AMAIR_EL3", 22 },
{ "AMCFGR_EL0", 23 },
{ "AMCG1IDR_EL0", 24 },
{ "AMCGCR_EL0", 25 },
{ "AMCNTENCLR0_EL0", 26 },
{ "AMCNTENCLR1_EL0", 27 },
{ "AMCNTENSET0_EL0", 28 },
{ "AMCNTENSET1_EL0", 29 },
{ "AMCR_EL0", 30 },
{ "AMEVCNTR00_EL0", 31 },
{ "AMEVCNTR01_EL0", 32 },
{ "AMEVCNTR02_EL0", 33 },
{ "AMEVCNTR03_EL0", 34 },
{ "AMEVCNTR10_EL0", 35 },
{ "AMEVCNTR110_EL0", 36 },
{ "AMEVCNTR111_EL0", 37 },
{ "AMEVCNTR112_EL0", 38 },
{ "AMEVCNTR113_EL0", 39 },
{ "AMEVCNTR114_EL0", 40 },
{ "AMEVCNTR115_EL0", 41 },
{ "AMEVCNTR11_EL0", 42 },
{ "AMEVCNTR12_EL0", 43 },
{ "AMEVCNTR13_EL0", 44 },
{ "AMEVCNTR14_EL0", 45 },
{ "AMEVCNTR15_EL0", 46 },
{ "AMEVCNTR16_EL0", 47 },
{ "AMEVCNTR17_EL0", 48 },
{ "AMEVCNTR18_EL0", 49 },
{ "AMEVCNTR19_EL0", 50 },
{ "AMEVCNTVOFF00_EL2", 51 },
{ "AMEVCNTVOFF010_EL2", 52 },
{ "AMEVCNTVOFF011_EL2", 53 },
{ "AMEVCNTVOFF012_EL2", 54 },
{ "AMEVCNTVOFF013_EL2", 55 },
{ "AMEVCNTVOFF014_EL2", 56 },
{ "AMEVCNTVOFF015_EL2", 57 },
{ "AMEVCNTVOFF01_EL2", 58 },
{ "AMEVCNTVOFF02_EL2", 59 },
{ "AMEVCNTVOFF03_EL2", 60 },
{ "AMEVCNTVOFF04_EL2", 61 },
{ "AMEVCNTVOFF05_EL2", 62 },
{ "AMEVCNTVOFF06_EL2", 63 },
{ "AMEVCNTVOFF07_EL2", 64 },
{ "AMEVCNTVOFF08_EL2", 65 },
{ "AMEVCNTVOFF09_EL2", 66 },
{ "AMEVCNTVOFF10_EL2", 67 },
{ "AMEVCNTVOFF110_EL2", 68 },
{ "AMEVCNTVOFF111_EL2", 69 },
{ "AMEVCNTVOFF112_EL2", 70 },
{ "AMEVCNTVOFF113_EL2", 71 },
{ "AMEVCNTVOFF114_EL2", 72 },
{ "AMEVCNTVOFF115_EL2", 73 },
{ "AMEVCNTVOFF11_EL2", 74 },
{ "AMEVCNTVOFF12_EL2", 75 },
{ "AMEVCNTVOFF13_EL2", 76 },
{ "AMEVCNTVOFF14_EL2", 77 },
{ "AMEVCNTVOFF15_EL2", 78 },
{ "AMEVCNTVOFF16_EL2", 79 },
{ "AMEVCNTVOFF17_EL2", 80 },
{ "AMEVCNTVOFF18_EL2", 81 },
{ "AMEVCNTVOFF19_EL2", 82 },
{ "AMEVTYPER00_EL0", 83 },
{ "AMEVTYPER01_EL0", 84 },
{ "AMEVTYPER02_EL0", 85 },
{ "AMEVTYPER03_EL0", 86 },
{ "AMEVTYPER10_EL0", 87 },
{ "AMEVTYPER110_EL0", 88 },
{ "AMEVTYPER111_EL0", 89 },
{ "AMEVTYPER112_EL0", 90 },
{ "AMEVTYPER113_EL0", 91 },
{ "AMEVTYPER114_EL0", 92 },
{ "AMEVTYPER115_EL0", 93 },
{ "AMEVTYPER11_EL0", 94 },
{ "AMEVTYPER12_EL0", 95 },
{ "AMEVTYPER13_EL0", 96 },
{ "AMEVTYPER14_EL0", 97 },
{ "AMEVTYPER15_EL0", 98 },
{ "AMEVTYPER16_EL0", 99 },
{ "AMEVTYPER17_EL0", 100 },
{ "AMEVTYPER18_EL0", 101 },
{ "AMEVTYPER19_EL0", 102 },
{ "AMUSERENR_EL0", 103 },
{ "APDAKEYHI_EL1", 104 },
{ "APDAKEYLO_EL1", 105 },
{ "APDBKEYHI_EL1", 106 },
{ "APDBKEYLO_EL1", 107 },
{ "APGAKEYHI_EL1", 108 },
{ "APGAKEYLO_EL1", 109 },
{ "APIAKEYHI_EL1", 110 },
{ "APIAKEYLO_EL1", 111 },
{ "APIBKEYHI_EL1", 112 },
{ "APIBKEYLO_EL1", 113 },
{ "BRBCR_EL1", 114 },
{ "BRBCR_EL12", 115 },
{ "BRBCR_EL2", 116 },
{ "BRBFCR_EL1", 117 },
{ "BRBIDR0_EL1", 118 },
{ "BRBINF0_EL1", 119 },
{ "BRBINF10_EL1", 120 },
{ "BRBINF11_EL1", 121 },
{ "BRBINF12_EL1", 122 },
{ "BRBINF13_EL1", 123 },
{ "BRBINF14_EL1", 124 },
{ "BRBINF15_EL1", 125 },
{ "BRBINF16_EL1", 126 },
{ "BRBINF17_EL1", 127 },
{ "BRBINF18_EL1", 128 },
{ "BRBINF19_EL1", 129 },
{ "BRBINF1_EL1", 130 },
{ "BRBINF20_EL1", 131 },
{ "BRBINF21_EL1", 132 },
{ "BRBINF22_EL1", 133 },
{ "BRBINF23_EL1", 134 },
{ "BRBINF24_EL1", 135 },
{ "BRBINF25_EL1", 136 },
{ "BRBINF26_EL1", 137 },
{ "BRBINF27_EL1", 138 },
{ "BRBINF28_EL1", 139 },
{ "BRBINF29_EL1", 140 },
{ "BRBINF2_EL1", 141 },
{ "BRBINF30_EL1", 142 },
{ "BRBINF31_EL1", 143 },
{ "BRBINF3_EL1", 144 },
{ "BRBINF4_EL1", 145 },
{ "BRBINF5_EL1", 146 },
{ "BRBINF6_EL1", 147 },
{ "BRBINF7_EL1", 148 },
{ "BRBINF8_EL1", 149 },
{ "BRBINF9_EL1", 150 },
{ "BRBINFINJ_EL1", 151 },
{ "BRBSRC0_EL1", 152 },
{ "BRBSRC10_EL1", 153 },
{ "BRBSRC11_EL1", 154 },
{ "BRBSRC12_EL1", 155 },
{ "BRBSRC13_EL1", 156 },
{ "BRBSRC14_EL1", 157 },
{ "BRBSRC15_EL1", 158 },
{ "BRBSRC16_EL1", 159 },
{ "BRBSRC17_EL1", 160 },
{ "BRBSRC18_EL1", 161 },
{ "BRBSRC19_EL1", 162 },
{ "BRBSRC1_EL1", 163 },
{ "BRBSRC20_EL1", 164 },
{ "BRBSRC21_EL1", 165 },
{ "BRBSRC22_EL1", 166 },
{ "BRBSRC23_EL1", 167 },
{ "BRBSRC24_EL1", 168 },
{ "BRBSRC25_EL1", 169 },
{ "BRBSRC26_EL1", 170 },
{ "BRBSRC27_EL1", 171 },
{ "BRBSRC28_EL1", 172 },
{ "BRBSRC29_EL1", 173 },
{ "BRBSRC2_EL1", 174 },
{ "BRBSRC30_EL1", 175 },
{ "BRBSRC31_EL1", 176 },
{ "BRBSRC3_EL1", 177 },
{ "BRBSRC4_EL1", 178 },
{ "BRBSRC5_EL1", 179 },
{ "BRBSRC6_EL1", 180 },
{ "BRBSRC7_EL1", 181 },
{ "BRBSRC8_EL1", 182 },
{ "BRBSRC9_EL1", 183 },
{ "BRBSRCINJ_EL1", 184 },
{ "BRBTGT0_EL1", 185 },
{ "BRBTGT10_EL1", 186 },
{ "BRBTGT11_EL1", 187 },
{ "BRBTGT12_EL1", 188 },
{ "BRBTGT13_EL1", 189 },
{ "BRBTGT14_EL1", 190 },
{ "BRBTGT15_EL1", 191 },
{ "BRBTGT16_EL1", 192 },
{ "BRBTGT17_EL1", 193 },
{ "BRBTGT18_EL1", 194 },
{ "BRBTGT19_EL1", 195 },
{ "BRBTGT1_EL1", 196 },
{ "BRBTGT20_EL1", 197 },
{ "BRBTGT21_EL1", 198 },
{ "BRBTGT22_EL1", 199 },
{ "BRBTGT23_EL1", 200 },
{ "BRBTGT24_EL1", 201 },
{ "BRBTGT25_EL1", 202 },
{ "BRBTGT26_EL1", 203 },
{ "BRBTGT27_EL1", 204 },
{ "BRBTGT28_EL1", 205 },
{ "BRBTGT29_EL1", 206 },
{ "BRBTGT2_EL1", 207 },
{ "BRBTGT30_EL1", 208 },
{ "BRBTGT31_EL1", 209 },
{ "BRBTGT3_EL1", 210 },
{ "BRBTGT4_EL1", 211 },
{ "BRBTGT5_EL1", 212 },
{ "BRBTGT6_EL1", 213 },
{ "BRBTGT7_EL1", 214 },
{ "BRBTGT8_EL1", 215 },
{ "BRBTGT9_EL1", 216 },
{ "BRBTGTINJ_EL1", 217 },
{ "BRBTS_EL1", 218 },
{ "CCSIDR2_EL1", 219 },
{ "CCSIDR_EL1", 220 },
{ "CLIDR_EL1", 221 },
{ "CNTFRQ_EL0", 222 },
{ "CNTHCTL_EL2", 223 },
{ "CNTHPS_CTL_EL2", 224 },
{ "CNTHPS_CVAL_EL2", 225 },
{ "CNTHPS_TVAL_EL2", 226 },
{ "CNTHP_CTL_EL2", 227 },
{ "CNTHP_CVAL_EL2", 228 },
{ "CNTHP_TVAL_EL2", 229 },
{ "CNTHVS_CTL_EL2", 230 },
{ "CNTHVS_CVAL_EL2", 231 },
{ "CNTHVS_TVAL_EL2", 232 },
{ "CNTHV_CTL_EL2", 233 },
{ "CNTHV_CVAL_EL2", 234 },
{ "CNTHV_TVAL_EL2", 235 },
{ "CNTISCALE_EL2", 236 },
{ "CNTKCTL_EL1", 237 },
{ "CNTKCTL_EL12", 238 },
{ "CNTPCTSS_EL0", 239 },
{ "CNTPCT_EL0", 240 },
{ "CNTPOFF_EL2", 241 },
{ "CNTPS_CTL_EL1", 242 },
{ "CNTPS_CVAL_EL1", 243 },
{ "CNTPS_TVAL_EL1", 244 },
{ "CNTP_CTL_EL0", 245 },
{ "CNTP_CTL_EL02", 246 },
{ "CNTP_CVAL_EL0", 247 },
{ "CNTP_CVAL_EL02", 248 },
{ "CNTP_TVAL_EL0", 249 },
{ "CNTP_TVAL_EL02", 250 },
{ "CNTSCALE_EL2", 251 },
{ "CNTVCTSS_EL0", 252 },
{ "CNTVCT_EL0", 253 },
{ "CNTVFRQ_EL2", 254 },
{ "CNTVOFF_EL2", 255 },
{ "CNTV_CTL_EL0", 256 },
{ "CNTV_CTL_EL02", 257 },
{ "CNTV_CVAL_EL0", 258 },
{ "CNTV_CVAL_EL02", 259 },
{ "CNTV_TVAL_EL0", 260 },
{ "CNTV_TVAL_EL02", 261 },
{ "CONTEXTIDR_EL1", 262 },
{ "CONTEXTIDR_EL12", 263 },
{ "CONTEXTIDR_EL2", 264 },
{ "CPACR_EL1", 265 },
{ "CPACR_EL12", 266 },
{ "CPTR_EL2", 267 },
{ "CPTR_EL3", 268 },
{ "CSSELR_EL1", 269 },
{ "CTR_EL0", 270 },
{ "CURRENTEL", 271 },
{ "DACR32_EL2", 272 },
{ "DAIF", 273 },
{ "DBGAUTHSTATUS_EL1", 274 },
{ "DBGBCR0_EL1", 275 },
{ "DBGBCR10_EL1", 276 },
{ "DBGBCR11_EL1", 277 },
{ "DBGBCR12_EL1", 278 },
{ "DBGBCR13_EL1", 279 },
{ "DBGBCR14_EL1", 280 },
{ "DBGBCR15_EL1", 281 },
{ "DBGBCR1_EL1", 282 },
{ "DBGBCR2_EL1", 283 },
{ "DBGBCR3_EL1", 284 },
{ "DBGBCR4_EL1", 285 },
{ "DBGBCR5_EL1", 286 },
{ "DBGBCR6_EL1", 287 },
{ "DBGBCR7_EL1", 288 },
{ "DBGBCR8_EL1", 289 },
{ "DBGBCR9_EL1", 290 },
{ "DBGBVR0_EL1", 291 },
{ "DBGBVR10_EL1", 292 },
{ "DBGBVR11_EL1", 293 },
{ "DBGBVR12_EL1", 294 },
{ "DBGBVR13_EL1", 295 },
{ "DBGBVR14_EL1", 296 },
{ "DBGBVR15_EL1", 297 },
{ "DBGBVR1_EL1", 298 },
{ "DBGBVR2_EL1", 299 },
{ "DBGBVR3_EL1", 300 },
{ "DBGBVR4_EL1", 301 },
{ "DBGBVR5_EL1", 302 },
{ "DBGBVR6_EL1", 303 },
{ "DBGBVR7_EL1", 304 },
{ "DBGBVR8_EL1", 305 },
{ "DBGBVR9_EL1", 306 },
{ "DBGCLAIMCLR_EL1", 307 },
{ "DBGCLAIMSET_EL1", 308 },
{ "DBGDTRRX_EL0", 309 },
{ "DBGDTRTX_EL0", 310 },
{ "DBGDTR_EL0", 311 },
{ "DBGPRCR_EL1", 312 },
{ "DBGVCR32_EL2", 313 },
{ "DBGWCR0_EL1", 314 },
{ "DBGWCR10_EL1", 315 },
{ "DBGWCR11_EL1", 316 },
{ "DBGWCR12_EL1", 317 },
{ "DBGWCR13_EL1", 318 },
{ "DBGWCR14_EL1", 319 },
{ "DBGWCR15_EL1", 320 },
{ "DBGWCR1_EL1", 321 },
{ "DBGWCR2_EL1", 322 },
{ "DBGWCR3_EL1", 323 },
{ "DBGWCR4_EL1", 324 },
{ "DBGWCR5_EL1", 325 },
{ "DBGWCR6_EL1", 326 },
{ "DBGWCR7_EL1", 327 },
{ "DBGWCR8_EL1", 328 },
{ "DBGWCR9_EL1", 329 },
{ "DBGWVR0_EL1", 330 },
{ "DBGWVR10_EL1", 331 },
{ "DBGWVR11_EL1", 332 },
{ "DBGWVR12_EL1", 333 },
{ "DBGWVR13_EL1", 334 },
{ "DBGWVR14_EL1", 335 },
{ "DBGWVR15_EL1", 336 },
{ "DBGWVR1_EL1", 337 },
{ "DBGWVR2_EL1", 338 },
{ "DBGWVR3_EL1", 339 },
{ "DBGWVR4_EL1", 340 },
{ "DBGWVR5_EL1", 341 },
{ "DBGWVR6_EL1", 342 },
{ "DBGWVR7_EL1", 343 },
{ "DBGWVR8_EL1", 344 },
{ "DBGWVR9_EL1", 345 },
{ "DCZID_EL0", 346 },
{ "DISR_EL1", 347 },
{ "DIT", 348 },
{ "DLR_EL0", 349 },
{ "DSPSR_EL0", 350 },
{ "ELR_EL1", 351 },
{ "ELR_EL12", 352 },
{ "ELR_EL2", 353 },
{ "ELR_EL3", 354 },
{ "ERRIDR_EL1", 355 },
{ "ERRSELR_EL1", 356 },
{ "ERXADDR_EL1", 357 },
{ "ERXCTLR_EL1", 358 },
{ "ERXFR_EL1", 359 },
{ "ERXGSR_EL1", 360 },
{ "ERXMISC0_EL1", 361 },
{ "ERXMISC1_EL1", 362 },
{ "ERXMISC2_EL1", 363 },
{ "ERXMISC3_EL1", 364 },
{ "ERXPFGCDN_EL1", 365 },
{ "ERXPFGCTL_EL1", 366 },
{ "ERXPFGF_EL1", 367 },
{ "ERXSTATUS_EL1", 368 },
{ "ESR_EL1", 369 },
{ "ESR_EL12", 370 },
{ "ESR_EL2", 371 },
{ "ESR_EL3", 372 },
{ "FAR_EL1", 373 },
{ "FAR_EL12", 374 },
{ "FAR_EL2", 375 },
{ "FAR_EL3", 376 },
{ "FGWTE3_EL3", 377 },
{ "FPCR", 378 },
{ "FPEXC32_EL2", 379 },
{ "FPMR", 380 },
{ "FPSR", 381 },
{ "GCR_EL1", 382 },
{ "GCSCRE0_EL1", 383 },
{ "GCSCR_EL1", 384 },
{ "GCSCR_EL12", 385 },
{ "GCSCR_EL2", 386 },
{ "GCSCR_EL3", 387 },
{ "GCSPR_EL0", 388 },
{ "GCSPR_EL1", 389 },
{ "GCSPR_EL12", 390 },
{ "GCSPR_EL2", 391 },
{ "GCSPR_EL3", 392 },
{ "GMID_EL1", 393 },
{ "GPCCR_EL3", 394 },
{ "GPTBR_EL3", 395 },
{ "HACDBSBR_EL2", 396 },
{ "HACDBSCONS_EL2", 397 },
{ "HACR_EL2", 398 },
{ "HAFGRTR_EL2", 399 },
{ "HCRX_EL2", 400 },
{ "HCR_EL2", 401 },
{ "HDBSSBR_EL2", 402 },
{ "HDBSSPROD_EL2", 403 },
{ "HDFGRTR2_EL2", 404 },
{ "HDFGRTR_EL2", 405 },
{ "HDFGWTR2_EL2", 406 },
{ "HDFGWTR_EL2", 407 },
{ "HFGITR2_EL2", 408 },
{ "HFGITR_EL2", 409 },
{ "HFGRTR2_EL2", 410 },
{ "HFGRTR_EL2", 411 },
{ "HFGWTR2_EL2", 412 },
{ "HFGWTR_EL2", 413 },
{ "HPFAR_EL2", 414 },
{ "HSTR_EL2", 415 },
{ "ICC_AP0R0_EL1", 416 },
{ "ICC_AP0R1_EL1", 417 },
{ "ICC_AP0R2_EL1", 418 },
{ "ICC_AP0R3_EL1", 419 },
{ "ICC_AP1R0_EL1", 420 },
{ "ICC_AP1R1_EL1", 421 },
{ "ICC_AP1R2_EL1", 422 },
{ "ICC_AP1R3_EL1", 423 },
{ "ICC_ASGI1R_EL1", 424 },
{ "ICC_BPR0_EL1", 425 },
{ "ICC_BPR1_EL1", 426 },
{ "ICC_CTLR_EL1", 427 },
{ "ICC_CTLR_EL3", 428 },
{ "ICC_DIR_EL1", 429 },
{ "ICC_EOIR0_EL1", 430 },
{ "ICC_EOIR1_EL1", 431 },
{ "ICC_HPPIR0_EL1", 432 },
{ "ICC_HPPIR1_EL1", 433 },
{ "ICC_IAR0_EL1", 434 },
{ "ICC_IAR1_EL1", 435 },
{ "ICC_IGRPEN0_EL1", 436 },
{ "ICC_IGRPEN1_EL1", 437 },
{ "ICC_IGRPEN1_EL3", 438 },
{ "ICC_NMIAR1_EL1", 439 },
{ "ICC_PMR_EL1", 440 },
{ "ICC_RPR_EL1", 441 },
{ "ICC_SGI0R_EL1", 442 },
{ "ICC_SGI1R_EL1", 443 },
{ "ICC_SRE_EL1", 444 },
{ "ICC_SRE_EL2", 445 },
{ "ICC_SRE_EL3", 446 },
{ "ICH_AP0R0_EL2", 447 },
{ "ICH_AP0R1_EL2", 448 },
{ "ICH_AP0R2_EL2", 449 },
{ "ICH_AP0R3_EL2", 450 },
{ "ICH_AP1R0_EL2", 451 },
{ "ICH_AP1R1_EL2", 452 },
{ "ICH_AP1R2_EL2", 453 },
{ "ICH_AP1R3_EL2", 454 },
{ "ICH_EISR_EL2", 455 },
{ "ICH_ELRSR_EL2", 456 },
{ "ICH_HCR_EL2", 457 },
{ "ICH_LR0_EL2", 458 },
{ "ICH_LR10_EL2", 459 },
{ "ICH_LR11_EL2", 460 },
{ "ICH_LR12_EL2", 461 },
{ "ICH_LR13_EL2", 462 },
{ "ICH_LR14_EL2", 463 },
{ "ICH_LR15_EL2", 464 },
{ "ICH_LR1_EL2", 465 },
{ "ICH_LR2_EL2", 466 },
{ "ICH_LR3_EL2", 467 },
{ "ICH_LR4_EL2", 468 },
{ "ICH_LR5_EL2", 469 },
{ "ICH_LR6_EL2", 470 },
{ "ICH_LR7_EL2", 471 },
{ "ICH_LR8_EL2", 472 },
{ "ICH_LR9_EL2", 473 },
{ "ICH_MISR_EL2", 474 },
{ "ICH_VMCR_EL2", 475 },
{ "ICH_VTR_EL2", 476 },
{ "ID_AA64AFR0_EL1", 477 },
{ "ID_AA64AFR1_EL1", 478 },
{ "ID_AA64DFR0_EL1", 479 },
{ "ID_AA64DFR1_EL1", 480 },
{ "ID_AA64DFR2_EL1", 481 },
{ "ID_AA64FPFR0_EL1", 482 },
{ "ID_AA64ISAR0_EL1", 483 },
{ "ID_AA64ISAR1_EL1", 484 },
{ "ID_AA64ISAR2_EL1", 485 },
{ "ID_AA64ISAR3_EL1", 486 },
{ "ID_AA64MMFR0_EL1", 487 },
{ "ID_AA64MMFR1_EL1", 488 },
{ "ID_AA64MMFR2_EL1", 489 },
{ "ID_AA64MMFR3_EL1", 490 },
{ "ID_AA64MMFR4_EL1", 491 },
{ "ID_AA64PFR0_EL1", 492 },
{ "ID_AA64PFR1_EL1", 493 },
{ "ID_AA64PFR2_EL1", 494 },
{ "ID_AA64SMFR0_EL1", 495 },
{ "ID_AA64ZFR0_EL1", 496 },
{ "ID_AFR0_EL1", 497 },
{ "ID_DFR0_EL1", 498 },
{ "ID_DFR1_EL1", 499 },
{ "ID_ISAR0_EL1", 500 },
{ "ID_ISAR1_EL1", 501 },
{ "ID_ISAR2_EL1", 502 },
{ "ID_ISAR3_EL1", 503 },
{ "ID_ISAR4_EL1", 504 },
{ "ID_ISAR5_EL1", 505 },
{ "ID_ISAR6_EL1", 506 },
{ "ID_MMFR0_EL1", 507 },
{ "ID_MMFR1_EL1", 508 },
{ "ID_MMFR2_EL1", 509 },
{ "ID_MMFR3_EL1", 510 },
{ "ID_MMFR4_EL1", 511 },
{ "ID_MMFR5_EL1", 512 },
{ "ID_PFR0_EL1", 513 },
{ "ID_PFR1_EL1", 514 },
{ "ID_PFR2_EL1", 515 },
{ "IFSR32_EL2", 516 },
{ "ISR_EL1", 517 },
{ "LORC_EL1", 518 },
{ "LOREA_EL1", 519 },
{ "LORID_EL1", 520 },
{ "LORN_EL1", 521 },
{ "LORSA_EL1", 522 },
{ "MAIR2_EL1", 523 },
{ "MAIR2_EL12", 524 },
{ "MAIR2_EL2", 525 },
{ "MAIR2_EL3", 526 },
{ "MAIR_EL1", 527 },
{ "MAIR_EL12", 528 },
{ "MAIR_EL2", 529 },
{ "MAIR_EL3", 530 },
{ "MDCCINT_EL1", 531 },
{ "MDCCSR_EL0", 532 },
{ "MDCR_EL2", 533 },
{ "MDCR_EL3", 534 },
{ "MDRAR_EL1", 535 },
{ "MDSCR_EL1", 536 },
{ "MDSELR_EL1", 537 },
{ "MDSTEPOP_EL1", 538 },
{ "MECIDR_EL2", 539 },
{ "MECID_A0_EL2", 540 },
{ "MECID_A1_EL2", 541 },
{ "MECID_P0_EL2", 542 },
{ "MECID_P1_EL2", 543 },
{ "MECID_RL_A_EL3", 544 },
{ "MFAR_EL3", 545 },
{ "MIDR_EL1", 546 },
{ "MPAM0_EL1", 547 },
{ "MPAM1_EL1", 548 },
{ "MPAM1_EL12", 549 },
{ "MPAM2_EL2", 550 },
{ "MPAM3_EL3", 551 },
{ "MPAMHCR_EL2", 552 },
{ "MPAMIDR_EL1", 553 },
{ "MPAMSM_EL1", 554 },
{ "MPAMVPM0_EL2", 555 },
{ "MPAMVPM1_EL2", 556 },
{ "MPAMVPM2_EL2", 557 },
{ "MPAMVPM3_EL2", 558 },
{ "MPAMVPM4_EL2", 559 },
{ "MPAMVPM5_EL2", 560 },
{ "MPAMVPM6_EL2", 561 },
{ "MPAMVPM7_EL2", 562 },
{ "MPAMVPMV_EL2", 563 },
{ "MPIDR_EL1", 564 },
{ "MPUIR_EL1", 565 },
{ "MPUIR_EL2", 566 },
{ "MVFR0_EL1", 567 },
{ "MVFR1_EL1", 568 },
{ "MVFR2_EL1", 569 },
{ "NZCV", 570 },
{ "OSDLR_EL1", 571 },
{ "OSDTRRX_EL1", 572 },
{ "OSDTRTX_EL1", 573 },
{ "OSECCR_EL1", 574 },
{ "OSLAR_EL1", 575 },
{ "OSLSR_EL1", 576 },
{ "PAN", 577 },
{ "PAR_EL1", 578 },
{ "PFAR_EL1", 579 },
{ "PFAR_EL12", 580 },
{ "PFAR_EL2", 581 },
{ "PIRE0_EL1", 582 },
{ "PIRE0_EL12", 583 },
{ "PIRE0_EL2", 584 },
{ "PIR_EL1", 585 },
{ "PIR_EL12", 586 },
{ "PIR_EL2", 587 },
{ "PIR_EL3", 588 },
{ "PM", 589 },
{ "PMBIDR_EL1", 590 },
{ "PMBLIMITR_EL1", 591 },
{ "PMBPTR_EL1", 592 },
{ "PMBSR_EL1", 593 },
{ "PMCCFILTR_EL0", 594 },
{ "PMCCNTR_EL0", 595 },
{ "PMCCNTSVR_EL1", 596 },
{ "PMCEID0_EL0", 597 },
{ "PMCEID1_EL0", 598 },
{ "PMCNTENCLR_EL0", 599 },
{ "PMCNTENSET_EL0", 600 },
{ "PMCR_EL0", 601 },
{ "PMECR_EL1", 602 },
{ "PMEVCNTR0_EL0", 603 },
{ "PMEVCNTR10_EL0", 604 },
{ "PMEVCNTR11_EL0", 605 },
{ "PMEVCNTR12_EL0", 606 },
{ "PMEVCNTR13_EL0", 607 },
{ "PMEVCNTR14_EL0", 608 },
{ "PMEVCNTR15_EL0", 609 },
{ "PMEVCNTR16_EL0", 610 },
{ "PMEVCNTR17_EL0", 611 },
{ "PMEVCNTR18_EL0", 612 },
{ "PMEVCNTR19_EL0", 613 },
{ "PMEVCNTR1_EL0", 614 },
{ "PMEVCNTR20_EL0", 615 },
{ "PMEVCNTR21_EL0", 616 },
{ "PMEVCNTR22_EL0", 617 },
{ "PMEVCNTR23_EL0", 618 },
{ "PMEVCNTR24_EL0", 619 },
{ "PMEVCNTR25_EL0", 620 },
{ "PMEVCNTR26_EL0", 621 },
{ "PMEVCNTR27_EL0", 622 },
{ "PMEVCNTR28_EL0", 623 },
{ "PMEVCNTR29_EL0", 624 },
{ "PMEVCNTR2_EL0", 625 },
{ "PMEVCNTR30_EL0", 626 },
{ "PMEVCNTR3_EL0", 627 },
{ "PMEVCNTR4_EL0", 628 },
{ "PMEVCNTR5_EL0", 629 },
{ "PMEVCNTR6_EL0", 630 },
{ "PMEVCNTR7_EL0", 631 },
{ "PMEVCNTR8_EL0", 632 },
{ "PMEVCNTR9_EL0", 633 },
{ "PMEVCNTSVR0_EL1", 634 },
{ "PMEVCNTSVR10_EL1", 635 },
{ "PMEVCNTSVR11_EL1", 636 },
{ "PMEVCNTSVR12_EL1", 637 },
{ "PMEVCNTSVR13_EL1", 638 },
{ "PMEVCNTSVR14_EL1", 639 },
{ "PMEVCNTSVR15_EL1", 640 },
{ "PMEVCNTSVR16_EL1", 641 },
{ "PMEVCNTSVR17_EL1", 642 },
{ "PMEVCNTSVR18_EL1", 643 },
{ "PMEVCNTSVR19_EL1", 644 },
{ "PMEVCNTSVR1_EL1", 645 },
{ "PMEVCNTSVR20_EL1", 646 },
{ "PMEVCNTSVR21_EL1", 647 },
{ "PMEVCNTSVR22_EL1", 648 },
{ "PMEVCNTSVR23_EL1", 649 },
{ "PMEVCNTSVR24_EL1", 650 },
{ "PMEVCNTSVR25_EL1", 651 },
{ "PMEVCNTSVR26_EL1", 652 },
{ "PMEVCNTSVR27_EL1", 653 },
{ "PMEVCNTSVR28_EL1", 654 },
{ "PMEVCNTSVR29_EL1", 655 },
{ "PMEVCNTSVR2_EL1", 656 },
{ "PMEVCNTSVR30_EL1", 657 },
{ "PMEVCNTSVR3_EL1", 658 },
{ "PMEVCNTSVR4_EL1", 659 },
{ "PMEVCNTSVR5_EL1", 660 },
{ "PMEVCNTSVR6_EL1", 661 },
{ "PMEVCNTSVR7_EL1", 662 },
{ "PMEVCNTSVR8_EL1", 663 },
{ "PMEVCNTSVR9_EL1", 664 },
{ "PMEVTYPER0_EL0", 665 },
{ "PMEVTYPER10_EL0", 666 },
{ "PMEVTYPER11_EL0", 667 },
{ "PMEVTYPER12_EL0", 668 },
{ "PMEVTYPER13_EL0", 669 },
{ "PMEVTYPER14_EL0", 670 },
{ "PMEVTYPER15_EL0", 671 },
{ "PMEVTYPER16_EL0", 672 },
{ "PMEVTYPER17_EL0", 673 },
{ "PMEVTYPER18_EL0", 674 },
{ "PMEVTYPER19_EL0", 675 },
{ "PMEVTYPER1_EL0", 676 },
{ "PMEVTYPER20_EL0", 677 },
{ "PMEVTYPER21_EL0", 678 },
{ "PMEVTYPER22_EL0", 679 },
{ "PMEVTYPER23_EL0", 680 },
{ "PMEVTYPER24_EL0", 681 },
{ "PMEVTYPER25_EL0", 682 },
{ "PMEVTYPER26_EL0", 683 },
{ "PMEVTYPER27_EL0", 684 },
{ "PMEVTYPER28_EL0", 685 },
{ "PMEVTYPER29_EL0", 686 },
{ "PMEVTYPER2_EL0", 687 },
{ "PMEVTYPER30_EL0", 688 },
{ "PMEVTYPER3_EL0", 689 },
{ "PMEVTYPER4_EL0", 690 },
{ "PMEVTYPER5_EL0", 691 },
{ "PMEVTYPER6_EL0", 692 },
{ "PMEVTYPER7_EL0", 693 },
{ "PMEVTYPER8_EL0", 694 },
{ "PMEVTYPER9_EL0", 695 },
{ "PMIAR_EL1", 696 },
{ "PMICFILTR_EL0", 697 },
{ "PMICNTR_EL0", 698 },
{ "PMICNTSVR_EL1", 699 },
{ "PMINTENCLR_EL1", 700 },
{ "PMINTENSET_EL1", 701 },
{ "PMMIR_EL1", 702 },
{ "PMOVSCLR_EL0", 703 },
{ "PMOVSSET_EL0", 704 },
{ "PMSCR_EL1", 705 },
{ "PMSCR_EL12", 706 },
{ "PMSCR_EL2", 707 },
{ "PMSDSFR_EL1", 708 },
{ "PMSELR_EL0", 709 },
{ "PMSEVFR_EL1", 710 },
{ "PMSFCR_EL1", 711 },
{ "PMSICR_EL1", 712 },
{ "PMSIDR_EL1", 713 },
{ "PMSIRR_EL1", 714 },
{ "PMSLATFR_EL1", 715 },
{ "PMSNEVFR_EL1", 716 },
{ "PMSSCR_EL1", 717 },
{ "PMSWINC_EL0", 718 },
{ "PMUACR_EL1", 719 },
{ "PMUSERENR_EL0", 720 },
{ "PMXEVCNTR_EL0", 721 },
{ "PMXEVTYPER_EL0", 722 },
{ "PMZR_EL0", 723 },
{ "POR_EL0", 724 },
{ "POR_EL1", 725 },
{ "POR_EL12", 726 },
{ "POR_EL2", 727 },
{ "POR_EL3", 728 },
{ "PRBAR10_EL1", 729 },
{ "PRBAR10_EL2", 730 },
{ "PRBAR11_EL1", 731 },
{ "PRBAR11_EL2", 732 },
{ "PRBAR12_EL1", 733 },
{ "PRBAR12_EL2", 734 },
{ "PRBAR13_EL1", 735 },
{ "PRBAR13_EL2", 736 },
{ "PRBAR14_EL1", 737 },
{ "PRBAR14_EL2", 738 },
{ "PRBAR15_EL1", 739 },
{ "PRBAR15_EL2", 740 },
{ "PRBAR1_EL1", 741 },
{ "PRBAR1_EL2", 742 },
{ "PRBAR2_EL1", 743 },
{ "PRBAR2_EL2", 744 },
{ "PRBAR3_EL1", 745 },
{ "PRBAR3_EL2", 746 },
{ "PRBAR4_EL1", 747 },
{ "PRBAR4_EL2", 748 },
{ "PRBAR5_EL1", 749 },
{ "PRBAR5_EL2", 750 },
{ "PRBAR6_EL1", 751 },
{ "PRBAR6_EL2", 752 },
{ "PRBAR7_EL1", 753 },
{ "PRBAR7_EL2", 754 },
{ "PRBAR8_EL1", 755 },
{ "PRBAR8_EL2", 756 },
{ "PRBAR9_EL1", 757 },
{ "PRBAR9_EL2", 758 },
{ "PRBAR_EL1", 759 },
{ "PRBAR_EL2", 760 },
{ "PRENR_EL1", 761 },
{ "PRENR_EL2", 762 },
{ "PRLAR10_EL1", 763 },
{ "PRLAR10_EL2", 764 },
{ "PRLAR11_EL1", 765 },
{ "PRLAR11_EL2", 766 },
{ "PRLAR12_EL1", 767 },
{ "PRLAR12_EL2", 768 },
{ "PRLAR13_EL1", 769 },
{ "PRLAR13_EL2", 770 },
{ "PRLAR14_EL1", 771 },
{ "PRLAR14_EL2", 772 },
{ "PRLAR15_EL1", 773 },
{ "PRLAR15_EL2", 774 },
{ "PRLAR1_EL1", 775 },
{ "PRLAR1_EL2", 776 },
{ "PRLAR2_EL1", 777 },
{ "PRLAR2_EL2", 778 },
{ "PRLAR3_EL1", 779 },
{ "PRLAR3_EL2", 780 },
{ "PRLAR4_EL1", 781 },
{ "PRLAR4_EL2", 782 },
{ "PRLAR5_EL1", 783 },
{ "PRLAR5_EL2", 784 },
{ "PRLAR6_EL1", 785 },
{ "PRLAR6_EL2", 786 },
{ "PRLAR7_EL1", 787 },
{ "PRLAR7_EL2", 788 },
{ "PRLAR8_EL1", 789 },
{ "PRLAR8_EL2", 790 },
{ "PRLAR9_EL1", 791 },
{ "PRLAR9_EL2", 792 },
{ "PRLAR_EL1", 793 },
{ "PRLAR_EL2", 794 },
{ "PRSELR_EL1", 795 },
{ "PRSELR_EL2", 796 },
{ "RCWMASK_EL1", 797 },
{ "RCWSMASK_EL1", 798 },
{ "REVIDR_EL1", 799 },
{ "RGSR_EL1", 800 },
{ "RMR_EL1", 801 },
{ "RMR_EL2", 802 },
{ "RMR_EL3", 803 },
{ "RNDR", 804 },
{ "RNDRRS", 805 },
{ "RVBAR_EL1", 806 },
{ "RVBAR_EL2", 807 },
{ "RVBAR_EL3", 808 },
{ "S2PIR_EL2", 809 },
{ "S2POR_EL1", 810 },
{ "SCR_EL3", 811 },
{ "SCTLR2_EL1", 812 },
{ "SCTLR2_EL12", 813 },
{ "SCTLR2_EL2", 814 },
{ "SCTLR2_EL3", 815 },
{ "SCTLR_EL1", 816 },
{ "SCTLR_EL12", 817 },
{ "SCTLR_EL2", 818 },
{ "SCTLR_EL3", 819 },
{ "SCXTNUM_EL0", 820 },
{ "SCXTNUM_EL1", 821 },
{ "SCXTNUM_EL12", 822 },
{ "SCXTNUM_EL2", 823 },
{ "SCXTNUM_EL3", 824 },
{ "SDER32_EL2", 825 },
{ "SDER32_EL3", 826 },
{ "SMCR_EL1", 827 },
{ "SMCR_EL12", 828 },
{ "SMCR_EL2", 829 },
{ "SMCR_EL3", 830 },
{ "SMIDR_EL1", 831 },
{ "SMPRIMAP_EL2", 832 },
{ "SMPRI_EL1", 833 },
{ "SPMACCESSR_EL1", 834 },
{ "SPMACCESSR_EL12", 835 },
{ "SPMACCESSR_EL2", 836 },
{ "SPMACCESSR_EL3", 837 },
{ "SPMCFGR_EL1", 838 },
{ "SPMCGCR0_EL1", 839 },
{ "SPMCGCR1_EL1", 840 },
{ "SPMCNTENCLR_EL0", 841 },
{ "SPMCNTENSET_EL0", 842 },
{ "SPMCR_EL0", 843 },
{ "SPMDEVAFF_EL1", 844 },
{ "SPMDEVARCH_EL1", 845 },
{ "SPMEVCNTR0_EL0", 846 },
{ "SPMEVCNTR10_EL0", 847 },
{ "SPMEVCNTR11_EL0", 848 },
{ "SPMEVCNTR12_EL0", 849 },
{ "SPMEVCNTR13_EL0", 850 },
{ "SPMEVCNTR14_EL0", 851 },
{ "SPMEVCNTR15_EL0", 852 },
{ "SPMEVCNTR1_EL0", 853 },
{ "SPMEVCNTR2_EL0", 854 },
{ "SPMEVCNTR3_EL0", 855 },
{ "SPMEVCNTR4_EL0", 856 },
{ "SPMEVCNTR5_EL0", 857 },
{ "SPMEVCNTR6_EL0", 858 },
{ "SPMEVCNTR7_EL0", 859 },
{ "SPMEVCNTR8_EL0", 860 },
{ "SPMEVCNTR9_EL0", 861 },
{ "SPMEVFILT2R0_EL0", 862 },
{ "SPMEVFILT2R10_EL0", 863 },
{ "SPMEVFILT2R11_EL0", 864 },
{ "SPMEVFILT2R12_EL0", 865 },
{ "SPMEVFILT2R13_EL0", 866 },
{ "SPMEVFILT2R14_EL0", 867 },
{ "SPMEVFILT2R15_EL0", 868 },
{ "SPMEVFILT2R1_EL0", 869 },
{ "SPMEVFILT2R2_EL0", 870 },
{ "SPMEVFILT2R3_EL0", 871 },
{ "SPMEVFILT2R4_EL0", 872 },
{ "SPMEVFILT2R5_EL0", 873 },
{ "SPMEVFILT2R6_EL0", 874 },
{ "SPMEVFILT2R7_EL0", 875 },
{ "SPMEVFILT2R8_EL0", 876 },
{ "SPMEVFILT2R9_EL0", 877 },
{ "SPMEVFILTR0_EL0", 878 },
{ "SPMEVFILTR10_EL0", 879 },
{ "SPMEVFILTR11_EL0", 880 },
{ "SPMEVFILTR12_EL0", 881 },
{ "SPMEVFILTR13_EL0", 882 },
{ "SPMEVFILTR14_EL0", 883 },
{ "SPMEVFILTR15_EL0", 884 },
{ "SPMEVFILTR1_EL0", 885 },
{ "SPMEVFILTR2_EL0", 886 },
{ "SPMEVFILTR3_EL0", 887 },
{ "SPMEVFILTR4_EL0", 888 },
{ "SPMEVFILTR5_EL0", 889 },
{ "SPMEVFILTR6_EL0", 890 },
{ "SPMEVFILTR7_EL0", 891 },
{ "SPMEVFILTR8_EL0", 892 },
{ "SPMEVFILTR9_EL0", 893 },
{ "SPMEVTYPER0_EL0", 894 },
{ "SPMEVTYPER10_EL0", 895 },
{ "SPMEVTYPER11_EL0", 896 },
{ "SPMEVTYPER12_EL0", 897 },
{ "SPMEVTYPER13_EL0", 898 },
{ "SPMEVTYPER14_EL0", 899 },
{ "SPMEVTYPER15_EL0", 900 },
{ "SPMEVTYPER1_EL0", 901 },
{ "SPMEVTYPER2_EL0", 902 },
{ "SPMEVTYPER3_EL0", 903 },
{ "SPMEVTYPER4_EL0", 904 },
{ "SPMEVTYPER5_EL0", 905 },
{ "SPMEVTYPER6_EL0", 906 },
{ "SPMEVTYPER7_EL0", 907 },
{ "SPMEVTYPER8_EL0", 908 },
{ "SPMEVTYPER9_EL0", 909 },
{ "SPMIIDR_EL1", 910 },
{ "SPMINTENCLR_EL1", 911 },
{ "SPMINTENSET_EL1", 912 },
{ "SPMOVSCLR_EL0", 913 },
{ "SPMOVSSET_EL0", 914 },
{ "SPMROOTCR_EL3", 915 },
{ "SPMSCR_EL1", 916 },
{ "SPMSELR_EL0", 917 },
{ "SPMZR_EL0", 918 },
{ "SPSEL", 919 },
{ "SPSR_ABT", 920 },
{ "SPSR_EL1", 921 },
{ "SPSR_EL12", 922 },
{ "SPSR_EL2", 923 },
{ "SPSR_EL3", 924 },
{ "SPSR_FIQ", 925 },
{ "SPSR_IRQ", 926 },
{ "SPSR_UND", 927 },
{ "SP_EL0", 928 },
{ "SP_EL1", 929 },
{ "SP_EL2", 930 },
{ "SSBS", 931 },
{ "SVCR", 932 },
{ "TCO", 933 },
{ "TCR2_EL1", 934 },
{ "TCR2_EL12", 935 },
{ "TCR2_EL2", 936 },
{ "TCR_EL1", 937 },
{ "TCR_EL12", 938 },
{ "TCR_EL2", 939 },
{ "TCR_EL3", 940 },
{ "TEECR32_EL1", 941 },
{ "TEEHBR32_EL1", 942 },
{ "TFSRE0_EL1", 943 },
{ "TFSR_EL1", 944 },
{ "TFSR_EL12", 945 },
{ "TFSR_EL2", 946 },
{ "TFSR_EL3", 947 },
{ "TPIDR2_EL0", 948 },
{ "TPIDRRO_EL0", 949 },
{ "TPIDR_EL0", 950 },
{ "TPIDR_EL1", 951 },
{ "TPIDR_EL2", 952 },
{ "TPIDR_EL3", 953 },
{ "TRBBASER_EL1", 954 },
{ "TRBIDR_EL1", 955 },
{ "TRBLIMITR_EL1", 956 },
{ "TRBMAR_EL1", 957 },
{ "TRBMPAM_EL1", 958 },
{ "TRBPTR_EL1", 959 },
{ "TRBSR_EL1", 960 },
{ "TRBTRG_EL1", 961 },
{ "TRCACATR0", 962 },
{ "TRCACATR1", 963 },
{ "TRCACATR10", 964 },
{ "TRCACATR11", 965 },
{ "TRCACATR12", 966 },
{ "TRCACATR13", 967 },
{ "TRCACATR14", 968 },
{ "TRCACATR15", 969 },
{ "TRCACATR2", 970 },
{ "TRCACATR3", 971 },
{ "TRCACATR4", 972 },
{ "TRCACATR5", 973 },
{ "TRCACATR6", 974 },
{ "TRCACATR7", 975 },
{ "TRCACATR8", 976 },
{ "TRCACATR9", 977 },
{ "TRCACVR0", 978 },
{ "TRCACVR1", 979 },
{ "TRCACVR10", 980 },
{ "TRCACVR11", 981 },
{ "TRCACVR12", 982 },
{ "TRCACVR13", 983 },
{ "TRCACVR14", 984 },
{ "TRCACVR15", 985 },
{ "TRCACVR2", 986 },
{ "TRCACVR3", 987 },
{ "TRCACVR4", 988 },
{ "TRCACVR5", 989 },
{ "TRCACVR6", 990 },
{ "TRCACVR7", 991 },
{ "TRCACVR8", 992 },
{ "TRCACVR9", 993 },
{ "TRCAUTHSTATUS", 994 },
{ "TRCAUXCTLR", 995 },
{ "TRCBBCTLR", 996 },
{ "TRCCCCTLR", 997 },
{ "TRCCIDCCTLR0", 998 },
{ "TRCCIDCCTLR1", 999 },
{ "TRCCIDCVR0", 1000 },
{ "TRCCIDCVR1", 1001 },
{ "TRCCIDCVR2", 1002 },
{ "TRCCIDCVR3", 1003 },
{ "TRCCIDCVR4", 1004 },
{ "TRCCIDCVR5", 1005 },
{ "TRCCIDCVR6", 1006 },
{ "TRCCIDCVR7", 1007 },
{ "TRCCIDR0", 1008 },
{ "TRCCIDR1", 1009 },
{ "TRCCIDR2", 1010 },
{ "TRCCIDR3", 1011 },
{ "TRCCLAIMCLR", 1012 },
{ "TRCCLAIMSET", 1013 },
{ "TRCCNTCTLR0", 1014 },
{ "TRCCNTCTLR1", 1015 },
{ "TRCCNTCTLR2", 1016 },
{ "TRCCNTCTLR3", 1017 },
{ "TRCCNTRLDVR0", 1018 },
{ "TRCCNTRLDVR1", 1019 },
{ "TRCCNTRLDVR2", 1020 },
{ "TRCCNTRLDVR3", 1021 },
{ "TRCCNTVR0", 1022 },
{ "TRCCNTVR1", 1023 },
{ "TRCCNTVR2", 1024 },
{ "TRCCNTVR3", 1025 },
{ "TRCCONFIGR", 1026 },
{ "TRCDEVAFF0", 1027 },
{ "TRCDEVAFF1", 1028 },
{ "TRCDEVARCH", 1029 },
{ "TRCDEVID", 1030 },
{ "TRCDEVTYPE", 1031 },
{ "TRCDVCMR0", 1032 },
{ "TRCDVCMR1", 1033 },
{ "TRCDVCMR2", 1034 },
{ "TRCDVCMR3", 1035 },
{ "TRCDVCMR4", 1036 },
{ "TRCDVCMR5", 1037 },
{ "TRCDVCMR6", 1038 },
{ "TRCDVCMR7", 1039 },
{ "TRCDVCVR0", 1040 },
{ "TRCDVCVR1", 1041 },
{ "TRCDVCVR2", 1042 },
{ "TRCDVCVR3", 1043 },
{ "TRCDVCVR4", 1044 },
{ "TRCDVCVR5", 1045 },
{ "TRCDVCVR6", 1046 },
{ "TRCDVCVR7", 1047 },
{ "TRCEVENTCTL0R", 1048 },
{ "TRCEVENTCTL1R", 1049 },
{ "TRCEXTINSELR", 1050 },
{ "TRCEXTINSELR0", 1051 },
{ "TRCEXTINSELR1", 1052 },
{ "TRCEXTINSELR2", 1053 },
{ "TRCEXTINSELR3", 1054 },
{ "TRCIDR0", 1055 },
{ "TRCIDR1", 1056 },
{ "TRCIDR10", 1057 },
{ "TRCIDR11", 1058 },
{ "TRCIDR12", 1059 },
{ "TRCIDR13", 1060 },
{ "TRCIDR2", 1061 },
{ "TRCIDR3", 1062 },
{ "TRCIDR4", 1063 },
{ "TRCIDR5", 1064 },
{ "TRCIDR6", 1065 },
{ "TRCIDR7", 1066 },
{ "TRCIDR8", 1067 },
{ "TRCIDR9", 1068 },
{ "TRCIMSPEC0", 1069 },
{ "TRCIMSPEC1", 1070 },
{ "TRCIMSPEC2", 1071 },
{ "TRCIMSPEC3", 1072 },
{ "TRCIMSPEC4", 1073 },
{ "TRCIMSPEC5", 1074 },
{ "TRCIMSPEC6", 1075 },
{ "TRCIMSPEC7", 1076 },
{ "TRCITCTRL", 1077 },
{ "TRCITECR_EL1", 1078 },
{ "TRCITECR_EL12", 1079 },
{ "TRCITECR_EL2", 1080 },
{ "TRCITEEDCR", 1081 },
{ "TRCLAR", 1082 },
{ "TRCLSR", 1083 },
{ "TRCOSLAR", 1084 },
{ "TRCOSLSR", 1085 },
{ "TRCPDCR", 1086 },
{ "TRCPDSR", 1087 },
{ "TRCPIDR0", 1088 },
{ "TRCPIDR1", 1089 },
{ "TRCPIDR2", 1090 },
{ "TRCPIDR3", 1091 },
{ "TRCPIDR4", 1092 },
{ "TRCPIDR5", 1093 },
{ "TRCPIDR6", 1094 },
{ "TRCPIDR7", 1095 },
{ "TRCPRGCTLR", 1096 },
{ "TRCPROCSELR", 1097 },
{ "TRCQCTLR", 1098 },
{ "TRCRSCTLR10", 1099 },
{ "TRCRSCTLR11", 1100 },
{ "TRCRSCTLR12", 1101 },
{ "TRCRSCTLR13", 1102 },
{ "TRCRSCTLR14", 1103 },
{ "TRCRSCTLR15", 1104 },
{ "TRCRSCTLR16", 1105 },
{ "TRCRSCTLR17", 1106 },
{ "TRCRSCTLR18", 1107 },
{ "TRCRSCTLR19", 1108 },
{ "TRCRSCTLR2", 1109 },
{ "TRCRSCTLR20", 1110 },
{ "TRCRSCTLR21", 1111 },
{ "TRCRSCTLR22", 1112 },
{ "TRCRSCTLR23", 1113 },
{ "TRCRSCTLR24", 1114 },
{ "TRCRSCTLR25", 1115 },
{ "TRCRSCTLR26", 1116 },
{ "TRCRSCTLR27", 1117 },
{ "TRCRSCTLR28", 1118 },
{ "TRCRSCTLR29", 1119 },
{ "TRCRSCTLR3", 1120 },
{ "TRCRSCTLR30", 1121 },
{ "TRCRSCTLR31", 1122 },
{ "TRCRSCTLR4", 1123 },
{ "TRCRSCTLR5", 1124 },
{ "TRCRSCTLR6", 1125 },
{ "TRCRSCTLR7", 1126 },
{ "TRCRSCTLR8", 1127 },
{ "TRCRSCTLR9", 1128 },
{ "TRCRSR", 1129 },
{ "TRCSEQEVR0", 1130 },
{ "TRCSEQEVR1", 1131 },
{ "TRCSEQEVR2", 1132 },
{ "TRCSEQRSTEVR", 1133 },
{ "TRCSEQSTR", 1134 },
{ "TRCSSCCR0", 1135 },
{ "TRCSSCCR1", 1136 },
{ "TRCSSCCR2", 1137 },
{ "TRCSSCCR3", 1138 },
{ "TRCSSCCR4", 1139 },
{ "TRCSSCCR5", 1140 },
{ "TRCSSCCR6", 1141 },
{ "TRCSSCCR7", 1142 },
{ "TRCSSCSR0", 1143 },
{ "TRCSSCSR1", 1144 },
{ "TRCSSCSR2", 1145 },
{ "TRCSSCSR3", 1146 },
{ "TRCSSCSR4", 1147 },
{ "TRCSSCSR5", 1148 },
{ "TRCSSCSR6", 1149 },
{ "TRCSSCSR7", 1150 },
{ "TRCSSPCICR0", 1151 },
{ "TRCSSPCICR1", 1152 },
{ "TRCSSPCICR2", 1153 },
{ "TRCSSPCICR3", 1154 },
{ "TRCSSPCICR4", 1155 },
{ "TRCSSPCICR5", 1156 },
{ "TRCSSPCICR6", 1157 },
{ "TRCSSPCICR7", 1158 },
{ "TRCSTALLCTLR", 1159 },
{ "TRCSTATR", 1160 },
{ "TRCSYNCPR", 1161 },
{ "TRCTRACEIDR", 1162 },
{ "TRCTSCTLR", 1163 },
{ "TRCVDARCCTLR", 1164 },
{ "TRCVDCTLR", 1165 },
{ "TRCVDSACCTLR", 1166 },
{ "TRCVICTLR", 1167 },
{ "TRCVIIECTLR", 1168 },
{ "TRCVIPCSSCTLR", 1169 },
{ "TRCVISSCTLR", 1170 },
{ "TRCVMIDCCTLR0", 1171 },
{ "TRCVMIDCCTLR1", 1172 },
{ "TRCVMIDCVR0", 1173 },
{ "TRCVMIDCVR1", 1174 },
{ "TRCVMIDCVR2", 1175 },
{ "TRCVMIDCVR3", 1176 },
{ "TRCVMIDCVR4", 1177 },
{ "TRCVMIDCVR5", 1178 },
{ "TRCVMIDCVR6", 1179 },
{ "TRCVMIDCVR7", 1180 },
{ "TRFCR_EL1", 1181 },
{ "TRFCR_EL12", 1182 },
{ "TRFCR_EL2", 1183 },
{ "TTBR0_EL1", 1184 },
{ "TTBR0_EL12", 1185 },
{ "TTBR0_EL2", 1186 },
{ "TTBR0_EL3", 1187 },
{ "TTBR1_EL1", 1188 },
{ "TTBR1_EL12", 1189 },
{ "TTBR1_EL2", 1190 },
{ "UAO", 1191 },
{ "VBAR_EL1", 1192 },
{ "VBAR_EL12", 1193 },
{ "VBAR_EL2", 1194 },
{ "VBAR_EL3", 1195 },
{ "VDISR_EL2", 1196 },
{ "VDISR_EL3", 1197 },
{ "VMECID_A_EL2", 1198 },
{ "VMECID_P_EL2", 1199 },
{ "VMPIDR_EL2", 1200 },
{ "VNCR_EL2", 1201 },
{ "VPIDR_EL2", 1202 },
{ "VSCTLR_EL2", 1203 },
{ "VSESR_EL2", 1204 },
{ "VSESR_EL3", 1205 },
{ "VSTCR_EL2", 1206 },
{ "VSTTBR_EL2", 1207 },
{ "VTCR_EL2", 1208 },
{ "VTTBR_EL2", 1209 },
{ "ZCR_EL1", 1210 },
{ "ZCR_EL12", 1211 },
{ "ZCR_EL2", 1212 },
{ "ZCR_EL3", 1213 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &SysRegsList[Idx->_index];
}
const SysReg *lookupSysRegByEncoding(uint16_t Encoding) {
struct IndexType {
uint16_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x8002, 572 },
{ 0x8004, 291 },
{ 0x8005, 275 },
{ 0x8006, 330 },
{ 0x8007, 314 },
{ 0x800C, 298 },
{ 0x800D, 282 },
{ 0x800E, 337 },
{ 0x800F, 321 },
{ 0x8010, 531 },
{ 0x8012, 536 },
{ 0x8014, 299 },
{ 0x8015, 283 },
{ 0x8016, 338 },
{ 0x8017, 322 },
{ 0x801A, 573 },
{ 0x801C, 300 },
{ 0x801D, 284 },
{ 0x801E, 339 },
{ 0x801F, 323 },
{ 0x8022, 537 },
{ 0x8024, 301 },
{ 0x8025, 285 },
{ 0x8026, 340 },
{ 0x8027, 324 },
{ 0x802A, 538 },
{ 0x802C, 302 },
{ 0x802D, 286 },
{ 0x802E, 341 },
{ 0x802F, 325 },
{ 0x8032, 574 },
{ 0x8034, 303 },
{ 0x8035, 287 },
{ 0x8036, 342 },
{ 0x8037, 326 },
{ 0x803C, 304 },
{ 0x803D, 288 },
{ 0x803E, 343 },
{ 0x803F, 327 },
{ 0x8044, 305 },
{ 0x8045, 289 },
{ 0x8046, 344 },
{ 0x8047, 328 },
{ 0x804C, 306 },
{ 0x804D, 290 },
{ 0x804E, 345 },
{ 0x804F, 329 },
{ 0x8054, 292 },
{ 0x8055, 276 },
{ 0x8056, 331 },
{ 0x8057, 315 },
{ 0x805C, 293 },
{ 0x805D, 277 },
{ 0x805E, 332 },
{ 0x805F, 316 },
{ 0x8064, 294 },
{ 0x8065, 278 },
{ 0x8066, 333 },
{ 0x8067, 317 },
{ 0x806C, 295 },
{ 0x806D, 279 },
{ 0x806E, 334 },
{ 0x806F, 318 },
{ 0x8074, 296 },
{ 0x8075, 280 },
{ 0x8076, 335 },
{ 0x8077, 319 },
{ 0x807C, 297 },
{ 0x807D, 281 },
{ 0x807E, 336 },
{ 0x807F, 320 },
{ 0x8080, 535 },
{ 0x8084, 575 },
{ 0x808C, 576 },
{ 0x809C, 571 },
{ 0x80A4, 312 },
{ 0x83C6, 308 },
{ 0x83CE, 307 },
{ 0x83F6, 274 },
{ 0x84E8, 839 },
{ 0x84E9, 840 },
{ 0x84EB, 834 },
{ 0x84EC, 910 },
{ 0x84ED, 845 },
{ 0x84EE, 844 },
{ 0x84EF, 838 },
{ 0x84F1, 912 },
{ 0x84F2, 911 },
{ 0x8740, 634 },
{ 0x8741, 645 },
{ 0x8742, 656 },
{ 0x8743, 658 },
{ 0x8744, 659 },
{ 0x8745, 660 },
{ 0x8746, 661 },
{ 0x8747, 662 },
{ 0x8748, 663 },
{ 0x8749, 664 },
{ 0x874A, 635 },
{ 0x874B, 636 },
{ 0x874C, 637 },
{ 0x874D, 638 },
{ 0x874E, 639 },
{ 0x874F, 640 },
{ 0x8750, 641 },
{ 0x8751, 642 },
{ 0x8752, 643 },
{ 0x8753, 644 },
{ 0x8754, 646 },
{ 0x8755, 647 },
{ 0x8756, 648 },
{ 0x8757, 649 },
{ 0x8758, 650 },
{ 0x8759, 651 },
{ 0x875A, 652 },
{ 0x875B, 653 },
{ 0x875C, 654 },
{ 0x875D, 655 },
{ 0x875E, 657 },
{ 0x875F, 596 },
{ 0x8760, 699 },
{ 0x8801, 1162 },
{ 0x8802, 1167 },
{ 0x8804, 1130 },
{ 0x8805, 1018 },
{ 0x8806, 1067 },
{ 0x8807, 1069 },
{ 0x8808, 1096 },
{ 0x8809, 1098 },
{ 0x880A, 1168 },
{ 0x880C, 1131 },
{ 0x880D, 1019 },
{ 0x880E, 1068 },
{ 0x880F, 1070 },
{ 0x8810, 1097 },
{ 0x8811, 1081 },
{ 0x8812, 1170 },
{ 0x8814, 1132 },
{ 0x8815, 1020 },
{ 0x8816, 1057 },
{ 0x8817, 1071 },
{ 0x8818, 1160 },
{ 0x881A, 1169 },
{ 0x881D, 1021 },
{ 0x881E, 1058 },
{ 0x881F, 1072 },
{ 0x8820, 1026 },
{ 0x8825, 1014 },
{ 0x8826, 1059 },
{ 0x8827, 1073 },
{ 0x882D, 1015 },
{ 0x882E, 1060 },
{ 0x882F, 1074 },
{ 0x8830, 995 },
{ 0x8834, 1133 },
{ 0x8835, 1016 },
{ 0x8837, 1075 },
{ 0x883C, 1134 },
{ 0x883D, 1017 },
{ 0x883F, 1076 },
{ 0x8840, 1048 },
{ 0x8842, 1165 },
{ 0x8844, 1050 },
{ 0x8844, 1051 },
{ 0x8845, 1022 },
{ 0x8847, 1055 },
{ 0x8848, 1049 },
{ 0x884A, 1166 },
{ 0x884C, 1052 },
{ 0x884D, 1023 },
{ 0x884F, 1056 },
{ 0x8850, 1129 },
{ 0x8852, 1164 },
{ 0x8854, 1053 },
{ 0x8855, 1024 },
{ 0x8857, 1061 },
{ 0x8858, 1159 },
{ 0x885C, 1054 },
{ 0x885D, 1025 },
{ 0x885F, 1062 },
{ 0x8860, 1163 },
{ 0x8867, 1063 },
{ 0x8868, 1161 },
{ 0x886F, 1064 },
{ 0x8870, 997 },
{ 0x8877, 1065 },
{ 0x8878, 996 },
{ 0x887F, 1066 },
{ 0x8881, 1105 },
{ 0x8882, 1135 },
{ 0x8883, 1151 },
{ 0x8884, 1084 },
{ 0x8889, 1106 },
{ 0x888A, 1136 },
{ 0x888B, 1152 },
{ 0x888C, 1085 },
{ 0x8890, 1109 },
{ 0x8891, 1107 },
{ 0x8892, 1137 },
{ 0x8893, 1153 },
{ 0x8898, 1120 },
{ 0x8899, 1108 },
{ 0x889A, 1138 },
{ 0x889B, 1154 },
{ 0x88A0, 1123 },
{ 0x88A1, 1110 },
{ 0x88A2, 1139 },
{ 0x88A3, 1155 },
{ 0x88A4, 1086 },
{ 0x88A8, 1124 },
{ 0x88A9, 1111 },
{ 0x88AA, 1140 },
{ 0x88AB, 1156 },
{ 0x88AC, 1087 },
{ 0x88B0, 1125 },
{ 0x88B1, 1112 },
{ 0x88B2, 1141 },
{ 0x88B3, 1157 },
{ 0x88B8, 1126 },
{ 0x88B9, 1113 },
{ 0x88BA, 1142 },
{ 0x88BB, 1158 },
{ 0x88C0, 1127 },
{ 0x88C1, 1114 },
{ 0x88C2, 1143 },
{ 0x88C8, 1128 },
{ 0x88C9, 1115 },
{ 0x88CA, 1144 },
{ 0x88D0, 1099 },
{ 0x88D1, 1116 },
{ 0x88D2, 1145 },
{ 0x88D8, 1100 },
{ 0x88D9, 1117 },
{ 0x88DA, 1146 },
{ 0x88E0, 1101 },
{ 0x88E1, 1118 },
{ 0x88E2, 1147 },
{ 0x88E8, 1102 },
{ 0x88E9, 1119 },
{ 0x88EA, 1148 },
{ 0x88F0, 1103 },
{ 0x88F1, 1121 },
{ 0x88F2, 1149 },
{ 0x88F8, 1104 },
{ 0x88F9, 1122 },
{ 0x88FA, 1150 },
{ 0x8900, 978 },
{ 0x8901, 992 },
{ 0x8902, 962 },
{ 0x8903, 976 },
{ 0x8904, 1040 },
{ 0x8905, 1044 },
{ 0x8906, 1032 },
{ 0x8907, 1036 },
{ 0x8910, 979 },
{ 0x8911, 993 },
{ 0x8912, 963 },
{ 0x8913, 977 },
{ 0x8920, 986 },
{ 0x8921, 980 },
{ 0x8922, 970 },
{ 0x8923, 964 },
{ 0x8924, 1041 },
{ 0x8925, 1045 },
{ 0x8926, 1033 },
{ 0x8927, 1037 },
{ 0x8930, 987 },
{ 0x8931, 981 },
{ 0x8932, 971 },
{ 0x8933, 965 },
{ 0x8940, 988 },
{ 0x8941, 982 },
{ 0x8942, 972 },
{ 0x8943, 966 },
{ 0x8944, 1042 },
{ 0x8945, 1046 },
{ 0x8946, 1034 },
{ 0x8947, 1038 },
{ 0x8950, 989 },
{ 0x8951, 983 },
{ 0x8952, 973 },
{ 0x8953, 967 },
{ 0x8960, 990 },
{ 0x8961, 984 },
{ 0x8962, 974 },
{ 0x8963, 968 },
{ 0x8964, 1043 },
{ 0x8965, 1047 },
{ 0x8966, 1035 },
{ 0x8967, 1039 },
{ 0x8970, 991 },
{ 0x8971, 985 },
{ 0x8972, 975 },
{ 0x8973, 969 },
{ 0x8980, 1000 },
{ 0x8981, 1173 },
{ 0x8982, 998 },
{ 0x898A, 999 },
{ 0x8990, 1001 },
{ 0x8991, 1174 },
{ 0x8992, 1171 },
{ 0x899A, 1172 },
{ 0x89A0, 1002 },
{ 0x89A1, 1175 },
{ 0x89B0, 1003 },
{ 0x89B1, 1176 },
{ 0x89C0, 1004 },
{ 0x89C1, 1177 },
{ 0x89D0, 1005 },
{ 0x89D1, 1178 },
{ 0x89E0, 1006 },
{ 0x89E1, 1179 },
{ 0x89F0, 1007 },
{ 0x89F1, 1180 },
{ 0x8B84, 1077 },
{ 0x8B97, 1030 },
{ 0x8B9F, 1031 },
{ 0x8BA7, 1092 },
{ 0x8BAF, 1093 },
{ 0x8BB7, 1094 },
{ 0x8BBF, 1095 },
{ 0x8BC6, 1013 },
{ 0x8BC7, 1088 },
{ 0x8BCE, 1012 },
{ 0x8BCF, 1089 },
{ 0x8BD6, 1027 },
{ 0x8BD7, 1090 },
{ 0x8BDE, 1028 },
{ 0x8BDF, 1091 },
{ 0x8BE6, 1082 },
{ 0x8BE7, 1008 },
{ 0x8BEE, 1083 },
{ 0x8BEF, 1009 },
{ 0x8BF6, 994 },
{ 0x8BF7, 1010 },
{ 0x8BFE, 1029 },
{ 0x8BFF, 1011 },
{ 0x8C00, 119 },
{ 0x8C01, 152 },
{ 0x8C02, 185 },
{ 0x8C04, 126 },
{ 0x8C05, 159 },
{ 0x8C06, 192 },
{ 0x8C08, 130 },
{ 0x8C09, 163 },
{ 0x8C0A, 196 },
{ 0x8C0C, 127 },
{ 0x8C0D, 160 },
{ 0x8C0E, 193 },
{ 0x8C10, 141 },
{ 0x8C11, 174 },
{ 0x8C12, 207 },
{ 0x8C14, 128 },
{ 0x8C15, 161 },
{ 0x8C16, 194 },
{ 0x8C18, 144 },
{ 0x8C19, 177 },
{ 0x8C1A, 210 },
{ 0x8C1C, 129 },
{ 0x8C1D, 162 },
{ 0x8C1E, 195 },
{ 0x8C20, 145 },
{ 0x8C21, 178 },
{ 0x8C22, 211 },
{ 0x8C24, 131 },
{ 0x8C25, 164 },
{ 0x8C26, 197 },
{ 0x8C28, 146 },
{ 0x8C29, 179 },
{ 0x8C2A, 212 },
{ 0x8C2C, 132 },
{ 0x8C2D, 165 },
{ 0x8C2E, 198 },
{ 0x8C30, 147 },
{ 0x8C31, 180 },
{ 0x8C32, 213 },
{ 0x8C34, 133 },
{ 0x8C35, 166 },
{ 0x8C36, 199 },
{ 0x8C38, 148 },
{ 0x8C39, 181 },
{ 0x8C3A, 214 },
{ 0x8C3C, 134 },
{ 0x8C3D, 167 },
{ 0x8C3E, 200 },
{ 0x8C40, 149 },
{ 0x8C41, 182 },
{ 0x8C42, 215 },
{ 0x8C44, 135 },
{ 0x8C45, 168 },
{ 0x8C46, 201 },
{ 0x8C48, 150 },
{ 0x8C49, 183 },
{ 0x8C4A, 216 },
{ 0x8C4C, 136 },
{ 0x8C4D, 169 },
{ 0x8C4E, 202 },
{ 0x8C50, 120 },
{ 0x8C51, 153 },
{ 0x8C52, 186 },
{ 0x8C54, 137 },
{ 0x8C55, 170 },
{ 0x8C56, 203 },
{ 0x8C58, 121 },
{ 0x8C59, 154 },
{ 0x8C5A, 187 },
{ 0x8C5C, 138 },
{ 0x8C5D, 171 },
{ 0x8C5E, 204 },
{ 0x8C60, 122 },
{ 0x8C61, 155 },
{ 0x8C62, 188 },
{ 0x8C64, 139 },
{ 0x8C65, 172 },
{ 0x8C66, 205 },
{ 0x8C68, 123 },
{ 0x8C69, 156 },
{ 0x8C6A, 189 },
{ 0x8C6C, 140 },
{ 0x8C6D, 173 },
{ 0x8C6E, 206 },
{ 0x8C70, 124 },
{ 0x8C71, 157 },
{ 0x8C72, 190 },
{ 0x8C74, 142 },
{ 0x8C75, 175 },
{ 0x8C76, 208 },
{ 0x8C78, 125 },
{ 0x8C79, 158 },
{ 0x8C7A, 191 },
{ 0x8C7C, 143 },
{ 0x8C7D, 176 },
{ 0x8C7E, 209 },
{ 0x8C80, 114 },
{ 0x8C81, 117 },
{ 0x8C82, 218 },
{ 0x8C88, 151 },
{ 0x8C89, 184 },
{ 0x8C8A, 217 },
{ 0x8C90, 118 },
{ 0x9000, 941 },
{ 0x9080, 942 },
{ 0x9808, 532 },
{ 0x9820, 311 },
{ 0x9828, 309 },
{ 0x9828, 310 },
{ 0x9CE0, 843 },
{ 0x9CE1, 842 },
{ 0x9CE2, 841 },
{ 0x9CE3, 913 },
{ 0x9CE4, 918 },
{ 0x9CE5, 917 },
{ 0x9CF3, 914 },
{ 0x9F00, 846 },
{ 0x9F01, 853 },
{ 0x9F02, 854 },
{ 0x9F03, 855 },
{ 0x9F04, 856 },
{ 0x9F05, 857 },
{ 0x9F06, 858 },
{ 0x9F07, 859 },
{ 0x9F08, 860 },
{ 0x9F09, 861 },
{ 0x9F0A, 847 },
{ 0x9F0B, 848 },
{ 0x9F0C, 849 },
{ 0x9F0D, 850 },
{ 0x9F0E, 851 },
{ 0x9F0F, 852 },
{ 0x9F10, 894 },
{ 0x9F11, 901 },
{ 0x9F12, 902 },
{ 0x9F13, 903 },
{ 0x9F14, 904 },
{ 0x9F15, 905 },
{ 0x9F16, 906 },
{ 0x9F17, 907 },
{ 0x9F18, 908 },
{ 0x9F19, 909 },
{ 0x9F1A, 895 },
{ 0x9F1B, 896 },
{ 0x9F1C, 897 },
{ 0x9F1D, 898 },
{ 0x9F1E, 899 },
{ 0x9F1F, 900 },
{ 0x9F20, 878 },
{ 0x9F21, 885 },
{ 0x9F22, 886 },
{ 0x9F23, 887 },
{ 0x9F24, 888 },
{ 0x9F25, 889 },
{ 0x9F26, 890 },
{ 0x9F27, 891 },
{ 0x9F28, 892 },
{ 0x9F29, 893 },
{ 0x9F2A, 879 },
{ 0x9F2B, 880 },
{ 0x9F2C, 881 },
{ 0x9F2D, 882 },
{ 0x9F2E, 883 },
{ 0x9F2F, 884 },
{ 0x9F30, 862 },
{ 0x9F31, 869 },
{ 0x9F32, 870 },
{ 0x9F33, 871 },
{ 0x9F34, 872 },
{ 0x9F35, 873 },
{ 0x9F36, 874 },
{ 0x9F37, 875 },
{ 0x9F38, 876 },
{ 0x9F39, 877 },
{ 0x9F3A, 863 },
{ 0x9F3B, 864 },
{ 0x9F3C, 865 },
{ 0x9F3D, 866 },
{ 0x9F3E, 867 },
{ 0x9F3F, 868 },
{ 0xA038, 313 },
{ 0xA480, 116 },
{ 0xA4EB, 836 },
{ 0xAC80, 115 },
{ 0xACEB, 835 },
{ 0xB4EB, 837 },
{ 0xB4F7, 915 },
{ 0xBCF7, 916 },
{ 0xC000, 546 },
{ 0xC004, 565 },
{ 0xC005, 564 },
{ 0xC006, 799 },
{ 0xC008, 513 },
{ 0xC009, 514 },
{ 0xC00A, 498 },
{ 0xC00B, 497 },
{ 0xC00C, 507 },
{ 0xC00D, 508 },
{ 0xC00E, 509 },
{ 0xC00F, 510 },
{ 0xC010, 500 },
{ 0xC011, 501 },
{ 0xC012, 502 },
{ 0xC013, 503 },
{ 0xC014, 504 },
{ 0xC015, 505 },
{ 0xC016, 511 },
{ 0xC017, 506 },
{ 0xC018, 567 },
{ 0xC019, 568 },
{ 0xC01A, 569 },
{ 0xC01C, 515 },
{ 0xC01D, 499 },
{ 0xC01E, 512 },
{ 0xC020, 492 },
{ 0xC021, 493 },
{ 0xC022, 494 },
{ 0xC024, 496 },
{ 0xC025, 495 },
{ 0xC027, 482 },
{ 0xC028, 479 },
{ 0xC029, 480 },
{ 0xC02A, 481 },
{ 0xC02C, 477 },
{ 0xC02D, 478 },
{ 0xC030, 483 },
{ 0xC031, 484 },
{ 0xC032, 485 },
{ 0xC033, 486 },
{ 0xC038, 487 },
{ 0xC039, 488 },
{ 0xC03A, 489 },
{ 0xC03B, 490 },
{ 0xC03C, 491 },
{ 0xC080, 816 },
{ 0xC081, 1 },
{ 0xC082, 265 },
{ 0xC083, 812 },
{ 0xC085, 800 },
{ 0xC086, 382 },
{ 0xC090, 1210 },
{ 0xC091, 1181 },
{ 0xC093, 1078 },
{ 0xC094, 833 },
{ 0xC096, 827 },
{ 0xC100, 1184 },
{ 0xC101, 1188 },
{ 0xC102, 937 },
{ 0xC103, 934 },
{ 0xC108, 111 },
{ 0xC109, 110 },
{ 0xC10A, 113 },
{ 0xC10B, 112 },
{ 0xC110, 105 },
{ 0xC111, 104 },
{ 0xC112, 107 },
{ 0xC113, 106 },
{ 0xC118, 109 },
{ 0xC119, 108 },
{ 0xC128, 384 },
{ 0xC129, 389 },
{ 0xC12A, 383 },
{ 0xC200, 921 },
{ 0xC201, 351 },
{ 0xC208, 928 },
{ 0xC210, 919 },
{ 0xC212, 271 },
{ 0xC213, 577 },
{ 0xC214, 1191 },
{ 0xC218, 14 },
{ 0xC219, 589 },
{ 0xC230, 440 },
{ 0xC288, 5 },
{ 0xC289, 9 },
{ 0xC290, 369 },
{ 0xC298, 355 },
{ 0xC299, 356 },
{ 0xC29A, 360 },
{ 0xC2A0, 359 },
{ 0xC2A1, 358 },
{ 0xC2A2, 368 },
{ 0xC2A3, 357 },
{ 0xC2A4, 367 },
{ 0xC2A5, 366 },
{ 0xC2A6, 365 },
{ 0xC2A8, 361 },
{ 0xC2A9, 362 },
{ 0xC2AA, 363 },
{ 0xC2AB, 364 },
{ 0xC2B0, 944 },
{ 0xC2B1, 943 },
{ 0xC300, 373 },
{ 0xC305, 579 },
{ 0xC309, 761 },
{ 0xC311, 795 },
{ 0xC340, 759 },
{ 0xC341, 793 },
{ 0xC344, 741 },
{ 0xC345, 775 },
{ 0xC348, 743 },
{ 0xC349, 777 },
{ 0xC34C, 745 },
{ 0xC34D, 779 },
{ 0xC350, 747 },
{ 0xC351, 781 },
{ 0xC354, 749 },
{ 0xC355, 783 },
{ 0xC358, 751 },
{ 0xC359, 785 },
{ 0xC35C, 753 },
{ 0xC35D, 787 },
{ 0xC360, 755 },
{ 0xC361, 789 },
{ 0xC364, 757 },
{ 0xC365, 791 },
{ 0xC368, 729 },
{ 0xC369, 763 },
{ 0xC36C, 731 },
{ 0xC36D, 765 },
{ 0xC370, 733 },
{ 0xC371, 767 },
{ 0xC374, 735 },
{ 0xC375, 769 },
{ 0xC378, 737 },
{ 0xC379, 771 },
{ 0xC37C, 739 },
{ 0xC37D, 773 },
{ 0xC3A0, 578 },
{ 0xC4C8, 705 },
{ 0xC4C9, 716 },
{ 0xC4CA, 712 },
{ 0xC4CB, 714 },
{ 0xC4CC, 711 },
{ 0xC4CD, 710 },
{ 0xC4CE, 715 },
{ 0xC4CF, 713 },
{ 0xC4D0, 591 },
{ 0xC4D1, 592 },
{ 0xC4D3, 593 },
{ 0xC4D4, 708 },
{ 0xC4D7, 590 },
{ 0xC4D8, 956 },
{ 0xC4D9, 959 },
{ 0xC4DA, 954 },
{ 0xC4DB, 960 },
{ 0xC4DC, 957 },
{ 0xC4DD, 958 },
{ 0xC4DE, 961 },
{ 0xC4DF, 955 },
{ 0xC4EB, 717 },
{ 0xC4F1, 701 },
{ 0xC4F2, 700 },
{ 0xC4F4, 719 },
{ 0xC4F5, 602 },
{ 0xC4F6, 702 },
{ 0xC4F7, 696 },
{ 0xC510, 527 },
{ 0xC511, 523 },
{ 0xC512, 582 },
{ 0xC513, 585 },
{ 0xC514, 725 },
{ 0xC515, 810 },
{ 0xC518, 19 },
{ 0xC519, 15 },
{ 0xC520, 522 },
{ 0xC521, 519 },
{ 0xC522, 521 },
{ 0xC523, 518 },
{ 0xC524, 553 },
{ 0xC527, 520 },
{ 0xC528, 548 },
{ 0xC529, 547 },
{ 0xC52B, 554 },
{ 0xC600, 1192 },
{ 0xC601, 806 },
{ 0xC602, 801 },
{ 0xC608, 517 },
{ 0xC609, 347 },
{ 0xC640, 434 },
{ 0xC641, 430 },
{ 0xC642, 432 },
{ 0xC643, 425 },
{ 0xC644, 416 },
{ 0xC645, 417 },
{ 0xC646, 418 },
{ 0xC647, 419 },
{ 0xC648, 420 },
{ 0xC649, 421 },
{ 0xC64A, 422 },
{ 0xC64B, 423 },
{ 0xC64D, 439 },
{ 0xC659, 429 },
{ 0xC65B, 441 },
{ 0xC65D, 443 },
{ 0xC65E, 424 },
{ 0xC65F, 442 },
{ 0xC660, 435 },
{ 0xC661, 431 },
{ 0xC662, 433 },
{ 0xC663, 426 },
{ 0xC664, 427 },
{ 0xC665, 444 },
{ 0xC666, 436 },
{ 0xC667, 437 },
{ 0xC681, 262 },
{ 0xC683, 798 },
{ 0xC684, 951 },
{ 0xC685, 0 },
{ 0xC686, 797 },
{ 0xC687, 821 },
{ 0xC708, 237 },
{ 0xC800, 220 },
{ 0xC801, 221 },
{ 0xC802, 219 },
{ 0xC804, 393 },
{ 0xC806, 831 },
{ 0xC807, 13 },
{ 0xD000, 269 },
{ 0xD801, 270 },
{ 0xD807, 346 },
{ 0xD920, 804 },
{ 0xD921, 805 },
{ 0xD929, 388 },
{ 0xDA10, 570 },
{ 0xDA11, 273 },
{ 0xDA12, 932 },
{ 0xDA15, 348 },
{ 0xDA16, 931 },
{ 0xDA17, 933 },
{ 0xDA20, 378 },
{ 0xDA21, 381 },
{ 0xDA22, 380 },
{ 0xDA28, 350 },
{ 0xDA29, 349 },
{ 0xDCA0, 698 },
{ 0xDCB0, 697 },
{ 0xDCE0, 601 },
{ 0xDCE1, 600 },
{ 0xDCE2, 599 },
{ 0xDCE3, 703 },
{ 0xDCE4, 718 },
{ 0xDCE5, 709 },
{ 0xDCE6, 597 },
{ 0xDCE7, 598 },
{ 0xDCE8, 595 },
{ 0xDCE9, 722 },
{ 0xDCEA, 721 },
{ 0xDCEC, 723 },
{ 0xDCF0, 720 },
{ 0xDCF3, 704 },
{ 0xDD14, 724 },
{ 0xDE82, 950 },
{ 0xDE83, 949 },
{ 0xDE85, 948 },
{ 0xDE87, 820 },
{ 0xDE90, 30 },
{ 0xDE91, 23 },
{ 0xDE92, 25 },
{ 0xDE93, 103 },
{ 0xDE94, 26 },
{ 0xDE95, 28 },
{ 0xDE96, 24 },
{ 0xDE98, 27 },
{ 0xDE99, 29 },
{ 0xDEA0, 31 },
{ 0xDEA1, 32 },
{ 0xDEA2, 33 },
{ 0xDEA3, 34 },
{ 0xDEB0, 83 },
{ 0xDEB1, 84 },
{ 0xDEB2, 85 },
{ 0xDEB3, 86 },
{ 0xDEE0, 35 },
{ 0xDEE1, 42 },
{ 0xDEE2, 43 },
{ 0xDEE3, 44 },
{ 0xDEE4, 45 },
{ 0xDEE5, 46 },
{ 0xDEE6, 47 },
{ 0xDEE7, 48 },
{ 0xDEE8, 49 },
{ 0xDEE9, 50 },
{ 0xDEEA, 36 },
{ 0xDEEB, 37 },
{ 0xDEEC, 38 },
{ 0xDEED, 39 },
{ 0xDEEE, 40 },
{ 0xDEEF, 41 },
{ 0xDEF0, 87 },
{ 0xDEF1, 94 },
{ 0xDEF2, 95 },
{ 0xDEF3, 96 },
{ 0xDEF4, 97 },
{ 0xDEF5, 98 },
{ 0xDEF6, 99 },
{ 0xDEF7, 100 },
{ 0xDEF8, 101 },
{ 0xDEF9, 102 },
{ 0xDEFA, 88 },
{ 0xDEFB, 89 },
{ 0xDEFC, 90 },
{ 0xDEFD, 91 },
{ 0xDEFE, 92 },
{ 0xDEFF, 93 },
{ 0xDF00, 222 },
{ 0xDF01, 240 },
{ 0xDF02, 253 },
{ 0xDF05, 239 },
{ 0xDF06, 252 },
{ 0xDF10, 249 },
{ 0xDF11, 245 },
{ 0xDF12, 247 },
{ 0xDF18, 260 },
{ 0xDF19, 256 },
{ 0xDF1A, 258 },
{ 0xDF40, 603 },
{ 0xDF41, 614 },
{ 0xDF42, 625 },
{ 0xDF43, 627 },
{ 0xDF44, 628 },
{ 0xDF45, 629 },
{ 0xDF46, 630 },
{ 0xDF47, 631 },
{ 0xDF48, 632 },
{ 0xDF49, 633 },
{ 0xDF4A, 604 },
{ 0xDF4B, 605 },
{ 0xDF4C, 606 },
{ 0xDF4D, 607 },
{ 0xDF4E, 608 },
{ 0xDF4F, 609 },
{ 0xDF50, 610 },
{ 0xDF51, 611 },
{ 0xDF52, 612 },
{ 0xDF53, 613 },
{ 0xDF54, 615 },
{ 0xDF55, 616 },
{ 0xDF56, 617 },
{ 0xDF57, 618 },
{ 0xDF58, 619 },
{ 0xDF59, 620 },
{ 0xDF5A, 621 },
{ 0xDF5B, 622 },
{ 0xDF5C, 623 },
{ 0xDF5D, 624 },
{ 0xDF5E, 626 },
{ 0xDF60, 665 },
{ 0xDF61, 676 },
{ 0xDF62, 687 },
{ 0xDF63, 689 },
{ 0xDF64, 690 },
{ 0xDF65, 691 },
{ 0xDF66, 692 },
{ 0xDF67, 693 },
{ 0xDF68, 694 },
{ 0xDF69, 695 },
{ 0xDF6A, 666 },
{ 0xDF6B, 667 },
{ 0xDF6C, 668 },
{ 0xDF6D, 669 },
{ 0xDF6E, 670 },
{ 0xDF6F, 671 },
{ 0xDF70, 672 },
{ 0xDF71, 673 },
{ 0xDF72, 674 },
{ 0xDF73, 675 },
{ 0xDF74, 677 },
{ 0xDF75, 678 },
{ 0xDF76, 679 },
{ 0xDF77, 680 },
{ 0xDF78, 681 },
{ 0xDF79, 682 },
{ 0xDF7A, 683 },
{ 0xDF7B, 684 },
{ 0xDF7C, 685 },
{ 0xDF7D, 686 },
{ 0xDF7E, 688 },
{ 0xDF7F, 594 },
{ 0xE000, 1202 },
{ 0xE004, 566 },
{ 0xE005, 1200 },
{ 0xE080, 818 },
{ 0xE081, 3 },
{ 0xE083, 814 },
{ 0xE088, 401 },
{ 0xE089, 533 },
{ 0xE08A, 267 },
{ 0xE08B, 415 },
{ 0xE08C, 411 },
{ 0xE08D, 413 },
{ 0xE08E, 409 },
{ 0xE08F, 398 },
{ 0xE090, 1212 },
{ 0xE091, 1183 },
{ 0xE092, 400 },
{ 0xE093, 1080 },
{ 0xE095, 832 },
{ 0xE096, 829 },
{ 0xE099, 825 },
{ 0xE100, 1186 },
{ 0xE100, 1203 },
{ 0xE101, 1190 },
{ 0xE102, 939 },
{ 0xE103, 936 },
{ 0xE108, 1209 },
{ 0xE10A, 1208 },
{ 0xE110, 1201 },
{ 0xE11A, 402 },
{ 0xE11B, 403 },
{ 0xE11C, 396 },
{ 0xE11D, 397 },
{ 0xE128, 386 },
{ 0xE129, 391 },
{ 0xE130, 1207 },
{ 0xE132, 1206 },
{ 0xE180, 272 },
{ 0xE188, 404 },
{ 0xE189, 406 },
{ 0xE18A, 410 },
{ 0xE18B, 412 },
{ 0xE18C, 405 },
{ 0xE18D, 407 },
{ 0xE18E, 399 },
{ 0xE18F, 408 },
{ 0xE200, 923 },
{ 0xE201, 353 },
{ 0xE208, 929 },
{ 0xE218, 926 },
{ 0xE219, 920 },
{ 0xE21A, 927 },
{ 0xE21B, 925 },
{ 0xE281, 516 },
{ 0xE288, 7 },
{ 0xE289, 11 },
{ 0xE290, 371 },
{ 0xE293, 1204 },
{ 0xE298, 379 },
{ 0xE2B0, 946 },
{ 0xE300, 375 },
{ 0xE304, 414 },
{ 0xE305, 581 },
{ 0xE309, 762 },
{ 0xE311, 796 },
{ 0xE340, 760 },
{ 0xE341, 794 },
{ 0xE344, 742 },
{ 0xE345, 776 },
{ 0xE348, 744 },
{ 0xE349, 778 },
{ 0xE34C, 746 },
{ 0xE34D, 780 },
{ 0xE350, 748 },
{ 0xE351, 782 },
{ 0xE354, 750 },
{ 0xE355, 784 },
{ 0xE358, 752 },
{ 0xE359, 786 },
{ 0xE35C, 754 },
{ 0xE35D, 788 },
{ 0xE360, 756 },
{ 0xE361, 790 },
{ 0xE364, 758 },
{ 0xE365, 792 },
{ 0xE368, 730 },
{ 0xE369, 764 },
{ 0xE36C, 732 },
{ 0xE36D, 766 },
{ 0xE370, 734 },
{ 0xE371, 768 },
{ 0xE374, 736 },
{ 0xE375, 770 },
{ 0xE378, 738 },
{ 0xE379, 772 },
{ 0xE37C, 740 },
{ 0xE37D, 774 },
{ 0xE4C8, 707 },
{ 0xE509, 525 },
{ 0xE510, 529 },
{ 0xE512, 584 },
{ 0xE513, 587 },
{ 0xE514, 727 },
{ 0xE515, 809 },
{ 0xE518, 21 },
{ 0xE519, 17 },
{ 0xE520, 552 },
{ 0xE521, 563 },
{ 0xE528, 550 },
{ 0xE530, 555 },
{ 0xE531, 556 },
{ 0xE532, 557 },
{ 0xE533, 558 },
{ 0xE534, 559 },
{ 0xE535, 560 },
{ 0xE536, 561 },
{ 0xE537, 562 },
{ 0xE540, 542 },
{ 0xE541, 540 },
{ 0xE542, 543 },
{ 0xE543, 541 },
{ 0xE547, 539 },
{ 0xE548, 1199 },
{ 0xE549, 1198 },
{ 0xE600, 1194 },
{ 0xE601, 807 },
{ 0xE602, 802 },
{ 0xE609, 1196 },
{ 0xE640, 447 },
{ 0xE641, 448 },
{ 0xE642, 449 },
{ 0xE643, 450 },
{ 0xE648, 451 },
{ 0xE649, 452 },
{ 0xE64A, 453 },
{ 0xE64B, 454 },
{ 0xE64D, 445 },
{ 0xE658, 457 },
{ 0xE659, 476 },
{ 0xE65A, 474 },
{ 0xE65B, 455 },
{ 0xE65D, 456 },
{ 0xE65F, 475 },
{ 0xE660, 458 },
{ 0xE661, 465 },
{ 0xE662, 466 },
{ 0xE663, 467 },
{ 0xE664, 468 },
{ 0xE665, 469 },
{ 0xE666, 470 },
{ 0xE667, 471 },
{ 0xE668, 472 },
{ 0xE669, 473 },
{ 0xE66A, 459 },
{ 0xE66B, 460 },
{ 0xE66C, 461 },
{ 0xE66D, 462 },
{ 0xE66E, 463 },
{ 0xE66F, 464 },
{ 0xE681, 264 },
{ 0xE682, 952 },
{ 0xE687, 823 },
{ 0xE6C0, 51 },
{ 0xE6C1, 58 },
{ 0xE6C2, 59 },
{ 0xE6C3, 60 },
{ 0xE6C4, 61 },
{ 0xE6C5, 62 },
{ 0xE6C6, 63 },
{ 0xE6C7, 64 },
{ 0xE6C8, 65 },
{ 0xE6C9, 66 },
{ 0xE6CA, 52 },
{ 0xE6CB, 53 },
{ 0xE6CC, 54 },
{ 0xE6CD, 55 },
{ 0xE6CE, 56 },
{ 0xE6CF, 57 },
{ 0xE6D0, 67 },
{ 0xE6D1, 74 },
{ 0xE6D2, 75 },
{ 0xE6D3, 76 },
{ 0xE6D4, 77 },
{ 0xE6D5, 78 },
{ 0xE6D6, 79 },
{ 0xE6D7, 80 },
{ 0xE6D8, 81 },
{ 0xE6D9, 82 },
{ 0xE6DA, 68 },
{ 0xE6DB, 69 },
{ 0xE6DC, 70 },
{ 0xE6DD, 71 },
{ 0xE6DE, 72 },
{ 0xE6DF, 73 },
{ 0xE703, 255 },
{ 0xE704, 251 },
{ 0xE705, 236 },
{ 0xE706, 241 },
{ 0xE707, 254 },
{ 0xE708, 223 },
{ 0xE710, 229 },
{ 0xE711, 227 },
{ 0xE712, 228 },
{ 0xE718, 235 },
{ 0xE719, 233 },
{ 0xE71A, 234 },
{ 0xE720, 232 },
{ 0xE721, 230 },
{ 0xE722, 231 },
{ 0xE728, 226 },
{ 0xE729, 224 },
{ 0xE72A, 225 },
{ 0xE880, 817 },
{ 0xE881, 2 },
{ 0xE882, 266 },
{ 0xE883, 813 },
{ 0xE890, 1211 },
{ 0xE891, 1182 },
{ 0xE893, 1079 },
{ 0xE896, 828 },
{ 0xE900, 1185 },
{ 0xE901, 1189 },
{ 0xE902, 938 },
{ 0xE903, 935 },
{ 0xE928, 385 },
{ 0xE929, 390 },
{ 0xEA00, 922 },
{ 0xEA01, 352 },
{ 0xEA88, 6 },
{ 0xEA89, 10 },
{ 0xEA90, 370 },
{ 0xEAB0, 945 },
{ 0xEB00, 374 },
{ 0xEB05, 580 },
{ 0xECC8, 706 },
{ 0xED10, 528 },
{ 0xED11, 524 },
{ 0xED12, 583 },
{ 0xED13, 586 },
{ 0xED14, 726 },
{ 0xED18, 20 },
{ 0xED19, 16 },
{ 0xED28, 549 },
{ 0xEE00, 1193 },
{ 0xEE81, 263 },
{ 0xEE87, 822 },
{ 0xEF08, 238 },
{ 0xEF10, 250 },
{ 0xEF11, 246 },
{ 0xEF12, 248 },
{ 0xEF18, 261 },
{ 0xEF19, 257 },
{ 0xEF1A, 259 },
{ 0xF080, 819 },
{ 0xF081, 4 },
{ 0xF083, 815 },
{ 0xF088, 811 },
{ 0xF089, 826 },
{ 0xF08A, 268 },
{ 0xF08D, 377 },
{ 0xF090, 1213 },
{ 0xF096, 830 },
{ 0xF099, 534 },
{ 0xF100, 1187 },
{ 0xF102, 940 },
{ 0xF10C, 395 },
{ 0xF10E, 394 },
{ 0xF128, 387 },
{ 0xF129, 392 },
{ 0xF200, 924 },
{ 0xF201, 354 },
{ 0xF208, 930 },
{ 0xF288, 8 },
{ 0xF289, 12 },
{ 0xF290, 372 },
{ 0xF293, 1205 },
{ 0xF2B0, 947 },
{ 0xF300, 376 },
{ 0xF305, 545 },
{ 0xF509, 526 },
{ 0xF510, 530 },
{ 0xF513, 588 },
{ 0xF514, 728 },
{ 0xF518, 22 },
{ 0xF519, 18 },
{ 0xF528, 551 },
{ 0xF551, 544 },
{ 0xF600, 1195 },
{ 0xF601, 808 },
{ 0xF602, 803 },
{ 0xF609, 1197 },
{ 0xF664, 428 },
{ 0xF665, 446 },
{ 0xF667, 438 },
{ 0xF682, 953 },
{ 0xF687, 824 },
{ 0xFF10, 244 },
{ 0xFF11, 242 },
{ 0xFF12, 243 },
};
struct KeyType {
uint16_t Encoding;
};
KeyType Key = {Encoding};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Encoding != Idx->Encoding)
return nullptr;
return &SysRegsList[Idx->_index];
}
#endif
#ifdef GET_TSB_DECL
const TSB *lookupTSBByName(StringRef Name);
const TSB *lookupTSBByEncoding(uint8_t Encoding);
#endif
#ifdef GET_TSB_IMPL
constexpr TSB TSBsList[] = {
{ "csync", 0x0, {AArch64::FeatureTRACEV8_4} },
};
const TSB *lookupTSBByName(StringRef Name) {
struct IndexType {
const char * Name;
unsigned _index;
};
static const struct IndexType Index[] = {
{ "CSYNC", 0 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
struct Comp {
bool operator()(const IndexType &LHS, const KeyType &RHS) const {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
}
};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, Comp());
if (Idx == Table.end() ||
Key.Name != Idx->Name)
return nullptr;
return &TSBsList[Idx->_index];
}
const TSB *lookupTSBByEncoding(uint8_t Encoding) {
struct IndexType {
uint8_t Encoding;
unsigned _index;
};
static const struct IndexType Index[] = {
{ 0x0, 0 },
};
if ((Encoding < 0x0) ||
(Encoding > 0x0))
return nullptr;
auto Table = ArrayRef(Index);
size_t Idx = Encoding - 0x0;
return &TSBsList[Table[Idx]._index];
}
#endif
#undef GET_AT_DECL
#undef GET_AT_IMPL
#undef GET_BTI_DECL
#undef GET_BTI_IMPL
#undef GET_DBNXS_DECL
#undef GET_DBNXS_IMPL
#undef GET_DB_DECL
#undef GET_DB_IMPL
#undef GET_DC_DECL
#undef GET_DC_IMPL
#undef GET_EXACTFPIMM_DECL
#undef GET_EXACTFPIMM_IMPL
#undef GET_IC_DECL
#undef GET_IC_IMPL
#undef GET_ISB_DECL
#undef GET_ISB_IMPL
#undef GET_PRFM_DECL
#undef GET_PRFM_IMPL
#undef GET_PSB_DECL
#undef GET_PSB_IMPL
#undef GET_PSTATEIMM0_15_DECL
#undef GET_PSTATEIMM0_15_IMPL
#undef GET_PSTATEIMM0_1_DECL
#undef GET_PSTATEIMM0_1_IMPL
#undef GET_RPRFM_DECL
#undef GET_RPRFM_IMPL
#undef GET_SVCR_DECL
#undef GET_SVCR_IMPL
#undef GET_SVEPREDPAT_DECL
#undef GET_SVEPREDPAT_IMPL
#undef GET_SVEPRFM_DECL
#undef GET_SVEPRFM_IMPL
#undef GET_SVEVECLENSPECIFIER_DECL
#undef GET_SVEVECLENSPECIFIER_IMPL
#undef GET_SYSREG_DECL
#undef GET_SYSREG_IMPL
#undef GET_TLBITable_DECL
#undef GET_TLBITable_IMPL
#undef GET_TSB_DECL
#undef GET_TSB_IMPL