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