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