LCOV - code coverage report
Current view: top level - build-llvm/lib/Target/AArch64 - AArch64GenSystemOperands.inc (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 160 170 94.1 %
Date: 2017-09-14 15:23:50 Functions: 19 20 95.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : #ifdef GET_AT_DECL
       2             : #undef GET_AT_DECL
       3             : enum ATValues {
       4             :   S1E1R = 960,
       5             :   S1E2R = 9152,
       6             :   S1E3R = 13248,
       7             :   S1E1W = 961,
       8             :   S1E2W = 9153,
       9             :   S1E3W = 13249,
      10             :   S1E0R = 962,
      11             :   S1E0W = 963,
      12             :   S12E1R = 9156,
      13             :   S12E1W = 9157,
      14             :   S12E0R = 9158,
      15             :   S12E0W = 9159,
      16             :   S1E1RP = 968,
      17             :   S1E1WP = 969,
      18             : };
      19             : 
      20             : const AT *lookupATByName(StringRef Name);
      21             : 
      22             : const AT *lookupATByEncoding(uint16_t Encoding);
      23             : 
      24             : #endif
      25             : 
      26             : #ifdef GET_AT_IMPL
      27             : #undef GET_AT_IMPL
      28             : const AT ATsList[] = {
      29             :   { "S1E1R", 0x3C0,  {} },
      30             :   { "S1E2R", 0x23C0,  {} },
      31             :   { "S1E3R", 0x33C0,  {} },
      32             :   { "S1E1W", 0x3C1,  {} },
      33             :   { "S1E2W", 0x23C1,  {} },
      34             :   { "S1E3W", 0x33C1,  {} },
      35             :   { "S1E0R", 0x3C2,  {} },
      36             :   { "S1E0W", 0x3C3,  {} },
      37             :   { "S12E1R", 0x23C4,  {} },
      38             :   { "S12E1W", 0x23C5,  {} },
      39             :   { "S12E0R", 0x23C6,  {} },
      40             :   { "S12E0W", 0x23C7,  {} },
      41             :   { "S1E1RP", 0x3C8,  {AArch64::HasV8_2aOps} },
      42             :   { "S1E1WP", 0x3C9,  {AArch64::HasV8_2aOps} },
      43     2096874 : };
      44             : 
      45             : const std::pair<const char *, int> ATsByName[] = {
      46             :   { "S12E0R", 10 },
      47             :   { "S12E0W", 11 },
      48             :   { "S12E1R", 8 },
      49             :   { "S12E1W", 9 },
      50             :   { "S1E0R", 6 },
      51             :   { "S1E0W", 7 },
      52             :   { "S1E1R", 0 },
      53             :   { "S1E1RP", 12 },
      54             :   { "S1E1W", 3 },
      55             :   { "S1E1WP", 13 },
      56             :   { "S1E2R", 1 },
      57             :   { "S1E2W", 4 },
      58             :   { "S1E3R", 2 },
      59             :   { "S1E3W", 5 },
      60             : };
      61             : 
      62          40 : const AT *lookupATByName(StringRef Name) {
      63          80 :   std::string CanonicalVal = Name.upper();
      64          80 :   std::pair<const char *, int> Val = {CanonicalVal.c_str(), 0};
      65          40 :   ArrayRef<std::pair<const char *, int>> Table(ATsByName);
      66          40 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val,
      67             :                               [](const std::pair<const char *, int> &LHS, const std::pair<const char *, int> &RHS) {
      68         160 :     return std::strcmp(LHS.first, RHS.first) < 0;
      69          80 :   });
      70             : 
      71          80 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
      72             :     return nullptr;
      73          40 :   return &ATsList[Idx->second];
      74             : }
      75             : 
      76             : const std::pair<uint16_t, int> ATsByEncoding[] = {
      77             :   { 0x3C0, 0 },
      78             :   { 0x3C1, 3 },
      79             :   { 0x3C2, 6 },
      80             :   { 0x3C3, 7 },
      81             :   { 0x3C8, 12 },
      82             :   { 0x3C9, 13 },
      83             :   { 0x23C0, 1 },
      84             :   { 0x23C1, 4 },
      85             :   { 0x23C4, 8 },
      86             :   { 0x23C5, 9 },
      87             :   { 0x23C6, 10 },
      88             :   { 0x23C7, 11 },
      89             :   { 0x33C0, 2 },
      90             :   { 0x33C1, 5 },
      91             : };
      92             : 
      93          42 : const AT *lookupATByEncoding(uint16_t Encoding) {
      94          42 :   auto CanonicalVal = Encoding;
      95          84 :  std::pair<uint16_t, int> Val = {CanonicalVal, 0};
      96          42 :   ArrayRef<std::pair<uint16_t, int>> Table(ATsByEncoding);
      97          84 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val);
      98          42 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
      99             :     return nullptr;
     100          42 :   return &ATsList[Idx->second];
     101             : }
     102             : 
     103             : #endif
     104             : #ifdef GET_DB_DECL
     105             : #undef GET_DB_DECL
     106             : enum DBValues {
     107             :   oshld = 1,
     108             :   oshst = 2,
     109             :   osh = 3,
     110             :   nshld = 5,
     111             :   nshst = 6,
     112             :   nsh = 7,
     113             :   ishld = 9,
     114             :   ishst = 10,
     115             :   ish = 11,
     116             :   ld = 13,
     117             :   st = 14,
     118             :   sy = 15,
     119             : };
     120             : 
     121             : const DB *lookupDBByName(StringRef Name);
     122             : 
     123             : const DB *lookupDBByEncoding(uint8_t Encoding);
     124             : 
     125             : #endif
     126             : 
     127             : #ifdef GET_DB_IMPL
     128             : #undef GET_DB_IMPL
     129             : const DB DBsList[] = {
     130             :   { "oshld", 0x1},
     131             :   { "oshst", 0x2},
     132             :   { "osh", 0x3},
     133             :   { "nshld", 0x5},
     134             :   { "nshst", 0x6},
     135             :   { "nsh", 0x7},
     136             :   { "ishld", 0x9},
     137             :   { "ishst", 0xA},
     138             :   { "ish", 0xB},
     139             :   { "ld", 0xD},
     140             :   { "st", 0xE},
     141             :   { "sy", 0xF},
     142      867672 : };
     143             : 
     144             : const std::pair<const char *, int> DBsByName[] = {
     145             :   { "ISH", 8 },
     146             :   { "ISHLD", 6 },
     147             :   { "ISHST", 7 },
     148             :   { "LD", 9 },
     149             :   { "NSH", 5 },
     150             :   { "NSHLD", 3 },
     151             :   { "NSHST", 4 },
     152             :   { "OSH", 2 },
     153             :   { "OSHLD", 0 },
     154             :   { "OSHST", 1 },
     155             :   { "ST", 10 },
     156             :   { "SY", 11 },
     157             : };
     158             : 
     159          31 : const DB *lookupDBByName(StringRef Name) {
     160          62 :   std::string CanonicalVal = Name.upper();
     161          62 :   std::pair<const char *, int> Val = {CanonicalVal.c_str(), 0};
     162          31 :   ArrayRef<std::pair<const char *, int>> Table(DBsByName);
     163          31 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val,
     164             :                               [](const std::pair<const char *, int> &LHS, const std::pair<const char *, int> &RHS) {
     165         120 :     return std::strcmp(LHS.first, RHS.first) < 0;
     166          62 :   });
     167             : 
     168          62 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
     169             :     return nullptr;
     170          28 :   return &DBsList[Idx->second];
     171             : }
     172             : 
     173             : const std::pair<uint8_t, int> DBsByEncoding[] = {
     174             :   { 0x1, 0 },
     175             :   { 0x2, 1 },
     176             :   { 0x3, 2 },
     177             :   { 0x5, 3 },
     178             :   { 0x6, 4 },
     179             :   { 0x7, 5 },
     180             :   { 0x9, 6 },
     181             :   { 0xA, 7 },
     182             :   { 0xB, 8 },
     183             :   { 0xD, 9 },
     184             :   { 0xE, 10 },
     185             :   { 0xF, 11 },
     186             : };
     187             : 
     188         149 : const DB *lookupDBByEncoding(uint8_t Encoding) {
     189         149 :   auto CanonicalVal = Encoding;
     190         298 :  std::pair<uint8_t, int> Val = {CanonicalVal, 0};
     191         149 :   ArrayRef<std::pair<uint8_t, int>> Table(DBsByEncoding);
     192         298 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val);
     193         149 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
     194             :     return nullptr;
     195         128 :   return &DBsList[Idx->second];
     196             : }
     197             : 
     198             : #endif
     199             : #ifdef GET_DC_DECL
     200             : #undef GET_DC_DECL
     201             : enum DCValues {
     202             :   ZVA = 7073,
     203             :   IVAC = 945,
     204             :   ISW = 946,
     205             :   CVAC = 7121,
     206             :   CSW = 978,
     207             :   CVAU = 7129,
     208             :   CIVAC = 7153,
     209             :   CISW = 1010,
     210             :   CVAP = 7137,
     211             : };
     212             : 
     213             : const DC *lookupDCByName(StringRef Name);
     214             : 
     215             : const DC *lookupDCByEncoding(uint16_t Encoding);
     216             : 
     217             : #endif
     218             : 
     219             : #ifdef GET_DC_IMPL
     220             : #undef GET_DC_IMPL
     221             : const DC DCsList[] = {
     222             :   { "ZVA", 0x1BA1,  {} },
     223             :   { "IVAC", 0x3B1,  {} },
     224             :   { "ISW", 0x3B2,  {} },
     225             :   { "CVAC", 0x1BD1,  {} },
     226             :   { "CSW", 0x3D2,  {} },
     227             :   { "CVAU", 0x1BD9,  {} },
     228             :   { "CIVAC", 0x1BF1,  {} },
     229             :   { "CISW", 0x3F2,  {} },
     230             :   { "CVAP", 0x1BE1,  {AArch64::HasV8_2aOps} },
     231     1446120 : };
     232             : 
     233             : const std::pair<const char *, int> DCsByName[] = {
     234             :   { "CISW", 7 },
     235             :   { "CIVAC", 6 },
     236             :   { "CSW", 4 },
     237             :   { "CVAC", 3 },
     238             :   { "CVAP", 8 },
     239             :   { "CVAU", 5 },
     240             :   { "ISW", 2 },
     241             :   { "IVAC", 1 },
     242             :   { "ZVA", 0 },
     243             : };
     244             : 
     245          26 : const DC *lookupDCByName(StringRef Name) {
     246          52 :   std::string CanonicalVal = Name.upper();
     247          52 :   std::pair<const char *, int> Val = {CanonicalVal.c_str(), 0};
     248          26 :   ArrayRef<std::pair<const char *, int>> Table(DCsByName);
     249          26 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val,
     250             :                               [](const std::pair<const char *, int> &LHS, const std::pair<const char *, int> &RHS) {
     251          90 :     return std::strcmp(LHS.first, RHS.first) < 0;
     252          52 :   });
     253             : 
     254          52 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
     255             :     return nullptr;
     256          26 :   return &DCsList[Idx->second];
     257             : }
     258             : 
     259             : const std::pair<uint16_t, int> DCsByEncoding[] = {
     260             :   { 0x3B1, 1 },
     261             :   { 0x3B2, 2 },
     262             :   { 0x3D2, 4 },
     263             :   { 0x3F2, 7 },
     264             :   { 0x1BA1, 0 },
     265             :   { 0x1BD1, 3 },
     266             :   { 0x1BD9, 5 },
     267             :   { 0x1BE1, 8 },
     268             :   { 0x1BF1, 6 },
     269             : };
     270             : 
     271          52 : const DC *lookupDCByEncoding(uint16_t Encoding) {
     272          52 :   auto CanonicalVal = Encoding;
     273         104 :  std::pair<uint16_t, int> Val = {CanonicalVal, 0};
     274          52 :   ArrayRef<std::pair<uint16_t, int>> Table(DCsByEncoding);
     275         104 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val);
     276          52 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
     277             :     return nullptr;
     278          52 :   return &DCsList[Idx->second];
     279             : }
     280             : 
     281             : #endif
     282             : #ifdef GET_IC_DECL
     283             : #undef GET_IC_DECL
     284             : enum ICValues {
     285             :   IALLUIS = 904,
     286             :   IALLU = 936,
     287             :   IVAU = 7081,
     288             : };
     289             : 
     290             : const IC *lookupICByName(StringRef Name);
     291             : 
     292             : const IC *lookupICByEncoding(uint16_t Encoding);
     293             : 
     294             : #endif
     295             : 
     296             : #ifdef GET_IC_IMPL
     297             : #undef GET_IC_IMPL
     298             : const IC ICsList[] = {
     299             :   { "IALLUIS", 0x388, false},
     300             :   { "IALLU", 0x3A8, false},
     301             :   { "IVAU", 0x1BA9, true},
     302      289224 : };
     303             : 
     304             : const std::pair<const char *, int> ICsByName[] = {
     305             :   { "IALLU", 1 },
     306             :   { "IALLUIS", 0 },
     307             :   { "IVAU", 2 },
     308             : };
     309             : 
     310          12 : const IC *lookupICByName(StringRef Name) {
     311          24 :   std::string CanonicalVal = Name.upper();
     312          24 :   std::pair<const char *, int> Val = {CanonicalVal.c_str(), 0};
     313          12 :   ArrayRef<std::pair<const char *, int>> Table(ICsByName);
     314          12 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val,
     315             :                               [](const std::pair<const char *, int> &LHS, const std::pair<const char *, int> &RHS) {
     316          24 :     return std::strcmp(LHS.first, RHS.first) < 0;
     317          24 :   });
     318             : 
     319          24 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
     320             :     return nullptr;
     321          11 :   return &ICsList[Idx->second];
     322             : }
     323             : 
     324             : const std::pair<uint16_t, int> ICsByEncoding[] = {
     325             :   { 0x388, 0 },
     326             :   { 0x3A8, 1 },
     327             :   { 0x1BA9, 2 },
     328             : };
     329             : 
     330          18 : const IC *lookupICByEncoding(uint16_t Encoding) {
     331          18 :   auto CanonicalVal = Encoding;
     332          36 :  std::pair<uint16_t, int> Val = {CanonicalVal, 0};
     333          18 :   ArrayRef<std::pair<uint16_t, int>> Table(ICsByEncoding);
     334          36 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val);
     335          18 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
     336             :     return nullptr;
     337          18 :   return &ICsList[Idx->second];
     338             : }
     339             : 
     340             : #endif
     341             : #ifdef GET_ISB_DECL
     342             : #undef GET_ISB_DECL
     343             : enum ISBValues {
     344             :   sy = 15,
     345             : };
     346             : 
     347             : const ISB *lookupISBByName(StringRef Name);
     348             : 
     349             : const ISB *lookupISBByEncoding(uint8_t Encoding);
     350             : 
     351             : #endif
     352             : 
     353             : #ifdef GET_ISB_IMPL
     354             : #undef GET_ISB_IMPL
     355             : const ISB ISBsList[] = {
     356             :   { "sy", 0xF},
     357      144612 : };
     358             : 
     359             : const std::pair<const char *, int> ISBsByName[] = {
     360             :   { "SY", 0 },
     361             : };
     362             : 
     363           0 : const ISB *lookupISBByName(StringRef Name) {
     364           0 :   std::string CanonicalVal = Name.upper();
     365           0 :   std::pair<const char *, int> Val = {CanonicalVal.c_str(), 0};
     366           0 :   ArrayRef<std::pair<const char *, int>> Table(ISBsByName);
     367           0 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val,
     368             :                               [](const std::pair<const char *, int> &LHS, const std::pair<const char *, int> &RHS) {
     369           0 :     return std::strcmp(LHS.first, RHS.first) < 0;
     370           0 :   });
     371             : 
     372           0 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
     373             :     return nullptr;
     374           0 :   return &ISBsList[Idx->second];
     375             : }
     376             : 
     377             : const std::pair<uint8_t, int> ISBsByEncoding[] = {
     378             :   { 0xF, 0 },
     379             : };
     380             : 
     381           5 : const ISB *lookupISBByEncoding(uint8_t Encoding) {
     382           5 :   auto CanonicalVal = Encoding;
     383          10 :  std::pair<uint8_t, int> Val = {CanonicalVal, 0};
     384           5 :   ArrayRef<std::pair<uint8_t, int>> Table(ISBsByEncoding);
     385          10 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val);
     386           5 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
     387             :     return nullptr;
     388           0 :   return &ISBsList[Idx->second];
     389             : }
     390             : 
     391             : #endif
     392             : #ifdef GET_PRFM_DECL
     393             : #undef GET_PRFM_DECL
     394             : enum PRFMValues {
     395             :   pldl1keep = 0,
     396             :   pldl1strm = 1,
     397             :   pldl2keep = 2,
     398             :   pldl2strm = 3,
     399             :   pldl3keep = 4,
     400             :   pldl3strm = 5,
     401             :   plil1keep = 8,
     402             :   plil1strm = 9,
     403             :   plil2keep = 10,
     404             :   plil2strm = 11,
     405             :   plil3keep = 12,
     406             :   plil3strm = 13,
     407             :   pstl1keep = 16,
     408             :   pstl1strm = 17,
     409             :   pstl2keep = 18,
     410             :   pstl2strm = 19,
     411             :   pstl3keep = 20,
     412             :   pstl3strm = 21,
     413             : };
     414             : 
     415             : const PRFM *lookupPRFMByName(StringRef Name);
     416             : 
     417             : const PRFM *lookupPRFMByEncoding(uint8_t Encoding);
     418             : 
     419             : #endif
     420             : 
     421             : #ifdef GET_PRFM_IMPL
     422             : #undef GET_PRFM_IMPL
     423             : const PRFM PRFMsList[] = {
     424             :   { "pldl1keep", 0x0},
     425             :   { "pldl1strm", 0x1},
     426             :   { "pldl2keep", 0x2},
     427             :   { "pldl2strm", 0x3},
     428             :   { "pldl3keep", 0x4},
     429             :   { "pldl3strm", 0x5},
     430             :   { "plil1keep", 0x8},
     431             :   { "plil1strm", 0x9},
     432             :   { "plil2keep", 0xA},
     433             :   { "plil2strm", 0xB},
     434             :   { "plil3keep", 0xC},
     435             :   { "plil3strm", 0xD},
     436             :   { "pstl1keep", 0x10},
     437             :   { "pstl1strm", 0x11},
     438             :   { "pstl2keep", 0x12},
     439             :   { "pstl2strm", 0x13},
     440             :   { "pstl3keep", 0x14},
     441             :   { "pstl3strm", 0x15},
     442     1301508 : };
     443             : 
     444             : const std::pair<const char *, int> PRFMsByName[] = {
     445             :   { "PLDL1KEEP", 0 },
     446             :   { "PLDL1STRM", 1 },
     447             :   { "PLDL2KEEP", 2 },
     448             :   { "PLDL2STRM", 3 },
     449             :   { "PLDL3KEEP", 4 },
     450             :   { "PLDL3STRM", 5 },
     451             :   { "PLIL1KEEP", 6 },
     452             :   { "PLIL1STRM", 7 },
     453             :   { "PLIL2KEEP", 8 },
     454             :   { "PLIL2STRM", 9 },
     455             :   { "PLIL3KEEP", 10 },
     456             :   { "PLIL3STRM", 11 },
     457             :   { "PSTL1KEEP", 12 },
     458             :   { "PSTL1STRM", 13 },
     459             :   { "PSTL2KEEP", 14 },
     460             :   { "PSTL2STRM", 15 },
     461             :   { "PSTL3KEEP", 16 },
     462             :   { "PSTL3STRM", 17 },
     463             : };
     464             : 
     465          41 : const PRFM *lookupPRFMByName(StringRef Name) {
     466          82 :   std::string CanonicalVal = Name.upper();
     467          82 :   std::pair<const char *, int> Val = {CanonicalVal.c_str(), 0};
     468          41 :   ArrayRef<std::pair<const char *, int>> Table(PRFMsByName);
     469          41 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val,
     470             :                               [](const std::pair<const char *, int> &LHS, const std::pair<const char *, int> &RHS) {
     471         176 :     return std::strcmp(LHS.first, RHS.first) < 0;
     472          82 :   });
     473             : 
     474          81 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
     475             :     return nullptr;
     476          40 :   return &PRFMsList[Idx->second];
     477             : }
     478             : 
     479             : const std::pair<uint8_t, int> PRFMsByEncoding[] = {
     480             :   { 0x0, 0 },
     481             :   { 0x1, 1 },
     482             :   { 0x2, 2 },
     483             :   { 0x3, 3 },
     484             :   { 0x4, 4 },
     485             :   { 0x5, 5 },
     486             :   { 0x8, 6 },
     487             :   { 0x9, 7 },
     488             :   { 0xA, 8 },
     489             :   { 0xB, 9 },
     490             :   { 0xC, 10 },
     491             :   { 0xD, 11 },
     492             :   { 0x10, 12 },
     493             :   { 0x11, 13 },
     494             :   { 0x12, 14 },
     495             :   { 0x13, 15 },
     496             :   { 0x14, 16 },
     497             :   { 0x15, 17 },
     498             : };
     499             : 
     500         153 : const PRFM *lookupPRFMByEncoding(uint8_t Encoding) {
     501         153 :   auto CanonicalVal = Encoding;
     502         306 :  std::pair<uint8_t, int> Val = {CanonicalVal, 0};
     503         153 :   ArrayRef<std::pair<uint8_t, int>> Table(PRFMsByEncoding);
     504         306 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val);
     505         153 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
     506             :     return nullptr;
     507         142 :   return &PRFMsList[Idx->second];
     508             : }
     509             : 
     510             : #endif
     511             : #ifdef GET_PSB_DECL
     512             : #undef GET_PSB_DECL
     513             : enum PSBValues {
     514             :   csync = 17,
     515             : };
     516             : 
     517             : const PSB *lookupPSBByName(StringRef Name);
     518             : 
     519             : const PSB *lookupPSBByEncoding(uint8_t Encoding);
     520             : 
     521             : #endif
     522             : 
     523             : #ifdef GET_PSB_IMPL
     524             : #undef GET_PSB_IMPL
     525             : const PSB PSBsList[] = {
     526             :   { "csync", 0x11},
     527      144612 : };
     528             : 
     529             : const std::pair<const char *, int> PSBsByName[] = {
     530             :   { "CSYNC", 0 },
     531             : };
     532             : 
     533           1 : const PSB *lookupPSBByName(StringRef Name) {
     534           2 :   std::string CanonicalVal = Name.upper();
     535           2 :   std::pair<const char *, int> Val = {CanonicalVal.c_str(), 0};
     536           1 :   ArrayRef<std::pair<const char *, int>> Table(PSBsByName);
     537           1 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val,
     538             :                               [](const std::pair<const char *, int> &LHS, const std::pair<const char *, int> &RHS) {
     539           1 :     return std::strcmp(LHS.first, RHS.first) < 0;
     540           2 :   });
     541             : 
     542           2 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
     543             :     return nullptr;
     544           1 :   return &PSBsList[Idx->second];
     545             : }
     546             : 
     547             : const std::pair<uint8_t, int> PSBsByEncoding[] = {
     548             :   { 0x11, 0 },
     549             : };
     550             : 
     551          10 : const PSB *lookupPSBByEncoding(uint8_t Encoding) {
     552          10 :   auto CanonicalVal = Encoding;
     553          20 :  std::pair<uint8_t, int> Val = {CanonicalVal, 0};
     554          10 :   ArrayRef<std::pair<uint8_t, int>> Table(PSBsByEncoding);
     555          20 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val);
     556          10 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
     557             :     return nullptr;
     558           5 :   return &PSBsList[Idx->second];
     559             : }
     560             : 
     561             : #endif
     562             : #ifdef GET_PSTATE_DECL
     563             : #undef GET_PSTATE_DECL
     564             : enum PStateValues {
     565             :   SPSel = 5,
     566             :   DAIFSet = 30,
     567             :   DAIFClr = 31,
     568             :   PAN = 4,
     569             :   UAO = 3,
     570             : };
     571             : 
     572             : const PState *lookupPStateByName(StringRef Name);
     573             : 
     574             : const PState *lookupPStateByEncoding(uint8_t Encoding);
     575             : 
     576             : #endif
     577             : 
     578             : #ifdef GET_PSTATE_IMPL
     579             : #undef GET_PSTATE_IMPL
     580             : const PState PStatesList[] = {
     581             :   { "SPSel", 0x5,  {} },
     582             :   { "DAIFSet", 0x1E,  {} },
     583             :   { "DAIFClr", 0x1F,  {} },
     584             :   { "PAN", 0x4,  {AArch64::HasV8_1aOps} },
     585             :   { "UAO", 0x3,  {AArch64::HasV8_2aOps} },
     586      795366 : };
     587             : 
     588             : const std::pair<const char *, int> PStatesByName[] = {
     589             :   { "DAIFCLR", 2 },
     590             :   { "DAIFSET", 1 },
     591             :   { "PAN", 3 },
     592             :   { "SPSEL", 0 },
     593             :   { "UAO", 4 },
     594             : };
     595             : 
     596        1651 : const PState *lookupPStateByName(StringRef Name) {
     597        3302 :   std::string CanonicalVal = Name.upper();
     598        3302 :   std::pair<const char *, int> Val = {CanonicalVal.c_str(), 0};
     599        1651 :   ArrayRef<std::pair<const char *, int>> Table(PStatesByName);
     600        1651 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val,
     601             :                               [](const std::pair<const char *, int> &LHS, const std::pair<const char *, int> &RHS) {
     602        4321 :     return std::strcmp(LHS.first, RHS.first) < 0;
     603        3302 :   });
     604             : 
     605        3265 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
     606             :     return nullptr;
     607          30 :   return &PStatesList[Idx->second];
     608             : }
     609             : 
     610             : const std::pair<uint8_t, int> PStatesByEncoding[] = {
     611             :   { 0x3, 4 },
     612             :   { 0x4, 3 },
     613             :   { 0x5, 0 },
     614             :   { 0x1E, 1 },
     615             :   { 0x1F, 2 },
     616             : };
     617             : 
     618          48 : const PState *lookupPStateByEncoding(uint8_t Encoding) {
     619          48 :   auto CanonicalVal = Encoding;
     620          96 :  std::pair<uint8_t, int> Val = {CanonicalVal, 0};
     621          48 :   ArrayRef<std::pair<uint8_t, int>> Table(PStatesByEncoding);
     622          96 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val);
     623          48 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
     624             :     return nullptr;
     625          42 :   return &PStatesList[Idx->second];
     626             : }
     627             : 
     628             : #endif
     629             : #ifdef GET_SYSREG_DECL
     630             : #undef GET_SYSREG_DECL
     631             : enum SysRegValues {
     632             :   MDCCSR_EL0 = 38920,
     633             :   DBGDTRRX_EL0 = 38952,
     634             :   MDRAR_EL1 = 32896,
     635             :   OSLSR_EL1 = 32908,
     636             :   DBGAUTHSTATUS_EL1 = 33782,
     637             :   PMCEID0_EL0 = 56550,
     638             :   PMCEID1_EL0 = 56551,
     639             :   MIDR_EL1 = 49152,
     640             :   CCSIDR_EL1 = 51200,
     641             :   CLIDR_EL1 = 51201,
     642             :   CTR_EL0 = 55297,
     643             :   MPIDR_EL1 = 49157,
     644             :   REVIDR_EL1 = 49158,
     645             :   AIDR_EL1 = 51207,
     646             :   DCZID_EL0 = 55303,
     647             :   ID_PFR0_EL1 = 49160,
     648             :   ID_PFR1_EL1 = 49161,
     649             :   ID_DFR0_EL1 = 49162,
     650             :   ID_AFR0_EL1 = 49163,
     651             :   ID_MMFR0_EL1 = 49164,
     652             :   ID_MMFR1_EL1 = 49165,
     653             :   ID_MMFR2_EL1 = 49166,
     654             :   ID_MMFR3_EL1 = 49167,
     655             :   ID_ISAR0_EL1 = 49168,
     656             :   ID_ISAR1_EL1 = 49169,
     657             :   ID_ISAR2_EL1 = 49170,
     658             :   ID_ISAR3_EL1 = 49171,
     659             :   ID_ISAR4_EL1 = 49172,
     660             :   ID_ISAR5_EL1 = 49173,
     661             :   ID_ISAR6_EL1 = 49175,
     662             :   ID_AA64PFR0_EL1 = 49184,
     663             :   ID_AA64PFR1_EL1 = 49185,
     664             :   ID_AA64DFR0_EL1 = 49192,
     665             :   ID_AA64DFR1_EL1 = 49193,
     666             :   ID_AA64AFR0_EL1 = 49196,
     667             :   ID_AA64AFR1_EL1 = 49197,
     668             :   ID_AA64ISAR0_EL1 = 49200,
     669             :   ID_AA64ISAR1_EL1 = 49201,
     670             :   ID_AA64MMFR0_EL1 = 49208,
     671             :   ID_AA64MMFR1_EL1 = 49209,
     672             :   ID_AA64MMFR2_EL1 = 49210,
     673             :   MVFR0_EL1 = 49176,
     674             :   MVFR1_EL1 = 49177,
     675             :   MVFR2_EL1 = 49178,
     676             :   RVBAR_EL1 = 50689,
     677             :   RVBAR_EL2 = 58881,
     678             :   RVBAR_EL3 = 62977,
     679             :   ISR_EL1 = 50696,
     680             :   CNTPCT_EL0 = 57089,
     681             :   CNTVCT_EL0 = 57090,
     682             :   ID_MMFR4_EL1 = 49174,
     683             :   TRCSTATR = 34840,
     684             :   TRCIDR8 = 34822,
     685             :   TRCIDR9 = 34830,
     686             :   TRCIDR10 = 34838,
     687             :   TRCIDR11 = 34846,
     688             :   TRCIDR12 = 34854,
     689             :   TRCIDR13 = 34862,
     690             :   TRCIDR0 = 34887,
     691             :   TRCIDR1 = 34895,
     692             :   TRCIDR2 = 34903,
     693             :   TRCIDR3 = 34911,
     694             :   TRCIDR4 = 34919,
     695             :   TRCIDR5 = 34927,
     696             :   TRCIDR6 = 34935,
     697             :   TRCIDR7 = 34943,
     698             :   TRCOSLSR = 34956,
     699             :   TRCPDSR = 34988,
     700             :   TRCDEVAFF0 = 35798,
     701             :   TRCDEVAFF1 = 35806,
     702             :   TRCLSR = 35822,
     703             :   TRCAUTHSTATUS = 35830,
     704             :   TRCDEVARCH = 35838,
     705             :   TRCDEVID = 35735,
     706             :   TRCDEVTYPE = 35743,
     707             :   TRCPIDR4 = 35751,
     708             :   TRCPIDR5 = 35759,
     709             :   TRCPIDR6 = 35767,
     710             :   TRCPIDR7 = 35775,
     711             :   TRCPIDR0 = 35783,
     712             :   TRCPIDR1 = 35791,
     713             :   TRCPIDR2 = 35799,
     714             :   TRCPIDR3 = 35807,
     715             :   TRCCIDR0 = 35815,
     716             :   TRCCIDR1 = 35823,
     717             :   TRCCIDR2 = 35831,
     718             :   TRCCIDR3 = 35839,
     719             :   ICC_IAR1_EL1 = 50784,
     720             :   ICC_IAR0_EL1 = 50752,
     721             :   ICC_HPPIR1_EL1 = 50786,
     722             :   ICC_HPPIR0_EL1 = 50754,
     723             :   ICC_RPR_EL1 = 50779,
     724             :   ICH_VTR_EL2 = 58969,
     725             :   ICH_EISR_EL2 = 58971,
     726             :   ICH_ELSR_EL2 = 58973,
     727             :   LORID_EL1 = 50471,
     728             :   ERRIDR_EL1 = 49816,
     729             :   ERXFR_EL1 = 49824,
     730             :   DBGDTRTX_EL0 = 38952,
     731             :   OSLAR_EL1 = 32900,
     732             :   PMSWINC_EL0 = 56548,
     733             :   TRCOSLAR = 34948,
     734             :   TRCLAR = 35814,
     735             :   ICC_EOIR1_EL1 = 50785,
     736             :   ICC_EOIR0_EL1 = 50753,
     737             :   ICC_DIR_EL1 = 50777,
     738             :   ICC_SGI1R_EL1 = 50781,
     739             :   ICC_ASGI1R_EL1 = 50782,
     740             :   ICC_SGI0R_EL1 = 50783,
     741             :   OSDTRRX_EL1 = 32770,
     742             :   OSDTRTX_EL1 = 32794,
     743             :   TEECR32_EL1 = 36864,
     744             :   MDCCINT_EL1 = 32784,
     745             :   MDSCR_EL1 = 32786,
     746             :   DBGDTR_EL0 = 38944,
     747             :   OSECCR_EL1 = 32818,
     748             :   DBGVCR32_EL2 = 41016,
     749             :   DBGBVR0_EL1 = 32772,
     750             :   DBGBVR1_EL1 = 32780,
     751             :   DBGBVR2_EL1 = 32788,
     752             :   DBGBVR3_EL1 = 32796,
     753             :   DBGBVR4_EL1 = 32804,
     754             :   DBGBVR5_EL1 = 32812,
     755             :   DBGBVR6_EL1 = 32820,
     756             :   DBGBVR7_EL1 = 32828,
     757             :   DBGBVR8_EL1 = 32836,
     758             :   DBGBVR9_EL1 = 32844,
     759             :   DBGBVR10_EL1 = 32852,
     760             :   DBGBVR11_EL1 = 32860,
     761             :   DBGBVR12_EL1 = 32868,
     762             :   DBGBVR13_EL1 = 32876,
     763             :   DBGBVR14_EL1 = 32884,
     764             :   DBGBVR15_EL1 = 32892,
     765             :   DBGBCR0_EL1 = 32773,
     766             :   DBGBCR1_EL1 = 32781,
     767             :   DBGBCR2_EL1 = 32789,
     768             :   DBGBCR3_EL1 = 32797,
     769             :   DBGBCR4_EL1 = 32805,
     770             :   DBGBCR5_EL1 = 32813,
     771             :   DBGBCR6_EL1 = 32821,
     772             :   DBGBCR7_EL1 = 32829,
     773             :   DBGBCR8_EL1 = 32837,
     774             :   DBGBCR9_EL1 = 32845,
     775             :   DBGBCR10_EL1 = 32853,
     776             :   DBGBCR11_EL1 = 32861,
     777             :   DBGBCR12_EL1 = 32869,
     778             :   DBGBCR13_EL1 = 32877,
     779             :   DBGBCR14_EL1 = 32885,
     780             :   DBGBCR15_EL1 = 32893,
     781             :   DBGWVR0_EL1 = 32774,
     782             :   DBGWVR1_EL1 = 32782,
     783             :   DBGWVR2_EL1 = 32790,
     784             :   DBGWVR3_EL1 = 32798,
     785             :   DBGWVR4_EL1 = 32806,
     786             :   DBGWVR5_EL1 = 32814,
     787             :   DBGWVR6_EL1 = 32822,
     788             :   DBGWVR7_EL1 = 32830,
     789             :   DBGWVR8_EL1 = 32838,
     790             :   DBGWVR9_EL1 = 32846,
     791             :   DBGWVR10_EL1 = 32854,
     792             :   DBGWVR11_EL1 = 32862,
     793             :   DBGWVR12_EL1 = 32870,
     794             :   DBGWVR13_EL1 = 32878,
     795             :   DBGWVR14_EL1 = 32886,
     796             :   DBGWVR15_EL1 = 32894,
     797             :   DBGWCR0_EL1 = 32775,
     798             :   DBGWCR1_EL1 = 32783,
     799             :   DBGWCR2_EL1 = 32791,
     800             :   DBGWCR3_EL1 = 32799,
     801             :   DBGWCR4_EL1 = 32807,
     802             :   DBGWCR5_EL1 = 32815,
     803             :   DBGWCR6_EL1 = 32823,
     804             :   DBGWCR7_EL1 = 32831,
     805             :   DBGWCR8_EL1 = 32839,
     806             :   DBGWCR9_EL1 = 32847,
     807             :   DBGWCR10_EL1 = 32855,
     808             :   DBGWCR11_EL1 = 32863,
     809             :   DBGWCR12_EL1 = 32871,
     810             :   DBGWCR13_EL1 = 32879,
     811             :   DBGWCR14_EL1 = 32887,
     812             :   DBGWCR15_EL1 = 32895,
     813             :   TEEHBR32_EL1 = 36992,
     814             :   OSDLR_EL1 = 32924,
     815             :   DBGPRCR_EL1 = 32932,
     816             :   DBGCLAIMSET_EL1 = 33734,
     817             :   DBGCLAIMCLR_EL1 = 33742,
     818             :   CSSELR_EL1 = 53248,
     819             :   VPIDR_EL2 = 57344,
     820             :   VMPIDR_EL2 = 57349,
     821             :   CPACR_EL1 = 49282,
     822             :   SCTLR_EL1 = 49280,
     823             :   SCTLR_EL2 = 57472,
     824             :   SCTLR_EL3 = 61568,
     825             :   ACTLR_EL1 = 49281,
     826             :   ACTLR_EL2 = 57473,
     827             :   ACTLR_EL3 = 61569,
     828             :   HCR_EL2 = 57480,
     829             :   SCR_EL3 = 61576,
     830             :   MDCR_EL2 = 57481,
     831             :   SDER32_EL3 = 61577,
     832             :   CPTR_EL2 = 57482,
     833             :   CPTR_EL3 = 61578,
     834             :   HSTR_EL2 = 57483,
     835             :   HACR_EL2 = 57487,
     836             :   MDCR_EL3 = 61593,
     837             :   TTBR0_EL1 = 49408,
     838             :   TTBR0_EL2 = 57600,
     839             :   TTBR0_EL3 = 61696,
     840             :   TTBR1_EL1 = 49409,
     841             :   TCR_EL1 = 49410,
     842             :   TCR_EL2 = 57602,
     843             :   TCR_EL3 = 61698,
     844             :   VTTBR_EL2 = 57608,
     845             :   VTCR_EL2 = 57610,
     846             :   DACR32_EL2 = 57728,
     847             :   SPSR_EL1 = 49664,
     848             :   SPSR_EL2 = 57856,
     849             :   SPSR_EL3 = 61952,
     850             :   ELR_EL1 = 49665,
     851             :   ELR_EL2 = 57857,
     852             :   ELR_EL3 = 61953,
     853             :   SP_EL0 = 49672,
     854             :   SP_EL1 = 57864,
     855             :   SP_EL2 = 61960,
     856             :   SPSel = 49680,
     857             :   NZCV = 55824,
     858             :   DAIF = 55825,
     859             :   CurrentEL = 49682,
     860             :   SPSR_irq = 57880,
     861             :   SPSR_abt = 57881,
     862             :   SPSR_und = 57882,
     863             :   SPSR_fiq = 57883,
     864             :   FPCR = 55840,
     865             :   FPSR = 55841,
     866             :   DSPSR_EL0 = 55848,
     867             :   DLR_EL0 = 55849,
     868             :   IFSR32_EL2 = 57985,
     869             :   AFSR0_EL1 = 49800,
     870             :   AFSR0_EL2 = 57992,
     871             :   AFSR0_EL3 = 62088,
     872             :   AFSR1_EL1 = 49801,
     873             :   AFSR1_EL2 = 57993,
     874             :   AFSR1_EL3 = 62089,
     875             :   ESR_EL1 = 49808,
     876             :   ESR_EL2 = 58000,
     877             :   ESR_EL3 = 62096,
     878             :   FPEXC32_EL2 = 58008,
     879             :   FAR_EL1 = 49920,
     880             :   FAR_EL2 = 58112,
     881             :   FAR_EL3 = 62208,
     882             :   HPFAR_EL2 = 58116,
     883             :   PAR_EL1 = 50080,
     884             :   PMCR_EL0 = 56544,
     885             :   PMCNTENSET_EL0 = 56545,
     886             :   PMCNTENCLR_EL0 = 56546,
     887             :   PMOVSCLR_EL0 = 56547,
     888             :   PMSELR_EL0 = 56549,
     889             :   PMCCNTR_EL0 = 56552,
     890             :   PMXEVTYPER_EL0 = 56553,
     891             :   PMXEVCNTR_EL0 = 56554,
     892             :   PMUSERENR_EL0 = 56560,
     893             :   PMINTENSET_EL1 = 50417,
     894             :   PMINTENCLR_EL1 = 50418,
     895             :   PMOVSSET_EL0 = 56563,
     896             :   MAIR_EL1 = 50448,
     897             :   MAIR_EL2 = 58640,
     898             :   MAIR_EL3 = 62736,
     899             :   AMAIR_EL1 = 50456,
     900             :   AMAIR_EL2 = 58648,
     901             :   AMAIR_EL3 = 62744,
     902             :   VBAR_EL1 = 50688,
     903             :   VBAR_EL2 = 58880,
     904             :   VBAR_EL3 = 62976,
     905             :   RMR_EL1 = 50690,
     906             :   RMR_EL2 = 58882,
     907             :   RMR_EL3 = 62978,
     908             :   CONTEXTIDR_EL1 = 50817,
     909             :   TPIDR_EL0 = 56962,
     910             :   TPIDR_EL2 = 59010,
     911             :   TPIDR_EL3 = 63106,
     912             :   TPIDRRO_EL0 = 56963,
     913             :   TPIDR_EL1 = 50820,
     914             :   CNTFRQ_EL0 = 57088,
     915             :   CNTVOFF_EL2 = 59139,
     916             :   CNTKCTL_EL1 = 50952,
     917             :   CNTHCTL_EL2 = 59144,
     918             :   CNTP_TVAL_EL0 = 57104,
     919             :   CNTHP_TVAL_EL2 = 59152,
     920             :   CNTPS_TVAL_EL1 = 65296,
     921             :   CNTP_CTL_EL0 = 57105,
     922             :   CNTHP_CTL_EL2 = 59153,
     923             :   CNTPS_CTL_EL1 = 65297,
     924             :   CNTP_CVAL_EL0 = 57106,
     925             :   CNTHP_CVAL_EL2 = 59154,
     926             :   CNTPS_CVAL_EL1 = 65298,
     927             :   CNTV_TVAL_EL0 = 57112,
     928             :   CNTV_CTL_EL0 = 57113,
     929             :   CNTV_CVAL_EL0 = 57114,
     930             :   PMEVCNTR0_EL0 = 57152,
     931             :   PMEVCNTR1_EL0 = 57153,
     932             :   PMEVCNTR2_EL0 = 57154,
     933             :   PMEVCNTR3_EL0 = 57155,
     934             :   PMEVCNTR4_EL0 = 57156,
     935             :   PMEVCNTR5_EL0 = 57157,
     936             :   PMEVCNTR6_EL0 = 57158,
     937             :   PMEVCNTR7_EL0 = 57159,
     938             :   PMEVCNTR8_EL0 = 57160,
     939             :   PMEVCNTR9_EL0 = 57161,
     940             :   PMEVCNTR10_EL0 = 57162,
     941             :   PMEVCNTR11_EL0 = 57163,
     942             :   PMEVCNTR12_EL0 = 57164,
     943             :   PMEVCNTR13_EL0 = 57165,
     944             :   PMEVCNTR14_EL0 = 57166,
     945             :   PMEVCNTR15_EL0 = 57167,
     946             :   PMEVCNTR16_EL0 = 57168,
     947             :   PMEVCNTR17_EL0 = 57169,
     948             :   PMEVCNTR18_EL0 = 57170,
     949             :   PMEVCNTR19_EL0 = 57171,
     950             :   PMEVCNTR20_EL0 = 57172,
     951             :   PMEVCNTR21_EL0 = 57173,
     952             :   PMEVCNTR22_EL0 = 57174,
     953             :   PMEVCNTR23_EL0 = 57175,
     954             :   PMEVCNTR24_EL0 = 57176,
     955             :   PMEVCNTR25_EL0 = 57177,
     956             :   PMEVCNTR26_EL0 = 57178,
     957             :   PMEVCNTR27_EL0 = 57179,
     958             :   PMEVCNTR28_EL0 = 57180,
     959             :   PMEVCNTR29_EL0 = 57181,
     960             :   PMEVCNTR30_EL0 = 57182,
     961             :   PMCCFILTR_EL0 = 57215,
     962             :   PMEVTYPER0_EL0 = 57184,
     963             :   PMEVTYPER1_EL0 = 57185,
     964             :   PMEVTYPER2_EL0 = 57186,
     965             :   PMEVTYPER3_EL0 = 57187,
     966             :   PMEVTYPER4_EL0 = 57188,
     967             :   PMEVTYPER5_EL0 = 57189,
     968             :   PMEVTYPER6_EL0 = 57190,
     969             :   PMEVTYPER7_EL0 = 57191,
     970             :   PMEVTYPER8_EL0 = 57192,
     971             :   PMEVTYPER9_EL0 = 57193,
     972             :   PMEVTYPER10_EL0 = 57194,
     973             :   PMEVTYPER11_EL0 = 57195,
     974             :   PMEVTYPER12_EL0 = 57196,
     975             :   PMEVTYPER13_EL0 = 57197,
     976             :   PMEVTYPER14_EL0 = 57198,
     977             :   PMEVTYPER15_EL0 = 57199,
     978             :   PMEVTYPER16_EL0 = 57200,
     979             :   PMEVTYPER17_EL0 = 57201,
     980             :   PMEVTYPER18_EL0 = 57202,
     981             :   PMEVTYPER19_EL0 = 57203,
     982             :   PMEVTYPER20_EL0 = 57204,
     983             :   PMEVTYPER21_EL0 = 57205,
     984             :   PMEVTYPER22_EL0 = 57206,
     985             :   PMEVTYPER23_EL0 = 57207,
     986             :   PMEVTYPER24_EL0 = 57208,
     987             :   PMEVTYPER25_EL0 = 57209,
     988             :   PMEVTYPER26_EL0 = 57210,
     989             :   PMEVTYPER27_EL0 = 57211,
     990             :   PMEVTYPER28_EL0 = 57212,
     991             :   PMEVTYPER29_EL0 = 57213,
     992             :   PMEVTYPER30_EL0 = 57214,
     993             :   TRCPRGCTLR = 34824,
     994             :   TRCPROCSELR = 34832,
     995             :   TRCCONFIGR = 34848,
     996             :   TRCAUXCTLR = 34864,
     997             :   TRCEVENTCTL0R = 34880,
     998             :   TRCEVENTCTL1R = 34888,
     999             :   TRCSTALLCTLR = 34904,
    1000             :   TRCTSCTLR = 34912,
    1001             :   TRCSYNCPR = 34920,
    1002             :   TRCCCCTLR = 34928,
    1003             :   TRCBBCTLR = 34936,
    1004             :   TRCTRACEIDR = 34817,
    1005             :   TRCQCTLR = 34825,
    1006             :   TRCVICTLR = 34818,
    1007             :   TRCVIIECTLR = 34826,
    1008             :   TRCVISSCTLR = 34834,
    1009             :   TRCVIPCSSCTLR = 34842,
    1010             :   TRCVDCTLR = 34882,
    1011             :   TRCVDSACCTLR = 34890,
    1012             :   TRCVDARCCTLR = 34898,
    1013             :   TRCSEQEVR0 = 34820,
    1014             :   TRCSEQEVR1 = 34828,
    1015             :   TRCSEQEVR2 = 34836,
    1016             :   TRCSEQRSTEVR = 34868,
    1017             :   TRCSEQSTR = 34876,
    1018             :   TRCEXTINSELR = 34884,
    1019             :   TRCCNTRLDVR0 = 34821,
    1020             :   TRCCNTRLDVR1 = 34829,
    1021             :   TRCCNTRLDVR2 = 34837,
    1022             :   TRCCNTRLDVR3 = 34845,
    1023             :   TRCCNTCTLR0 = 34853,
    1024             :   TRCCNTCTLR1 = 34861,
    1025             :   TRCCNTCTLR2 = 34869,
    1026             :   TRCCNTCTLR3 = 34877,
    1027             :   TRCCNTVR0 = 34885,
    1028             :   TRCCNTVR1 = 34893,
    1029             :   TRCCNTVR2 = 34901,
    1030             :   TRCCNTVR3 = 34909,
    1031             :   TRCIMSPEC0 = 34823,
    1032             :   TRCIMSPEC1 = 34831,
    1033             :   TRCIMSPEC2 = 34839,
    1034             :   TRCIMSPEC3 = 34847,
    1035             :   TRCIMSPEC4 = 34855,
    1036             :   TRCIMSPEC5 = 34863,
    1037             :   TRCIMSPEC6 = 34871,
    1038             :   TRCIMSPEC7 = 34879,
    1039             :   TRCRSCTLR2 = 34960,
    1040             :   TRCRSCTLR3 = 34968,
    1041             :   TRCRSCTLR4 = 34976,
    1042             :   TRCRSCTLR5 = 34984,
    1043             :   TRCRSCTLR6 = 34992,
    1044             :   TRCRSCTLR7 = 35000,
    1045             :   TRCRSCTLR8 = 35008,
    1046             :   TRCRSCTLR9 = 35016,
    1047             :   TRCRSCTLR10 = 35024,
    1048             :   TRCRSCTLR11 = 35032,
    1049             :   TRCRSCTLR12 = 35040,
    1050             :   TRCRSCTLR13 = 35048,
    1051             :   TRCRSCTLR14 = 35056,
    1052             :   TRCRSCTLR15 = 35064,
    1053             :   TRCRSCTLR16 = 34945,
    1054             :   TRCRSCTLR17 = 34953,
    1055             :   TRCRSCTLR18 = 34961,
    1056             :   TRCRSCTLR19 = 34969,
    1057             :   TRCRSCTLR20 = 34977,
    1058             :   TRCRSCTLR21 = 34985,
    1059             :   TRCRSCTLR22 = 34993,
    1060             :   TRCRSCTLR23 = 35001,
    1061             :   TRCRSCTLR24 = 35009,
    1062             :   TRCRSCTLR25 = 35017,
    1063             :   TRCRSCTLR26 = 35025,
    1064             :   TRCRSCTLR27 = 35033,
    1065             :   TRCRSCTLR28 = 35041,
    1066             :   TRCRSCTLR29 = 35049,
    1067             :   TRCRSCTLR30 = 35057,
    1068             :   TRCRSCTLR31 = 35065,
    1069             :   TRCSSCCR0 = 34946,
    1070             :   TRCSSCCR1 = 34954,
    1071             :   TRCSSCCR2 = 34962,
    1072             :   TRCSSCCR3 = 34970,
    1073             :   TRCSSCCR4 = 34978,
    1074             :   TRCSSCCR5 = 34986,
    1075             :   TRCSSCCR6 = 34994,
    1076             :   TRCSSCCR7 = 35002,
    1077             :   TRCSSCSR0 = 35010,
    1078             :   TRCSSCSR1 = 35018,
    1079             :   TRCSSCSR2 = 35026,
    1080             :   TRCSSCSR3 = 35034,
    1081             :   TRCSSCSR4 = 35042,
    1082             :   TRCSSCSR5 = 35050,
    1083             :   TRCSSCSR6 = 35058,
    1084             :   TRCSSCSR7 = 35066,
    1085             :   TRCSSPCICR0 = 34947,
    1086             :   TRCSSPCICR1 = 34955,
    1087             :   TRCSSPCICR2 = 34963,
    1088             :   TRCSSPCICR3 = 34971,
    1089             :   TRCSSPCICR4 = 34979,
    1090             :   TRCSSPCICR5 = 34987,
    1091             :   TRCSSPCICR6 = 34995,
    1092             :   TRCSSPCICR7 = 35003,
    1093             :   TRCPDCR = 34980,
    1094             :   TRCACVR0 = 35072,
    1095             :   TRCACVR1 = 35088,
    1096             :   TRCACVR2 = 35104,
    1097             :   TRCACVR3 = 35120,
    1098             :   TRCACVR4 = 35136,
    1099             :   TRCACVR5 = 35152,
    1100             :   TRCACVR6 = 35168,
    1101             :   TRCACVR7 = 35184,
    1102             :   TRCACVR8 = 35073,
    1103             :   TRCACVR9 = 35089,
    1104             :   TRCACVR10 = 35105,
    1105             :   TRCACVR11 = 35121,
    1106             :   TRCACVR12 = 35137,
    1107             :   TRCACVR13 = 35153,
    1108             :   TRCACVR14 = 35169,
    1109             :   TRCACVR15 = 35185,
    1110             :   TRCACATR0 = 35074,
    1111             :   TRCACATR1 = 35090,
    1112             :   TRCACATR2 = 35106,
    1113             :   TRCACATR3 = 35122,
    1114             :   TRCACATR4 = 35138,
    1115             :   TRCACATR5 = 35154,
    1116             :   TRCACATR6 = 35170,
    1117             :   TRCACATR7 = 35186,
    1118             :   TRCACATR8 = 35075,
    1119             :   TRCACATR9 = 35091,
    1120             :   TRCACATR10 = 35107,
    1121             :   TRCACATR11 = 35123,
    1122             :   TRCACATR12 = 35139,
    1123             :   TRCACATR13 = 35155,
    1124             :   TRCACATR14 = 35171,
    1125             :   TRCACATR15 = 35187,
    1126             :   TRCDVCVR0 = 35076,
    1127             :   TRCDVCVR1 = 35108,
    1128             :   TRCDVCVR2 = 35140,
    1129             :   TRCDVCVR3 = 35172,
    1130             :   TRCDVCVR4 = 35077,
    1131             :   TRCDVCVR5 = 35109,
    1132             :   TRCDVCVR6 = 35141,
    1133             :   TRCDVCVR7 = 35173,
    1134             :   TRCDVCMR0 = 35078,
    1135             :   TRCDVCMR1 = 35110,
    1136             :   TRCDVCMR2 = 35142,
    1137             :   TRCDVCMR3 = 35174,
    1138             :   TRCDVCMR4 = 35079,
    1139             :   TRCDVCMR5 = 35111,
    1140             :   TRCDVCMR6 = 35143,
    1141             :   TRCDVCMR7 = 35175,
    1142             :   TRCCIDCVR0 = 35200,
    1143             :   TRCCIDCVR1 = 35216,
    1144             :   TRCCIDCVR2 = 35232,
    1145             :   TRCCIDCVR3 = 35248,
    1146             :   TRCCIDCVR4 = 35264,
    1147             :   TRCCIDCVR5 = 35280,
    1148             :   TRCCIDCVR6 = 35296,
    1149             :   TRCCIDCVR7 = 35312,
    1150             :   TRCVMIDCVR0 = 35201,
    1151             :   TRCVMIDCVR1 = 35217,
    1152             :   TRCVMIDCVR2 = 35233,
    1153             :   TRCVMIDCVR3 = 35249,
    1154             :   TRCVMIDCVR4 = 35265,
    1155             :   TRCVMIDCVR5 = 35281,
    1156             :   TRCVMIDCVR6 = 35297,
    1157             :   TRCVMIDCVR7 = 35313,
    1158             :   TRCCIDCCTLR0 = 35202,
    1159             :   TRCCIDCCTLR1 = 35210,
    1160             :   TRCVMIDCCTLR0 = 35218,
    1161             :   TRCVMIDCCTLR1 = 35226,
    1162             :   TRCITCTRL = 35716,
    1163             :   TRCCLAIMSET = 35782,
    1164             :   TRCCLAIMCLR = 35790,
    1165             :   ICC_BPR1_EL1 = 50787,
    1166             :   ICC_BPR0_EL1 = 50755,
    1167             :   ICC_PMR_EL1 = 49712,
    1168             :   ICC_CTLR_EL1 = 50788,
    1169             :   ICC_CTLR_EL3 = 63076,
    1170             :   ICC_SRE_EL1 = 50789,
    1171             :   ICC_SRE_EL2 = 58957,
    1172             :   ICC_SRE_EL3 = 63077,
    1173             :   ICC_IGRPEN0_EL1 = 50790,
    1174             :   ICC_IGRPEN1_EL1 = 50791,
    1175             :   ICC_IGRPEN1_EL3 = 63079,
    1176             :   ICC_SEIEN_EL1 = 50792,
    1177             :   ICC_AP0R0_EL1 = 50756,
    1178             :   ICC_AP0R1_EL1 = 50757,
    1179             :   ICC_AP0R2_EL1 = 50758,
    1180             :   ICC_AP0R3_EL1 = 50759,
    1181             :   ICC_AP1R0_EL1 = 50760,
    1182             :   ICC_AP1R1_EL1 = 50761,
    1183             :   ICC_AP1R2_EL1 = 50762,
    1184             :   ICC_AP1R3_EL1 = 50763,
    1185             :   ICH_AP0R0_EL2 = 58944,
    1186             :   ICH_AP0R1_EL2 = 58945,
    1187             :   ICH_AP0R2_EL2 = 58946,
    1188             :   ICH_AP0R3_EL2 = 58947,
    1189             :   ICH_AP1R0_EL2 = 58952,
    1190             :   ICH_AP1R1_EL2 = 58953,
    1191             :   ICH_AP1R2_EL2 = 58954,
    1192             :   ICH_AP1R3_EL2 = 58955,
    1193             :   ICH_HCR_EL2 = 58968,
    1194             :   ICH_MISR_EL2 = 58970,
    1195             :   ICH_VMCR_EL2 = 58975,
    1196             :   ICH_VSEIR_EL2 = 58956,
    1197             :   ICH_LR0_EL2 = 58976,
    1198             :   ICH_LR1_EL2 = 58977,
    1199             :   ICH_LR2_EL2 = 58978,
    1200             :   ICH_LR3_EL2 = 58979,
    1201             :   ICH_LR4_EL2 = 58980,
    1202             :   ICH_LR5_EL2 = 58981,
    1203             :   ICH_LR6_EL2 = 58982,
    1204             :   ICH_LR7_EL2 = 58983,
    1205             :   ICH_LR8_EL2 = 58984,
    1206             :   ICH_LR9_EL2 = 58985,
    1207             :   ICH_LR10_EL2 = 58986,
    1208             :   ICH_LR11_EL2 = 58987,
    1209             :   ICH_LR12_EL2 = 58988,
    1210             :   ICH_LR13_EL2 = 58989,
    1211             :   ICH_LR14_EL2 = 58990,
    1212             :   ICH_LR15_EL2 = 58991,
    1213             :   PAN = 49683,
    1214             :   LORSA_EL1 = 50464,
    1215             :   LOREA_EL1 = 50465,
    1216             :   LORN_EL1 = 50466,
    1217             :   LORC_EL1 = 50467,
    1218             :   TTBR1_EL2 = 57601,
    1219             :   CONTEXTIDR_EL2 = 59009,
    1220             :   CNTHV_TVAL_EL2 = 59160,
    1221             :   CNTHV_CVAL_EL2 = 59162,
    1222             :   CNTHV_CTL_EL2 = 59161,
    1223             :   SCTLR_EL12 = 59520,
    1224             :   CPACR_EL12 = 59522,
    1225             :   TTBR0_EL12 = 59648,
    1226             :   TTBR1_EL12 = 59649,
    1227             :   TCR_EL12 = 59650,
    1228             :   AFSR0_EL12 = 60040,
    1229             :   AFSR1_EL12 = 60041,
    1230             :   ESR_EL12 = 60048,
    1231             :   FAR_EL12 = 60160,
    1232             :   MAIR_EL12 = 60688,
    1233             :   AMAIR_EL12 = 60696,
    1234             :   VBAR_EL12 = 60928,
    1235             :   CONTEXTIDR_EL12 = 61057,
    1236             :   CNTKCTL_EL12 = 61192,
    1237             :   CNTP_TVAL_EL02 = 61200,
    1238             :   CNTP_CTL_EL02 = 61201,
    1239             :   CNTP_CVAL_EL02 = 61202,
    1240             :   CNTV_TVAL_EL02 = 61208,
    1241             :   CNTV_CTL_EL02 = 61209,
    1242             :   CNTV_CVAL_EL02 = 61210,
    1243             :   SPSR_EL12 = 59904,
    1244             :   ELR_EL12 = 59905,
    1245             :   UAO = 49684,
    1246             :   PMBLIMITR_EL1 = 50384,
    1247             :   PMBPTR_EL1 = 50385,
    1248             :   PMBSR_EL1 = 50387,
    1249             :   PMBIDR_EL1 = 50391,
    1250             :   PMSCR_EL2 = 58568,
    1251             :   PMSCR_EL12 = 60616,
    1252             :   PMSCR_EL1 = 50376,
    1253             :   PMSICR_EL1 = 50378,
    1254             :   PMSIRR_EL1 = 50379,
    1255             :   PMSFCR_EL1 = 50380,
    1256             :   PMSEVFR_EL1 = 50381,
    1257             :   PMSLATFR_EL1 = 50382,
    1258             :   PMSIDR_EL1 = 50383,
    1259             :   ERRSELR_EL1 = 49817,
    1260             :   ERXCTLR_EL1 = 49825,
    1261             :   ERXSTATUS_EL1 = 49826,
    1262             :   ERXADDR_EL1 = 49827,
    1263             :   ERXMISC0_EL1 = 49832,
    1264             :   ERXMISC1_EL1 = 49833,
    1265             :   DISR_EL1 = 50697,
    1266             :   VDISR_EL2 = 58889,
    1267             :   VSESR_EL2 = 58003,
    1268             :   APIAKeyLo_EL1 = 49416,
    1269             :   APIAKeyHi_EL1 = 49417,
    1270             :   APIBKeyLo_EL1 = 49418,
    1271             :   APIBKeyHi_EL1 = 49419,
    1272             :   APDAKeyLo_EL1 = 49424,
    1273             :   APDAKeyHi_EL1 = 49425,
    1274             :   APDBKeyLo_EL1 = 49426,
    1275             :   APDBKeyHi_EL1 = 49427,
    1276             :   APGAKeyLo_EL1 = 49432,
    1277             :   APGAKeyHi_EL1 = 49433,
    1278             :   CPM_IOACC_CTL_EL3 = 65424,
    1279             : };
    1280             : 
    1281             : const SysReg *lookupSysRegByName(StringRef Name);
    1282             : 
    1283             : const SysReg *lookupSysRegByEncoding(uint16_t Encoding);
    1284             : 
    1285             : #endif
    1286             : 
    1287             : #ifdef GET_SYSREG_IMPL
    1288             : #undef GET_SYSREG_IMPL
    1289             : const SysReg SysRegsList[] = {
    1290             :   { "MDCCSR_EL0", 0x9808, true, false,  {} },
    1291             :   { "DBGDTRRX_EL0", 0x9828, true, false,  {} },
    1292             :   { "MDRAR_EL1", 0x8080, true, false,  {} },
    1293             :   { "OSLSR_EL1", 0x808C, true, false,  {} },
    1294             :   { "DBGAUTHSTATUS_EL1", 0x83F6, true, false,  {} },
    1295             :   { "PMCEID0_EL0", 0xDCE6, true, false,  {} },
    1296             :   { "PMCEID1_EL0", 0xDCE7, true, false,  {} },
    1297             :   { "MIDR_EL1", 0xC000, true, false,  {} },
    1298             :   { "CCSIDR_EL1", 0xC800, true, false,  {} },
    1299             :   { "CLIDR_EL1", 0xC801, true, false,  {} },
    1300             :   { "CTR_EL0", 0xD801, true, false,  {} },
    1301             :   { "MPIDR_EL1", 0xC005, true, false,  {} },
    1302             :   { "REVIDR_EL1", 0xC006, true, false,  {} },
    1303             :   { "AIDR_EL1", 0xC807, true, false,  {} },
    1304             :   { "DCZID_EL0", 0xD807, true, false,  {} },
    1305             :   { "ID_PFR0_EL1", 0xC008, true, false,  {} },
    1306             :   { "ID_PFR1_EL1", 0xC009, true, false,  {} },
    1307             :   { "ID_DFR0_EL1", 0xC00A, true, false,  {} },
    1308             :   { "ID_AFR0_EL1", 0xC00B, true, false,  {} },
    1309             :   { "ID_MMFR0_EL1", 0xC00C, true, false,  {} },
    1310             :   { "ID_MMFR1_EL1", 0xC00D, true, false,  {} },
    1311             :   { "ID_MMFR2_EL1", 0xC00E, true, false,  {} },
    1312             :   { "ID_MMFR3_EL1", 0xC00F, true, false,  {} },
    1313             :   { "ID_ISAR0_EL1", 0xC010, true, false,  {} },
    1314             :   { "ID_ISAR1_EL1", 0xC011, true, false,  {} },
    1315             :   { "ID_ISAR2_EL1", 0xC012, true, false,  {} },
    1316             :   { "ID_ISAR3_EL1", 0xC013, true, false,  {} },
    1317             :   { "ID_ISAR4_EL1", 0xC014, true, false,  {} },
    1318             :   { "ID_ISAR5_EL1", 0xC015, true, false,  {} },
    1319             :   { "ID_ISAR6_EL1", 0xC017, true, false,  {AArch64::HasV8_2aOps} },
    1320             :   { "ID_AA64PFR0_EL1", 0xC020, true, false,  {} },
    1321             :   { "ID_AA64PFR1_EL1", 0xC021, true, false,  {} },
    1322             :   { "ID_AA64DFR0_EL1", 0xC028, true, false,  {} },
    1323             :   { "ID_AA64DFR1_EL1", 0xC029, true, false,  {} },
    1324             :   { "ID_AA64AFR0_EL1", 0xC02C, true, false,  {} },
    1325             :   { "ID_AA64AFR1_EL1", 0xC02D, true, false,  {} },
    1326             :   { "ID_AA64ISAR0_EL1", 0xC030, true, false,  {} },
    1327             :   { "ID_AA64ISAR1_EL1", 0xC031, true, false,  {} },
    1328             :   { "ID_AA64MMFR0_EL1", 0xC038, true, false,  {} },
    1329             :   { "ID_AA64MMFR1_EL1", 0xC039, true, false,  {} },
    1330             :   { "ID_AA64MMFR2_EL1", 0xC03A, true, false,  {AArch64::HasV8_2aOps} },
    1331             :   { "MVFR0_EL1", 0xC018, true, false,  {} },
    1332             :   { "MVFR1_EL1", 0xC019, true, false,  {} },
    1333             :   { "MVFR2_EL1", 0xC01A, true, false,  {} },
    1334             :   { "RVBAR_EL1", 0xC601, true, false,  {} },
    1335             :   { "RVBAR_EL2", 0xE601, true, false,  {} },
    1336             :   { "RVBAR_EL3", 0xF601, true, false,  {} },
    1337             :   { "ISR_EL1", 0xC608, true, false,  {} },
    1338             :   { "CNTPCT_EL0", 0xDF01, true, false,  {} },
    1339             :   { "CNTVCT_EL0", 0xDF02, true, false,  {} },
    1340             :   { "ID_MMFR4_EL1", 0xC016, true, false,  {} },
    1341             :   { "TRCSTATR", 0x8818, true, false,  {} },
    1342             :   { "TRCIDR8", 0x8806, true, false,  {} },
    1343             :   { "TRCIDR9", 0x880E, true, false,  {} },
    1344             :   { "TRCIDR10", 0x8816, true, false,  {} },
    1345             :   { "TRCIDR11", 0x881E, true, false,  {} },
    1346             :   { "TRCIDR12", 0x8826, true, false,  {} },
    1347             :   { "TRCIDR13", 0x882E, true, false,  {} },
    1348             :   { "TRCIDR0", 0x8847, true, false,  {} },
    1349             :   { "TRCIDR1", 0x884F, true, false,  {} },
    1350             :   { "TRCIDR2", 0x8857, true, false,  {} },
    1351             :   { "TRCIDR3", 0x885F, true, false,  {} },
    1352             :   { "TRCIDR4", 0x8867, true, false,  {} },
    1353             :   { "TRCIDR5", 0x886F, true, false,  {} },
    1354             :   { "TRCIDR6", 0x8877, true, false,  {} },
    1355             :   { "TRCIDR7", 0x887F, true, false,  {} },
    1356             :   { "TRCOSLSR", 0x888C, true, false,  {} },
    1357             :   { "TRCPDSR", 0x88AC, true, false,  {} },
    1358             :   { "TRCDEVAFF0", 0x8BD6, true, false,  {} },
    1359             :   { "TRCDEVAFF1", 0x8BDE, true, false,  {} },
    1360             :   { "TRCLSR", 0x8BEE, true, false,  {} },
    1361             :   { "TRCAUTHSTATUS", 0x8BF6, true, false,  {} },
    1362             :   { "TRCDEVARCH", 0x8BFE, true, false,  {} },
    1363             :   { "TRCDEVID", 0x8B97, true, false,  {} },
    1364             :   { "TRCDEVTYPE", 0x8B9F, true, false,  {} },
    1365             :   { "TRCPIDR4", 0x8BA7, true, false,  {} },
    1366             :   { "TRCPIDR5", 0x8BAF, true, false,  {} },
    1367             :   { "TRCPIDR6", 0x8BB7, true, false,  {} },
    1368             :   { "TRCPIDR7", 0x8BBF, true, false,  {} },
    1369             :   { "TRCPIDR0", 0x8BC7, true, false,  {} },
    1370             :   { "TRCPIDR1", 0x8BCF, true, false,  {} },
    1371             :   { "TRCPIDR2", 0x8BD7, true, false,  {} },
    1372             :   { "TRCPIDR3", 0x8BDF, true, false,  {} },
    1373             :   { "TRCCIDR0", 0x8BE7, true, false,  {} },
    1374             :   { "TRCCIDR1", 0x8BEF, true, false,  {} },
    1375             :   { "TRCCIDR2", 0x8BF7, true, false,  {} },
    1376             :   { "TRCCIDR3", 0x8BFF, true, false,  {} },
    1377             :   { "ICC_IAR1_EL1", 0xC660, true, false,  {} },
    1378             :   { "ICC_IAR0_EL1", 0xC640, true, false,  {} },
    1379             :   { "ICC_HPPIR1_EL1", 0xC662, true, false,  {} },
    1380             :   { "ICC_HPPIR0_EL1", 0xC642, true, false,  {} },
    1381             :   { "ICC_RPR_EL1", 0xC65B, true, false,  {} },
    1382             :   { "ICH_VTR_EL2", 0xE659, true, false,  {} },
    1383             :   { "ICH_EISR_EL2", 0xE65B, true, false,  {} },
    1384             :   { "ICH_ELSR_EL2", 0xE65D, true, false,  {} },
    1385             :   { "LORID_EL1", 0xC527, true, false,  {AArch64::HasV8_1aOps} },
    1386             :   { "ERRIDR_EL1", 0xC298, true, false,  {AArch64::FeatureRAS} },
    1387             :   { "ERXFR_EL1", 0xC2A0, true, false,  {AArch64::FeatureRAS} },
    1388             :   { "DBGDTRTX_EL0", 0x9828, false, true,  {} },
    1389             :   { "OSLAR_EL1", 0x8084, false, true,  {} },
    1390             :   { "PMSWINC_EL0", 0xDCE4, false, true,  {} },
    1391             :   { "TRCOSLAR", 0x8884, false, true,  {} },
    1392             :   { "TRCLAR", 0x8BE6, false, true,  {} },
    1393             :   { "ICC_EOIR1_EL1", 0xC661, false, true,  {} },
    1394             :   { "ICC_EOIR0_EL1", 0xC641, false, true,  {} },
    1395             :   { "ICC_DIR_EL1", 0xC659, false, true,  {} },
    1396             :   { "ICC_SGI1R_EL1", 0xC65D, false, true,  {} },
    1397             :   { "ICC_ASGI1R_EL1", 0xC65E, false, true,  {} },
    1398             :   { "ICC_SGI0R_EL1", 0xC65F, false, true,  {} },
    1399             :   { "OSDTRRX_EL1", 0x8002, true, true,  {} },
    1400             :   { "OSDTRTX_EL1", 0x801A, true, true,  {} },
    1401             :   { "TEECR32_EL1", 0x9000, true, true,  {} },
    1402             :   { "MDCCINT_EL1", 0x8010, true, true,  {} },
    1403             :   { "MDSCR_EL1", 0x8012, true, true,  {} },
    1404             :   { "DBGDTR_EL0", 0x9820, true, true,  {} },
    1405             :   { "OSECCR_EL1", 0x8032, true, true,  {} },
    1406             :   { "DBGVCR32_EL2", 0xA038, true, true,  {} },
    1407             :   { "DBGBVR0_EL1", 0x8004, true, true,  {} },
    1408             :   { "DBGBVR1_EL1", 0x800C, true, true,  {} },
    1409             :   { "DBGBVR2_EL1", 0x8014, true, true,  {} },
    1410             :   { "DBGBVR3_EL1", 0x801C, true, true,  {} },
    1411             :   { "DBGBVR4_EL1", 0x8024, true, true,  {} },
    1412             :   { "DBGBVR5_EL1", 0x802C, true, true,  {} },
    1413             :   { "DBGBVR6_EL1", 0x8034, true, true,  {} },
    1414             :   { "DBGBVR7_EL1", 0x803C, true, true,  {} },
    1415             :   { "DBGBVR8_EL1", 0x8044, true, true,  {} },
    1416             :   { "DBGBVR9_EL1", 0x804C, true, true,  {} },
    1417             :   { "DBGBVR10_EL1", 0x8054, true, true,  {} },
    1418             :   { "DBGBVR11_EL1", 0x805C, true, true,  {} },
    1419             :   { "DBGBVR12_EL1", 0x8064, true, true,  {} },
    1420             :   { "DBGBVR13_EL1", 0x806C, true, true,  {} },
    1421             :   { "DBGBVR14_EL1", 0x8074, true, true,  {} },
    1422             :   { "DBGBVR15_EL1", 0x807C, true, true,  {} },
    1423             :   { "DBGBCR0_EL1", 0x8005, true, true,  {} },
    1424             :   { "DBGBCR1_EL1", 0x800D, true, true,  {} },
    1425             :   { "DBGBCR2_EL1", 0x8015, true, true,  {} },
    1426             :   { "DBGBCR3_EL1", 0x801D, true, true,  {} },
    1427             :   { "DBGBCR4_EL1", 0x8025, true, true,  {} },
    1428             :   { "DBGBCR5_EL1", 0x802D, true, true,  {} },
    1429             :   { "DBGBCR6_EL1", 0x8035, true, true,  {} },
    1430             :   { "DBGBCR7_EL1", 0x803D, true, true,  {} },
    1431             :   { "DBGBCR8_EL1", 0x8045, true, true,  {} },
    1432             :   { "DBGBCR9_EL1", 0x804D, true, true,  {} },
    1433             :   { "DBGBCR10_EL1", 0x8055, true, true,  {} },
    1434             :   { "DBGBCR11_EL1", 0x805D, true, true,  {} },
    1435             :   { "DBGBCR12_EL1", 0x8065, true, true,  {} },
    1436             :   { "DBGBCR13_EL1", 0x806D, true, true,  {} },
    1437             :   { "DBGBCR14_EL1", 0x8075, true, true,  {} },
    1438             :   { "DBGBCR15_EL1", 0x807D, true, true,  {} },
    1439             :   { "DBGWVR0_EL1", 0x8006, true, true,  {} },
    1440             :   { "DBGWVR1_EL1", 0x800E, true, true,  {} },
    1441             :   { "DBGWVR2_EL1", 0x8016, true, true,  {} },
    1442             :   { "DBGWVR3_EL1", 0x801E, true, true,  {} },
    1443             :   { "DBGWVR4_EL1", 0x8026, true, true,  {} },
    1444             :   { "DBGWVR5_EL1", 0x802E, true, true,  {} },
    1445             :   { "DBGWVR6_EL1", 0x8036, true, true,  {} },
    1446             :   { "DBGWVR7_EL1", 0x803E, true, true,  {} },
    1447             :   { "DBGWVR8_EL1", 0x8046, true, true,  {} },
    1448             :   { "DBGWVR9_EL1", 0x804E, true, true,  {} },
    1449             :   { "DBGWVR10_EL1", 0x8056, true, true,  {} },
    1450             :   { "DBGWVR11_EL1", 0x805E, true, true,  {} },
    1451             :   { "DBGWVR12_EL1", 0x8066, true, true,  {} },
    1452             :   { "DBGWVR13_EL1", 0x806E, true, true,  {} },
    1453             :   { "DBGWVR14_EL1", 0x8076, true, true,  {} },
    1454             :   { "DBGWVR15_EL1", 0x807E, true, true,  {} },
    1455             :   { "DBGWCR0_EL1", 0x8007, true, true,  {} },
    1456             :   { "DBGWCR1_EL1", 0x800F, true, true,  {} },
    1457             :   { "DBGWCR2_EL1", 0x8017, true, true,  {} },
    1458             :   { "DBGWCR3_EL1", 0x801F, true, true,  {} },
    1459             :   { "DBGWCR4_EL1", 0x8027, true, true,  {} },
    1460             :   { "DBGWCR5_EL1", 0x802F, true, true,  {} },
    1461             :   { "DBGWCR6_EL1", 0x8037, true, true,  {} },
    1462             :   { "DBGWCR7_EL1", 0x803F, true, true,  {} },
    1463             :   { "DBGWCR8_EL1", 0x8047, true, true,  {} },
    1464             :   { "DBGWCR9_EL1", 0x804F, true, true,  {} },
    1465             :   { "DBGWCR10_EL1", 0x8057, true, true,  {} },
    1466             :   { "DBGWCR11_EL1", 0x805F, true, true,  {} },
    1467             :   { "DBGWCR12_EL1", 0x8067, true, true,  {} },
    1468             :   { "DBGWCR13_EL1", 0x806F, true, true,  {} },
    1469             :   { "DBGWCR14_EL1", 0x8077, true, true,  {} },
    1470             :   { "DBGWCR15_EL1", 0x807F, true, true,  {} },
    1471             :   { "TEEHBR32_EL1", 0x9080, true, true,  {} },
    1472             :   { "OSDLR_EL1", 0x809C, true, true,  {} },
    1473             :   { "DBGPRCR_EL1", 0x80A4, true, true,  {} },
    1474             :   { "DBGCLAIMSET_EL1", 0x83C6, true, true,  {} },
    1475             :   { "DBGCLAIMCLR_EL1", 0x83CE, true, true,  {} },
    1476             :   { "CSSELR_EL1", 0xD000, true, true,  {} },
    1477             :   { "VPIDR_EL2", 0xE000, true, true,  {} },
    1478             :   { "VMPIDR_EL2", 0xE005, true, true,  {} },
    1479             :   { "CPACR_EL1", 0xC082, true, true,  {} },
    1480             :   { "SCTLR_EL1", 0xC080, true, true,  {} },
    1481             :   { "SCTLR_EL2", 0xE080, true, true,  {} },
    1482             :   { "SCTLR_EL3", 0xF080, true, true,  {} },
    1483             :   { "ACTLR_EL1", 0xC081, true, true,  {} },
    1484             :   { "ACTLR_EL2", 0xE081, true, true,  {} },
    1485             :   { "ACTLR_EL3", 0xF081, true, true,  {} },
    1486             :   { "HCR_EL2", 0xE088, true, true,  {} },
    1487             :   { "SCR_EL3", 0xF088, true, true,  {} },
    1488             :   { "MDCR_EL2", 0xE089, true, true,  {} },
    1489             :   { "SDER32_EL3", 0xF089, true, true,  {} },
    1490             :   { "CPTR_EL2", 0xE08A, true, true,  {} },
    1491             :   { "CPTR_EL3", 0xF08A, true, true,  {} },
    1492             :   { "HSTR_EL2", 0xE08B, true, true,  {} },
    1493             :   { "HACR_EL2", 0xE08F, true, true,  {} },
    1494             :   { "MDCR_EL3", 0xF099, true, true,  {} },
    1495             :   { "TTBR0_EL1", 0xC100, true, true,  {} },
    1496             :   { "TTBR0_EL2", 0xE100, true, true,  {} },
    1497             :   { "TTBR0_EL3", 0xF100, true, true,  {} },
    1498             :   { "TTBR1_EL1", 0xC101, true, true,  {} },
    1499             :   { "TCR_EL1", 0xC102, true, true,  {} },
    1500             :   { "TCR_EL2", 0xE102, true, true,  {} },
    1501             :   { "TCR_EL3", 0xF102, true, true,  {} },
    1502             :   { "VTTBR_EL2", 0xE108, true, true,  {} },
    1503             :   { "VTCR_EL2", 0xE10A, true, true,  {} },
    1504             :   { "DACR32_EL2", 0xE180, true, true,  {} },
    1505             :   { "SPSR_EL1", 0xC200, true, true,  {} },
    1506             :   { "SPSR_EL2", 0xE200, true, true,  {} },
    1507             :   { "SPSR_EL3", 0xF200, true, true,  {} },
    1508             :   { "ELR_EL1", 0xC201, true, true,  {} },
    1509             :   { "ELR_EL2", 0xE201, true, true,  {} },
    1510             :   { "ELR_EL3", 0xF201, true, true,  {} },
    1511             :   { "SP_EL0", 0xC208, true, true,  {} },
    1512             :   { "SP_EL1", 0xE208, true, true,  {} },
    1513             :   { "SP_EL2", 0xF208, true, true,  {} },
    1514             :   { "SPSel", 0xC210, true, true,  {} },
    1515             :   { "NZCV", 0xDA10, true, true,  {} },
    1516             :   { "DAIF", 0xDA11, true, true,  {} },
    1517             :   { "CurrentEL", 0xC212, true, true,  {} },
    1518             :   { "SPSR_irq", 0xE218, true, true,  {} },
    1519             :   { "SPSR_abt", 0xE219, true, true,  {} },
    1520             :   { "SPSR_und", 0xE21A, true, true,  {} },
    1521             :   { "SPSR_fiq", 0xE21B, true, true,  {} },
    1522             :   { "FPCR", 0xDA20, true, true,  {} },
    1523             :   { "FPSR", 0xDA21, true, true,  {} },
    1524             :   { "DSPSR_EL0", 0xDA28, true, true,  {} },
    1525             :   { "DLR_EL0", 0xDA29, true, true,  {} },
    1526             :   { "IFSR32_EL2", 0xE281, true, true,  {} },
    1527             :   { "AFSR0_EL1", 0xC288, true, true,  {} },
    1528             :   { "AFSR0_EL2", 0xE288, true, true,  {} },
    1529             :   { "AFSR0_EL3", 0xF288, true, true,  {} },
    1530             :   { "AFSR1_EL1", 0xC289, true, true,  {} },
    1531             :   { "AFSR1_EL2", 0xE289, true, true,  {} },
    1532             :   { "AFSR1_EL3", 0xF289, true, true,  {} },
    1533             :   { "ESR_EL1", 0xC290, true, true,  {} },
    1534             :   { "ESR_EL2", 0xE290, true, true,  {} },
    1535             :   { "ESR_EL3", 0xF290, true, true,  {} },
    1536             :   { "FPEXC32_EL2", 0xE298, true, true,  {} },
    1537             :   { "FAR_EL1", 0xC300, true, true,  {} },
    1538             :   { "FAR_EL2", 0xE300, true, true,  {} },
    1539             :   { "FAR_EL3", 0xF300, true, true,  {} },
    1540             :   { "HPFAR_EL2", 0xE304, true, true,  {} },
    1541             :   { "PAR_EL1", 0xC3A0, true, true,  {} },
    1542             :   { "PMCR_EL0", 0xDCE0, true, true,  {} },
    1543             :   { "PMCNTENSET_EL0", 0xDCE1, true, true,  {} },
    1544             :   { "PMCNTENCLR_EL0", 0xDCE2, true, true,  {} },
    1545             :   { "PMOVSCLR_EL0", 0xDCE3, true, true,  {} },
    1546             :   { "PMSELR_EL0", 0xDCE5, true, true,  {} },
    1547             :   { "PMCCNTR_EL0", 0xDCE8, true, true,  {} },
    1548             :   { "PMXEVTYPER_EL0", 0xDCE9, true, true,  {} },
    1549             :   { "PMXEVCNTR_EL0", 0xDCEA, true, true,  {} },
    1550             :   { "PMUSERENR_EL0", 0xDCF0, true, true,  {} },
    1551             :   { "PMINTENSET_EL1", 0xC4F1, true, true,  {} },
    1552             :   { "PMINTENCLR_EL1", 0xC4F2, true, true,  {} },
    1553             :   { "PMOVSSET_EL0", 0xDCF3, true, true,  {} },
    1554             :   { "MAIR_EL1", 0xC510, true, true,  {} },
    1555             :   { "MAIR_EL2", 0xE510, true, true,  {} },
    1556             :   { "MAIR_EL3", 0xF510, true, true,  {} },
    1557             :   { "AMAIR_EL1", 0xC518, true, true,  {} },
    1558             :   { "AMAIR_EL2", 0xE518, true, true,  {} },
    1559             :   { "AMAIR_EL3", 0xF518, true, true,  {} },
    1560             :   { "VBAR_EL1", 0xC600, true, true,  {} },
    1561             :   { "VBAR_EL2", 0xE600, true, true,  {} },
    1562             :   { "VBAR_EL3", 0xF600, true, true,  {} },
    1563             :   { "RMR_EL1", 0xC602, true, true,  {} },
    1564             :   { "RMR_EL2", 0xE602, true, true,  {} },
    1565             :   { "RMR_EL3", 0xF602, true, true,  {} },
    1566             :   { "CONTEXTIDR_EL1", 0xC681, true, true,  {} },
    1567             :   { "TPIDR_EL0", 0xDE82, true, true,  {} },
    1568             :   { "TPIDR_EL2", 0xE682, true, true,  {} },
    1569             :   { "TPIDR_EL3", 0xF682, true, true,  {} },
    1570             :   { "TPIDRRO_EL0", 0xDE83, true, true,  {} },
    1571             :   { "TPIDR_EL1", 0xC684, true, true,  {} },
    1572             :   { "CNTFRQ_EL0", 0xDF00, true, true,  {} },
    1573             :   { "CNTVOFF_EL2", 0xE703, true, true,  {} },
    1574             :   { "CNTKCTL_EL1", 0xC708, true, true,  {} },
    1575             :   { "CNTHCTL_EL2", 0xE708, true, true,  {} },
    1576             :   { "CNTP_TVAL_EL0", 0xDF10, true, true,  {} },
    1577             :   { "CNTHP_TVAL_EL2", 0xE710, true, true,  {} },
    1578             :   { "CNTPS_TVAL_EL1", 0xFF10, true, true,  {} },
    1579             :   { "CNTP_CTL_EL0", 0xDF11, true, true,  {} },
    1580             :   { "CNTHP_CTL_EL2", 0xE711, true, true,  {} },
    1581             :   { "CNTPS_CTL_EL1", 0xFF11, true, true,  {} },
    1582             :   { "CNTP_CVAL_EL0", 0xDF12, true, true,  {} },
    1583             :   { "CNTHP_CVAL_EL2", 0xE712, true, true,  {} },
    1584             :   { "CNTPS_CVAL_EL1", 0xFF12, true, true,  {} },
    1585             :   { "CNTV_TVAL_EL0", 0xDF18, true, true,  {} },
    1586             :   { "CNTV_CTL_EL0", 0xDF19, true, true,  {} },
    1587             :   { "CNTV_CVAL_EL0", 0xDF1A, true, true,  {} },
    1588             :   { "PMEVCNTR0_EL0", 0xDF40, true, true,  {} },
    1589             :   { "PMEVCNTR1_EL0", 0xDF41, true, true,  {} },
    1590             :   { "PMEVCNTR2_EL0", 0xDF42, true, true,  {} },
    1591             :   { "PMEVCNTR3_EL0", 0xDF43, true, true,  {} },
    1592             :   { "PMEVCNTR4_EL0", 0xDF44, true, true,  {} },
    1593             :   { "PMEVCNTR5_EL0", 0xDF45, true, true,  {} },
    1594             :   { "PMEVCNTR6_EL0", 0xDF46, true, true,  {} },
    1595             :   { "PMEVCNTR7_EL0", 0xDF47, true, true,  {} },
    1596             :   { "PMEVCNTR8_EL0", 0xDF48, true, true,  {} },
    1597             :   { "PMEVCNTR9_EL0", 0xDF49, true, true,  {} },
    1598             :   { "PMEVCNTR10_EL0", 0xDF4A, true, true,  {} },
    1599             :   { "PMEVCNTR11_EL0", 0xDF4B, true, true,  {} },
    1600             :   { "PMEVCNTR12_EL0", 0xDF4C, true, true,  {} },
    1601             :   { "PMEVCNTR13_EL0", 0xDF4D, true, true,  {} },
    1602             :   { "PMEVCNTR14_EL0", 0xDF4E, true, true,  {} },
    1603             :   { "PMEVCNTR15_EL0", 0xDF4F, true, true,  {} },
    1604             :   { "PMEVCNTR16_EL0", 0xDF50, true, true,  {} },
    1605             :   { "PMEVCNTR17_EL0", 0xDF51, true, true,  {} },
    1606             :   { "PMEVCNTR18_EL0", 0xDF52, true, true,  {} },
    1607             :   { "PMEVCNTR19_EL0", 0xDF53, true, true,  {} },
    1608             :   { "PMEVCNTR20_EL0", 0xDF54, true, true,  {} },
    1609             :   { "PMEVCNTR21_EL0", 0xDF55, true, true,  {} },
    1610             :   { "PMEVCNTR22_EL0", 0xDF56, true, true,  {} },
    1611             :   { "PMEVCNTR23_EL0", 0xDF57, true, true,  {} },
    1612             :   { "PMEVCNTR24_EL0", 0xDF58, true, true,  {} },
    1613             :   { "PMEVCNTR25_EL0", 0xDF59, true, true,  {} },
    1614             :   { "PMEVCNTR26_EL0", 0xDF5A, true, true,  {} },
    1615             :   { "PMEVCNTR27_EL0", 0xDF5B, true, true,  {} },
    1616             :   { "PMEVCNTR28_EL0", 0xDF5C, true, true,  {} },
    1617             :   { "PMEVCNTR29_EL0", 0xDF5D, true, true,  {} },
    1618             :   { "PMEVCNTR30_EL0", 0xDF5E, true, true,  {} },
    1619             :   { "PMCCFILTR_EL0", 0xDF7F, true, true,  {} },
    1620             :   { "PMEVTYPER0_EL0", 0xDF60, true, true,  {} },
    1621             :   { "PMEVTYPER1_EL0", 0xDF61, true, true,  {} },
    1622             :   { "PMEVTYPER2_EL0", 0xDF62, true, true,  {} },
    1623             :   { "PMEVTYPER3_EL0", 0xDF63, true, true,  {} },
    1624             :   { "PMEVTYPER4_EL0", 0xDF64, true, true,  {} },
    1625             :   { "PMEVTYPER5_EL0", 0xDF65, true, true,  {} },
    1626             :   { "PMEVTYPER6_EL0", 0xDF66, true, true,  {} },
    1627             :   { "PMEVTYPER7_EL0", 0xDF67, true, true,  {} },
    1628             :   { "PMEVTYPER8_EL0", 0xDF68, true, true,  {} },
    1629             :   { "PMEVTYPER9_EL0", 0xDF69, true, true,  {} },
    1630             :   { "PMEVTYPER10_EL0", 0xDF6A, true, true,  {} },
    1631             :   { "PMEVTYPER11_EL0", 0xDF6B, true, true,  {} },
    1632             :   { "PMEVTYPER12_EL0", 0xDF6C, true, true,  {} },
    1633             :   { "PMEVTYPER13_EL0", 0xDF6D, true, true,  {} },
    1634             :   { "PMEVTYPER14_EL0", 0xDF6E, true, true,  {} },
    1635             :   { "PMEVTYPER15_EL0", 0xDF6F, true, true,  {} },
    1636             :   { "PMEVTYPER16_EL0", 0xDF70, true, true,  {} },
    1637             :   { "PMEVTYPER17_EL0", 0xDF71, true, true,  {} },
    1638             :   { "PMEVTYPER18_EL0", 0xDF72, true, true,  {} },
    1639             :   { "PMEVTYPER19_EL0", 0xDF73, true, true,  {} },
    1640             :   { "PMEVTYPER20_EL0", 0xDF74, true, true,  {} },
    1641             :   { "PMEVTYPER21_EL0", 0xDF75, true, true,  {} },
    1642             :   { "PMEVTYPER22_EL0", 0xDF76, true, true,  {} },
    1643             :   { "PMEVTYPER23_EL0", 0xDF77, true, true,  {} },
    1644             :   { "PMEVTYPER24_EL0", 0xDF78, true, true,  {} },
    1645             :   { "PMEVTYPER25_EL0", 0xDF79, true, true,  {} },
    1646             :   { "PMEVTYPER26_EL0", 0xDF7A, true, true,  {} },
    1647             :   { "PMEVTYPER27_EL0", 0xDF7B, true, true,  {} },
    1648             :   { "PMEVTYPER28_EL0", 0xDF7C, true, true,  {} },
    1649             :   { "PMEVTYPER29_EL0", 0xDF7D, true, true,  {} },
    1650             :   { "PMEVTYPER30_EL0", 0xDF7E, true, true,  {} },
    1651             :   { "TRCPRGCTLR", 0x8808, true, true,  {} },
    1652             :   { "TRCPROCSELR", 0x8810, true, true,  {} },
    1653             :   { "TRCCONFIGR", 0x8820, true, true,  {} },
    1654             :   { "TRCAUXCTLR", 0x8830, true, true,  {} },
    1655             :   { "TRCEVENTCTL0R", 0x8840, true, true,  {} },
    1656             :   { "TRCEVENTCTL1R", 0x8848, true, true,  {} },
    1657             :   { "TRCSTALLCTLR", 0x8858, true, true,  {} },
    1658             :   { "TRCTSCTLR", 0x8860, true, true,  {} },
    1659             :   { "TRCSYNCPR", 0x8868, true, true,  {} },
    1660             :   { "TRCCCCTLR", 0x8870, true, true,  {} },
    1661             :   { "TRCBBCTLR", 0x8878, true, true,  {} },
    1662             :   { "TRCTRACEIDR", 0x8801, true, true,  {} },
    1663             :   { "TRCQCTLR", 0x8809, true, true,  {} },
    1664             :   { "TRCVICTLR", 0x8802, true, true,  {} },
    1665             :   { "TRCVIIECTLR", 0x880A, true, true,  {} },
    1666             :   { "TRCVISSCTLR", 0x8812, true, true,  {} },
    1667             :   { "TRCVIPCSSCTLR", 0x881A, true, true,  {} },
    1668             :   { "TRCVDCTLR", 0x8842, true, true,  {} },
    1669             :   { "TRCVDSACCTLR", 0x884A, true, true,  {} },
    1670             :   { "TRCVDARCCTLR", 0x8852, true, true,  {} },
    1671             :   { "TRCSEQEVR0", 0x8804, true, true,  {} },
    1672             :   { "TRCSEQEVR1", 0x880C, true, true,  {} },
    1673             :   { "TRCSEQEVR2", 0x8814, true, true,  {} },
    1674             :   { "TRCSEQRSTEVR", 0x8834, true, true,  {} },
    1675             :   { "TRCSEQSTR", 0x883C, true, true,  {} },
    1676             :   { "TRCEXTINSELR", 0x8844, true, true,  {} },
    1677             :   { "TRCCNTRLDVR0", 0x8805, true, true,  {} },
    1678             :   { "TRCCNTRLDVR1", 0x880D, true, true,  {} },
    1679             :   { "TRCCNTRLDVR2", 0x8815, true, true,  {} },
    1680             :   { "TRCCNTRLDVR3", 0x881D, true, true,  {} },
    1681             :   { "TRCCNTCTLR0", 0x8825, true, true,  {} },
    1682             :   { "TRCCNTCTLR1", 0x882D, true, true,  {} },
    1683             :   { "TRCCNTCTLR2", 0x8835, true, true,  {} },
    1684             :   { "TRCCNTCTLR3", 0x883D, true, true,  {} },
    1685             :   { "TRCCNTVR0", 0x8845, true, true,  {} },
    1686             :   { "TRCCNTVR1", 0x884D, true, true,  {} },
    1687             :   { "TRCCNTVR2", 0x8855, true, true,  {} },
    1688             :   { "TRCCNTVR3", 0x885D, true, true,  {} },
    1689             :   { "TRCIMSPEC0", 0x8807, true, true,  {} },
    1690             :   { "TRCIMSPEC1", 0x880F, true, true,  {} },
    1691             :   { "TRCIMSPEC2", 0x8817, true, true,  {} },
    1692             :   { "TRCIMSPEC3", 0x881F, true, true,  {} },
    1693             :   { "TRCIMSPEC4", 0x8827, true, true,  {} },
    1694             :   { "TRCIMSPEC5", 0x882F, true, true,  {} },
    1695             :   { "TRCIMSPEC6", 0x8837, true, true,  {} },
    1696             :   { "TRCIMSPEC7", 0x883F, true, true,  {} },
    1697             :   { "TRCRSCTLR2", 0x8890, true, true,  {} },
    1698             :   { "TRCRSCTLR3", 0x8898, true, true,  {} },
    1699             :   { "TRCRSCTLR4", 0x88A0, true, true,  {} },
    1700             :   { "TRCRSCTLR5", 0x88A8, true, true,  {} },
    1701             :   { "TRCRSCTLR6", 0x88B0, true, true,  {} },
    1702             :   { "TRCRSCTLR7", 0x88B8, true, true,  {} },
    1703             :   { "TRCRSCTLR8", 0x88C0, true, true,  {} },
    1704             :   { "TRCRSCTLR9", 0x88C8, true, true,  {} },
    1705             :   { "TRCRSCTLR10", 0x88D0, true, true,  {} },
    1706             :   { "TRCRSCTLR11", 0x88D8, true, true,  {} },
    1707             :   { "TRCRSCTLR12", 0x88E0, true, true,  {} },
    1708             :   { "TRCRSCTLR13", 0x88E8, true, true,  {} },
    1709             :   { "TRCRSCTLR14", 0x88F0, true, true,  {} },
    1710             :   { "TRCRSCTLR15", 0x88F8, true, true,  {} },
    1711             :   { "TRCRSCTLR16", 0x8881, true, true,  {} },
    1712             :   { "TRCRSCTLR17", 0x8889, true, true,  {} },
    1713             :   { "TRCRSCTLR18", 0x8891, true, true,  {} },
    1714             :   { "TRCRSCTLR19", 0x8899, true, true,  {} },
    1715             :   { "TRCRSCTLR20", 0x88A1, true, true,  {} },
    1716             :   { "TRCRSCTLR21", 0x88A9, true, true,  {} },
    1717             :   { "TRCRSCTLR22", 0x88B1, true, true,  {} },
    1718             :   { "TRCRSCTLR23", 0x88B9, true, true,  {} },
    1719             :   { "TRCRSCTLR24", 0x88C1, true, true,  {} },
    1720             :   { "TRCRSCTLR25", 0x88C9, true, true,  {} },
    1721             :   { "TRCRSCTLR26", 0x88D1, true, true,  {} },
    1722             :   { "TRCRSCTLR27", 0x88D9, true, true,  {} },
    1723             :   { "TRCRSCTLR28", 0x88E1, true, true,  {} },
    1724             :   { "TRCRSCTLR29", 0x88E9, true, true,  {} },
    1725             :   { "TRCRSCTLR30", 0x88F1, true, true,  {} },
    1726             :   { "TRCRSCTLR31", 0x88F9, true, true,  {} },
    1727             :   { "TRCSSCCR0", 0x8882, true, true,  {} },
    1728             :   { "TRCSSCCR1", 0x888A, true, true,  {} },
    1729             :   { "TRCSSCCR2", 0x8892, true, true,  {} },
    1730             :   { "TRCSSCCR3", 0x889A, true, true,  {} },
    1731             :   { "TRCSSCCR4", 0x88A2, true, true,  {} },
    1732             :   { "TRCSSCCR5", 0x88AA, true, true,  {} },
    1733             :   { "TRCSSCCR6", 0x88B2, true, true,  {} },
    1734             :   { "TRCSSCCR7", 0x88BA, true, true,  {} },
    1735             :   { "TRCSSCSR0", 0x88C2, true, true,  {} },
    1736             :   { "TRCSSCSR1", 0x88CA, true, true,  {} },
    1737             :   { "TRCSSCSR2", 0x88D2, true, true,  {} },
    1738             :   { "TRCSSCSR3", 0x88DA, true, true,  {} },
    1739             :   { "TRCSSCSR4", 0x88E2, true, true,  {} },
    1740             :   { "TRCSSCSR5", 0x88EA, true, true,  {} },
    1741             :   { "TRCSSCSR6", 0x88F2, true, true,  {} },
    1742             :   { "TRCSSCSR7", 0x88FA, true, true,  {} },
    1743             :   { "TRCSSPCICR0", 0x8883, true, true,  {} },
    1744             :   { "TRCSSPCICR1", 0x888B, true, true,  {} },
    1745             :   { "TRCSSPCICR2", 0x8893, true, true,  {} },
    1746             :   { "TRCSSPCICR3", 0x889B, true, true,  {} },
    1747             :   { "TRCSSPCICR4", 0x88A3, true, true,  {} },
    1748             :   { "TRCSSPCICR5", 0x88AB, true, true,  {} },
    1749             :   { "TRCSSPCICR6", 0x88B3, true, true,  {} },
    1750             :   { "TRCSSPCICR7", 0x88BB, true, true,  {} },
    1751             :   { "TRCPDCR", 0x88A4, true, true,  {} },
    1752             :   { "TRCACVR0", 0x8900, true, true,  {} },
    1753             :   { "TRCACVR1", 0x8910, true, true,  {} },
    1754             :   { "TRCACVR2", 0x8920, true, true,  {} },
    1755             :   { "TRCACVR3", 0x8930, true, true,  {} },
    1756             :   { "TRCACVR4", 0x8940, true, true,  {} },
    1757             :   { "TRCACVR5", 0x8950, true, true,  {} },
    1758             :   { "TRCACVR6", 0x8960, true, true,  {} },
    1759             :   { "TRCACVR7", 0x8970, true, true,  {} },
    1760             :   { "TRCACVR8", 0x8901, true, true,  {} },
    1761             :   { "TRCACVR9", 0x8911, true, true,  {} },
    1762             :   { "TRCACVR10", 0x8921, true, true,  {} },
    1763             :   { "TRCACVR11", 0x8931, true, true,  {} },
    1764             :   { "TRCACVR12", 0x8941, true, true,  {} },
    1765             :   { "TRCACVR13", 0x8951, true, true,  {} },
    1766             :   { "TRCACVR14", 0x8961, true, true,  {} },
    1767             :   { "TRCACVR15", 0x8971, true, true,  {} },
    1768             :   { "TRCACATR0", 0x8902, true, true,  {} },
    1769             :   { "TRCACATR1", 0x8912, true, true,  {} },
    1770             :   { "TRCACATR2", 0x8922, true, true,  {} },
    1771             :   { "TRCACATR3", 0x8932, true, true,  {} },
    1772             :   { "TRCACATR4", 0x8942, true, true,  {} },
    1773             :   { "TRCACATR5", 0x8952, true, true,  {} },
    1774             :   { "TRCACATR6", 0x8962, true, true,  {} },
    1775             :   { "TRCACATR7", 0x8972, true, true,  {} },
    1776             :   { "TRCACATR8", 0x8903, true, true,  {} },
    1777             :   { "TRCACATR9", 0x8913, true, true,  {} },
    1778             :   { "TRCACATR10", 0x8923, true, true,  {} },
    1779             :   { "TRCACATR11", 0x8933, true, true,  {} },
    1780             :   { "TRCACATR12", 0x8943, true, true,  {} },
    1781             :   { "TRCACATR13", 0x8953, true, true,  {} },
    1782             :   { "TRCACATR14", 0x8963, true, true,  {} },
    1783             :   { "TRCACATR15", 0x8973, true, true,  {} },
    1784             :   { "TRCDVCVR0", 0x8904, true, true,  {} },
    1785             :   { "TRCDVCVR1", 0x8924, true, true,  {} },
    1786             :   { "TRCDVCVR2", 0x8944, true, true,  {} },
    1787             :   { "TRCDVCVR3", 0x8964, true, true,  {} },
    1788             :   { "TRCDVCVR4", 0x8905, true, true,  {} },
    1789             :   { "TRCDVCVR5", 0x8925, true, true,  {} },
    1790             :   { "TRCDVCVR6", 0x8945, true, true,  {} },
    1791             :   { "TRCDVCVR7", 0x8965, true, true,  {} },
    1792             :   { "TRCDVCMR0", 0x8906, true, true,  {} },
    1793             :   { "TRCDVCMR1", 0x8926, true, true,  {} },
    1794             :   { "TRCDVCMR2", 0x8946, true, true,  {} },
    1795             :   { "TRCDVCMR3", 0x8966, true, true,  {} },
    1796             :   { "TRCDVCMR4", 0x8907, true, true,  {} },
    1797             :   { "TRCDVCMR5", 0x8927, true, true,  {} },
    1798             :   { "TRCDVCMR6", 0x8947, true, true,  {} },
    1799             :   { "TRCDVCMR7", 0x8967, true, true,  {} },
    1800             :   { "TRCCIDCVR0", 0x8980, true, true,  {} },
    1801             :   { "TRCCIDCVR1", 0x8990, true, true,  {} },
    1802             :   { "TRCCIDCVR2", 0x89A0, true, true,  {} },
    1803             :   { "TRCCIDCVR3", 0x89B0, true, true,  {} },
    1804             :   { "TRCCIDCVR4", 0x89C0, true, true,  {} },
    1805             :   { "TRCCIDCVR5", 0x89D0, true, true,  {} },
    1806             :   { "TRCCIDCVR6", 0x89E0, true, true,  {} },
    1807             :   { "TRCCIDCVR7", 0x89F0, true, true,  {} },
    1808             :   { "TRCVMIDCVR0", 0x8981, true, true,  {} },
    1809             :   { "TRCVMIDCVR1", 0x8991, true, true,  {} },
    1810             :   { "TRCVMIDCVR2", 0x89A1, true, true,  {} },
    1811             :   { "TRCVMIDCVR3", 0x89B1, true, true,  {} },
    1812             :   { "TRCVMIDCVR4", 0x89C1, true, true,  {} },
    1813             :   { "TRCVMIDCVR5", 0x89D1, true, true,  {} },
    1814             :   { "TRCVMIDCVR6", 0x89E1, true, true,  {} },
    1815             :   { "TRCVMIDCVR7", 0x89F1, true, true,  {} },
    1816             :   { "TRCCIDCCTLR0", 0x8982, true, true,  {} },
    1817             :   { "TRCCIDCCTLR1", 0x898A, true, true,  {} },
    1818             :   { "TRCVMIDCCTLR0", 0x8992, true, true,  {} },
    1819             :   { "TRCVMIDCCTLR1", 0x899A, true, true,  {} },
    1820             :   { "TRCITCTRL", 0x8B84, true, true,  {} },
    1821             :   { "TRCCLAIMSET", 0x8BC6, true, true,  {} },
    1822             :   { "TRCCLAIMCLR", 0x8BCE, true, true,  {} },
    1823             :   { "ICC_BPR1_EL1", 0xC663, true, true,  {} },
    1824             :   { "ICC_BPR0_EL1", 0xC643, true, true,  {} },
    1825             :   { "ICC_PMR_EL1", 0xC230, true, true,  {} },
    1826             :   { "ICC_CTLR_EL1", 0xC664, true, true,  {} },
    1827             :   { "ICC_CTLR_EL3", 0xF664, true, true,  {} },
    1828             :   { "ICC_SRE_EL1", 0xC665, true, true,  {} },
    1829             :   { "ICC_SRE_EL2", 0xE64D, true, true,  {} },
    1830             :   { "ICC_SRE_EL3", 0xF665, true, true,  {} },
    1831             :   { "ICC_IGRPEN0_EL1", 0xC666, true, true,  {} },
    1832             :   { "ICC_IGRPEN1_EL1", 0xC667, true, true,  {} },
    1833             :   { "ICC_IGRPEN1_EL3", 0xF667, true, true,  {} },
    1834             :   { "ICC_SEIEN_EL1", 0xC668, true, true,  {} },
    1835             :   { "ICC_AP0R0_EL1", 0xC644, true, true,  {} },
    1836             :   { "ICC_AP0R1_EL1", 0xC645, true, true,  {} },
    1837             :   { "ICC_AP0R2_EL1", 0xC646, true, true,  {} },
    1838             :   { "ICC_AP0R3_EL1", 0xC647, true, true,  {} },
    1839             :   { "ICC_AP1R0_EL1", 0xC648, true, true,  {} },
    1840             :   { "ICC_AP1R1_EL1", 0xC649, true, true,  {} },
    1841             :   { "ICC_AP1R2_EL1", 0xC64A, true, true,  {} },
    1842             :   { "ICC_AP1R3_EL1", 0xC64B, true, true,  {} },
    1843             :   { "ICH_AP0R0_EL2", 0xE640, true, true,  {} },
    1844             :   { "ICH_AP0R1_EL2", 0xE641, true, true,  {} },
    1845             :   { "ICH_AP0R2_EL2", 0xE642, true, true,  {} },
    1846             :   { "ICH_AP0R3_EL2", 0xE643, true, true,  {} },
    1847             :   { "ICH_AP1R0_EL2", 0xE648, true, true,  {} },
    1848             :   { "ICH_AP1R1_EL2", 0xE649, true, true,  {} },
    1849             :   { "ICH_AP1R2_EL2", 0xE64A, true, true,  {} },
    1850             :   { "ICH_AP1R3_EL2", 0xE64B, true, true,  {} },
    1851             :   { "ICH_HCR_EL2", 0xE658, true, true,  {} },
    1852             :   { "ICH_MISR_EL2", 0xE65A, true, true,  {} },
    1853             :   { "ICH_VMCR_EL2", 0xE65F, true, true,  {} },
    1854             :   { "ICH_VSEIR_EL2", 0xE64C, true, true,  {} },
    1855             :   { "ICH_LR0_EL2", 0xE660, true, true,  {} },
    1856             :   { "ICH_LR1_EL2", 0xE661, true, true,  {} },
    1857             :   { "ICH_LR2_EL2", 0xE662, true, true,  {} },
    1858             :   { "ICH_LR3_EL2", 0xE663, true, true,  {} },
    1859             :   { "ICH_LR4_EL2", 0xE664, true, true,  {} },
    1860             :   { "ICH_LR5_EL2", 0xE665, true, true,  {} },
    1861             :   { "ICH_LR6_EL2", 0xE666, true, true,  {} },
    1862             :   { "ICH_LR7_EL2", 0xE667, true, true,  {} },
    1863             :   { "ICH_LR8_EL2", 0xE668, true, true,  {} },
    1864             :   { "ICH_LR9_EL2", 0xE669, true, true,  {} },
    1865             :   { "ICH_LR10_EL2", 0xE66A, true, true,  {} },
    1866             :   { "ICH_LR11_EL2", 0xE66B, true, true,  {} },
    1867             :   { "ICH_LR12_EL2", 0xE66C, true, true,  {} },
    1868             :   { "ICH_LR13_EL2", 0xE66D, true, true,  {} },
    1869             :   { "ICH_LR14_EL2", 0xE66E, true, true,  {} },
    1870             :   { "ICH_LR15_EL2", 0xE66F, true, true,  {} },
    1871             :   { "PAN", 0xC213, true, true,  {AArch64::HasV8_1aOps} },
    1872             :   { "LORSA_EL1", 0xC520, true, true,  {AArch64::HasV8_1aOps} },
    1873             :   { "LOREA_EL1", 0xC521, true, true,  {AArch64::HasV8_1aOps} },
    1874             :   { "LORN_EL1", 0xC522, true, true,  {AArch64::HasV8_1aOps} },
    1875             :   { "LORC_EL1", 0xC523, true, true,  {AArch64::HasV8_1aOps} },
    1876             :   { "TTBR1_EL2", 0xE101, true, true,  {AArch64::HasV8_1aOps} },
    1877             :   { "CONTEXTIDR_EL2", 0xE681, true, true,  {AArch64::HasV8_1aOps} },
    1878             :   { "CNTHV_TVAL_EL2", 0xE718, true, true,  {AArch64::HasV8_1aOps} },
    1879             :   { "CNTHV_CVAL_EL2", 0xE71A, true, true,  {AArch64::HasV8_1aOps} },
    1880             :   { "CNTHV_CTL_EL2", 0xE719, true, true,  {AArch64::HasV8_1aOps} },
    1881             :   { "SCTLR_EL12", 0xE880, true, true,  {AArch64::HasV8_1aOps} },
    1882             :   { "CPACR_EL12", 0xE882, true, true,  {AArch64::HasV8_1aOps} },
    1883             :   { "TTBR0_EL12", 0xE900, true, true,  {AArch64::HasV8_1aOps} },
    1884             :   { "TTBR1_EL12", 0xE901, true, true,  {AArch64::HasV8_1aOps} },
    1885             :   { "TCR_EL12", 0xE902, true, true,  {AArch64::HasV8_1aOps} },
    1886             :   { "AFSR0_EL12", 0xEA88, true, true,  {AArch64::HasV8_1aOps} },
    1887             :   { "AFSR1_EL12", 0xEA89, true, true,  {AArch64::HasV8_1aOps} },
    1888             :   { "ESR_EL12", 0xEA90, true, true,  {AArch64::HasV8_1aOps} },
    1889             :   { "FAR_EL12", 0xEB00, true, true,  {AArch64::HasV8_1aOps} },
    1890             :   { "MAIR_EL12", 0xED10, true, true,  {AArch64::HasV8_1aOps} },
    1891             :   { "AMAIR_EL12", 0xED18, true, true,  {AArch64::HasV8_1aOps} },
    1892             :   { "VBAR_EL12", 0xEE00, true, true,  {AArch64::HasV8_1aOps} },
    1893             :   { "CONTEXTIDR_EL12", 0xEE81, true, true,  {AArch64::HasV8_1aOps} },
    1894             :   { "CNTKCTL_EL12", 0xEF08, true, true,  {AArch64::HasV8_1aOps} },
    1895             :   { "CNTP_TVAL_EL02", 0xEF10, true, true,  {AArch64::HasV8_1aOps} },
    1896             :   { "CNTP_CTL_EL02", 0xEF11, true, true,  {AArch64::HasV8_1aOps} },
    1897             :   { "CNTP_CVAL_EL02", 0xEF12, true, true,  {AArch64::HasV8_1aOps} },
    1898             :   { "CNTV_TVAL_EL02", 0xEF18, true, true,  {AArch64::HasV8_1aOps} },
    1899             :   { "CNTV_CTL_EL02", 0xEF19, true, true,  {AArch64::HasV8_1aOps} },
    1900             :   { "CNTV_CVAL_EL02", 0xEF1A, true, true,  {AArch64::HasV8_1aOps} },
    1901             :   { "SPSR_EL12", 0xEA00, true, true,  {AArch64::HasV8_1aOps} },
    1902             :   { "ELR_EL12", 0xEA01, true, true,  {AArch64::HasV8_1aOps} },
    1903             :   { "UAO", 0xC214, true, true,  {AArch64::HasV8_2aOps} },
    1904             :   { "PMBLIMITR_EL1", 0xC4D0, true, true,  {AArch64::FeatureSPE} },
    1905             :   { "PMBPTR_EL1", 0xC4D1, true, true,  {AArch64::FeatureSPE} },
    1906             :   { "PMBSR_EL1", 0xC4D3, true, true,  {AArch64::FeatureSPE} },
    1907             :   { "PMBIDR_EL1", 0xC4D7, true, true,  {AArch64::FeatureSPE} },
    1908             :   { "PMSCR_EL2", 0xE4C8, true, true,  {AArch64::FeatureSPE} },
    1909             :   { "PMSCR_EL12", 0xECC8, true, true,  {AArch64::FeatureSPE} },
    1910             :   { "PMSCR_EL1", 0xC4C8, true, true,  {AArch64::FeatureSPE} },
    1911             :   { "PMSICR_EL1", 0xC4CA, true, true,  {AArch64::FeatureSPE} },
    1912             :   { "PMSIRR_EL1", 0xC4CB, true, true,  {AArch64::FeatureSPE} },
    1913             :   { "PMSFCR_EL1", 0xC4CC, true, true,  {AArch64::FeatureSPE} },
    1914             :   { "PMSEVFR_EL1", 0xC4CD, true, true,  {AArch64::FeatureSPE} },
    1915             :   { "PMSLATFR_EL1", 0xC4CE, true, true,  {AArch64::FeatureSPE} },
    1916             :   { "PMSIDR_EL1", 0xC4CF, true, true,  {AArch64::FeatureSPE} },
    1917             :   { "ERRSELR_EL1", 0xC299, true, true,  {AArch64::FeatureRAS} },
    1918             :   { "ERXCTLR_EL1", 0xC2A1, true, true,  {AArch64::FeatureRAS} },
    1919             :   { "ERXSTATUS_EL1", 0xC2A2, true, true,  {AArch64::FeatureRAS} },
    1920             :   { "ERXADDR_EL1", 0xC2A3, true, true,  {AArch64::FeatureRAS} },
    1921             :   { "ERXMISC0_EL1", 0xC2A8, true, true,  {AArch64::FeatureRAS} },
    1922             :   { "ERXMISC1_EL1", 0xC2A9, true, true,  {AArch64::FeatureRAS} },
    1923             :   { "DISR_EL1", 0xC609, true, true,  {AArch64::FeatureRAS} },
    1924             :   { "VDISR_EL2", 0xE609, true, true,  {AArch64::FeatureRAS} },
    1925             :   { "VSESR_EL2", 0xE293, true, true,  {AArch64::FeatureRAS} },
    1926             :   { "APIAKeyLo_EL1", 0xC108, true, true,  {AArch64::HasV8_3aOps} },
    1927             :   { "APIAKeyHi_EL1", 0xC109, true, true,  {AArch64::HasV8_3aOps} },
    1928             :   { "APIBKeyLo_EL1", 0xC10A, true, true,  {AArch64::HasV8_3aOps} },
    1929             :   { "APIBKeyHi_EL1", 0xC10B, true, true,  {AArch64::HasV8_3aOps} },
    1930             :   { "APDAKeyLo_EL1", 0xC110, true, true,  {AArch64::HasV8_3aOps} },
    1931             :   { "APDAKeyHi_EL1", 0xC111, true, true,  {AArch64::HasV8_3aOps} },
    1932             :   { "APDBKeyLo_EL1", 0xC112, true, true,  {AArch64::HasV8_3aOps} },
    1933             :   { "APDBKeyHi_EL1", 0xC113, true, true,  {AArch64::HasV8_3aOps} },
    1934             :   { "APGAKeyLo_EL1", 0xC118, true, true,  {AArch64::HasV8_3aOps} },
    1935             :   { "APGAKeyHi_EL1", 0xC119, true, true,  {AArch64::HasV8_3aOps} },
    1936             :   { "CPM_IOACC_CTL_EL3", 0xFF90, true, true,  {AArch64::ProcCyclone} },
    1937       72306 : };
    1938             : 
    1939             : const std::pair<const char *, int> SysRegsByName[] = {
    1940             :   { "ACTLR_EL1", 193 },
    1941             :   { "ACTLR_EL2", 194 },
    1942             :   { "ACTLR_EL3", 195 },
    1943             :   { "AFSR0_EL1", 237 },
    1944             :   { "AFSR0_EL12", 596 },
    1945             :   { "AFSR0_EL2", 238 },
    1946             :   { "AFSR0_EL3", 239 },
    1947             :   { "AFSR1_EL1", 240 },
    1948             :   { "AFSR1_EL12", 597 },
    1949             :   { "AFSR1_EL2", 241 },
    1950             :   { "AFSR1_EL3", 242 },
    1951             :   { "AIDR_EL1", 13 },
    1952             :   { "AMAIR_EL1", 267 },
    1953             :   { "AMAIR_EL12", 601 },
    1954             :   { "AMAIR_EL2", 268 },
    1955             :   { "AMAIR_EL3", 269 },
    1956             :   { "APDAKEYHI_EL1", 641 },
    1957             :   { "APDAKEYLO_EL1", 640 },
    1958             :   { "APDBKEYHI_EL1", 643 },
    1959             :   { "APDBKEYLO_EL1", 642 },
    1960             :   { "APGAKEYHI_EL1", 645 },
    1961             :   { "APGAKEYLO_EL1", 644 },
    1962             :   { "APIAKEYHI_EL1", 637 },
    1963             :   { "APIAKEYLO_EL1", 636 },
    1964             :   { "APIBKEYHI_EL1", 639 },
    1965             :   { "APIBKEYLO_EL1", 638 },
    1966             :   { "CCSIDR_EL1", 8 },
    1967             :   { "CLIDR_EL1", 9 },
    1968             :   { "CNTFRQ_EL0", 282 },
    1969             :   { "CNTHCTL_EL2", 285 },
    1970             :   { "CNTHP_CTL_EL2", 290 },
    1971             :   { "CNTHP_CVAL_EL2", 293 },
    1972             :   { "CNTHP_TVAL_EL2", 287 },
    1973             :   { "CNTHV_CTL_EL2", 590 },
    1974             :   { "CNTHV_CVAL_EL2", 589 },
    1975             :   { "CNTHV_TVAL_EL2", 588 },
    1976             :   { "CNTKCTL_EL1", 284 },
    1977             :   { "CNTKCTL_EL12", 604 },
    1978             :   { "CNTPCT_EL0", 48 },
    1979             :   { "CNTPS_CTL_EL1", 291 },
    1980             :   { "CNTPS_CVAL_EL1", 294 },
    1981             :   { "CNTPS_TVAL_EL1", 288 },
    1982             :   { "CNTP_CTL_EL0", 289 },
    1983             :   { "CNTP_CTL_EL02", 606 },
    1984             :   { "CNTP_CVAL_EL0", 292 },
    1985             :   { "CNTP_CVAL_EL02", 607 },
    1986             :   { "CNTP_TVAL_EL0", 286 },
    1987             :   { "CNTP_TVAL_EL02", 605 },
    1988             :   { "CNTVCT_EL0", 49 },
    1989             :   { "CNTVOFF_EL2", 283 },
    1990             :   { "CNTV_CTL_EL0", 296 },
    1991             :   { "CNTV_CTL_EL02", 609 },
    1992             :   { "CNTV_CVAL_EL0", 297 },
    1993             :   { "CNTV_CVAL_EL02", 610 },
    1994             :   { "CNTV_TVAL_EL0", 295 },
    1995             :   { "CNTV_TVAL_EL02", 608 },
    1996             :   { "CONTEXTIDR_EL1", 276 },
    1997             :   { "CONTEXTIDR_EL12", 603 },
    1998             :   { "CONTEXTIDR_EL2", 587 },
    1999             :   { "CPACR_EL1", 189 },
    2000             :   { "CPACR_EL12", 592 },
    2001             :   { "CPM_IOACC_CTL_EL3", 646 },
    2002             :   { "CPTR_EL2", 200 },
    2003             :   { "CPTR_EL3", 201 },
    2004             :   { "CSSELR_EL1", 186 },
    2005             :   { "CTR_EL0", 10 },
    2006             :   { "CURRENTEL", 227 },
    2007             :   { "DACR32_EL2", 214 },
    2008             :   { "DAIF", 226 },
    2009             :   { "DBGAUTHSTATUS_EL1", 4 },
    2010             :   { "DBGBCR0_EL1", 133 },
    2011             :   { "DBGBCR10_EL1", 143 },
    2012             :   { "DBGBCR11_EL1", 144 },
    2013             :   { "DBGBCR12_EL1", 145 },
    2014             :   { "DBGBCR13_EL1", 146 },
    2015             :   { "DBGBCR14_EL1", 147 },
    2016             :   { "DBGBCR15_EL1", 148 },
    2017             :   { "DBGBCR1_EL1", 134 },
    2018             :   { "DBGBCR2_EL1", 135 },
    2019             :   { "DBGBCR3_EL1", 136 },
    2020             :   { "DBGBCR4_EL1", 137 },
    2021             :   { "DBGBCR5_EL1", 138 },
    2022             :   { "DBGBCR6_EL1", 139 },
    2023             :   { "DBGBCR7_EL1", 140 },
    2024             :   { "DBGBCR8_EL1", 141 },
    2025             :   { "DBGBCR9_EL1", 142 },
    2026             :   { "DBGBVR0_EL1", 117 },
    2027             :   { "DBGBVR10_EL1", 127 },
    2028             :   { "DBGBVR11_EL1", 128 },
    2029             :   { "DBGBVR12_EL1", 129 },
    2030             :   { "DBGBVR13_EL1", 130 },
    2031             :   { "DBGBVR14_EL1", 131 },
    2032             :   { "DBGBVR15_EL1", 132 },
    2033             :   { "DBGBVR1_EL1", 118 },
    2034             :   { "DBGBVR2_EL1", 119 },
    2035             :   { "DBGBVR3_EL1", 120 },
    2036             :   { "DBGBVR4_EL1", 121 },
    2037             :   { "DBGBVR5_EL1", 122 },
    2038             :   { "DBGBVR6_EL1", 123 },
    2039             :   { "DBGBVR7_EL1", 124 },
    2040             :   { "DBGBVR8_EL1", 125 },
    2041             :   { "DBGBVR9_EL1", 126 },
    2042             :   { "DBGCLAIMCLR_EL1", 185 },
    2043             :   { "DBGCLAIMSET_EL1", 184 },
    2044             :   { "DBGDTRRX_EL0", 1 },
    2045             :   { "DBGDTRTX_EL0", 98 },
    2046             :   { "DBGDTR_EL0", 114 },
    2047             :   { "DBGPRCR_EL1", 183 },
    2048             :   { "DBGVCR32_EL2", 116 },
    2049             :   { "DBGWCR0_EL1", 165 },
    2050             :   { "DBGWCR10_EL1", 175 },
    2051             :   { "DBGWCR11_EL1", 176 },
    2052             :   { "DBGWCR12_EL1", 177 },
    2053             :   { "DBGWCR13_EL1", 178 },
    2054             :   { "DBGWCR14_EL1", 179 },
    2055             :   { "DBGWCR15_EL1", 180 },
    2056             :   { "DBGWCR1_EL1", 166 },
    2057             :   { "DBGWCR2_EL1", 167 },
    2058             :   { "DBGWCR3_EL1", 168 },
    2059             :   { "DBGWCR4_EL1", 169 },
    2060             :   { "DBGWCR5_EL1", 170 },
    2061             :   { "DBGWCR6_EL1", 171 },
    2062             :   { "DBGWCR7_EL1", 172 },
    2063             :   { "DBGWCR8_EL1", 173 },
    2064             :   { "DBGWCR9_EL1", 174 },
    2065             :   { "DBGWVR0_EL1", 149 },
    2066             :   { "DBGWVR10_EL1", 159 },
    2067             :   { "DBGWVR11_EL1", 160 },
    2068             :   { "DBGWVR12_EL1", 161 },
    2069             :   { "DBGWVR13_EL1", 162 },
    2070             :   { "DBGWVR14_EL1", 163 },
    2071             :   { "DBGWVR15_EL1", 164 },
    2072             :   { "DBGWVR1_EL1", 150 },
    2073             :   { "DBGWVR2_EL1", 151 },
    2074             :   { "DBGWVR3_EL1", 152 },
    2075             :   { "DBGWVR4_EL1", 153 },
    2076             :   { "DBGWVR5_EL1", 154 },
    2077             :   { "DBGWVR6_EL1", 155 },
    2078             :   { "DBGWVR7_EL1", 156 },
    2079             :   { "DBGWVR8_EL1", 157 },
    2080             :   { "DBGWVR9_EL1", 158 },
    2081             :   { "DCZID_EL0", 14 },
    2082             :   { "DISR_EL1", 633 },
    2083             :   { "DLR_EL0", 235 },
    2084             :   { "DSPSR_EL0", 234 },
    2085             :   { "ELR_EL1", 218 },
    2086             :   { "ELR_EL12", 612 },
    2087             :   { "ELR_EL2", 219 },
    2088             :   { "ELR_EL3", 220 },
    2089             :   { "ERRIDR_EL1", 96 },
    2090             :   { "ERRSELR_EL1", 627 },
    2091             :   { "ERXADDR_EL1", 630 },
    2092             :   { "ERXCTLR_EL1", 628 },
    2093             :   { "ERXFR_EL1", 97 },
    2094             :   { "ERXMISC0_EL1", 631 },
    2095             :   { "ERXMISC1_EL1", 632 },
    2096             :   { "ERXSTATUS_EL1", 629 },
    2097             :   { "ESR_EL1", 243 },
    2098             :   { "ESR_EL12", 598 },
    2099             :   { "ESR_EL2", 244 },
    2100             :   { "ESR_EL3", 245 },
    2101             :   { "FAR_EL1", 247 },
    2102             :   { "FAR_EL12", 599 },
    2103             :   { "FAR_EL2", 248 },
    2104             :   { "FAR_EL3", 249 },
    2105             :   { "FPCR", 232 },
    2106             :   { "FPEXC32_EL2", 246 },
    2107             :   { "FPSR", 233 },
    2108             :   { "HACR_EL2", 203 },
    2109             :   { "HCR_EL2", 196 },
    2110             :   { "HPFAR_EL2", 250 },
    2111             :   { "HSTR_EL2", 202 },
    2112             :   { "ICC_AP0R0_EL1", 545 },
    2113             :   { "ICC_AP0R1_EL1", 546 },
    2114             :   { "ICC_AP0R2_EL1", 547 },
    2115             :   { "ICC_AP0R3_EL1", 548 },
    2116             :   { "ICC_AP1R0_EL1", 549 },
    2117             :   { "ICC_AP1R1_EL1", 550 },
    2118             :   { "ICC_AP1R2_EL1", 551 },
    2119             :   { "ICC_AP1R3_EL1", 552 },
    2120             :   { "ICC_ASGI1R_EL1", 107 },
    2121             :   { "ICC_BPR0_EL1", 534 },
    2122             :   { "ICC_BPR1_EL1", 533 },
    2123             :   { "ICC_CTLR_EL1", 536 },
    2124             :   { "ICC_CTLR_EL3", 537 },
    2125             :   { "ICC_DIR_EL1", 105 },
    2126             :   { "ICC_EOIR0_EL1", 104 },
    2127             :   { "ICC_EOIR1_EL1", 103 },
    2128             :   { "ICC_HPPIR0_EL1", 90 },
    2129             :   { "ICC_HPPIR1_EL1", 89 },
    2130             :   { "ICC_IAR0_EL1", 88 },
    2131             :   { "ICC_IAR1_EL1", 87 },
    2132             :   { "ICC_IGRPEN0_EL1", 541 },
    2133             :   { "ICC_IGRPEN1_EL1", 542 },
    2134             :   { "ICC_IGRPEN1_EL3", 543 },
    2135             :   { "ICC_PMR_EL1", 535 },
    2136             :   { "ICC_RPR_EL1", 91 },
    2137             :   { "ICC_SEIEN_EL1", 544 },
    2138             :   { "ICC_SGI0R_EL1", 108 },
    2139             :   { "ICC_SGI1R_EL1", 106 },
    2140             :   { "ICC_SRE_EL1", 538 },
    2141             :   { "ICC_SRE_EL2", 539 },
    2142             :   { "ICC_SRE_EL3", 540 },
    2143             :   { "ICH_AP0R0_EL2", 553 },
    2144             :   { "ICH_AP0R1_EL2", 554 },
    2145             :   { "ICH_AP0R2_EL2", 555 },
    2146             :   { "ICH_AP0R3_EL2", 556 },
    2147             :   { "ICH_AP1R0_EL2", 557 },
    2148             :   { "ICH_AP1R1_EL2", 558 },
    2149             :   { "ICH_AP1R2_EL2", 559 },
    2150             :   { "ICH_AP1R3_EL2", 560 },
    2151             :   { "ICH_EISR_EL2", 93 },
    2152             :   { "ICH_ELSR_EL2", 94 },
    2153             :   { "ICH_HCR_EL2", 561 },
    2154             :   { "ICH_LR0_EL2", 565 },
    2155             :   { "ICH_LR10_EL2", 575 },
    2156             :   { "ICH_LR11_EL2", 576 },
    2157             :   { "ICH_LR12_EL2", 577 },
    2158             :   { "ICH_LR13_EL2", 578 },
    2159             :   { "ICH_LR14_EL2", 579 },
    2160             :   { "ICH_LR15_EL2", 580 },
    2161             :   { "ICH_LR1_EL2", 566 },
    2162             :   { "ICH_LR2_EL2", 567 },
    2163             :   { "ICH_LR3_EL2", 568 },
    2164             :   { "ICH_LR4_EL2", 569 },
    2165             :   { "ICH_LR5_EL2", 570 },
    2166             :   { "ICH_LR6_EL2", 571 },
    2167             :   { "ICH_LR7_EL2", 572 },
    2168             :   { "ICH_LR8_EL2", 573 },
    2169             :   { "ICH_LR9_EL2", 574 },
    2170             :   { "ICH_MISR_EL2", 562 },
    2171             :   { "ICH_VMCR_EL2", 563 },
    2172             :   { "ICH_VSEIR_EL2", 564 },
    2173             :   { "ICH_VTR_EL2", 92 },
    2174             :   { "ID_AA64AFR0_EL1", 34 },
    2175             :   { "ID_AA64AFR1_EL1", 35 },
    2176             :   { "ID_AA64DFR0_EL1", 32 },
    2177             :   { "ID_AA64DFR1_EL1", 33 },
    2178             :   { "ID_AA64ISAR0_EL1", 36 },
    2179             :   { "ID_AA64ISAR1_EL1", 37 },
    2180             :   { "ID_AA64MMFR0_EL1", 38 },
    2181             :   { "ID_AA64MMFR1_EL1", 39 },
    2182             :   { "ID_AA64MMFR2_EL1", 40 },
    2183             :   { "ID_AA64PFR0_EL1", 30 },
    2184             :   { "ID_AA64PFR1_EL1", 31 },
    2185             :   { "ID_AFR0_EL1", 18 },
    2186             :   { "ID_DFR0_EL1", 17 },
    2187             :   { "ID_ISAR0_EL1", 23 },
    2188             :   { "ID_ISAR1_EL1", 24 },
    2189             :   { "ID_ISAR2_EL1", 25 },
    2190             :   { "ID_ISAR3_EL1", 26 },
    2191             :   { "ID_ISAR4_EL1", 27 },
    2192             :   { "ID_ISAR5_EL1", 28 },
    2193             :   { "ID_ISAR6_EL1", 29 },
    2194             :   { "ID_MMFR0_EL1", 19 },
    2195             :   { "ID_MMFR1_EL1", 20 },
    2196             :   { "ID_MMFR2_EL1", 21 },
    2197             :   { "ID_MMFR3_EL1", 22 },
    2198             :   { "ID_MMFR4_EL1", 50 },
    2199             :   { "ID_PFR0_EL1", 15 },
    2200             :   { "ID_PFR1_EL1", 16 },
    2201             :   { "IFSR32_EL2", 236 },
    2202             :   { "ISR_EL1", 47 },
    2203             :   { "LORC_EL1", 585 },
    2204             :   { "LOREA_EL1", 583 },
    2205             :   { "LORID_EL1", 95 },
    2206             :   { "LORN_EL1", 584 },
    2207             :   { "LORSA_EL1", 582 },
    2208             :   { "MAIR_EL1", 264 },
    2209             :   { "MAIR_EL12", 600 },
    2210             :   { "MAIR_EL2", 265 },
    2211             :   { "MAIR_EL3", 266 },
    2212             :   { "MDCCINT_EL1", 112 },
    2213             :   { "MDCCSR_EL0", 0 },
    2214             :   { "MDCR_EL2", 198 },
    2215             :   { "MDCR_EL3", 204 },
    2216             :   { "MDRAR_EL1", 2 },
    2217             :   { "MDSCR_EL1", 113 },
    2218             :   { "MIDR_EL1", 7 },
    2219             :   { "MPIDR_EL1", 11 },
    2220             :   { "MVFR0_EL1", 41 },
    2221             :   { "MVFR1_EL1", 42 },
    2222             :   { "MVFR2_EL1", 43 },
    2223             :   { "NZCV", 225 },
    2224             :   { "OSDLR_EL1", 182 },
    2225             :   { "OSDTRRX_EL1", 109 },
    2226             :   { "OSDTRTX_EL1", 110 },
    2227             :   { "OSECCR_EL1", 115 },
    2228             :   { "OSLAR_EL1", 99 },
    2229             :   { "OSLSR_EL1", 3 },
    2230             :   { "PAN", 581 },
    2231             :   { "PAR_EL1", 251 },
    2232             :   { "PMBIDR_EL1", 617 },
    2233             :   { "PMBLIMITR_EL1", 614 },
    2234             :   { "PMBPTR_EL1", 615 },
    2235             :   { "PMBSR_EL1", 616 },
    2236             :   { "PMCCFILTR_EL0", 329 },
    2237             :   { "PMCCNTR_EL0", 257 },
    2238             :   { "PMCEID0_EL0", 5 },
    2239             :   { "PMCEID1_EL0", 6 },
    2240             :   { "PMCNTENCLR_EL0", 254 },
    2241             :   { "PMCNTENSET_EL0", 253 },
    2242             :   { "PMCR_EL0", 252 },
    2243             :   { "PMEVCNTR0_EL0", 298 },
    2244             :   { "PMEVCNTR10_EL0", 308 },
    2245             :   { "PMEVCNTR11_EL0", 309 },
    2246             :   { "PMEVCNTR12_EL0", 310 },
    2247             :   { "PMEVCNTR13_EL0", 311 },
    2248             :   { "PMEVCNTR14_EL0", 312 },
    2249             :   { "PMEVCNTR15_EL0", 313 },
    2250             :   { "PMEVCNTR16_EL0", 314 },
    2251             :   { "PMEVCNTR17_EL0", 315 },
    2252             :   { "PMEVCNTR18_EL0", 316 },
    2253             :   { "PMEVCNTR19_EL0", 317 },
    2254             :   { "PMEVCNTR1_EL0", 299 },
    2255             :   { "PMEVCNTR20_EL0", 318 },
    2256             :   { "PMEVCNTR21_EL0", 319 },
    2257             :   { "PMEVCNTR22_EL0", 320 },
    2258             :   { "PMEVCNTR23_EL0", 321 },
    2259             :   { "PMEVCNTR24_EL0", 322 },
    2260             :   { "PMEVCNTR25_EL0", 323 },
    2261             :   { "PMEVCNTR26_EL0", 324 },
    2262             :   { "PMEVCNTR27_EL0", 325 },
    2263             :   { "PMEVCNTR28_EL0", 326 },
    2264             :   { "PMEVCNTR29_EL0", 327 },
    2265             :   { "PMEVCNTR2_EL0", 300 },
    2266             :   { "PMEVCNTR30_EL0", 328 },
    2267             :   { "PMEVCNTR3_EL0", 301 },
    2268             :   { "PMEVCNTR4_EL0", 302 },
    2269             :   { "PMEVCNTR5_EL0", 303 },
    2270             :   { "PMEVCNTR6_EL0", 304 },
    2271             :   { "PMEVCNTR7_EL0", 305 },
    2272             :   { "PMEVCNTR8_EL0", 306 },
    2273             :   { "PMEVCNTR9_EL0", 307 },
    2274             :   { "PMEVTYPER0_EL0", 330 },
    2275             :   { "PMEVTYPER10_EL0", 340 },
    2276             :   { "PMEVTYPER11_EL0", 341 },
    2277             :   { "PMEVTYPER12_EL0", 342 },
    2278             :   { "PMEVTYPER13_EL0", 343 },
    2279             :   { "PMEVTYPER14_EL0", 344 },
    2280             :   { "PMEVTYPER15_EL0", 345 },
    2281             :   { "PMEVTYPER16_EL0", 346 },
    2282             :   { "PMEVTYPER17_EL0", 347 },
    2283             :   { "PMEVTYPER18_EL0", 348 },
    2284             :   { "PMEVTYPER19_EL0", 349 },
    2285             :   { "PMEVTYPER1_EL0", 331 },
    2286             :   { "PMEVTYPER20_EL0", 350 },
    2287             :   { "PMEVTYPER21_EL0", 351 },
    2288             :   { "PMEVTYPER22_EL0", 352 },
    2289             :   { "PMEVTYPER23_EL0", 353 },
    2290             :   { "PMEVTYPER24_EL0", 354 },
    2291             :   { "PMEVTYPER25_EL0", 355 },
    2292             :   { "PMEVTYPER26_EL0", 356 },
    2293             :   { "PMEVTYPER27_EL0", 357 },
    2294             :   { "PMEVTYPER28_EL0", 358 },
    2295             :   { "PMEVTYPER29_EL0", 359 },
    2296             :   { "PMEVTYPER2_EL0", 332 },
    2297             :   { "PMEVTYPER30_EL0", 360 },
    2298             :   { "PMEVTYPER3_EL0", 333 },
    2299             :   { "PMEVTYPER4_EL0", 334 },
    2300             :   { "PMEVTYPER5_EL0", 335 },
    2301             :   { "PMEVTYPER6_EL0", 336 },
    2302             :   { "PMEVTYPER7_EL0", 337 },
    2303             :   { "PMEVTYPER8_EL0", 338 },
    2304             :   { "PMEVTYPER9_EL0", 339 },
    2305             :   { "PMINTENCLR_EL1", 262 },
    2306             :   { "PMINTENSET_EL1", 261 },
    2307             :   { "PMOVSCLR_EL0", 255 },
    2308             :   { "PMOVSSET_EL0", 263 },
    2309             :   { "PMSCR_EL1", 620 },
    2310             :   { "PMSCR_EL12", 619 },
    2311             :   { "PMSCR_EL2", 618 },
    2312             :   { "PMSELR_EL0", 256 },
    2313             :   { "PMSEVFR_EL1", 624 },
    2314             :   { "PMSFCR_EL1", 623 },
    2315             :   { "PMSICR_EL1", 621 },
    2316             :   { "PMSIDR_EL1", 626 },
    2317             :   { "PMSIRR_EL1", 622 },
    2318             :   { "PMSLATFR_EL1", 625 },
    2319             :   { "PMSWINC_EL0", 100 },
    2320             :   { "PMUSERENR_EL0", 260 },
    2321             :   { "PMXEVCNTR_EL0", 259 },
    2322             :   { "PMXEVTYPER_EL0", 258 },
    2323             :   { "REVIDR_EL1", 12 },
    2324             :   { "RMR_EL1", 273 },
    2325             :   { "RMR_EL2", 274 },
    2326             :   { "RMR_EL3", 275 },
    2327             :   { "RVBAR_EL1", 44 },
    2328             :   { "RVBAR_EL2", 45 },
    2329             :   { "RVBAR_EL3", 46 },
    2330             :   { "SCR_EL3", 197 },
    2331             :   { "SCTLR_EL1", 190 },
    2332             :   { "SCTLR_EL12", 591 },
    2333             :   { "SCTLR_EL2", 191 },
    2334             :   { "SCTLR_EL3", 192 },
    2335             :   { "SDER32_EL3", 199 },
    2336             :   { "SPSEL", 224 },
    2337             :   { "SPSR_ABT", 229 },
    2338             :   { "SPSR_EL1", 215 },
    2339             :   { "SPSR_EL12", 611 },
    2340             :   { "SPSR_EL2", 216 },
    2341             :   { "SPSR_EL3", 217 },
    2342             :   { "SPSR_FIQ", 231 },
    2343             :   { "SPSR_IRQ", 228 },
    2344             :   { "SPSR_UND", 230 },
    2345             :   { "SP_EL0", 221 },
    2346             :   { "SP_EL1", 222 },
    2347             :   { "SP_EL2", 223 },
    2348             :   { "TCR_EL1", 209 },
    2349             :   { "TCR_EL12", 595 },
    2350             :   { "TCR_EL2", 210 },
    2351             :   { "TCR_EL3", 211 },
    2352             :   { "TEECR32_EL1", 111 },
    2353             :   { "TEEHBR32_EL1", 181 },
    2354             :   { "TPIDRRO_EL0", 280 },
    2355             :   { "TPIDR_EL0", 277 },
    2356             :   { "TPIDR_EL1", 281 },
    2357             :   { "TPIDR_EL2", 278 },
    2358             :   { "TPIDR_EL3", 279 },
    2359             :   { "TRCACATR0", 478 },
    2360             :   { "TRCACATR1", 479 },
    2361             :   { "TRCACATR10", 488 },
    2362             :   { "TRCACATR11", 489 },
    2363             :   { "TRCACATR12", 490 },
    2364             :   { "TRCACATR13", 491 },
    2365             :   { "TRCACATR14", 492 },
    2366             :   { "TRCACATR15", 493 },
    2367             :   { "TRCACATR2", 480 },
    2368             :   { "TRCACATR3", 481 },
    2369             :   { "TRCACATR4", 482 },
    2370             :   { "TRCACATR5", 483 },
    2371             :   { "TRCACATR6", 484 },
    2372             :   { "TRCACATR7", 485 },
    2373             :   { "TRCACATR8", 486 },
    2374             :   { "TRCACATR9", 487 },
    2375             :   { "TRCACVR0", 462 },
    2376             :   { "TRCACVR1", 463 },
    2377             :   { "TRCACVR10", 472 },
    2378             :   { "TRCACVR11", 473 },
    2379             :   { "TRCACVR12", 474 },
    2380             :   { "TRCACVR13", 475 },
    2381             :   { "TRCACVR14", 476 },
    2382             :   { "TRCACVR15", 477 },
    2383             :   { "TRCACVR2", 464 },
    2384             :   { "TRCACVR3", 465 },
    2385             :   { "TRCACVR4", 466 },
    2386             :   { "TRCACVR5", 467 },
    2387             :   { "TRCACVR6", 468 },
    2388             :   { "TRCACVR7", 469 },
    2389             :   { "TRCACVR8", 470 },
    2390             :   { "TRCACVR9", 471 },
    2391             :   { "TRCAUTHSTATUS", 71 },
    2392             :   { "TRCAUXCTLR", 364 },
    2393             :   { "TRCBBCTLR", 371 },
    2394             :   { "TRCCCCTLR", 370 },
    2395             :   { "TRCCIDCCTLR0", 526 },
    2396             :   { "TRCCIDCCTLR1", 527 },
    2397             :   { "TRCCIDCVR0", 510 },
    2398             :   { "TRCCIDCVR1", 511 },
    2399             :   { "TRCCIDCVR2", 512 },
    2400             :   { "TRCCIDCVR3", 513 },
    2401             :   { "TRCCIDCVR4", 514 },
    2402             :   { "TRCCIDCVR5", 515 },
    2403             :   { "TRCCIDCVR6", 516 },
    2404             :   { "TRCCIDCVR7", 517 },
    2405             :   { "TRCCIDR0", 83 },
    2406             :   { "TRCCIDR1", 84 },
    2407             :   { "TRCCIDR2", 85 },
    2408             :   { "TRCCIDR3", 86 },
    2409             :   { "TRCCLAIMCLR", 532 },
    2410             :   { "TRCCLAIMSET", 531 },
    2411             :   { "TRCCNTCTLR0", 391 },
    2412             :   { "TRCCNTCTLR1", 392 },
    2413             :   { "TRCCNTCTLR2", 393 },
    2414             :   { "TRCCNTCTLR3", 394 },
    2415             :   { "TRCCNTRLDVR0", 387 },
    2416             :   { "TRCCNTRLDVR1", 388 },
    2417             :   { "TRCCNTRLDVR2", 389 },
    2418             :   { "TRCCNTRLDVR3", 390 },
    2419             :   { "TRCCNTVR0", 395 },
    2420             :   { "TRCCNTVR1", 396 },
    2421             :   { "TRCCNTVR2", 397 },
    2422             :   { "TRCCNTVR3", 398 },
    2423             :   { "TRCCONFIGR", 363 },
    2424             :   { "TRCDEVAFF0", 68 },
    2425             :   { "TRCDEVAFF1", 69 },
    2426             :   { "TRCDEVARCH", 72 },
    2427             :   { "TRCDEVID", 73 },
    2428             :   { "TRCDEVTYPE", 74 },
    2429             :   { "TRCDVCMR0", 502 },
    2430             :   { "TRCDVCMR1", 503 },
    2431             :   { "TRCDVCMR2", 504 },
    2432             :   { "TRCDVCMR3", 505 },
    2433             :   { "TRCDVCMR4", 506 },
    2434             :   { "TRCDVCMR5", 507 },
    2435             :   { "TRCDVCMR6", 508 },
    2436             :   { "TRCDVCMR7", 509 },
    2437             :   { "TRCDVCVR0", 494 },
    2438             :   { "TRCDVCVR1", 495 },
    2439             :   { "TRCDVCVR2", 496 },
    2440             :   { "TRCDVCVR3", 497 },
    2441             :   { "TRCDVCVR4", 498 },
    2442             :   { "TRCDVCVR5", 499 },
    2443             :   { "TRCDVCVR6", 500 },
    2444             :   { "TRCDVCVR7", 501 },
    2445             :   { "TRCEVENTCTL0R", 365 },
    2446             :   { "TRCEVENTCTL1R", 366 },
    2447             :   { "TRCEXTINSELR", 386 },
    2448             :   { "TRCIDR0", 58 },
    2449             :   { "TRCIDR1", 59 },
    2450             :   { "TRCIDR10", 54 },
    2451             :   { "TRCIDR11", 55 },
    2452             :   { "TRCIDR12", 56 },
    2453             :   { "TRCIDR13", 57 },
    2454             :   { "TRCIDR2", 60 },
    2455             :   { "TRCIDR3", 61 },
    2456             :   { "TRCIDR4", 62 },
    2457             :   { "TRCIDR5", 63 },
    2458             :   { "TRCIDR6", 64 },
    2459             :   { "TRCIDR7", 65 },
    2460             :   { "TRCIDR8", 52 },
    2461             :   { "TRCIDR9", 53 },
    2462             :   { "TRCIMSPEC0", 399 },
    2463             :   { "TRCIMSPEC1", 400 },
    2464             :   { "TRCIMSPEC2", 401 },
    2465             :   { "TRCIMSPEC3", 402 },
    2466             :   { "TRCIMSPEC4", 403 },
    2467             :   { "TRCIMSPEC5", 404 },
    2468             :   { "TRCIMSPEC6", 405 },
    2469             :   { "TRCIMSPEC7", 406 },
    2470             :   { "TRCITCTRL", 530 },
    2471             :   { "TRCLAR", 102 },
    2472             :   { "TRCLSR", 70 },
    2473             :   { "TRCOSLAR", 101 },
    2474             :   { "TRCOSLSR", 66 },
    2475             :   { "TRCPDCR", 461 },
    2476             :   { "TRCPDSR", 67 },
    2477             :   { "TRCPIDR0", 79 },
    2478             :   { "TRCPIDR1", 80 },
    2479             :   { "TRCPIDR2", 81 },
    2480             :   { "TRCPIDR3", 82 },
    2481             :   { "TRCPIDR4", 75 },
    2482             :   { "TRCPIDR5", 76 },
    2483             :   { "TRCPIDR6", 77 },
    2484             :   { "TRCPIDR7", 78 },
    2485             :   { "TRCPRGCTLR", 361 },
    2486             :   { "TRCPROCSELR", 362 },
    2487             :   { "TRCQCTLR", 373 },
    2488             :   { "TRCRSCTLR10", 415 },
    2489             :   { "TRCRSCTLR11", 416 },
    2490             :   { "TRCRSCTLR12", 417 },
    2491             :   { "TRCRSCTLR13", 418 },
    2492             :   { "TRCRSCTLR14", 419 },
    2493             :   { "TRCRSCTLR15", 420 },
    2494             :   { "TRCRSCTLR16", 421 },
    2495             :   { "TRCRSCTLR17", 422 },
    2496             :   { "TRCRSCTLR18", 423 },
    2497             :   { "TRCRSCTLR19", 424 },
    2498             :   { "TRCRSCTLR2", 407 },
    2499             :   { "TRCRSCTLR20", 425 },
    2500             :   { "TRCRSCTLR21", 426 },
    2501             :   { "TRCRSCTLR22", 427 },
    2502             :   { "TRCRSCTLR23", 428 },
    2503             :   { "TRCRSCTLR24", 429 },
    2504             :   { "TRCRSCTLR25", 430 },
    2505             :   { "TRCRSCTLR26", 431 },
    2506             :   { "TRCRSCTLR27", 432 },
    2507             :   { "TRCRSCTLR28", 433 },
    2508             :   { "TRCRSCTLR29", 434 },
    2509             :   { "TRCRSCTLR3", 408 },
    2510             :   { "TRCRSCTLR30", 435 },
    2511             :   { "TRCRSCTLR31", 436 },
    2512             :   { "TRCRSCTLR4", 409 },
    2513             :   { "TRCRSCTLR5", 410 },
    2514             :   { "TRCRSCTLR6", 411 },
    2515             :   { "TRCRSCTLR7", 412 },
    2516             :   { "TRCRSCTLR8", 413 },
    2517             :   { "TRCRSCTLR9", 414 },
    2518             :   { "TRCSEQEVR0", 381 },
    2519             :   { "TRCSEQEVR1", 382 },
    2520             :   { "TRCSEQEVR2", 383 },
    2521             :   { "TRCSEQRSTEVR", 384 },
    2522             :   { "TRCSEQSTR", 385 },
    2523             :   { "TRCSSCCR0", 437 },
    2524             :   { "TRCSSCCR1", 438 },
    2525             :   { "TRCSSCCR2", 439 },
    2526             :   { "TRCSSCCR3", 440 },
    2527             :   { "TRCSSCCR4", 441 },
    2528             :   { "TRCSSCCR5", 442 },
    2529             :   { "TRCSSCCR6", 443 },
    2530             :   { "TRCSSCCR7", 444 },
    2531             :   { "TRCSSCSR0", 445 },
    2532             :   { "TRCSSCSR1", 446 },
    2533             :   { "TRCSSCSR2", 447 },
    2534             :   { "TRCSSCSR3", 448 },
    2535             :   { "TRCSSCSR4", 449 },
    2536             :   { "TRCSSCSR5", 450 },
    2537             :   { "TRCSSCSR6", 451 },
    2538             :   { "TRCSSCSR7", 452 },
    2539             :   { "TRCSSPCICR0", 453 },
    2540             :   { "TRCSSPCICR1", 454 },
    2541             :   { "TRCSSPCICR2", 455 },
    2542             :   { "TRCSSPCICR3", 456 },
    2543             :   { "TRCSSPCICR4", 457 },
    2544             :   { "TRCSSPCICR5", 458 },
    2545             :   { "TRCSSPCICR6", 459 },
    2546             :   { "TRCSSPCICR7", 460 },
    2547             :   { "TRCSTALLCTLR", 367 },
    2548             :   { "TRCSTATR", 51 },
    2549             :   { "TRCSYNCPR", 369 },
    2550             :   { "TRCTRACEIDR", 372 },
    2551             :   { "TRCTSCTLR", 368 },
    2552             :   { "TRCVDARCCTLR", 380 },
    2553             :   { "TRCVDCTLR", 378 },
    2554             :   { "TRCVDSACCTLR", 379 },
    2555             :   { "TRCVICTLR", 374 },
    2556             :   { "TRCVIIECTLR", 375 },
    2557             :   { "TRCVIPCSSCTLR", 377 },
    2558             :   { "TRCVISSCTLR", 376 },
    2559             :   { "TRCVMIDCCTLR0", 528 },
    2560             :   { "TRCVMIDCCTLR1", 529 },
    2561             :   { "TRCVMIDCVR0", 518 },
    2562             :   { "TRCVMIDCVR1", 519 },
    2563             :   { "TRCVMIDCVR2", 520 },
    2564             :   { "TRCVMIDCVR3", 521 },
    2565             :   { "TRCVMIDCVR4", 522 },
    2566             :   { "TRCVMIDCVR5", 523 },
    2567             :   { "TRCVMIDCVR6", 524 },
    2568             :   { "TRCVMIDCVR7", 525 },
    2569             :   { "TTBR0_EL1", 205 },
    2570             :   { "TTBR0_EL12", 593 },
    2571             :   { "TTBR0_EL2", 206 },
    2572             :   { "TTBR0_EL3", 207 },
    2573             :   { "TTBR1_EL1", 208 },
    2574             :   { "TTBR1_EL12", 594 },
    2575             :   { "TTBR1_EL2", 586 },
    2576             :   { "UAO", 613 },
    2577             :   { "VBAR_EL1", 270 },
    2578             :   { "VBAR_EL12", 602 },
    2579             :   { "VBAR_EL2", 271 },
    2580             :   { "VBAR_EL3", 272 },
    2581             :   { "VDISR_EL2", 634 },
    2582             :   { "VMPIDR_EL2", 188 },
    2583             :   { "VPIDR_EL2", 187 },
    2584             :   { "VSESR_EL2", 635 },
    2585             :   { "VTCR_EL2", 213 },
    2586             :   { "VTTBR_EL2", 212 },
    2587             : };
    2588             : 
    2589        1656 : const SysReg *lookupSysRegByName(StringRef Name) {
    2590        3312 :   std::string CanonicalVal = Name.upper();
    2591        3312 :   std::pair<const char *, int> Val = {CanonicalVal.c_str(), 0};
    2592        1656 :   ArrayRef<std::pair<const char *, int>> Table(SysRegsByName);
    2593        1656 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val,
    2594             :                               [](const std::pair<const char *, int> &LHS, const std::pair<const char *, int> &RHS) {
    2595       15620 :     return std::strcmp(LHS.first, RHS.first) < 0;
    2596        3312 :   });
    2597             : 
    2598        3306 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
    2599             :     return nullptr;
    2600        1616 :   return &SysRegsList[Idx->second];
    2601             : }
    2602             : 
    2603             : const std::pair<uint16_t, int> SysRegsByEncoding[] = {
    2604             :   { 0x8002, 109 },
    2605             :   { 0x8004, 117 },
    2606             :   { 0x8005, 133 },
    2607             :   { 0x8006, 149 },
    2608             :   { 0x8007, 165 },
    2609             :   { 0x800C, 118 },
    2610             :   { 0x800D, 134 },
    2611             :   { 0x800E, 150 },
    2612             :   { 0x800F, 166 },
    2613             :   { 0x8010, 112 },
    2614             :   { 0x8012, 113 },
    2615             :   { 0x8014, 119 },
    2616             :   { 0x8015, 135 },
    2617             :   { 0x8016, 151 },
    2618             :   { 0x8017, 167 },
    2619             :   { 0x801A, 110 },
    2620             :   { 0x801C, 120 },
    2621             :   { 0x801D, 136 },
    2622             :   { 0x801E, 152 },
    2623             :   { 0x801F, 168 },
    2624             :   { 0x8024, 121 },
    2625             :   { 0x8025, 137 },
    2626             :   { 0x8026, 153 },
    2627             :   { 0x8027, 169 },
    2628             :   { 0x802C, 122 },
    2629             :   { 0x802D, 138 },
    2630             :   { 0x802E, 154 },
    2631             :   { 0x802F, 170 },
    2632             :   { 0x8032, 115 },
    2633             :   { 0x8034, 123 },
    2634             :   { 0x8035, 139 },
    2635             :   { 0x8036, 155 },
    2636             :   { 0x8037, 171 },
    2637             :   { 0x803C, 124 },
    2638             :   { 0x803D, 140 },
    2639             :   { 0x803E, 156 },
    2640             :   { 0x803F, 172 },
    2641             :   { 0x8044, 125 },
    2642             :   { 0x8045, 141 },
    2643             :   { 0x8046, 157 },
    2644             :   { 0x8047, 173 },
    2645             :   { 0x804C, 126 },
    2646             :   { 0x804D, 142 },
    2647             :   { 0x804E, 158 },
    2648             :   { 0x804F, 174 },
    2649             :   { 0x8054, 127 },
    2650             :   { 0x8055, 143 },
    2651             :   { 0x8056, 159 },
    2652             :   { 0x8057, 175 },
    2653             :   { 0x805C, 128 },
    2654             :   { 0x805D, 144 },
    2655             :   { 0x805E, 160 },
    2656             :   { 0x805F, 176 },
    2657             :   { 0x8064, 129 },
    2658             :   { 0x8065, 145 },
    2659             :   { 0x8066, 161 },
    2660             :   { 0x8067, 177 },
    2661             :   { 0x806C, 130 },
    2662             :   { 0x806D, 146 },
    2663             :   { 0x806E, 162 },
    2664             :   { 0x806F, 178 },
    2665             :   { 0x8074, 131 },
    2666             :   { 0x8075, 147 },
    2667             :   { 0x8076, 163 },
    2668             :   { 0x8077, 179 },
    2669             :   { 0x807C, 132 },
    2670             :   { 0x807D, 148 },
    2671             :   { 0x807E, 164 },
    2672             :   { 0x807F, 180 },
    2673             :   { 0x8080, 2 },
    2674             :   { 0x8084, 99 },
    2675             :   { 0x808C, 3 },
    2676             :   { 0x809C, 182 },
    2677             :   { 0x80A4, 183 },
    2678             :   { 0x83C6, 184 },
    2679             :   { 0x83CE, 185 },
    2680             :   { 0x83F6, 4 },
    2681             :   { 0x8801, 372 },
    2682             :   { 0x8802, 374 },
    2683             :   { 0x8804, 381 },
    2684             :   { 0x8805, 387 },
    2685             :   { 0x8806, 52 },
    2686             :   { 0x8807, 399 },
    2687             :   { 0x8808, 361 },
    2688             :   { 0x8809, 373 },
    2689             :   { 0x880A, 375 },
    2690             :   { 0x880C, 382 },
    2691             :   { 0x880D, 388 },
    2692             :   { 0x880E, 53 },
    2693             :   { 0x880F, 400 },
    2694             :   { 0x8810, 362 },
    2695             :   { 0x8812, 376 },
    2696             :   { 0x8814, 383 },
    2697             :   { 0x8815, 389 },
    2698             :   { 0x8816, 54 },
    2699             :   { 0x8817, 401 },
    2700             :   { 0x8818, 51 },
    2701             :   { 0x881A, 377 },
    2702             :   { 0x881D, 390 },
    2703             :   { 0x881E, 55 },
    2704             :   { 0x881F, 402 },
    2705             :   { 0x8820, 363 },
    2706             :   { 0x8825, 391 },
    2707             :   { 0x8826, 56 },
    2708             :   { 0x8827, 403 },
    2709             :   { 0x882D, 392 },
    2710             :   { 0x882E, 57 },
    2711             :   { 0x882F, 404 },
    2712             :   { 0x8830, 364 },
    2713             :   { 0x8834, 384 },
    2714             :   { 0x8835, 393 },
    2715             :   { 0x8837, 405 },
    2716             :   { 0x883C, 385 },
    2717             :   { 0x883D, 394 },
    2718             :   { 0x883F, 406 },
    2719             :   { 0x8840, 365 },
    2720             :   { 0x8842, 378 },
    2721             :   { 0x8844, 386 },
    2722             :   { 0x8845, 395 },
    2723             :   { 0x8847, 58 },
    2724             :   { 0x8848, 366 },
    2725             :   { 0x884A, 379 },
    2726             :   { 0x884D, 396 },
    2727             :   { 0x884F, 59 },
    2728             :   { 0x8852, 380 },
    2729             :   { 0x8855, 397 },
    2730             :   { 0x8857, 60 },
    2731             :   { 0x8858, 367 },
    2732             :   { 0x885D, 398 },
    2733             :   { 0x885F, 61 },
    2734             :   { 0x8860, 368 },
    2735             :   { 0x8867, 62 },
    2736             :   { 0x8868, 369 },
    2737             :   { 0x886F, 63 },
    2738             :   { 0x8870, 370 },
    2739             :   { 0x8877, 64 },
    2740             :   { 0x8878, 371 },
    2741             :   { 0x887F, 65 },
    2742             :   { 0x8881, 421 },
    2743             :   { 0x8882, 437 },
    2744             :   { 0x8883, 453 },
    2745             :   { 0x8884, 101 },
    2746             :   { 0x8889, 422 },
    2747             :   { 0x888A, 438 },
    2748             :   { 0x888B, 454 },
    2749             :   { 0x888C, 66 },
    2750             :   { 0x8890, 407 },
    2751             :   { 0x8891, 423 },
    2752             :   { 0x8892, 439 },
    2753             :   { 0x8893, 455 },
    2754             :   { 0x8898, 408 },
    2755             :   { 0x8899, 424 },
    2756             :   { 0x889A, 440 },
    2757             :   { 0x889B, 456 },
    2758             :   { 0x88A0, 409 },
    2759             :   { 0x88A1, 425 },
    2760             :   { 0x88A2, 441 },
    2761             :   { 0x88A3, 457 },
    2762             :   { 0x88A4, 461 },
    2763             :   { 0x88A8, 410 },
    2764             :   { 0x88A9, 426 },
    2765             :   { 0x88AA, 442 },
    2766             :   { 0x88AB, 458 },
    2767             :   { 0x88AC, 67 },
    2768             :   { 0x88B0, 411 },
    2769             :   { 0x88B1, 427 },
    2770             :   { 0x88B2, 443 },
    2771             :   { 0x88B3, 459 },
    2772             :   { 0x88B8, 412 },
    2773             :   { 0x88B9, 428 },
    2774             :   { 0x88BA, 444 },
    2775             :   { 0x88BB, 460 },
    2776             :   { 0x88C0, 413 },
    2777             :   { 0x88C1, 429 },
    2778             :   { 0x88C2, 445 },
    2779             :   { 0x88C8, 414 },
    2780             :   { 0x88C9, 430 },
    2781             :   { 0x88CA, 446 },
    2782             :   { 0x88D0, 415 },
    2783             :   { 0x88D1, 431 },
    2784             :   { 0x88D2, 447 },
    2785             :   { 0x88D8, 416 },
    2786             :   { 0x88D9, 432 },
    2787             :   { 0x88DA, 448 },
    2788             :   { 0x88E0, 417 },
    2789             :   { 0x88E1, 433 },
    2790             :   { 0x88E2, 449 },
    2791             :   { 0x88E8, 418 },
    2792             :   { 0x88E9, 434 },
    2793             :   { 0x88EA, 450 },
    2794             :   { 0x88F0, 419 },
    2795             :   { 0x88F1, 435 },
    2796             :   { 0x88F2, 451 },
    2797             :   { 0x88F8, 420 },
    2798             :   { 0x88F9, 436 },
    2799             :   { 0x88FA, 452 },
    2800             :   { 0x8900, 462 },
    2801             :   { 0x8901, 470 },
    2802             :   { 0x8902, 478 },
    2803             :   { 0x8903, 486 },
    2804             :   { 0x8904, 494 },
    2805             :   { 0x8905, 498 },
    2806             :   { 0x8906, 502 },
    2807             :   { 0x8907, 506 },
    2808             :   { 0x8910, 463 },
    2809             :   { 0x8911, 471 },
    2810             :   { 0x8912, 479 },
    2811             :   { 0x8913, 487 },
    2812             :   { 0x8920, 464 },
    2813             :   { 0x8921, 472 },
    2814             :   { 0x8922, 480 },
    2815             :   { 0x8923, 488 },
    2816             :   { 0x8924, 495 },
    2817             :   { 0x8925, 499 },
    2818             :   { 0x8926, 503 },
    2819             :   { 0x8927, 507 },
    2820             :   { 0x8930, 465 },
    2821             :   { 0x8931, 473 },
    2822             :   { 0x8932, 481 },
    2823             :   { 0x8933, 489 },
    2824             :   { 0x8940, 466 },
    2825             :   { 0x8941, 474 },
    2826             :   { 0x8942, 482 },
    2827             :   { 0x8943, 490 },
    2828             :   { 0x8944, 496 },
    2829             :   { 0x8945, 500 },
    2830             :   { 0x8946, 504 },
    2831             :   { 0x8947, 508 },
    2832             :   { 0x8950, 467 },
    2833             :   { 0x8951, 475 },
    2834             :   { 0x8952, 483 },
    2835             :   { 0x8953, 491 },
    2836             :   { 0x8960, 468 },
    2837             :   { 0x8961, 476 },
    2838             :   { 0x8962, 484 },
    2839             :   { 0x8963, 492 },
    2840             :   { 0x8964, 497 },
    2841             :   { 0x8965, 501 },
    2842             :   { 0x8966, 505 },
    2843             :   { 0x8967, 509 },
    2844             :   { 0x8970, 469 },
    2845             :   { 0x8971, 477 },
    2846             :   { 0x8972, 485 },
    2847             :   { 0x8973, 493 },
    2848             :   { 0x8980, 510 },
    2849             :   { 0x8981, 518 },
    2850             :   { 0x8982, 526 },
    2851             :   { 0x898A, 527 },
    2852             :   { 0x8990, 511 },
    2853             :   { 0x8991, 519 },
    2854             :   { 0x8992, 528 },
    2855             :   { 0x899A, 529 },
    2856             :   { 0x89A0, 512 },
    2857             :   { 0x89A1, 520 },
    2858             :   { 0x89B0, 513 },
    2859             :   { 0x89B1, 521 },
    2860             :   { 0x89C0, 514 },
    2861             :   { 0x89C1, 522 },
    2862             :   { 0x89D0, 515 },
    2863             :   { 0x89D1, 523 },
    2864             :   { 0x89E0, 516 },
    2865             :   { 0x89E1, 524 },
    2866             :   { 0x89F0, 517 },
    2867             :   { 0x89F1, 525 },
    2868             :   { 0x8B84, 530 },
    2869             :   { 0x8B97, 73 },
    2870             :   { 0x8B9F, 74 },
    2871             :   { 0x8BA7, 75 },
    2872             :   { 0x8BAF, 76 },
    2873             :   { 0x8BB7, 77 },
    2874             :   { 0x8BBF, 78 },
    2875             :   { 0x8BC6, 531 },
    2876             :   { 0x8BC7, 79 },
    2877             :   { 0x8BCE, 532 },
    2878             :   { 0x8BCF, 80 },
    2879             :   { 0x8BD6, 68 },
    2880             :   { 0x8BD7, 81 },
    2881             :   { 0x8BDE, 69 },
    2882             :   { 0x8BDF, 82 },
    2883             :   { 0x8BE6, 102 },
    2884             :   { 0x8BE7, 83 },
    2885             :   { 0x8BEE, 70 },
    2886             :   { 0x8BEF, 84 },
    2887             :   { 0x8BF6, 71 },
    2888             :   { 0x8BF7, 85 },
    2889             :   { 0x8BFE, 72 },
    2890             :   { 0x8BFF, 86 },
    2891             :   { 0x9000, 111 },
    2892             :   { 0x9080, 181 },
    2893             :   { 0x9808, 0 },
    2894             :   { 0x9820, 114 },
    2895             :   { 0x9828, 1 },
    2896             :   { 0x9828, 98 },
    2897             :   { 0xA038, 116 },
    2898             :   { 0xC000, 7 },
    2899             :   { 0xC005, 11 },
    2900             :   { 0xC006, 12 },
    2901             :   { 0xC008, 15 },
    2902             :   { 0xC009, 16 },
    2903             :   { 0xC00A, 17 },
    2904             :   { 0xC00B, 18 },
    2905             :   { 0xC00C, 19 },
    2906             :   { 0xC00D, 20 },
    2907             :   { 0xC00E, 21 },
    2908             :   { 0xC00F, 22 },
    2909             :   { 0xC010, 23 },
    2910             :   { 0xC011, 24 },
    2911             :   { 0xC012, 25 },
    2912             :   { 0xC013, 26 },
    2913             :   { 0xC014, 27 },
    2914             :   { 0xC015, 28 },
    2915             :   { 0xC016, 50 },
    2916             :   { 0xC017, 29 },
    2917             :   { 0xC018, 41 },
    2918             :   { 0xC019, 42 },
    2919             :   { 0xC01A, 43 },
    2920             :   { 0xC020, 30 },
    2921             :   { 0xC021, 31 },
    2922             :   { 0xC028, 32 },
    2923             :   { 0xC029, 33 },
    2924             :   { 0xC02C, 34 },
    2925             :   { 0xC02D, 35 },
    2926             :   { 0xC030, 36 },
    2927             :   { 0xC031, 37 },
    2928             :   { 0xC038, 38 },
    2929             :   { 0xC039, 39 },
    2930             :   { 0xC03A, 40 },
    2931             :   { 0xC080, 190 },
    2932             :   { 0xC081, 193 },
    2933             :   { 0xC082, 189 },
    2934             :   { 0xC100, 205 },
    2935             :   { 0xC101, 208 },
    2936             :   { 0xC102, 209 },
    2937             :   { 0xC108, 636 },
    2938             :   { 0xC109, 637 },
    2939             :   { 0xC10A, 638 },
    2940             :   { 0xC10B, 639 },
    2941             :   { 0xC110, 640 },
    2942             :   { 0xC111, 641 },
    2943             :   { 0xC112, 642 },
    2944             :   { 0xC113, 643 },
    2945             :   { 0xC118, 644 },
    2946             :   { 0xC119, 645 },
    2947             :   { 0xC200, 215 },
    2948             :   { 0xC201, 218 },
    2949             :   { 0xC208, 221 },
    2950             :   { 0xC210, 224 },
    2951             :   { 0xC212, 227 },
    2952             :   { 0xC213, 581 },
    2953             :   { 0xC214, 613 },
    2954             :   { 0xC230, 535 },
    2955             :   { 0xC288, 237 },
    2956             :   { 0xC289, 240 },
    2957             :   { 0xC290, 243 },
    2958             :   { 0xC298, 96 },
    2959             :   { 0xC299, 627 },
    2960             :   { 0xC2A0, 97 },
    2961             :   { 0xC2A1, 628 },
    2962             :   { 0xC2A2, 629 },
    2963             :   { 0xC2A3, 630 },
    2964             :   { 0xC2A8, 631 },
    2965             :   { 0xC2A9, 632 },
    2966             :   { 0xC300, 247 },
    2967             :   { 0xC3A0, 251 },
    2968             :   { 0xC4C8, 620 },
    2969             :   { 0xC4CA, 621 },
    2970             :   { 0xC4CB, 622 },
    2971             :   { 0xC4CC, 623 },
    2972             :   { 0xC4CD, 624 },
    2973             :   { 0xC4CE, 625 },
    2974             :   { 0xC4CF, 626 },
    2975             :   { 0xC4D0, 614 },
    2976             :   { 0xC4D1, 615 },
    2977             :   { 0xC4D3, 616 },
    2978             :   { 0xC4D7, 617 },
    2979             :   { 0xC4F1, 261 },
    2980             :   { 0xC4F2, 262 },
    2981             :   { 0xC510, 264 },
    2982             :   { 0xC518, 267 },
    2983             :   { 0xC520, 582 },
    2984             :   { 0xC521, 583 },
    2985             :   { 0xC522, 584 },
    2986             :   { 0xC523, 585 },
    2987             :   { 0xC527, 95 },
    2988             :   { 0xC600, 270 },
    2989             :   { 0xC601, 44 },
    2990             :   { 0xC602, 273 },
    2991             :   { 0xC608, 47 },
    2992             :   { 0xC609, 633 },
    2993             :   { 0xC640, 88 },
    2994             :   { 0xC641, 104 },
    2995             :   { 0xC642, 90 },
    2996             :   { 0xC643, 534 },
    2997             :   { 0xC644, 545 },
    2998             :   { 0xC645, 546 },
    2999             :   { 0xC646, 547 },
    3000             :   { 0xC647, 548 },
    3001             :   { 0xC648, 549 },
    3002             :   { 0xC649, 550 },
    3003             :   { 0xC64A, 551 },
    3004             :   { 0xC64B, 552 },
    3005             :   { 0xC659, 105 },
    3006             :   { 0xC65B, 91 },
    3007             :   { 0xC65D, 106 },
    3008             :   { 0xC65E, 107 },
    3009             :   { 0xC65F, 108 },
    3010             :   { 0xC660, 87 },
    3011             :   { 0xC661, 103 },
    3012             :   { 0xC662, 89 },
    3013             :   { 0xC663, 533 },
    3014             :   { 0xC664, 536 },
    3015             :   { 0xC665, 538 },
    3016             :   { 0xC666, 541 },
    3017             :   { 0xC667, 542 },
    3018             :   { 0xC668, 544 },
    3019             :   { 0xC681, 276 },
    3020             :   { 0xC684, 281 },
    3021             :   { 0xC708, 284 },
    3022             :   { 0xC800, 8 },
    3023             :   { 0xC801, 9 },
    3024             :   { 0xC807, 13 },
    3025             :   { 0xD000, 186 },
    3026             :   { 0xD801, 10 },
    3027             :   { 0xD807, 14 },
    3028             :   { 0xDA10, 225 },
    3029             :   { 0xDA11, 226 },
    3030             :   { 0xDA20, 232 },
    3031             :   { 0xDA21, 233 },
    3032             :   { 0xDA28, 234 },
    3033             :   { 0xDA29, 235 },
    3034             :   { 0xDCE0, 252 },
    3035             :   { 0xDCE1, 253 },
    3036             :   { 0xDCE2, 254 },
    3037             :   { 0xDCE3, 255 },
    3038             :   { 0xDCE4, 100 },
    3039             :   { 0xDCE5, 256 },
    3040             :   { 0xDCE6, 5 },
    3041             :   { 0xDCE7, 6 },
    3042             :   { 0xDCE8, 257 },
    3043             :   { 0xDCE9, 258 },
    3044             :   { 0xDCEA, 259 },
    3045             :   { 0xDCF0, 260 },
    3046             :   { 0xDCF3, 263 },
    3047             :   { 0xDE82, 277 },
    3048             :   { 0xDE83, 280 },
    3049             :   { 0xDF00, 282 },
    3050             :   { 0xDF01, 48 },
    3051             :   { 0xDF02, 49 },
    3052             :   { 0xDF10, 286 },
    3053             :   { 0xDF11, 289 },
    3054             :   { 0xDF12, 292 },
    3055             :   { 0xDF18, 295 },
    3056             :   { 0xDF19, 296 },
    3057             :   { 0xDF1A, 297 },
    3058             :   { 0xDF40, 298 },
    3059             :   { 0xDF41, 299 },
    3060             :   { 0xDF42, 300 },
    3061             :   { 0xDF43, 301 },
    3062             :   { 0xDF44, 302 },
    3063             :   { 0xDF45, 303 },
    3064             :   { 0xDF46, 304 },
    3065             :   { 0xDF47, 305 },
    3066             :   { 0xDF48, 306 },
    3067             :   { 0xDF49, 307 },
    3068             :   { 0xDF4A, 308 },
    3069             :   { 0xDF4B, 309 },
    3070             :   { 0xDF4C, 310 },
    3071             :   { 0xDF4D, 311 },
    3072             :   { 0xDF4E, 312 },
    3073             :   { 0xDF4F, 313 },
    3074             :   { 0xDF50, 314 },
    3075             :   { 0xDF51, 315 },
    3076             :   { 0xDF52, 316 },
    3077             :   { 0xDF53, 317 },
    3078             :   { 0xDF54, 318 },
    3079             :   { 0xDF55, 319 },
    3080             :   { 0xDF56, 320 },
    3081             :   { 0xDF57, 321 },
    3082             :   { 0xDF58, 322 },
    3083             :   { 0xDF59, 323 },
    3084             :   { 0xDF5A, 324 },
    3085             :   { 0xDF5B, 325 },
    3086             :   { 0xDF5C, 326 },
    3087             :   { 0xDF5D, 327 },
    3088             :   { 0xDF5E, 328 },
    3089             :   { 0xDF60, 330 },
    3090             :   { 0xDF61, 331 },
    3091             :   { 0xDF62, 332 },
    3092             :   { 0xDF63, 333 },
    3093             :   { 0xDF64, 334 },
    3094             :   { 0xDF65, 335 },
    3095             :   { 0xDF66, 336 },
    3096             :   { 0xDF67, 337 },
    3097             :   { 0xDF68, 338 },
    3098             :   { 0xDF69, 339 },
    3099             :   { 0xDF6A, 340 },
    3100             :   { 0xDF6B, 341 },
    3101             :   { 0xDF6C, 342 },
    3102             :   { 0xDF6D, 343 },
    3103             :   { 0xDF6E, 344 },
    3104             :   { 0xDF6F, 345 },
    3105             :   { 0xDF70, 346 },
    3106             :   { 0xDF71, 347 },
    3107             :   { 0xDF72, 348 },
    3108             :   { 0xDF73, 349 },
    3109             :   { 0xDF74, 350 },
    3110             :   { 0xDF75, 351 },
    3111             :   { 0xDF76, 352 },
    3112             :   { 0xDF77, 353 },
    3113             :   { 0xDF78, 354 },
    3114             :   { 0xDF79, 355 },
    3115             :   { 0xDF7A, 356 },
    3116             :   { 0xDF7B, 357 },
    3117             :   { 0xDF7C, 358 },
    3118             :   { 0xDF7D, 359 },
    3119             :   { 0xDF7E, 360 },
    3120             :   { 0xDF7F, 329 },
    3121             :   { 0xE000, 187 },
    3122             :   { 0xE005, 188 },
    3123             :   { 0xE080, 191 },
    3124             :   { 0xE081, 194 },
    3125             :   { 0xE088, 196 },
    3126             :   { 0xE089, 198 },
    3127             :   { 0xE08A, 200 },
    3128             :   { 0xE08B, 202 },
    3129             :   { 0xE08F, 203 },
    3130             :   { 0xE100, 206 },
    3131             :   { 0xE101, 586 },
    3132             :   { 0xE102, 210 },
    3133             :   { 0xE108, 212 },
    3134             :   { 0xE10A, 213 },
    3135             :   { 0xE180, 214 },
    3136             :   { 0xE200, 216 },
    3137             :   { 0xE201, 219 },
    3138             :   { 0xE208, 222 },
    3139             :   { 0xE218, 228 },
    3140             :   { 0xE219, 229 },
    3141             :   { 0xE21A, 230 },
    3142             :   { 0xE21B, 231 },
    3143             :   { 0xE281, 236 },
    3144             :   { 0xE288, 238 },
    3145             :   { 0xE289, 241 },
    3146             :   { 0xE290, 244 },
    3147             :   { 0xE293, 635 },
    3148             :   { 0xE298, 246 },
    3149             :   { 0xE300, 248 },
    3150             :   { 0xE304, 250 },
    3151             :   { 0xE4C8, 618 },
    3152             :   { 0xE510, 265 },
    3153             :   { 0xE518, 268 },
    3154             :   { 0xE600, 271 },
    3155             :   { 0xE601, 45 },
    3156             :   { 0xE602, 274 },
    3157             :   { 0xE609, 634 },
    3158             :   { 0xE640, 553 },
    3159             :   { 0xE641, 554 },
    3160             :   { 0xE642, 555 },
    3161             :   { 0xE643, 556 },
    3162             :   { 0xE648, 557 },
    3163             :   { 0xE649, 558 },
    3164             :   { 0xE64A, 559 },
    3165             :   { 0xE64B, 560 },
    3166             :   { 0xE64C, 564 },
    3167             :   { 0xE64D, 539 },
    3168             :   { 0xE658, 561 },
    3169             :   { 0xE659, 92 },
    3170             :   { 0xE65A, 562 },
    3171             :   { 0xE65B, 93 },
    3172             :   { 0xE65D, 94 },
    3173             :   { 0xE65F, 563 },
    3174             :   { 0xE660, 565 },
    3175             :   { 0xE661, 566 },
    3176             :   { 0xE662, 567 },
    3177             :   { 0xE663, 568 },
    3178             :   { 0xE664, 569 },
    3179             :   { 0xE665, 570 },
    3180             :   { 0xE666, 571 },
    3181             :   { 0xE667, 572 },
    3182             :   { 0xE668, 573 },
    3183             :   { 0xE669, 574 },
    3184             :   { 0xE66A, 575 },
    3185             :   { 0xE66B, 576 },
    3186             :   { 0xE66C, 577 },
    3187             :   { 0xE66D, 578 },
    3188             :   { 0xE66E, 579 },
    3189             :   { 0xE66F, 580 },
    3190             :   { 0xE681, 587 },
    3191             :   { 0xE682, 278 },
    3192             :   { 0xE703, 283 },
    3193             :   { 0xE708, 285 },
    3194             :   { 0xE710, 287 },
    3195             :   { 0xE711, 290 },
    3196             :   { 0xE712, 293 },
    3197             :   { 0xE718, 588 },
    3198             :   { 0xE719, 590 },
    3199             :   { 0xE71A, 589 },
    3200             :   { 0xE880, 591 },
    3201             :   { 0xE882, 592 },
    3202             :   { 0xE900, 593 },
    3203             :   { 0xE901, 594 },
    3204             :   { 0xE902, 595 },
    3205             :   { 0xEA00, 611 },
    3206             :   { 0xEA01, 612 },
    3207             :   { 0xEA88, 596 },
    3208             :   { 0xEA89, 597 },
    3209             :   { 0xEA90, 598 },
    3210             :   { 0xEB00, 599 },
    3211             :   { 0xECC8, 619 },
    3212             :   { 0xED10, 600 },
    3213             :   { 0xED18, 601 },
    3214             :   { 0xEE00, 602 },
    3215             :   { 0xEE81, 603 },
    3216             :   { 0xEF08, 604 },
    3217             :   { 0xEF10, 605 },
    3218             :   { 0xEF11, 606 },
    3219             :   { 0xEF12, 607 },
    3220             :   { 0xEF18, 608 },
    3221             :   { 0xEF19, 609 },
    3222             :   { 0xEF1A, 610 },
    3223             :   { 0xF080, 192 },
    3224             :   { 0xF081, 195 },
    3225             :   { 0xF088, 197 },
    3226             :   { 0xF089, 199 },
    3227             :   { 0xF08A, 201 },
    3228             :   { 0xF099, 204 },
    3229             :   { 0xF100, 207 },
    3230             :   { 0xF102, 211 },
    3231             :   { 0xF200, 217 },
    3232             :   { 0xF201, 220 },
    3233             :   { 0xF208, 223 },
    3234             :   { 0xF288, 239 },
    3235             :   { 0xF289, 242 },
    3236             :   { 0xF290, 245 },
    3237             :   { 0xF300, 249 },
    3238             :   { 0xF510, 266 },
    3239             :   { 0xF518, 269 },
    3240             :   { 0xF600, 272 },
    3241             :   { 0xF601, 46 },
    3242             :   { 0xF602, 275 },
    3243             :   { 0xF664, 537 },
    3244             :   { 0xF665, 540 },
    3245             :   { 0xF667, 543 },
    3246             :   { 0xF682, 279 },
    3247             :   { 0xFF10, 288 },
    3248             :   { 0xFF11, 291 },
    3249             :   { 0xFF12, 294 },
    3250             :   { 0xFF90, 646 },
    3251             : };
    3252             : 
    3253        4233 : const SysReg *lookupSysRegByEncoding(uint16_t Encoding) {
    3254        4233 :   auto CanonicalVal = Encoding;
    3255        8466 :  std::pair<uint16_t, int> Val = {CanonicalVal, 0};
    3256        4233 :   ArrayRef<std::pair<uint16_t, int>> Table(SysRegsByEncoding);
    3257        8466 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val);
    3258        4233 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
    3259             :     return nullptr;
    3260        4194 :   return &SysRegsList[Idx->second];
    3261             : }
    3262             : 
    3263             : #endif
    3264             : #ifdef GET_TLBI_DECL
    3265             : #undef GET_TLBI_DECL
    3266             : enum TLBIValues {
    3267             :   IPAS2E1IS = 9217,
    3268             :   IPAS2LE1IS = 9221,
    3269             :   VMALLE1IS = 1048,
    3270             :   ALLE2IS = 9240,
    3271             :   ALLE3IS = 13336,
    3272             :   VAE1IS = 1049,
    3273             :   VAE2IS = 9241,
    3274             :   VAE3IS = 13337,
    3275             :   ASIDE1IS = 1050,
    3276             :   VAAE1IS = 1051,
    3277             :   ALLE1IS = 9244,
    3278             :   VALE1IS = 1053,
    3279             :   VALE2IS = 9245,
    3280             :   VALE3IS = 13341,
    3281             :   VMALLS12E1IS = 9246,
    3282             :   VAALE1IS = 1055,
    3283             :   IPAS2E1 = 9249,
    3284             :   IPAS2LE1 = 9253,
    3285             :   VMALLE1 = 1080,
    3286             :   ALLE2 = 9272,
    3287             :   ALLE3 = 13368,
    3288             :   VAE1 = 1081,
    3289             :   VAE2 = 9273,
    3290             :   VAE3 = 13369,
    3291             :   ASIDE1 = 1082,
    3292             :   VAAE1 = 1083,
    3293             :   ALLE1 = 9276,
    3294             :   VALE1 = 1085,
    3295             :   VALE2 = 9277,
    3296             :   VALE3 = 13373,
    3297             :   VMALLS12E1 = 9278,
    3298             :   VAALE1 = 1087,
    3299             : };
    3300             : 
    3301             : const TLBI *lookupTLBIByName(StringRef Name);
    3302             : 
    3303             : const TLBI *lookupTLBIByEncoding(uint16_t Encoding);
    3304             : 
    3305             : #endif
    3306             : 
    3307             : #ifdef GET_TLBI_IMPL
    3308             : #undef GET_TLBI_IMPL
    3309             : const TLBI TLBIsList[] = {
    3310             :   { "IPAS2E1IS", 0x2401, true},
    3311             :   { "IPAS2LE1IS", 0x2405, true},
    3312             :   { "VMALLE1IS", 0x418, false},
    3313             :   { "ALLE2IS", 0x2418, false},
    3314             :   { "ALLE3IS", 0x3418, false},
    3315             :   { "VAE1IS", 0x419, true},
    3316             :   { "VAE2IS", 0x2419, true},
    3317             :   { "VAE3IS", 0x3419, true},
    3318             :   { "ASIDE1IS", 0x41A, true},
    3319             :   { "VAAE1IS", 0x41B, true},
    3320             :   { "ALLE1IS", 0x241C, false},
    3321             :   { "VALE1IS", 0x41D, true},
    3322             :   { "VALE2IS", 0x241D, true},
    3323             :   { "VALE3IS", 0x341D, true},
    3324             :   { "VMALLS12E1IS", 0x241E, false},
    3325             :   { "VAALE1IS", 0x41F, true},
    3326             :   { "IPAS2E1", 0x2421, true},
    3327             :   { "IPAS2LE1", 0x2425, true},
    3328             :   { "VMALLE1", 0x438, false},
    3329             :   { "ALLE2", 0x2438, false},
    3330             :   { "ALLE3", 0x3438, false},
    3331             :   { "VAE1", 0x439, true},
    3332             :   { "VAE2", 0x2439, true},
    3333             :   { "VAE3", 0x3439, true},
    3334             :   { "ASIDE1", 0x43A, true},
    3335             :   { "VAAE1", 0x43B, true},
    3336             :   { "ALLE1", 0x243C, false},
    3337             :   { "VALE1", 0x43D, true},
    3338             :   { "VALE2", 0x243D, true},
    3339             :   { "VALE3", 0x343D, true},
    3340             :   { "VMALLS12E1", 0x243E, false},
    3341             :   { "VAALE1", 0x43F, true},
    3342     2386098 : };
    3343             : 
    3344             : const std::pair<const char *, int> TLBIsByName[] = {
    3345             :   { "ALLE1", 26 },
    3346             :   { "ALLE1IS", 10 },
    3347             :   { "ALLE2", 19 },
    3348             :   { "ALLE2IS", 3 },
    3349             :   { "ALLE3", 20 },
    3350             :   { "ALLE3IS", 4 },
    3351             :   { "ASIDE1", 24 },
    3352             :   { "ASIDE1IS", 8 },
    3353             :   { "IPAS2E1", 16 },
    3354             :   { "IPAS2E1IS", 0 },
    3355             :   { "IPAS2LE1", 17 },
    3356             :   { "IPAS2LE1IS", 1 },
    3357             :   { "VAAE1", 25 },
    3358             :   { "VAAE1IS", 9 },
    3359             :   { "VAALE1", 31 },
    3360             :   { "VAALE1IS", 15 },
    3361             :   { "VAE1", 21 },
    3362             :   { "VAE1IS", 5 },
    3363             :   { "VAE2", 22 },
    3364             :   { "VAE2IS", 6 },
    3365             :   { "VAE3", 23 },
    3366             :   { "VAE3IS", 7 },
    3367             :   { "VALE1", 27 },
    3368             :   { "VALE1IS", 11 },
    3369             :   { "VALE2", 28 },
    3370             :   { "VALE2IS", 12 },
    3371             :   { "VALE3", 29 },
    3372             :   { "VALE3IS", 13 },
    3373             :   { "VMALLE1", 18 },
    3374             :   { "VMALLE1IS", 2 },
    3375             :   { "VMALLS12E1", 30 },
    3376             :   { "VMALLS12E1IS", 14 },
    3377             : };
    3378             : 
    3379         121 : const TLBI *lookupTLBIByName(StringRef Name) {
    3380         242 :   std::string CanonicalVal = Name.upper();
    3381         242 :   std::pair<const char *, int> Val = {CanonicalVal.c_str(), 0};
    3382         121 :   ArrayRef<std::pair<const char *, int>> Table(TLBIsByName);
    3383         121 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val,
    3384             :                               [](const std::pair<const char *, int> &LHS, const std::pair<const char *, int> &RHS) {
    3385         613 :     return std::strcmp(LHS.first, RHS.first) < 0;
    3386         242 :   });
    3387             : 
    3388         242 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
    3389             :     return nullptr;
    3390         121 :   return &TLBIsList[Idx->second];
    3391             : }
    3392             : 
    3393             : const std::pair<uint16_t, int> TLBIsByEncoding[] = {
    3394             :   { 0x418, 2 },
    3395             :   { 0x419, 5 },
    3396             :   { 0x41A, 8 },
    3397             :   { 0x41B, 9 },
    3398             :   { 0x41D, 11 },
    3399             :   { 0x41F, 15 },
    3400             :   { 0x438, 18 },
    3401             :   { 0x439, 21 },
    3402             :   { 0x43A, 24 },
    3403             :   { 0x43B, 25 },
    3404             :   { 0x43D, 27 },
    3405             :   { 0x43F, 31 },
    3406             :   { 0x2401, 0 },
    3407             :   { 0x2405, 1 },
    3408             :   { 0x2418, 3 },
    3409             :   { 0x2419, 6 },
    3410             :   { 0x241C, 10 },
    3411             :   { 0x241D, 12 },
    3412             :   { 0x241E, 14 },
    3413             :   { 0x2421, 16 },
    3414             :   { 0x2425, 17 },
    3415             :   { 0x2438, 19 },
    3416             :   { 0x2439, 22 },
    3417             :   { 0x243C, 26 },
    3418             :   { 0x243D, 28 },
    3419             :   { 0x243E, 30 },
    3420             :   { 0x3418, 4 },
    3421             :   { 0x3419, 7 },
    3422             :   { 0x341D, 13 },
    3423             :   { 0x3438, 20 },
    3424             :   { 0x3439, 23 },
    3425             :   { 0x343D, 29 },
    3426             : };
    3427             : 
    3428          96 : const TLBI *lookupTLBIByEncoding(uint16_t Encoding) {
    3429          96 :   auto CanonicalVal = Encoding;
    3430         192 :  std::pair<uint16_t, int> Val = {CanonicalVal, 0};
    3431          96 :   ArrayRef<std::pair<uint16_t, int>> Table(TLBIsByEncoding);
    3432         192 :   auto Idx = std::lower_bound(Table.begin(), Table.end(), Val);
    3433          96 :   if (Idx == Table.end() || CanonicalVal != Idx->first)
    3434             :     return nullptr;
    3435          96 :   return &TLBIsList[Idx->second];
    3436             : }
    3437             : 
    3438             : #endif

Generated by: LCOV version 1.13