blob: 3c7a2d41524047af742bd1cbf21b5e869ec4b82b [file] [log] [blame]
#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,
};
#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 {
SVCRSM = 1,
SVCRZA = 2,
SVCRSMZA = 3,
};
#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_AA64AFR0_EL1 = 49196,
ID_AA64AFR1_EL1 = 49197,
ID_AA64ISAR0_EL1 = 49200,
ID_AA64ISAR1_EL1 = 49201,
ID_AA64ISAR2_EL1 = 49202,
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_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,
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,
CPM_IOACC_CTL_EL3 = 65424,
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,
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,
};
#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, { } }, // 0
{ "ALLE1IS", 0x241C, false, { } }, // 1
{ "ALLE1ISnXS", 0x249C, false, { AArch64::FeatureXS } }, // 2
{ "ALLE1nXS", 0x24BC, false, { AArch64::FeatureXS } }, // 3
{ "ALLE1OS", 0x240C, false, { AArch64::FeatureTLB_RMI } }, // 4
{ "ALLE1OSnXS", 0x248C, false, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 5
{ "ALLE2", 0x2438, false, { } }, // 6
{ "ALLE2IS", 0x2418, false, { } }, // 7
{ "ALLE2ISnXS", 0x2498, false, { AArch64::FeatureXS } }, // 8
{ "ALLE2nXS", 0x24B8, false, { AArch64::FeatureXS } }, // 9
{ "ALLE2OS", 0x2408, false, { AArch64::FeatureTLB_RMI } }, // 10
{ "ALLE2OSnXS", 0x2488, false, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 11
{ "ALLE3", 0x3438, false, { } }, // 12
{ "ALLE3IS", 0x3418, false, { } }, // 13
{ "ALLE3ISnXS", 0x3498, false, { AArch64::FeatureXS } }, // 14
{ "ALLE3nXS", 0x34B8, false, { AArch64::FeatureXS } }, // 15
{ "ALLE3OS", 0x3408, false, { AArch64::FeatureTLB_RMI } }, // 16
{ "ALLE3OSnXS", 0x3488, false, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 17
{ "ASIDE1", 0x43A, true, { } }, // 18
{ "ASIDE1IS", 0x41A, true, { } }, // 19
{ "ASIDE1ISnXS", 0x49A, true, { AArch64::FeatureXS } }, // 20
{ "ASIDE1nXS", 0x4BA, true, { AArch64::FeatureXS } }, // 21
{ "ASIDE1OS", 0x40A, true, { AArch64::FeatureTLB_RMI } }, // 22
{ "ASIDE1OSnXS", 0x48A, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 23
{ "IPAS2E1", 0x2421, true, { } }, // 24
{ "IPAS2E1IS", 0x2401, true, { } }, // 25
{ "IPAS2E1ISnXS", 0x2481, true, { AArch64::FeatureXS } }, // 26
{ "IPAS2E1nXS", 0x24A1, true, { AArch64::FeatureXS } }, // 27
{ "IPAS2E1OS", 0x2420, true, { AArch64::FeatureTLB_RMI } }, // 28
{ "IPAS2E1OSnXS", 0x24A0, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 29
{ "IPAS2LE1", 0x2425, true, { } }, // 30
{ "IPAS2LE1IS", 0x2405, true, { } }, // 31
{ "IPAS2LE1ISnXS", 0x2485, true, { AArch64::FeatureXS } }, // 32
{ "IPAS2LE1nXS", 0x24A5, true, { AArch64::FeatureXS } }, // 33
{ "IPAS2LE1OS", 0x2424, true, { AArch64::FeatureTLB_RMI } }, // 34
{ "IPAS2LE1OSnXS", 0x24A4, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 35
{ "PAALL", 0x343C, false, { AArch64::FeatureRME } }, // 36
{ "PAALLnXS", 0x34BC, false, { AArch64::FeatureRME, AArch64::FeatureXS } }, // 37
{ "PAALLOS", 0x340C, false, { AArch64::FeatureRME } }, // 38
{ "PAALLOSnXS", 0x348C, false, { AArch64::FeatureRME, AArch64::FeatureXS } }, // 39
{ "RIPAS2E1", 0x2422, true, { AArch64::FeatureTLB_RMI } }, // 40
{ "RIPAS2E1IS", 0x2402, true, { AArch64::FeatureTLB_RMI } }, // 41
{ "RIPAS2E1ISnXS", 0x2482, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 42
{ "RIPAS2E1nXS", 0x24A2, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 43
{ "RIPAS2E1OS", 0x2423, true, { AArch64::FeatureTLB_RMI } }, // 44
{ "RIPAS2E1OSnXS", 0x24A3, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 45
{ "RIPAS2LE1", 0x2426, true, { AArch64::FeatureTLB_RMI } }, // 46
{ "RIPAS2LE1IS", 0x2406, true, { AArch64::FeatureTLB_RMI } }, // 47
{ "RIPAS2LE1ISnXS", 0x2486, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 48
{ "RIPAS2LE1nXS", 0x24A6, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 49
{ "RIPAS2LE1OS", 0x2427, true, { AArch64::FeatureTLB_RMI } }, // 50
{ "RIPAS2LE1OSnXS", 0x24A7, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 51
{ "RPALOS", 0x3427, true, { AArch64::FeatureRME } }, // 52
{ "RPALOSnXS", 0x34A7, true, { AArch64::FeatureRME, AArch64::FeatureXS } }, // 53
{ "RPAOS", 0x3423, true, { AArch64::FeatureRME } }, // 54
{ "RPAOSnXS", 0x34A3, true, { AArch64::FeatureRME, AArch64::FeatureXS } }, // 55
{ "RVAAE1", 0x433, true, { AArch64::FeatureTLB_RMI } }, // 56
{ "RVAAE1IS", 0x413, true, { AArch64::FeatureTLB_RMI } }, // 57
{ "RVAAE1ISnXS", 0x493, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 58
{ "RVAAE1nXS", 0x4B3, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 59
{ "RVAAE1OS", 0x42B, true, { AArch64::FeatureTLB_RMI } }, // 60
{ "RVAAE1OSnXS", 0x4AB, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 61
{ "RVAALE1", 0x437, true, { AArch64::FeatureTLB_RMI } }, // 62
{ "RVAALE1IS", 0x417, true, { AArch64::FeatureTLB_RMI } }, // 63
{ "RVAALE1ISnXS", 0x497, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 64
{ "RVAALE1nXS", 0x4B7, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 65
{ "RVAALE1OS", 0x42F, true, { AArch64::FeatureTLB_RMI } }, // 66
{ "RVAALE1OSnXS", 0x4AF, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 67
{ "RVAE1", 0x431, true, { AArch64::FeatureTLB_RMI } }, // 68
{ "RVAE1IS", 0x411, true, { AArch64::FeatureTLB_RMI } }, // 69
{ "RVAE1ISnXS", 0x491, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 70
{ "RVAE1nXS", 0x4B1, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 71
{ "RVAE1OS", 0x429, true, { AArch64::FeatureTLB_RMI } }, // 72
{ "RVAE1OSnXS", 0x4A9, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 73
{ "RVAE2", 0x2431, true, { AArch64::FeatureTLB_RMI } }, // 74
{ "RVAE2IS", 0x2411, true, { AArch64::FeatureTLB_RMI } }, // 75
{ "RVAE2ISnXS", 0x2491, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 76
{ "RVAE2nXS", 0x24B1, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 77
{ "RVAE2OS", 0x2429, true, { AArch64::FeatureTLB_RMI } }, // 78
{ "RVAE2OSnXS", 0x24A9, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 79
{ "RVAE3", 0x3431, true, { AArch64::FeatureTLB_RMI } }, // 80
{ "RVAE3IS", 0x3411, true, { AArch64::FeatureTLB_RMI } }, // 81
{ "RVAE3ISnXS", 0x3491, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 82
{ "RVAE3nXS", 0x34B1, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 83
{ "RVAE3OS", 0x3429, true, { AArch64::FeatureTLB_RMI } }, // 84
{ "RVAE3OSnXS", 0x34A9, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 85
{ "RVALE1", 0x435, true, { AArch64::FeatureTLB_RMI } }, // 86
{ "RVALE1IS", 0x415, true, { AArch64::FeatureTLB_RMI } }, // 87
{ "RVALE1ISnXS", 0x495, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 88
{ "RVALE1nXS", 0x4B5, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 89
{ "RVALE1OS", 0x42D, true, { AArch64::FeatureTLB_RMI } }, // 90
{ "RVALE1OSnXS", 0x4AD, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 91
{ "RVALE2", 0x2435, true, { AArch64::FeatureTLB_RMI } }, // 92
{ "RVALE2IS", 0x2415, true, { AArch64::FeatureTLB_RMI } }, // 93
{ "RVALE2ISnXS", 0x2495, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 94
{ "RVALE2nXS", 0x24B5, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 95
{ "RVALE2OS", 0x242D, true, { AArch64::FeatureTLB_RMI } }, // 96
{ "RVALE2OSnXS", 0x24AD, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 97
{ "RVALE3", 0x3435, true, { AArch64::FeatureTLB_RMI } }, // 98
{ "RVALE3IS", 0x3415, true, { AArch64::FeatureTLB_RMI } }, // 99
{ "RVALE3ISnXS", 0x3495, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 100
{ "RVALE3nXS", 0x34B5, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 101
{ "RVALE3OS", 0x342D, true, { AArch64::FeatureTLB_RMI } }, // 102
{ "RVALE3OSnXS", 0x34AD, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 103
{ "VAAE1", 0x43B, true, { } }, // 104
{ "VAAE1IS", 0x41B, true, { } }, // 105
{ "VAAE1ISnXS", 0x49B, true, { AArch64::FeatureXS } }, // 106
{ "VAAE1nXS", 0x4BB, true, { AArch64::FeatureXS } }, // 107
{ "VAAE1OS", 0x40B, true, { AArch64::FeatureTLB_RMI } }, // 108
{ "VAAE1OSnXS", 0x48B, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 109
{ "VAALE1", 0x43F, true, { } }, // 110
{ "VAALE1IS", 0x41F, true, { } }, // 111
{ "VAALE1ISnXS", 0x49F, true, { AArch64::FeatureXS } }, // 112
{ "VAALE1nXS", 0x4BF, true, { AArch64::FeatureXS } }, // 113
{ "VAALE1OS", 0x40F, true, { AArch64::FeatureTLB_RMI } }, // 114
{ "VAALE1OSnXS", 0x48F, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 115
{ "VAE1", 0x439, true, { } }, // 116
{ "VAE1IS", 0x419, true, { } }, // 117
{ "VAE1ISnXS", 0x499, true, { AArch64::FeatureXS } }, // 118
{ "VAE1nXS", 0x4B9, true, { AArch64::FeatureXS } }, // 119
{ "VAE1OS", 0x409, true, { AArch64::FeatureTLB_RMI } }, // 120
{ "VAE1OSnXS", 0x489, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 121
{ "VAE2", 0x2439, true, { } }, // 122
{ "VAE2IS", 0x2419, true, { } }, // 123
{ "VAE2ISnXS", 0x2499, true, { AArch64::FeatureXS } }, // 124
{ "VAE2nXS", 0x24B9, true, { AArch64::FeatureXS } }, // 125
{ "VAE2OS", 0x2409, true, { AArch64::FeatureTLB_RMI } }, // 126
{ "VAE2OSnXS", 0x2489, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 127
{ "VAE3", 0x3439, true, { } }, // 128
{ "VAE3IS", 0x3419, true, { } }, // 129
{ "VAE3ISnXS", 0x3499, true, { AArch64::FeatureXS } }, // 130
{ "VAE3nXS", 0x34B9, true, { AArch64::FeatureXS } }, // 131
{ "VAE3OS", 0x3409, true, { AArch64::FeatureTLB_RMI } }, // 132
{ "VAE3OSnXS", 0x3489, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 133
{ "VALE1", 0x43D, true, { } }, // 134
{ "VALE1IS", 0x41D, true, { } }, // 135
{ "VALE1ISnXS", 0x49D, true, { AArch64::FeatureXS } }, // 136
{ "VALE1nXS", 0x4BD, true, { AArch64::FeatureXS } }, // 137
{ "VALE1OS", 0x40D, true, { AArch64::FeatureTLB_RMI } }, // 138
{ "VALE1OSnXS", 0x48D, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 139
{ "VALE2", 0x243D, true, { } }, // 140
{ "VALE2IS", 0x241D, true, { } }, // 141
{ "VALE2ISnXS", 0x249D, true, { AArch64::FeatureXS } }, // 142
{ "VALE2nXS", 0x24BD, true, { AArch64::FeatureXS } }, // 143
{ "VALE2OS", 0x240D, true, { AArch64::FeatureTLB_RMI } }, // 144
{ "VALE2OSnXS", 0x248D, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 145
{ "VALE3", 0x343D, true, { } }, // 146
{ "VALE3IS", 0x341D, true, { } }, // 147
{ "VALE3ISnXS", 0x349D, true, { AArch64::FeatureXS } }, // 148
{ "VALE3nXS", 0x34BD, true, { AArch64::FeatureXS } }, // 149
{ "VALE3OS", 0x340D, true, { AArch64::FeatureTLB_RMI } }, // 150
{ "VALE3OSnXS", 0x348D, true, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 151
{ "VMALLE1", 0x438, false, { } }, // 152
{ "VMALLE1IS", 0x418, false, { } }, // 153
{ "VMALLE1ISnXS", 0x498, false, { AArch64::FeatureXS } }, // 154
{ "VMALLE1nXS", 0x4B8, false, { AArch64::FeatureXS } }, // 155
{ "VMALLE1OS", 0x408, false, { AArch64::FeatureTLB_RMI } }, // 156
{ "VMALLE1OSnXS", 0x488, false, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 157
{ "VMALLS12E1", 0x243E, false, { } }, // 158
{ "VMALLS12E1IS", 0x241E, false, { } }, // 159
{ "VMALLS12E1ISnXS", 0x249E, false, { AArch64::FeatureXS } }, // 160
{ "VMALLS12E1nXS", 0x24BE, false, { AArch64::FeatureXS } }, // 161
{ "VMALLS12E1OS", 0x240E, false, { AArch64::FeatureTLB_RMI } }, // 162
{ "VMALLS12E1OSnXS", 0x248E, false, { AArch64::FeatureTLB_RMI, AArch64::FeatureXS } }, // 163
};
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 },
{ 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 },
{ 0x242D, 96 },
{ 0x2431, 74 },
{ 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 },
{ 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 },
{ 0x24AD, 97 },
{ 0x24B1, 77 },
{ 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};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
[](const IndexType &LHS, const KeyType &RHS) {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
});
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 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
[](const IndexType &LHS, const KeyType &RHS) {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
});
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, {} }, // 0
{ "S12E0W", 0x23C7, {} }, // 1
{ "S12E1R", 0x23C4, {} }, // 2
{ "S12E1W", 0x23C5, {} }, // 3
{ "S1E0R", 0x3C2, {} }, // 4
{ "S1E0W", 0x3C3, {} }, // 5
{ "S1E1R", 0x3C0, {} }, // 6
{ "S1E1RP", 0x3C8, {AArch64::FeaturePAN_RWV} }, // 7
{ "S1E1W", 0x3C1, {} }, // 8
{ "S1E1WP", 0x3C9, {AArch64::FeaturePAN_RWV} }, // 9
{ "S1E2R", 0x23C0, {} }, // 10
{ "S1E2W", 0x23C1, {} }, // 11
{ "S1E3R", 0x33C0, {} }, // 12
{ "S1E3W", 0x33C1, {} }, // 13
};
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 },
{ "S1E1R", 6 },
{ "S1E1RP", 7 },
{ "S1E1W", 8 },
{ "S1E1WP", 9 },
{ "S1E2R", 10 },
{ "S1E2W", 11 },
{ "S1E3R", 12 },
{ "S1E3W", 13 },
};
struct KeyType {
std::string Name;
};
KeyType Key = {Name.upper()};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
[](const IndexType &LHS, const KeyType &RHS) {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
});
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, 6 },
{ 0x3C1, 8 },
{ 0x3C2, 4 },
{ 0x3C3, 5 },
{ 0x3C8, 7 },
{ 0x3C9, 9 },
{ 0x23C0, 10 },
{ 0x23C1, 11 },
{ 0x23C4, 2 },
{ 0x23C5, 3 },
{ 0x23C6, 0 },
{ 0x23C7, 1 },
{ 0x33C0, 12 },
{ 0x33C1, 13 },
};
struct KeyType {
uint16_t Encoding;
};
KeyType Key = {Encoding};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
[](const IndexType &LHS, const KeyType &RHS) {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
});
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 }, // 0
{ "j", 0x4 }, // 1
{ "jc", 0x6 }, // 2
};
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()};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
[](const IndexType &LHS, const KeyType &RHS) {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
});
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};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
[](const IndexType &LHS, const KeyType &RHS) {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
});
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 }, // 0
{ "ishld", 0x9 }, // 1
{ "ishst", 0xA }, // 2
{ "ld", 0xD }, // 3
{ "nsh", 0x7 }, // 4
{ "nshld", 0x5 }, // 5
{ "nshst", 0x6 }, // 6
{ "osh", 0x3 }, // 7
{ "oshld", 0x1 }, // 8
{ "oshst", 0x2 }, // 9
{ "st", 0xE }, // 10
{ "sy", 0xF }, // 11
};
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()};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
[](const IndexType &LHS, const KeyType &RHS) {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
});
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};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
[](const IndexType &LHS, const KeyType &RHS) {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
});
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} }, // 0
{ "nshnxs", 0x7, 0x14, {AArch64::FeatureXS} }, // 1
{ "oshnxs", 0x3, 0x10, {AArch64::FeatureXS} }, // 2
{ "synxs", 0xF, 0x1C, {AArch64::FeatureXS} }, // 3
};
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()};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
[](const IndexType &LHS, const KeyType &RHS) {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
});
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};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
[](const IndexType &LHS, const KeyType &RHS) {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
});
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};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
[](const IndexType &LHS, const KeyType &RHS) {
if (LHS.ImmValue < RHS.ImmValue)
return true;
if (LHS.ImmValue > RHS.ImmValue)
return false;
return false;
});
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} }, // 0
{ "CGDVAC", 0x1BD5, {AArch64::FeatureMTE} }, // 1
{ "CGDVADP", 0x1BED, {AArch64::FeatureMTE} }, // 2
{ "CGDVAP", 0x1BE5, {AArch64::FeatureMTE} }, // 3
{ "CGSW", 0x3D4, {AArch64::FeatureMTE} }, // 4
{ "CGVAC", 0x1BD3, {AArch64::FeatureMTE} }, // 5
{ "CGVADP", 0x1BEB, {AArch64::FeatureMTE} }, // 6
{ "CGVAP", 0x1BE3, {AArch64::FeatureMTE} }, // 7
{ "CIGDPAE", 0x23F7, {AArch64::FeatureMEC} }, // 8
{ "CIGDSW", 0x3F6, {AArch64::FeatureMTE} }, // 9
{ "CIGDVAC", 0x1BF5, {AArch64::FeatureMTE} }, // 10
{ "CIGSW", 0x3F4, {AArch64::FeatureMTE} }, // 11
{ "CIGVAC", 0x1BF3, {AArch64::FeatureMTE} }, // 12
{ "CIPAE", 0x23F0, {AArch64::FeatureMEC} }, // 13
{ "CISW", 0x3F2, {} }, // 14
{ "CIVAC", 0x1BF1, {} }, // 15
{ "CSW", 0x3D2, {} }, // 16
{ "CVAC", 0x1BD1, {} }, // 17
{ "CVADP", 0x1BE9, {AArch64::FeatureCacheDeepPersist} }, // 18
{ "CVAP", 0x1BE1, {AArch64::FeatureCCPP} }, // 19
{ "CVAU", 0x1BD9, {} }, // 20
{ "GVA", 0x1BA3, {AArch64::FeatureMTE} }, // 21
{ "GZVA", 0x1BA4, {AArch64::FeatureMTE} }, // 22
{ "IGDSW", 0x3B6, {AArch64::FeatureMTE} }, // 23
{ "IGDVAC", 0x3B5, {AArch64::FeatureMTE} }, // 24
{ "IGSW", 0x3B4, {AArch64::FeatureMTE} }, // 25
{ "IGVAC", 0x3B3, {AArch64::FeatureMTE} }, // 26
{ "ISW", 0x3B2, {} }, // 27
{ "IVAC", 0x3B1, {} }, // 28
{ "ZVA", 0x1BA1, {} }, // 29
};
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()};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
[](const IndexType &LHS, const KeyType &RHS) {
int CmpName = StringRef(LHS.Name).compare(RHS.Name);
if (CmpName < 0) return true;
if (CmpName > 0) return false;
return false;
});
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};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
[](const IndexType &LHS, const KeyType &RHS) {
if (LHS.Encoding < RHS.Encoding)
return true;
if (LHS.Encoding > RHS.Encoding)
return false;
return false;
});
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" }, // 0
{ "one", 0x2, "1.0" }, // 1
{ "two", 0x3, "2.0" }, // 2
{ "zero", 0x0, "0.0" }, // 3
};
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 },
};
auto Table = ArrayRef(Index);
size_t Idx = Enum;
return Idx >= Table.size() ? nullptr : &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()};
auto Table = ArrayRef(Index);
auto Idx = std::lower_bound(Table.begin(), Table.end(), Key,
[](const IndexType &LHS, const KeyType &RHS) {
int CmpRepr = StringRef(LHS.Repr).compare(RHS.Repr);
if (CmpRepr < 0) return true;
if (CmpRepr > 0) return false;
return false;
});
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 }, // 0
{ "IALLUIS", 0x388, false }, // 1
{ "IVAU", 0x1BA9, true }, // 2
};
const IC *lookupICByName(StringRef Name) {