LCOV - code coverage report
Current view: top level - build-llvm/lib/Target/AArch64 - AArch64GenSystemOperands.inc (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 152 172 88.4 %
Date: 2018-10-20 13:21:21 Functions: 29 32 90.6 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.13