Coverage Report

Created: 2018-07-19 03:59

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