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