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

Generated by: LCOV version 1.13