-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy patharmfeatures.h
933 lines (879 loc) · 63.1 KB
/
armfeatures.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
//----------------------------------------------------------------------------
//
// Arm64 CPU system registers tools
// Copyright (c) 2023, Thierry Lelegard
// BSD-2-Clause license, see the LICENSE file.
//
// A class describing the features of an Arm64 processor.
//
//----------------------------------------------------------------------------
#pragma once
#include "regaccess.h"
//
// A class describing the features of an Arm64 processor.
//
class ArmFeatures
{
public:
// Constructor.
ArmFeatures() = default;
ArmFeatures(RegAccess& reg) { load(reg); }
// Load features from the system registers.
bool load(RegAccess&);
bool isLoaded() const { return _loaded; }
// Clear contents of all loaded registers.
void clear();
// Load features using direct access to system registers in userland.
// Linux: Mostly works thanks to mrs emulation. However, some fields are incorrectly reported.
// macOS: Illegal instruction exception.
void loadDirect();
// Individual fields in the system registers.
// This part of the file is automatically generated by the script aarch/extract-arm-spec.py.
// Do not remove the markers AUTOGEN-BEGIN and AUTOGEN-END.
// @AUTOGEN-BEGIN
int ID_AA64ISAR0_EL1_RNDR() const { return (int)(_aa64isar0 >> 60) & 0x0F; }
int ID_AA64ISAR0_EL1_TLB() const { return (int)(_aa64isar0 >> 56) & 0x0F; }
int ID_AA64ISAR0_EL1_TS() const { return (int)(_aa64isar0 >> 52) & 0x0F; }
int ID_AA64ISAR0_EL1_FHM() const { return (int)(_aa64isar0 >> 48) & 0x0F; }
int ID_AA64ISAR0_EL1_DP() const { return (int)(_aa64isar0 >> 44) & 0x0F; }
int ID_AA64ISAR0_EL1_SM4() const { return (int)(_aa64isar0 >> 40) & 0x0F; }
int ID_AA64ISAR0_EL1_SM3() const { return (int)(_aa64isar0 >> 36) & 0x0F; }
int ID_AA64ISAR0_EL1_SHA3() const { return (int)(_aa64isar0 >> 32) & 0x0F; }
int ID_AA64ISAR0_EL1_RDM() const { return (int)(_aa64isar0 >> 28) & 0x0F; }
int ID_AA64ISAR0_EL1_TME() const { return (int)(_aa64isar0 >> 24) & 0x0F; }
int ID_AA64ISAR0_EL1_Atomic() const { return (int)(_aa64isar0 >> 20) & 0x0F; }
int ID_AA64ISAR0_EL1_CRC32() const { return (int)(_aa64isar0 >> 16) & 0x0F; }
int ID_AA64ISAR0_EL1_SHA2() const { return (int)(_aa64isar0 >> 12) & 0x0F; }
int ID_AA64ISAR0_EL1_SHA1() const { return (int)(_aa64isar0 >> 8) & 0x0F; }
int ID_AA64ISAR0_EL1_AES() const { return (int)(_aa64isar0 >> 4) & 0x0F; }
int ID_AA64ISAR1_EL1_LS64() const { return (int)(_aa64isar1 >> 60) & 0x0F; }
int ID_AA64ISAR1_EL1_XS() const { return (int)(_aa64isar1 >> 56) & 0x0F; }
int ID_AA64ISAR1_EL1_I8MM() const { return (int)(_aa64isar1 >> 52) & 0x0F; }
int ID_AA64ISAR1_EL1_DGH() const { return (int)(_aa64isar1 >> 48) & 0x0F; }
int ID_AA64ISAR1_EL1_BF16() const { return (int)(_aa64isar1 >> 44) & 0x0F; }
int ID_AA64ISAR1_EL1_SPECRES() const { return (int)(_aa64isar1 >> 40) & 0x0F; }
int ID_AA64ISAR1_EL1_SB() const { return (int)(_aa64isar1 >> 36) & 0x0F; }
int ID_AA64ISAR1_EL1_FRINTTS() const { return (int)(_aa64isar1 >> 32) & 0x0F; }
int ID_AA64ISAR1_EL1_GPI() const { return (int)(_aa64isar1 >> 28) & 0x0F; }
int ID_AA64ISAR1_EL1_GPA() const { return (int)(_aa64isar1 >> 24) & 0x0F; }
int ID_AA64ISAR1_EL1_LRCPC() const { return (int)(_aa64isar1 >> 20) & 0x0F; }
int ID_AA64ISAR1_EL1_FCMA() const { return (int)(_aa64isar1 >> 16) & 0x0F; }
int ID_AA64ISAR1_EL1_JSCVT() const { return (int)(_aa64isar1 >> 12) & 0x0F; }
int ID_AA64ISAR1_EL1_API() const { return (int)(_aa64isar1 >> 8) & 0x0F; }
int ID_AA64ISAR1_EL1_APA() const { return (int)(_aa64isar1 >> 4) & 0x0F; }
int ID_AA64ISAR1_EL1_DPB() const { return (int)(_aa64isar1) & 0x0F; }
int ID_AA64ISAR2_EL1_ATS1A() const { return (int)(_aa64isar2 >> 60) & 0x0F; }
int ID_AA64ISAR2_EL1_LUT() const { return (int)(_aa64isar2 >> 56) & 0x0F; }
int ID_AA64ISAR2_EL1_CSSC() const { return (int)(_aa64isar2 >> 52) & 0x0F; }
int ID_AA64ISAR2_EL1_RPRFM() const { return (int)(_aa64isar2 >> 48) & 0x0F; }
int ID_AA64ISAR2_EL1_PCDPHINT() const { return (int)(_aa64isar2 >> 44) & 0x0F; }
int ID_AA64ISAR2_EL1_PRFMSLC() const { return (int)(_aa64isar2 >> 40) & 0x0F; }
int ID_AA64ISAR2_EL1_SYSINSTR_128() const { return (int)(_aa64isar2 >> 36) & 0x0F; }
int ID_AA64ISAR2_EL1_SYSREG_128() const { return (int)(_aa64isar2 >> 32) & 0x0F; }
int ID_AA64ISAR2_EL1_CLRBHB() const { return (int)(_aa64isar2 >> 28) & 0x0F; }
int ID_AA64ISAR2_EL1_PAC_frac() const { return (int)(_aa64isar2 >> 24) & 0x0F; }
int ID_AA64ISAR2_EL1_BC() const { return (int)(_aa64isar2 >> 20) & 0x0F; }
int ID_AA64ISAR2_EL1_MOPS() const { return (int)(_aa64isar2 >> 16) & 0x0F; }
int ID_AA64ISAR2_EL1_APA3() const { return (int)(_aa64isar2 >> 12) & 0x0F; }
int ID_AA64ISAR2_EL1_GPA3() const { return (int)(_aa64isar2 >> 8) & 0x0F; }
int ID_AA64ISAR2_EL1_RPRES() const { return (int)(_aa64isar2 >> 4) & 0x0F; }
int ID_AA64ISAR2_EL1_WFxT() const { return (int)(_aa64isar2) & 0x0F; }
int ID_AA64ISAR3_EL1_FPRCVT() const { return (int)(_aa64isar3 >> 28) & 0x0F; }
int ID_AA64ISAR3_EL1_LSUI() const { return (int)(_aa64isar3 >> 24) & 0x0F; }
int ID_AA64ISAR3_EL1_OCCMO() const { return (int)(_aa64isar3 >> 20) & 0x0F; }
int ID_AA64ISAR3_EL1_LSFE() const { return (int)(_aa64isar3 >> 16) & 0x0F; }
int ID_AA64ISAR3_EL1_PACM() const { return (int)(_aa64isar3 >> 12) & 0x0F; }
int ID_AA64ISAR3_EL1_TLBIW() const { return (int)(_aa64isar3 >> 8) & 0x0F; }
int ID_AA64ISAR3_EL1_FAMINMAX() const { return (int)(_aa64isar3 >> 4) & 0x0F; }
int ID_AA64ISAR3_EL1_CPA() const { return (int)(_aa64isar3) & 0x0F; }
int ID_AA64PFR0_EL1_CSV3() const { return (int)(_aa64pfr0 >> 60) & 0x0F; }
int ID_AA64PFR0_EL1_CSV2() const { return (int)(_aa64pfr0 >> 56) & 0x0F; }
int ID_AA64PFR0_EL1_RME() const { return (int)(_aa64pfr0 >> 52) & 0x0F; }
int ID_AA64PFR0_EL1_DIT() const { return (int)(_aa64pfr0 >> 48) & 0x0F; }
int ID_AA64PFR0_EL1_AMU() const { return (int)(_aa64pfr0 >> 44) & 0x0F; }
int ID_AA64PFR0_EL1_MPAM() const { return (int)(_aa64pfr0 >> 40) & 0x0F; }
int ID_AA64PFR0_EL1_SEL2() const { return (int)(_aa64pfr0 >> 36) & 0x0F; }
int ID_AA64PFR0_EL1_SVE() const { return (int)(_aa64pfr0 >> 32) & 0x0F; }
int ID_AA64PFR0_EL1_RAS() const { return (int)(_aa64pfr0 >> 28) & 0x0F; }
int ID_AA64PFR0_EL1_GIC() const { return (int)(_aa64pfr0 >> 24) & 0x0F; }
int ID_AA64PFR0_EL1_AdvSIMD() const { return (int)(_aa64pfr0 >> 20) & 0x0F; }
int ID_AA64PFR0_EL1_FP() const { return (int)(_aa64pfr0 >> 16) & 0x0F; }
int ID_AA64PFR0_EL1_EL3() const { return (int)(_aa64pfr0 >> 12) & 0x0F; }
int ID_AA64PFR0_EL1_EL2() const { return (int)(_aa64pfr0 >> 8) & 0x0F; }
int ID_AA64PFR0_EL1_EL1() const { return (int)(_aa64pfr0 >> 4) & 0x0F; }
int ID_AA64PFR0_EL1_EL0() const { return (int)(_aa64pfr0) & 0x0F; }
int ID_AA64PFR1_EL1_PFAR() const { return (int)(_aa64pfr1 >> 60) & 0x0F; }
int ID_AA64PFR1_EL1_DF2() const { return (int)(_aa64pfr1 >> 56) & 0x0F; }
int ID_AA64PFR1_EL1_MTEX() const { return (int)(_aa64pfr1 >> 52) & 0x0F; }
int ID_AA64PFR1_EL1_THE() const { return (int)(_aa64pfr1 >> 48) & 0x0F; }
int ID_AA64PFR1_EL1_GCS() const { return (int)(_aa64pfr1 >> 44) & 0x0F; }
int ID_AA64PFR1_EL1_MTE_frac() const { return (int)(_aa64pfr1 >> 40) & 0x0F; }
int ID_AA64PFR1_EL1_NMI() const { return (int)(_aa64pfr1 >> 36) & 0x0F; }
int ID_AA64PFR1_EL1_CSV2_frac() const { return (int)(_aa64pfr1 >> 32) & 0x0F; }
int ID_AA64PFR1_EL1_RNDR_trap() const { return (int)(_aa64pfr1 >> 28) & 0x0F; }
int ID_AA64PFR1_EL1_SME() const { return (int)(_aa64pfr1 >> 24) & 0x0F; }
int ID_AA64PFR1_EL1_MPAM_frac() const { return (int)(_aa64pfr1 >> 16) & 0x0F; }
int ID_AA64PFR1_EL1_RAS_frac() const { return (int)(_aa64pfr1 >> 12) & 0x0F; }
int ID_AA64PFR1_EL1_MTE() const { return (int)(_aa64pfr1 >> 8) & 0x0F; }
int ID_AA64PFR1_EL1_SSBS() const { return (int)(_aa64pfr1 >> 4) & 0x0F; }
int ID_AA64PFR1_EL1_BT() const { return (int)(_aa64pfr1) & 0x0F; }
int ID_AA64PFR2_EL1_FPMR() const { return (int)(_aa64pfr2 >> 32) & 0x0F; }
int ID_AA64PFR2_EL1_UINJ() const { return (int)(_aa64pfr2 >> 16) & 0x0F; }
int ID_AA64PFR2_EL1_MTEFAR() const { return (int)(_aa64pfr2 >> 8) & 0x0F; }
int ID_AA64PFR2_EL1_MTESTOREONLY() const { return (int)(_aa64pfr2 >> 4) & 0x0F; }
int ID_AA64PFR2_EL1_MTEPERM() const { return (int)(_aa64pfr2) & 0x0F; }
int ID_AA64DFR0_EL1_HPMN0() const { return (int)(_aa64dfr0 >> 60) & 0x0F; }
int ID_AA64DFR0_EL1_ExtTrcBuff() const { return (int)(_aa64dfr0 >> 56) & 0x0F; }
int ID_AA64DFR0_EL1_BRBE() const { return (int)(_aa64dfr0 >> 52) & 0x0F; }
int ID_AA64DFR0_EL1_MTPMU() const { return (int)(_aa64dfr0 >> 48) & 0x0F; }
int ID_AA64DFR0_EL1_TraceBuffer() const { return (int)(_aa64dfr0 >> 44) & 0x0F; }
int ID_AA64DFR0_EL1_TraceFilt() const { return (int)(_aa64dfr0 >> 40) & 0x0F; }
int ID_AA64DFR0_EL1_DoubleLock() const { return (int)(_aa64dfr0 >> 36) & 0x0F; }
int ID_AA64DFR0_EL1_PMSVer() const { return (int)(_aa64dfr0 >> 32) & 0x0F; }
int ID_AA64DFR0_EL1_CTX_CMPs() const { return (int)(_aa64dfr0 >> 28) & 0x0F; }
int ID_AA64DFR0_EL1_SEBEP() const { return (int)(_aa64dfr0 >> 24) & 0x0F; }
int ID_AA64DFR0_EL1_WRPs() const { return (int)(_aa64dfr0 >> 20) & 0x0F; }
int ID_AA64DFR0_EL1_PMSS() const { return (int)(_aa64dfr0 >> 16) & 0x0F; }
int ID_AA64DFR0_EL1_BRPs() const { return (int)(_aa64dfr0 >> 12) & 0x0F; }
int ID_AA64DFR0_EL1_PMUVer() const { return (int)(_aa64dfr0 >> 8) & 0x0F; }
int ID_AA64DFR0_EL1_TraceVer() const { return (int)(_aa64dfr0 >> 4) & 0x0F; }
int ID_AA64DFR0_EL1_DebugVer() const { return (int)(_aa64dfr0) & 0x0F; }
int ID_AA64DFR1_EL1_ABL_CMPs() const { return (int)(_aa64dfr1 >> 56) & 0xFF; }
int ID_AA64DFR1_EL1_DPFZS() const { return (int)(_aa64dfr1 >> 52) & 0x0F; }
int ID_AA64DFR1_EL1_EBEP() const { return (int)(_aa64dfr1 >> 48) & 0x0F; }
int ID_AA64DFR1_EL1_ITE() const { return (int)(_aa64dfr1 >> 44) & 0x0F; }
int ID_AA64DFR1_EL1_ABLE() const { return (int)(_aa64dfr1 >> 40) & 0x0F; }
int ID_AA64DFR1_EL1_PMICNTR() const { return (int)(_aa64dfr1 >> 36) & 0x0F; }
int ID_AA64DFR1_EL1_SPMU() const { return (int)(_aa64dfr1 >> 32) & 0x0F; }
int ID_AA64DFR1_EL1_CTX_CMPs() const { return (int)(_aa64dfr1 >> 24) & 0xFF; }
int ID_AA64DFR1_EL1_WRPs() const { return (int)(_aa64dfr1 >> 16) & 0xFF; }
int ID_AA64DFR1_EL1_BRPs() const { return (int)(_aa64dfr1 >> 8) & 0xFF; }
int ID_AA64DFR1_EL1_SYSPMUID() const { return (int)(_aa64dfr1) & 0xFF; }
int ID_AA64DFR2_EL1_TRBE_EXC() const { return (int)(_aa64dfr2 >> 24) & 0x0F; }
int ID_AA64DFR2_EL1_SPE_nVM() const { return (int)(_aa64dfr2 >> 20) & 0x0F; }
int ID_AA64DFR2_EL1_SPE_EXC() const { return (int)(_aa64dfr2 >> 16) & 0x0F; }
int ID_AA64DFR2_EL1_BWE() const { return (int)(_aa64dfr2 >> 4) & 0x0F; }
int ID_AA64DFR2_EL1_STEP() const { return (int)(_aa64dfr2) & 0x0F; }
int ID_AA64FPFR0_EL1_F8CVT() const { return (int)(_aa64fpfr0 >> 31) & 0x01; }
int ID_AA64FPFR0_EL1_F8FMA() const { return (int)(_aa64fpfr0 >> 30) & 0x01; }
int ID_AA64FPFR0_EL1_F8DP4() const { return (int)(_aa64fpfr0 >> 29) & 0x01; }
int ID_AA64FPFR0_EL1_F8DP2() const { return (int)(_aa64fpfr0 >> 28) & 0x01; }
int ID_AA64FPFR0_EL1_F8MM8() const { return (int)(_aa64fpfr0 >> 27) & 0x01; }
int ID_AA64FPFR0_EL1_F8MM4() const { return (int)(_aa64fpfr0 >> 26) & 0x01; }
int ID_AA64FPFR0_EL1_F8E4M3() const { return (int)(_aa64fpfr0 >> 1) & 0x01; }
int ID_AA64FPFR0_EL1_F8E5M2() const { return (int)(_aa64fpfr0) & 0x01; }
int ID_AA64MMFR0_EL1_ECV() const { return (int)(_aa64mmfr0 >> 60) & 0x0F; }
int ID_AA64MMFR0_EL1_FGT() const { return (int)(_aa64mmfr0 >> 56) & 0x0F; }
int ID_AA64MMFR0_EL1_ExS() const { return (int)(_aa64mmfr0 >> 44) & 0x0F; }
int ID_AA64MMFR0_EL1_TGran4_2() const { return (int)(_aa64mmfr0 >> 40) & 0x0F; }
int ID_AA64MMFR0_EL1_TGran64_2() const { return (int)(_aa64mmfr0 >> 36) & 0x0F; }
int ID_AA64MMFR0_EL1_TGran16_2() const { return (int)(_aa64mmfr0 >> 32) & 0x0F; }
int ID_AA64MMFR0_EL1_TGran4() const { return (int)(_aa64mmfr0 >> 28) & 0x0F; }
int ID_AA64MMFR0_EL1_TGran64() const { return (int)(_aa64mmfr0 >> 24) & 0x0F; }
int ID_AA64MMFR0_EL1_TGran16() const { return (int)(_aa64mmfr0 >> 20) & 0x0F; }
int ID_AA64MMFR0_EL1_BigEndEL0() const { return (int)(_aa64mmfr0 >> 16) & 0x0F; }
int ID_AA64MMFR0_EL1_SNSMem() const { return (int)(_aa64mmfr0 >> 12) & 0x0F; }
int ID_AA64MMFR0_EL1_BigEnd() const { return (int)(_aa64mmfr0 >> 8) & 0x0F; }
int ID_AA64MMFR0_EL1_ASIDBits() const { return (int)(_aa64mmfr0 >> 4) & 0x0F; }
int ID_AA64MMFR0_EL1_PARange() const { return (int)(_aa64mmfr0) & 0x0F; }
int ID_AA64MMFR1_EL1_ECBHB() const { return (int)(_aa64mmfr1 >> 60) & 0x0F; }
int ID_AA64MMFR1_EL1_CMOW() const { return (int)(_aa64mmfr1 >> 56) & 0x0F; }
int ID_AA64MMFR1_EL1_TIDCP1() const { return (int)(_aa64mmfr1 >> 52) & 0x0F; }
int ID_AA64MMFR1_EL1_nTLBPA() const { return (int)(_aa64mmfr1 >> 48) & 0x0F; }
int ID_AA64MMFR1_EL1_AFP() const { return (int)(_aa64mmfr1 >> 44) & 0x0F; }
int ID_AA64MMFR1_EL1_HCX() const { return (int)(_aa64mmfr1 >> 40) & 0x0F; }
int ID_AA64MMFR1_EL1_ETS() const { return (int)(_aa64mmfr1 >> 36) & 0x0F; }
int ID_AA64MMFR1_EL1_TWED() const { return (int)(_aa64mmfr1 >> 32) & 0x0F; }
int ID_AA64MMFR1_EL1_XNX() const { return (int)(_aa64mmfr1 >> 28) & 0x0F; }
int ID_AA64MMFR1_EL1_SpecSEI() const { return (int)(_aa64mmfr1 >> 24) & 0x0F; }
int ID_AA64MMFR1_EL1_PAN() const { return (int)(_aa64mmfr1 >> 20) & 0x0F; }
int ID_AA64MMFR1_EL1_LO() const { return (int)(_aa64mmfr1 >> 16) & 0x0F; }
int ID_AA64MMFR1_EL1_HPDS() const { return (int)(_aa64mmfr1 >> 12) & 0x0F; }
int ID_AA64MMFR1_EL1_VH() const { return (int)(_aa64mmfr1 >> 8) & 0x0F; }
int ID_AA64MMFR1_EL1_VMIDBits() const { return (int)(_aa64mmfr1 >> 4) & 0x0F; }
int ID_AA64MMFR1_EL1_HAFDBS() const { return (int)(_aa64mmfr1) & 0x0F; }
int ID_AA64MMFR2_EL1_E0PD() const { return (int)(_aa64mmfr2 >> 60) & 0x0F; }
int ID_AA64MMFR2_EL1_EVT() const { return (int)(_aa64mmfr2 >> 56) & 0x0F; }
int ID_AA64MMFR2_EL1_BBM() const { return (int)(_aa64mmfr2 >> 52) & 0x0F; }
int ID_AA64MMFR2_EL1_TTL() const { return (int)(_aa64mmfr2 >> 48) & 0x0F; }
int ID_AA64MMFR2_EL1_FWB() const { return (int)(_aa64mmfr2 >> 40) & 0x0F; }
int ID_AA64MMFR2_EL1_IDS() const { return (int)(_aa64mmfr2 >> 36) & 0x0F; }
int ID_AA64MMFR2_EL1_AT() const { return (int)(_aa64mmfr2 >> 32) & 0x0F; }
int ID_AA64MMFR2_EL1_ST() const { return (int)(_aa64mmfr2 >> 28) & 0x0F; }
int ID_AA64MMFR2_EL1_NV() const { return (int)(_aa64mmfr2 >> 24) & 0x0F; }
int ID_AA64MMFR2_EL1_CCIDX() const { return (int)(_aa64mmfr2 >> 20) & 0x0F; }
int ID_AA64MMFR2_EL1_VARange() const { return (int)(_aa64mmfr2 >> 16) & 0x0F; }
int ID_AA64MMFR2_EL1_IESB() const { return (int)(_aa64mmfr2 >> 12) & 0x0F; }
int ID_AA64MMFR2_EL1_LSM() const { return (int)(_aa64mmfr2 >> 8) & 0x0F; }
int ID_AA64MMFR2_EL1_UAO() const { return (int)(_aa64mmfr2 >> 4) & 0x0F; }
int ID_AA64MMFR2_EL1_CnP() const { return (int)(_aa64mmfr2) & 0x0F; }
int ID_AA64MMFR3_EL1_Spec_FPACC() const { return (int)(_aa64mmfr3 >> 60) & 0x0F; }
int ID_AA64MMFR3_EL1_ADERR() const { return (int)(_aa64mmfr3 >> 56) & 0x0F; }
int ID_AA64MMFR3_EL1_SDERR() const { return (int)(_aa64mmfr3 >> 52) & 0x0F; }
int ID_AA64MMFR3_EL1_ANERR() const { return (int)(_aa64mmfr3 >> 44) & 0x0F; }
int ID_AA64MMFR3_EL1_SNERR() const { return (int)(_aa64mmfr3 >> 40) & 0x0F; }
int ID_AA64MMFR3_EL1_D128_2() const { return (int)(_aa64mmfr3 >> 36) & 0x0F; }
int ID_AA64MMFR3_EL1_D128() const { return (int)(_aa64mmfr3 >> 32) & 0x0F; }
int ID_AA64MMFR3_EL1_MEC() const { return (int)(_aa64mmfr3 >> 28) & 0x0F; }
int ID_AA64MMFR3_EL1_AIE() const { return (int)(_aa64mmfr3 >> 24) & 0x0F; }
int ID_AA64MMFR3_EL1_S2POE() const { return (int)(_aa64mmfr3 >> 20) & 0x0F; }
int ID_AA64MMFR3_EL1_S1POE() const { return (int)(_aa64mmfr3 >> 16) & 0x0F; }
int ID_AA64MMFR3_EL1_S2PIE() const { return (int)(_aa64mmfr3 >> 12) & 0x0F; }
int ID_AA64MMFR3_EL1_S1PIE() const { return (int)(_aa64mmfr3 >> 8) & 0x0F; }
int ID_AA64MMFR3_EL1_SCTLRX() const { return (int)(_aa64mmfr3 >> 4) & 0x0F; }
int ID_AA64MMFR3_EL1_TCRX() const { return (int)(_aa64mmfr3) & 0x0F; }
int ID_AA64MMFR4_EL1_SRMASK() const { return (int)(_aa64mmfr4 >> 44) & 0x0F; }
int ID_AA64MMFR4_EL1_E3DSE() const { return (int)(_aa64mmfr4 >> 36) & 0x0F; }
int ID_AA64MMFR4_EL1_RMEGDI() const { return (int)(_aa64mmfr4 >> 28) & 0x0F; }
int ID_AA64MMFR4_EL1_E2H0() const { return (int)(_aa64mmfr4 >> 24) & 0x0F; }
int ID_AA64MMFR4_EL1_NV_frac() const { return (int)(_aa64mmfr4 >> 20) & 0x0F; }
int ID_AA64MMFR4_EL1_FGWTE3() const { return (int)(_aa64mmfr4 >> 16) & 0x0F; }
int ID_AA64MMFR4_EL1_HACDBS() const { return (int)(_aa64mmfr4 >> 12) & 0x0F; }
int ID_AA64MMFR4_EL1_ASID2() const { return (int)(_aa64mmfr4 >> 8) & 0x0F; }
int ID_AA64MMFR4_EL1_EIESB() const { return (int)(_aa64mmfr4 >> 4) & 0x0F; }
int ID_AA64MMFR4_EL1_PoPS() const { return (int)(_aa64mmfr4) & 0x0F; }
int ID_AA64SMFR0_EL1_FA64() const { return (int)(_aa64smfr0 >> 63) & 0x01; }
int ID_AA64SMFR0_EL1_LUTv2() const { return (int)(_aa64smfr0 >> 60) & 0x01; }
int ID_AA64SMFR0_EL1_SMEver() const { return (int)(_aa64smfr0 >> 56) & 0x0F; }
int ID_AA64SMFR0_EL1_I16I64() const { return (int)(_aa64smfr0 >> 52) & 0x0F; }
int ID_AA64SMFR0_EL1_F64F64() const { return (int)(_aa64smfr0 >> 48) & 0x01; }
int ID_AA64SMFR0_EL1_I16I32() const { return (int)(_aa64smfr0 >> 44) & 0x0F; }
int ID_AA64SMFR0_EL1_B16B16() const { return (int)(_aa64smfr0 >> 43) & 0x01; }
int ID_AA64SMFR0_EL1_F16F16() const { return (int)(_aa64smfr0 >> 42) & 0x01; }
int ID_AA64SMFR0_EL1_F8F16() const { return (int)(_aa64smfr0 >> 41) & 0x01; }
int ID_AA64SMFR0_EL1_F8F32() const { return (int)(_aa64smfr0 >> 40) & 0x01; }
int ID_AA64SMFR0_EL1_I8I32() const { return (int)(_aa64smfr0 >> 36) & 0x0F; }
int ID_AA64SMFR0_EL1_F16F32() const { return (int)(_aa64smfr0 >> 35) & 0x01; }
int ID_AA64SMFR0_EL1_B16F32() const { return (int)(_aa64smfr0 >> 34) & 0x01; }
int ID_AA64SMFR0_EL1_BI32I32() const { return (int)(_aa64smfr0 >> 33) & 0x01; }
int ID_AA64SMFR0_EL1_F32F32() const { return (int)(_aa64smfr0 >> 32) & 0x01; }
int ID_AA64SMFR0_EL1_SF8FMA() const { return (int)(_aa64smfr0 >> 30) & 0x01; }
int ID_AA64SMFR0_EL1_SF8DP4() const { return (int)(_aa64smfr0 >> 29) & 0x01; }
int ID_AA64SMFR0_EL1_SF8DP2() const { return (int)(_aa64smfr0 >> 28) & 0x01; }
int ID_AA64SMFR0_EL1_SBitPerm() const { return (int)(_aa64smfr0 >> 25) & 0x01; }
int ID_AA64SMFR0_EL1_AES() const { return (int)(_aa64smfr0 >> 24) & 0x01; }
int ID_AA64SMFR0_EL1_SFEXPA() const { return (int)(_aa64smfr0 >> 23) & 0x01; }
int ID_AA64SMFR0_EL1_STMOP() const { return (int)(_aa64smfr0 >> 16) & 0x01; }
int ID_AA64SMFR0_EL1_SMOP4() const { return (int)(_aa64smfr0) & 0x01; }
int ID_AA64ZFR0_EL1_F64MM() const { return (int)(_aa64zfr0 >> 56) & 0x0F; }
int ID_AA64ZFR0_EL1_F32MM() const { return (int)(_aa64zfr0 >> 52) & 0x0F; }
int ID_AA64ZFR0_EL1_F16MM() const { return (int)(_aa64zfr0 >> 48) & 0x0F; }
int ID_AA64ZFR0_EL1_I8MM() const { return (int)(_aa64zfr0 >> 44) & 0x0F; }
int ID_AA64ZFR0_EL1_SM4() const { return (int)(_aa64zfr0 >> 40) & 0x0F; }
int ID_AA64ZFR0_EL1_SHA3() const { return (int)(_aa64zfr0 >> 32) & 0x0F; }
int ID_AA64ZFR0_EL1_B16B16() const { return (int)(_aa64zfr0 >> 24) & 0x0F; }
int ID_AA64ZFR0_EL1_BF16() const { return (int)(_aa64zfr0 >> 20) & 0x0F; }
int ID_AA64ZFR0_EL1_BitPerm() const { return (int)(_aa64zfr0 >> 16) & 0x0F; }
int ID_AA64ZFR0_EL1_EltPerm() const { return (int)(_aa64zfr0 >> 12) & 0x0F; }
int ID_AA64ZFR0_EL1_AES() const { return (int)(_aa64zfr0 >> 4) & 0x0F; }
int ID_AA64ZFR0_EL1_SVEver() const { return (int)(_aa64zfr0) & 0x0F; }
int ID_ISAR0_EL1_Divide() const { return (int)(_isar0 >> 24) & 0x0F; }
int ID_ISAR0_EL1_Debug() const { return (int)(_isar0 >> 20) & 0x0F; }
int ID_ISAR0_EL1_Coproc() const { return (int)(_isar0 >> 16) & 0x0F; }
int ID_ISAR0_EL1_CmpBranch() const { return (int)(_isar0 >> 12) & 0x0F; }
int ID_ISAR0_EL1_BitField() const { return (int)(_isar0 >> 8) & 0x0F; }
int ID_ISAR0_EL1_BitCount() const { return (int)(_isar0 >> 4) & 0x0F; }
int ID_ISAR0_EL1_Swap() const { return (int)(_isar0) & 0x0F; }
int ID_ISAR1_EL1_Jazelle() const { return (int)(_isar1 >> 28) & 0x0F; }
int ID_ISAR1_EL1_Interwork() const { return (int)(_isar1 >> 24) & 0x0F; }
int ID_ISAR1_EL1_Immediate() const { return (int)(_isar1 >> 20) & 0x0F; }
int ID_ISAR1_EL1_IfThen() const { return (int)(_isar1 >> 16) & 0x0F; }
int ID_ISAR1_EL1_Extend() const { return (int)(_isar1 >> 12) & 0x0F; }
int ID_ISAR1_EL1_Except_AR() const { return (int)(_isar1 >> 8) & 0x0F; }
int ID_ISAR1_EL1_Except() const { return (int)(_isar1 >> 4) & 0x0F; }
int ID_ISAR1_EL1_Endian() const { return (int)(_isar1) & 0x0F; }
int ID_ISAR2_EL1_Reversal() const { return (int)(_isar2 >> 28) & 0x0F; }
int ID_ISAR2_EL1_PSR_AR() const { return (int)(_isar2 >> 24) & 0x0F; }
int ID_ISAR2_EL1_MultU() const { return (int)(_isar2 >> 20) & 0x0F; }
int ID_ISAR2_EL1_MultS() const { return (int)(_isar2 >> 16) & 0x0F; }
int ID_ISAR2_EL1_Mult() const { return (int)(_isar2 >> 12) & 0x0F; }
int ID_ISAR2_EL1_MultiAccessInt() const { return (int)(_isar2 >> 8) & 0x0F; }
int ID_ISAR2_EL1_MemHint() const { return (int)(_isar2 >> 4) & 0x0F; }
int ID_ISAR2_EL1_LoadStore() const { return (int)(_isar2) & 0x0F; }
int ID_ISAR3_EL1_T32EE() const { return (int)(_isar3 >> 28) & 0x0F; }
int ID_ISAR3_EL1_TrueNOP() const { return (int)(_isar3 >> 24) & 0x0F; }
int ID_ISAR3_EL1_T32Copy() const { return (int)(_isar3 >> 20) & 0x0F; }
int ID_ISAR3_EL1_TabBranch() const { return (int)(_isar3 >> 16) & 0x0F; }
int ID_ISAR3_EL1_SynchPrim() const { return (int)(_isar3 >> 12) & 0x0F; }
int ID_ISAR3_EL1_SVC() const { return (int)(_isar3 >> 8) & 0x0F; }
int ID_ISAR3_EL1_SIMD() const { return (int)(_isar3 >> 4) & 0x0F; }
int ID_ISAR3_EL1_Saturate() const { return (int)(_isar3) & 0x0F; }
int ID_ISAR4_EL1_SWP_frac() const { return (int)(_isar4 >> 28) & 0x0F; }
int ID_ISAR4_EL1_PSR_M() const { return (int)(_isar4 >> 24) & 0x0F; }
int ID_ISAR4_EL1_SynchPrim_frac() const { return (int)(_isar4 >> 20) & 0x0F; }
int ID_ISAR4_EL1_Barrier() const { return (int)(_isar4 >> 16) & 0x0F; }
int ID_ISAR4_EL1_SMC() const { return (int)(_isar4 >> 12) & 0x0F; }
int ID_ISAR4_EL1_Writeback() const { return (int)(_isar4 >> 8) & 0x0F; }
int ID_ISAR4_EL1_WithShifts() const { return (int)(_isar4 >> 4) & 0x0F; }
int ID_ISAR4_EL1_Unpriv() const { return (int)(_isar4) & 0x0F; }
int ID_ISAR5_EL1_VCMA() const { return (int)(_isar5 >> 28) & 0x0F; }
int ID_ISAR5_EL1_RDM() const { return (int)(_isar5 >> 24) & 0x0F; }
int ID_ISAR5_EL1_CRC32() const { return (int)(_isar5 >> 16) & 0x0F; }
int ID_ISAR5_EL1_SHA2() const { return (int)(_isar5 >> 12) & 0x0F; }
int ID_ISAR5_EL1_SHA1() const { return (int)(_isar5 >> 8) & 0x0F; }
int ID_ISAR5_EL1_AES() const { return (int)(_isar5 >> 4) & 0x0F; }
int ID_ISAR5_EL1_SEVL() const { return (int)(_isar5) & 0x0F; }
int ID_ISAR6_EL1_CLRBHB() const { return (int)(_isar6 >> 28) & 0x0F; }
int ID_ISAR6_EL1_I8MM() const { return (int)(_isar6 >> 24) & 0x0F; }
int ID_ISAR6_EL1_BF16() const { return (int)(_isar6 >> 20) & 0x0F; }
int ID_ISAR6_EL1_SPECRES() const { return (int)(_isar6 >> 16) & 0x0F; }
int ID_ISAR6_EL1_SB() const { return (int)(_isar6 >> 12) & 0x0F; }
int ID_ISAR6_EL1_FHM() const { return (int)(_isar6 >> 8) & 0x0F; }
int ID_ISAR6_EL1_DP() const { return (int)(_isar6 >> 4) & 0x0F; }
int ID_ISAR6_EL1_JSCVT() const { return (int)(_isar6) & 0x0F; }
int ID_MMFR0_EL1_InnerShr() const { return (int)(_mmfr0 >> 28) & 0x0F; }
int ID_MMFR0_EL1_FCSE() const { return (int)(_mmfr0 >> 24) & 0x0F; }
int ID_MMFR0_EL1_AuxReg() const { return (int)(_mmfr0 >> 20) & 0x0F; }
int ID_MMFR0_EL1_TCM() const { return (int)(_mmfr0 >> 16) & 0x0F; }
int ID_MMFR0_EL1_ShareLvl() const { return (int)(_mmfr0 >> 12) & 0x0F; }
int ID_MMFR0_EL1_OuterShr() const { return (int)(_mmfr0 >> 8) & 0x0F; }
int ID_MMFR0_EL1_PMSA() const { return (int)(_mmfr0 >> 4) & 0x0F; }
int ID_MMFR0_EL1_VMSA() const { return (int)(_mmfr0) & 0x0F; }
int ID_MMFR1_EL1_BPred() const { return (int)(_mmfr1 >> 28) & 0x0F; }
int ID_MMFR1_EL1_L1TstCln() const { return (int)(_mmfr1 >> 24) & 0x0F; }
int ID_MMFR1_EL1_L1Uni() const { return (int)(_mmfr1 >> 20) & 0x0F; }
int ID_MMFR1_EL1_L1Hvd() const { return (int)(_mmfr1 >> 16) & 0x0F; }
int ID_MMFR1_EL1_L1UniSW() const { return (int)(_mmfr1 >> 12) & 0x0F; }
int ID_MMFR1_EL1_L1HvdSW() const { return (int)(_mmfr1 >> 8) & 0x0F; }
int ID_MMFR1_EL1_L1UniVA() const { return (int)(_mmfr1 >> 4) & 0x0F; }
int ID_MMFR1_EL1_L1HvdVA() const { return (int)(_mmfr1) & 0x0F; }
int ID_MMFR2_EL1_HWAccFlg() const { return (int)(_mmfr2 >> 28) & 0x0F; }
int ID_MMFR2_EL1_WFIStall() const { return (int)(_mmfr2 >> 24) & 0x0F; }
int ID_MMFR2_EL1_MemBarr() const { return (int)(_mmfr2 >> 20) & 0x0F; }
int ID_MMFR2_EL1_UniTLB() const { return (int)(_mmfr2 >> 16) & 0x0F; }
int ID_MMFR2_EL1_HvdTLB() const { return (int)(_mmfr2 >> 12) & 0x0F; }
int ID_MMFR2_EL1_L1HvdRng() const { return (int)(_mmfr2 >> 8) & 0x0F; }
int ID_MMFR2_EL1_L1HvdBG() const { return (int)(_mmfr2 >> 4) & 0x0F; }
int ID_MMFR2_EL1_L1HvdFG() const { return (int)(_mmfr2) & 0x0F; }
int ID_MMFR3_EL1_Supersec() const { return (int)(_mmfr3 >> 28) & 0x0F; }
int ID_MMFR3_EL1_CMemSz() const { return (int)(_mmfr3 >> 24) & 0x0F; }
int ID_MMFR3_EL1_CohWalk() const { return (int)(_mmfr3 >> 20) & 0x0F; }
int ID_MMFR3_EL1_PAN() const { return (int)(_mmfr3 >> 16) & 0x0F; }
int ID_MMFR3_EL1_MaintBcst() const { return (int)(_mmfr3 >> 12) & 0x0F; }
int ID_MMFR3_EL1_BPMaint() const { return (int)(_mmfr3 >> 8) & 0x0F; }
int ID_MMFR3_EL1_CMaintSW() const { return (int)(_mmfr3 >> 4) & 0x0F; }
int ID_MMFR3_EL1_CMaintVA() const { return (int)(_mmfr3) & 0x0F; }
int ID_MMFR4_EL1_EVT() const { return (int)(_mmfr4 >> 28) & 0x0F; }
int ID_MMFR4_EL1_CCIDX() const { return (int)(_mmfr4 >> 24) & 0x0F; }
int ID_MMFR4_EL1_LSM() const { return (int)(_mmfr4 >> 20) & 0x0F; }
int ID_MMFR4_EL1_HPDS() const { return (int)(_mmfr4 >> 16) & 0x0F; }
int ID_MMFR4_EL1_CnP() const { return (int)(_mmfr4 >> 12) & 0x0F; }
int ID_MMFR4_EL1_XNX() const { return (int)(_mmfr4 >> 8) & 0x0F; }
int ID_MMFR4_EL1_AC2() const { return (int)(_mmfr4 >> 4) & 0x0F; }
int ID_MMFR4_EL1_SpecSEI() const { return (int)(_mmfr4) & 0x0F; }
int ID_MMFR5_EL1_nTLBPA() const { return (int)(_mmfr5 >> 4) & 0x0F; }
int ID_MMFR5_EL1_ETS() const { return (int)(_mmfr5) & 0x0F; }
int ID_PFR0_EL1_RAS() const { return (int)(_pfr0 >> 28) & 0x0F; }
int ID_PFR0_EL1_DIT() const { return (int)(_pfr0 >> 24) & 0x0F; }
int ID_PFR0_EL1_AMU() const { return (int)(_pfr0 >> 20) & 0x0F; }
int ID_PFR0_EL1_CSV2() const { return (int)(_pfr0 >> 16) & 0x0F; }
int ID_PFR0_EL1_State3() const { return (int)(_pfr0 >> 12) & 0x0F; }
int ID_PFR0_EL1_State2() const { return (int)(_pfr0 >> 8) & 0x0F; }
int ID_PFR0_EL1_State1() const { return (int)(_pfr0 >> 4) & 0x0F; }
int ID_PFR0_EL1_State0() const { return (int)(_pfr0) & 0x0F; }
int ID_PFR1_EL1_GIC() const { return (int)(_pfr1 >> 28) & 0x0F; }
int ID_PFR1_EL1_Virt_frac() const { return (int)(_pfr1 >> 24) & 0x0F; }
int ID_PFR1_EL1_Sec_frac() const { return (int)(_pfr1 >> 20) & 0x0F; }
int ID_PFR1_EL1_GenTimer() const { return (int)(_pfr1 >> 16) & 0x0F; }
int ID_PFR1_EL1_Virtualization() const { return (int)(_pfr1 >> 12) & 0x0F; }
int ID_PFR1_EL1_MProgMod() const { return (int)(_pfr1 >> 8) & 0x0F; }
int ID_PFR1_EL1_Security() const { return (int)(_pfr1 >> 4) & 0x0F; }
int ID_PFR1_EL1_ProgMod() const { return (int)(_pfr1) & 0x0F; }
int ID_PFR2_EL1_RAS_frac() const { return (int)(_pfr2 >> 8) & 0x0F; }
int ID_PFR2_EL1_SSBS() const { return (int)(_pfr2 >> 4) & 0x0F; }
int ID_PFR2_EL1_CSV3() const { return (int)(_pfr2) & 0x0F; }
int CTR_EL0_TminLine() const { return (int)(_ctr >> 32) & 0x3F; }
int CTR_EL0_DIC() const { return (int)(_ctr >> 29) & 0x01; }
int CTR_EL0_IDC() const { return (int)(_ctr >> 28) & 0x01; }
int CTR_EL0_CWG() const { return (int)(_ctr >> 24) & 0x0F; }
int CTR_EL0_ERG() const { return (int)(_ctr >> 20) & 0x0F; }
int CTR_EL0_DminLine() const { return (int)(_ctr >> 16) & 0x0F; }
int CTR_EL0_L1Ip() const { return (int)(_ctr >> 14) & 0x03; }
int CTR_EL0_IminLine() const { return (int)(_ctr) & 0x0F; }
int TCR_EL1_MTX1() const { return (int)(_tcr >> 61) & 0x01; }
int TCR_EL1_MTX0() const { return (int)(_tcr >> 60) & 0x01; }
int TCR_EL1_DS() const { return (int)(_tcr >> 59) & 0x01; }
int TCR_EL1_TCMA1() const { return (int)(_tcr >> 58) & 0x01; }
int TCR_EL1_TCMA0() const { return (int)(_tcr >> 57) & 0x01; }
int TCR_EL1_E0PD1() const { return (int)(_tcr >> 56) & 0x01; }
int TCR_EL1_E0PD0() const { return (int)(_tcr >> 55) & 0x01; }
int TCR_EL1_NFD1() const { return (int)(_tcr >> 54) & 0x01; }
int TCR_EL1_NFD0() const { return (int)(_tcr >> 53) & 0x01; }
int TCR_EL1_TBID1() const { return (int)(_tcr >> 52) & 0x01; }
int TCR_EL1_TBID0() const { return (int)(_tcr >> 51) & 0x01; }
int TCR_EL1_HWU162() const { return (int)(_tcr >> 50) & 0x01; }
int TCR_EL1_HWU161() const { return (int)(_tcr >> 49) & 0x01; }
int TCR_EL1_HWU160() const { return (int)(_tcr >> 48) & 0x01; }
int TCR_EL1_HWU159() const { return (int)(_tcr >> 47) & 0x01; }
int TCR_EL1_HWU062() const { return (int)(_tcr >> 46) & 0x01; }
int TCR_EL1_HWU061() const { return (int)(_tcr >> 45) & 0x01; }
int TCR_EL1_HWU060() const { return (int)(_tcr >> 44) & 0x01; }
int TCR_EL1_HWU059() const { return (int)(_tcr >> 43) & 0x01; }
int TCR_EL1_HPD1() const { return (int)(_tcr >> 42) & 0x01; }
int TCR_EL1_HPD0() const { return (int)(_tcr >> 41) & 0x01; }
int TCR_EL1_HD() const { return (int)(_tcr >> 40) & 0x01; }
int TCR_EL1_HA() const { return (int)(_tcr >> 39) & 0x01; }
int TCR_EL1_TBI1() const { return (int)(_tcr >> 38) & 0x01; }
int TCR_EL1_TBI0() const { return (int)(_tcr >> 37) & 0x01; }
int TCR_EL1_AS() const { return (int)(_tcr >> 36) & 0x01; }
int TCR_EL1_IPS() const { return (int)(_tcr >> 32) & 0x07; }
int TCR_EL1_TG1() const { return (int)(_tcr >> 30) & 0x03; }
int TCR_EL1_SH1() const { return (int)(_tcr >> 28) & 0x03; }
int TCR_EL1_ORGN1() const { return (int)(_tcr >> 26) & 0x03; }
int TCR_EL1_IRGN1() const { return (int)(_tcr >> 24) & 0x03; }
int TCR_EL1_EPD1() const { return (int)(_tcr >> 23) & 0x01; }
int TCR_EL1_A1() const { return (int)(_tcr >> 22) & 0x01; }
int TCR_EL1_T1SZ() const { return (int)(_tcr >> 16) & 0x3F; }
int TCR_EL1_TG0() const { return (int)(_tcr >> 14) & 0x03; }
int TCR_EL1_SH0() const { return (int)(_tcr >> 12) & 0x03; }
int TCR_EL1_ORGN0() const { return (int)(_tcr >> 10) & 0x03; }
int TCR_EL1_IRGN0() const { return (int)(_tcr >> 8) & 0x03; }
int TCR_EL1_EPD0() const { return (int)(_tcr >> 7) & 0x01; }
int TCR_EL1_T0SZ() const { return (int)(_tcr) & 0x3F; }
int TCR2_EL1_FNGNA1() const { return (int)(_tcr2 >> 21) & 0x01; }
int TCR2_EL1_FNGNA0() const { return (int)(_tcr2 >> 20) & 0x01; }
int TCR2_EL1_FNG1() const { return (int)(_tcr2 >> 18) & 0x01; }
int TCR2_EL1_FNG0() const { return (int)(_tcr2 >> 17) & 0x01; }
int TCR2_EL1_A2() const { return (int)(_tcr2 >> 16) & 0x01; }
int TCR2_EL1_DisCH1() const { return (int)(_tcr2 >> 15) & 0x01; }
int TCR2_EL1_DisCH0() const { return (int)(_tcr2 >> 14) & 0x01; }
int TCR2_EL1_HAFT() const { return (int)(_tcr2 >> 11) & 0x01; }
int TCR2_EL1_PTTWI() const { return (int)(_tcr2 >> 10) & 0x01; }
int TCR2_EL1_D128() const { return (int)(_tcr2 >> 5) & 0x01; }
int TCR2_EL1_AIE() const { return (int)(_tcr2 >> 4) & 0x01; }
int TCR2_EL1_POE() const { return (int)(_tcr2 >> 3) & 0x01; }
int TCR2_EL1_E0POE() const { return (int)(_tcr2 >> 2) & 0x01; }
int TCR2_EL1_PIE() const { return (int)(_tcr2 >> 1) & 0x01; }
int TCR2_EL1_PnCH() const { return (int)(_tcr2) & 0x01; }
int TRCDEVARCH_ARCHITECT() const { return (int)(_trcdevarch >> 21) & 0x7FF; }
int TRCDEVARCH_PRESENT() const { return (int)(_trcdevarch >> 20) & 0x01; }
int TRCDEVARCH_REVISION() const { return (int)(_trcdevarch >> 16) & 0x0F; }
int TRCDEVARCH_ARCHVER() const { return (int)(_trcdevarch >> 12) & 0x0F; }
int TRCDEVARCH_ARCHPART() const { return (int)(_trcdevarch) & 0xFFF; }
int PMMIR_EL1_SME() const { return (int)(_pmmir >> 28) & 0x01; }
int PMMIR_EL1_EDGE() const { return (int)(_pmmir >> 24) & 0x0F; }
int PMMIR_EL1_THWIDTH() const { return (int)(_pmmir >> 20) & 0x0F; }
int PMMIR_EL1_BUS_WIDTH() const { return (int)(_pmmir >> 16) & 0x0F; }
int PMMIR_EL1_BUS_SLOTS() const { return (int)(_pmmir >> 8) & 0xFF; }
int PMMIR_EL1_SLOTS() const { return (int)(_pmmir) & 0xFF; }
int PMSIDR_EL1_SME() const { return (int)(_pmsidr >> 32) & 0x01; }
int PMSIDR_EL1_ALTCLK() const { return (int)(_pmsidr >> 28) & 0x0F; }
int PMSIDR_EL1_FPF() const { return (int)(_pmsidr >> 27) & 0x01; }
int PMSIDR_EL1_EFT() const { return (int)(_pmsidr >> 26) & 0x01; }
int PMSIDR_EL1_CRR() const { return (int)(_pmsidr >> 25) & 0x01; }
int PMSIDR_EL1_PBT() const { return (int)(_pmsidr >> 24) & 0x01; }
int PMSIDR_EL1_Format() const { return (int)(_pmsidr >> 20) & 0x0F; }
int PMSIDR_EL1_CountSize() const { return (int)(_pmsidr >> 16) & 0x0F; }
int PMSIDR_EL1_MaxSize() const { return (int)(_pmsidr >> 12) & 0x0F; }
int PMSIDR_EL1_Interval() const { return (int)(_pmsidr >> 8) & 0x0F; }
int PMSIDR_EL1_FDS() const { return (int)(_pmsidr >> 7) & 0x01; }
int PMSIDR_EL1_FnE() const { return (int)(_pmsidr >> 6) & 0x01; }
int PMSIDR_EL1_ERnd() const { return (int)(_pmsidr >> 5) & 0x01; }
int PMSIDR_EL1_LDS() const { return (int)(_pmsidr >> 4) & 0x01; }
int PMSIDR_EL1_ArchInst() const { return (int)(_pmsidr >> 3) & 0x01; }
int PMSIDR_EL1_FL() const { return (int)(_pmsidr >> 2) & 0x01; }
int PMSIDR_EL1_FT() const { return (int)(_pmsidr >> 1) & 0x01; }
int PMSIDR_EL1_FE() const { return (int)(_pmsidr) & 0x01; }
int MPAMIDR_EL1_HAS_SDEFLT() const { return (int)(_mpamidr >> 61) & 0x01; }
int MPAMIDR_EL1_HAS_FORCE_NS() const { return (int)(_mpamidr >> 60) & 0x01; }
int MPAMIDR_EL1_SP4() const { return (int)(_mpamidr >> 59) & 0x01; }
int MPAMIDR_EL1_HAS_TIDR() const { return (int)(_mpamidr >> 58) & 0x01; }
int MPAMIDR_EL1_HAS_ALTSP() const { return (int)(_mpamidr >> 57) & 0x01; }
int MPAMIDR_EL1_HAS_BW_CTRL() const { return (int)(_mpamidr >> 56) & 0x01; }
int MPAMIDR_EL1_PMG_MAX() const { return (int)(_mpamidr >> 32) & 0xFF; }
int MPAMIDR_EL1_VPMR_MAX() const { return (int)(_mpamidr >> 18) & 0x07; }
int MPAMIDR_EL1_HAS_HCR() const { return (int)(_mpamidr >> 17) & 0x01; }
int MPAMIDR_EL1_PARTID_MAX() const { return (int)(_mpamidr) & 0xFFFF; }
int TRBIDR_EL1_MaxBuffSize() const { return (int)(_trbidr >> 32) & 0xFFFF; }
int TRBIDR_EL1_MPAM() const { return (int)(_trbidr >> 12) & 0x0F; }
int TRBIDR_EL1_EA() const { return (int)(_trbidr >> 8) & 0x0F; }
int TRBIDR_EL1_AddrMode() const { return (int)(_trbidr >> 6) & 0x03; }
int TRBIDR_EL1_F() const { return (int)(_trbidr >> 5) & 0x01; }
int TRBIDR_EL1_P() const { return (int)(_trbidr >> 4) & 0x01; }
int TRBIDR_EL1_Align() const { return (int)(_trbidr) & 0x0F; }
// @AUTOGEN-END
// Processor features, using same names as Arm Architecture Reference Manual.
bool FEAT_AArch32() const { return ID_AA64PFR0_EL1_EL1() >= 2 || ID_AA64PFR0_EL1_EL0() >= 2; }
bool FEAT_AA32BF16() const { return ID_ISAR6_EL1_BF16() >= 1; }
bool FEAT_AA32EL0() const { return ID_AA64PFR0_EL1_EL0() == 2; }
bool FEAT_AA32EL1() const { return ID_AA64PFR0_EL1_EL1() == 2; }
bool FEAT_AA32EL2() const { return ID_AA64PFR0_EL1_EL2() == 2; }
bool FEAT_AA32EL3() const { return ID_AA64PFR0_EL1_EL3() == 2; }
bool FEAT_AA32HPD() const { return ID_MMFR4_EL1_HPDS() >= 1; }
bool FEAT_AA32I8MM() const { return ID_ISAR6_EL1_I8MM() >= 1; }
bool FEAT_AA64EL0() const { return ID_AA64PFR0_EL1_EL0() > 0; }
bool FEAT_AA64EL1() const { return ID_AA64PFR0_EL1_EL1() > 0; }
bool FEAT_AA64EL2() const { return ID_AA64PFR0_EL1_EL2() > 0; }
bool FEAT_AA64EL3() const { return ID_AA64PFR0_EL1_EL3() > 0; }
bool FEAT_ABLE() const { return ID_AA64DFR1_EL1_ABLE() >= 1; }
bool FEAT_ADERR() const { return ID_AA64MMFR3_EL1_ADERR() >= 2 || ID_AA64MMFR3_EL1_SDERR() >= 2; }
bool FEAT_AdvSIMD() const { return ID_AA64PFR0_EL1_AdvSIMD() < 15; }
bool FEAT_AES() const { return ID_AA64ISAR0_EL1_AES() >= 1; }
bool FEAT_AFP() const { return ID_AA64MMFR1_EL1_AFP() >= 1; }
bool FEAT_AIE() const { return ID_AA64MMFR3_EL1_AIE() >= 1; }
bool FEAT_AMUv1() const { return ID_AA64PFR0_EL1_AMU() >= 1; }
bool FEAT_AMUv1p1() const { return ID_AA64PFR0_EL1_AMU() >= 2; }
bool FEAT_ANERR() const { return ID_AA64MMFR3_EL1_ANERR() >= 2 || ID_AA64MMFR3_EL1_SNERR() >= 2; }
bool FEAT_Armv9_Crypto() const { return FEAT_PMULL() && FEAT_AES() && FEAT_SHA1() && FEAT_SHA256() && FEAT_SHA512(); }
bool FEAT_ASID16() const { return ID_AA64MMFR0_EL1_ASIDBits() == 2; }
bool FEAT_ASID2() const { return ID_AA64MMFR4_EL1_ASID2() >= 1; }
bool FEAT_ATS1A() const { return ID_AA64ISAR2_EL1_ATS1A() == 1; }
bool FEAT_BBM() const { return ID_AA64MMFR2_EL1_BBM() >= 1; }
bool FEAT_BF16() const { return ID_AA64ISAR1_EL1_BF16() >= 1 || ID_AA64ZFR0_EL1_BF16() >= 1; }
bool FEAT_BRBE() const { return ID_AA64DFR0_EL1_BRBE() >= 1; }
bool FEAT_BRBEv1p1() const { return ID_AA64DFR0_EL1_BRBE() >= 2; }
bool FEAT_BTI() const { return ID_AA64PFR1_EL1_BT() >= 1; }
bool FEAT_BWE() const { return ID_AA64DFR2_EL1_BWE() == 1; }
bool FEAT_BWE2() const { return ID_AA64DFR2_EL1_BWE() == 2; }
bool FEAT_CCIDX() const { return ID_AA64MMFR2_EL1_CCIDX() >= 1; }
bool FEAT_CLRBHB() const { return ID_AA64ISAR2_EL1_CLRBHB() >= 1; }
bool FEAT_CMOW() const { return ID_AA64MMFR1_EL1_CMOW() >= 1; }
bool FEAT_CMPBR() const { return ID_AA64ISAR2_EL1_CSSC() == 2; }
bool FEAT_CONSTPACFIELD() const { return ID_AA64ISAR2_EL1_PAC_frac() >= 1; }
bool FEAT_CPA() const { return ID_AA64ISAR3_EL1_CPA() == 1; }
bool FEAT_CPA2() const { return ID_AA64ISAR3_EL1_CPA() == 2; }
bool FEAT_CRC32() const { return ID_AA64ISAR0_EL1_CRC32() >= 1; }
bool FEAT_Crypto() const { return FEAT_AES() || FEAT_SHA1() || FEAT_SHA3() || FEAT_SHA512() || FEAT_SM3() || FEAT_SM4(); }
bool FEAT_CSSC() const { return ID_AA64ISAR2_EL1_CSSC() == 1; }
bool FEAT_CSV2() const { return ID_AA64PFR0_EL1_CSV2() >= 1; }
bool FEAT_CSV2_1p1() const { return ID_AA64PFR1_EL1_CSV2_frac() >= 1; }
bool FEAT_CSV2_1p2() const { return ID_AA64PFR1_EL1_CSV2_frac() >= 2; }
bool FEAT_CSV2_2() const { return ID_AA64PFR0_EL1_CSV2() >= 2; }
bool FEAT_CSV2_3() const { return ID_AA64PFR0_EL1_CSV2() >= 3; }
bool FEAT_CSV3() const { return ID_AA64PFR0_EL1_CSV3() >= 1; }
bool FEAT_D128() const { return ID_AA64MMFR3_EL1_D128() >= 1; }
bool FEAT_Debugv8p1() const { return ID_AA64DFR0_EL1_DebugVer() >= 7; }
bool FEAT_Debugv8p2() const { return ID_AA64DFR0_EL1_DebugVer() >= 8; }
bool FEAT_Debugv8p4() const { return ID_AA64DFR0_EL1_DebugVer() >= 9; }
bool FEAT_Debugv8p8() const { return ID_AA64DFR0_EL1_DebugVer() >= 10; }
bool FEAT_Debugv8p9() const { return ID_AA64DFR0_EL1_DebugVer() >= 11; }
bool FEAT_DGH() const { return ID_AA64ISAR1_EL1_DGH() >= 1; }
bool FEAT_DIT() const { return ID_AA64PFR0_EL1_DIT() >= 1; }
bool FEAT_DotProd() const { return ID_AA64ISAR0_EL1_DP() >= 1; }
bool FEAT_DoubleFault() const { return ID_AA64PFR0_EL1_RAS() >= 2; }
bool FEAT_DoubleFault2() const { return ID_AA64PFR1_EL1_DF2() >= 1; }
bool FEAT_DoubleLock() const { return ID_AA64DFR0_EL1_DoubleLock() != 15; }
bool FEAT_DPB() const { return ID_AA64ISAR1_EL1_DPB() >= 1; }
bool FEAT_DPB2() const { return ID_AA64ISAR1_EL1_DPB() >= 2; }
bool FEAT_E0PD() const { return ID_AA64MMFR2_EL1_E0PD() >= 1; }
bool FEAT_E2H0() const { return ID_AA64MMFR4_EL1_E2H0() < 14; }
bool FEAT_E3DSE() const { return ID_AA64MMFR4_EL1_E3DSE() >= 1; }
bool FEAT_EBEP() const { return ID_AA64DFR1_EL1_EBEP() >= 1; }
bool FEAT_EBF16() const { return ID_AA64ISAR1_EL1_BF16() >= 2 || ID_AA64ZFR0_EL1_BF16() >= 2; }
bool FEAT_ECBHB() const { return ID_AA64MMFR1_EL1_ECBHB() >= 1; }
bool FEAT_ECV() const { return ID_AA64MMFR0_EL1_ECV() >= 1; }
bool FEAT_ECV_POFF() const { return ID_AA64MMFR0_EL1_ECV() >= 2; }
bool FEAT_EL0() const { return ID_AA64PFR0_EL1_EL0() > 0; }
bool FEAT_EL1() const { return ID_AA64PFR0_EL1_EL1() > 0; }
bool FEAT_EL2() const { return ID_AA64PFR0_EL1_EL2() > 0; }
bool FEAT_EL3() const { return ID_AA64PFR0_EL1_EL3() > 0; }
bool FEAT_EPAC() const { return ID_AA64ISAR1_EL1_API() >= 2 || ID_AA64ISAR1_EL1_APA() >= 2 || ID_AA64ISAR2_EL1_APA3() >= 2; }
bool FEAT_ETE() const { return ID_AA64DFR0_EL1_TraceVer() >= 1; }
bool FEAT_ETEv1p1() const { return TRCDEVARCH_REVISION() >= 1; }
bool FEAT_ETEv1p2() const { return TRCDEVARCH_REVISION() >= 2; }
bool FEAT_ETEv1p3() const { return TRCDEVARCH_REVISION() >= 3; }
// About ETMv4, see Arm Embedded Trace Macrocell Architecture Specification ETMv4.0 to ETMv4.6
bool FEAT_ETMv4() const { return TRCDEVARCH_ARCHITECT() == 0b01000111011 && TRCDEVARCH_PRESENT() == 1 && TRCDEVARCH_ARCHVER() == 0b0100 && TRCDEVARCH_ARCHPART() == 0b101000010011; }
bool FEAT_ETMv4p1() const { return FEAT_ETMv4() && TRCDEVARCH_REVISION() >= 1; }
bool FEAT_ETMv4p2() const { return FEAT_ETMv4() && TRCDEVARCH_REVISION() >= 2; }
bool FEAT_ETMv4p3() const { return FEAT_ETMv4() && TRCDEVARCH_REVISION() >= 3; }
bool FEAT_ETMv4p4() const { return FEAT_ETMv4() && TRCDEVARCH_REVISION() >= 4; }
bool FEAT_ETMv4p5() const { return FEAT_ETMv4() && TRCDEVARCH_REVISION() >= 5; }
bool FEAT_ETMv4p6() const { return FEAT_ETMv4() && TRCDEVARCH_REVISION() >= 6; }
bool FEAT_ETS() const { return ID_AA64MMFR1_EL1_ETS() >= 1; }
bool FEAT_ETS2() const { return ID_AA64MMFR1_EL1_ETS() >= 2; }
bool FEAT_ETS3() const { return ID_AA64MMFR1_EL1_ETS() >= 3; }
bool FEAT_EVT() const { return ID_AA64MMFR2_EL1_EVT() >= 1; }
bool FEAT_ExS() const { return ID_AA64MMFR0_EL1_ExS() >= 1; }
bool FEAT_F32MM() const { return ID_AA64ZFR0_EL1_F32MM() >= 1; }
bool FEAT_F64MM() const { return ID_AA64ZFR0_EL1_F64MM() >= 1; }
bool FEAT_F8F16MM() const { return FEAT_SVE2(); } // unclear
bool FEAT_F8F32MM() const { return FEAT_SVE2(); } // unclear
bool FEAT_FAMINMAX() const { return ID_AA64ISAR3_EL1_FAMINMAX() >= 1; }
bool FEAT_FCMA() const { return ID_AA64ISAR1_EL1_FCMA() >= 1; }
bool FEAT_FGT() const { return ID_AA64MMFR0_EL1_FGT() >= 1; }
bool FEAT_FGT2() const { return ID_AA64MMFR0_EL1_FGT() >= 2; }
bool FEAT_FGWTE3() const { return ID_AA64MMFR4_EL1_FGWTE3() >= 1; }
bool FEAT_FHM() const { return ID_AA64ISAR0_EL1_FHM() >= 1; }
bool FEAT_FlagM() const { return ID_AA64ISAR0_EL1_TS() >= 1; }
bool FEAT_FlagM2() const { return ID_AA64ISAR0_EL1_TS() >= 2; }
bool FEAT_FP() const { return ID_AA64PFR0_EL1_FP() < 15; }
bool FEAT_FP8() const { return ID_AA64FPFR0_EL1_F8CVT() == 1; }
bool FEAT_FP8DOT2() const { return ID_AA64FPFR0_EL1_F8DP2() == 1; }
bool FEAT_FP8DOT4() const { return ID_AA64FPFR0_EL1_F8DP4() == 1; }
bool FEAT_FP8FMA() const { return ID_AA64FPFR0_EL1_F8FMA() == 1; }
bool FEAT_FP16() const { return ID_AA64PFR0_EL1_FP() >= 1 && ID_AA64PFR0_EL1_FP() < 15; }
bool FEAT_FPAC() const { return ID_AA64ISAR1_EL1_API() >= 4 || ID_AA64ISAR1_EL1_APA() >= 4 || ID_AA64ISAR2_EL1_APA3() >= 4; }
bool FEAT_FPACCOMBINE() const { return ID_AA64ISAR1_EL1_API() >= 5 || ID_AA64ISAR1_EL1_APA() >= 5 || ID_AA64ISAR2_EL1_APA3() >= 5; }
bool FEAT_FPACC_SPEC() const { return ID_AA64MMFR3_EL1_Spec_FPACC() >= 1; }
bool FEAT_FPRCVT() const { return ID_AA64ISAR3_EL1_FPRCVT() >= 1; }
bool FEAT_FRINTTS() const { return ID_AA64ISAR1_EL1_FRINTTS() >= 1; }
bool FEAT_FPMR() const { return ID_AA64PFR2_EL1_FPMR() >= 1; }
bool FEAT_GCS() const { return ID_AA64PFR1_EL1_GCS() >= 1; }
bool FEAT_GICv3() const { return ID_AA64PFR0_EL1_GIC() >= 1; }
bool FEAT_GICv4() const { return ID_AA64PFR0_EL1_GIC() >= 1; }
bool FEAT_GICv4p1() const { return ID_AA64PFR0_EL1_GIC() >= 3; }
bool FEAT_GTG() const { return ID_AA64MMFR0_EL1_TGran4_2() > 1 || ID_AA64MMFR0_EL1_TGran16_2() > 1 || ID_AA64MMFR0_EL1_TGran64_2() > 1; }
bool FEAT_HACDBS() const { return ID_AA64MMFR4_EL1_HACDBS() >= 1; }
bool FEAT_HAFDBS() const { return ID_AA64MMFR1_EL1_HAFDBS() >= 1; }
bool FEAT_HAFT() const { return ID_AA64MMFR1_EL1_HAFDBS() >= 3; }
bool FEAT_HBC() const { return ID_AA64ISAR2_EL1_BC() >= 1; }
bool FEAT_HCX() const { return ID_AA64MMFR1_EL1_HCX() >= 1; }
bool FEAT_HDBSS() const { return ID_AA64MMFR1_EL1_HAFDBS() >= 4; }
bool FEAT_HPDS() const { return ID_AA64MMFR1_EL1_HPDS() >= 1; }
bool FEAT_HPDS2() const { return ID_AA64MMFR1_EL1_HPDS() >= 2; }
bool FEAT_HPMN0() const { return ID_AA64DFR0_EL1_HPMN0() >= 1; }
bool FEAT_I8MM() const { return ID_AA64ZFR0_EL1_I8MM() >= 1; }
bool FEAT_IDST() const { return ID_AA64MMFR2_EL1_IDS() >= 1; }
bool FEAT_IDTE3() const { return ID_AA64MMFR2_EL1_IDS() >= 2; }
bool FEAT_IESB() const { return ID_AA64MMFR2_EL1_IESB() >= 1; }
bool FEAT_ITE() const { return ID_AA64DFR1_EL1_ITE() >= 1; }
bool FEAT_JSCVT() const { return ID_AA64ISAR1_EL1_JSCVT() >= 1; }
bool FEAT_LOR() const { return ID_AA64MMFR1_EL1_LO() >= 1; }
bool FEAT_LPA() const { return ID_AA64MMFR0_EL1_PARange() >= 6; }
bool FEAT_LPA2() const { return ID_AA64MMFR0_EL1_TGran4_2() >= 3 || ID_AA64MMFR0_EL1_TGran16_2() >= 3; }
bool FEAT_LRCPC() const { return ID_AA64ISAR1_EL1_LRCPC() >= 1; }
bool FEAT_LRCPC2() const { return ID_AA64ISAR1_EL1_LRCPC() >= 2; }
bool FEAT_LRCPC3() const { return ID_AA64ISAR1_EL1_LRCPC() >= 3; }
bool FEAT_LS64() const { return ID_AA64ISAR1_EL1_LS64() >= 1; }
bool FEAT_LS64_V() const { return ID_AA64ISAR1_EL1_LS64() >= 2; }
bool FEAT_LS64_ACCDATA() const { return ID_AA64ISAR1_EL1_LS64() >= 3; }
bool FEAT_LS64WB() const { return ID_AA64ISAR1_EL1_LS64() >= 4; }
bool FEAT_LSE() const { return ID_AA64ISAR0_EL1_Atomic() >= 2; }
bool FEAT_LSE128() const { return ID_AA64ISAR0_EL1_Atomic() >= 3; }
bool FEAT_LSE2() const { return ID_AA64MMFR2_EL1_AT() >= 1; }
bool FEAT_LSFE() const { return ID_AA64ISAR3_EL1_LSFE() >= 1; }
bool FEAT_LSMAOC() const { return ID_AA64MMFR2_EL1_LSM() >= 1; }
bool FEAT_LSUI() const { return ID_AA64ISAR3_EL1_LSUI() >= 1; }
bool FEAT_LUT() const { return ID_AA64ISAR2_EL1_LUT() >= 1; }
bool FEAT_LVA() const { return ID_AA64MMFR2_EL1_VARange() >= 1; }
bool FEAT_LVA3() const { return ID_AA64MMFR2_EL1_VARange() >= 2; }
bool FEAT_MEC() const { return ID_AA64MMFR3_EL1_MEC() >= 1; }
bool FEAT_MixedEnd() const { return ID_AA64MMFR0_EL1_BigEnd() >= 1; }
bool FEAT_MixedEndEL0() const { return ID_AA64MMFR0_EL1_BigEnd() >= 1 && ID_AA64MMFR0_EL1_BigEndEL0() >= 1; }
bool FEAT_MOPS() const { return ID_AA64ISAR2_EL1_MOPS() >= 1; }
bool FEAT_MPAM() const { return ID_AA64PFR0_EL1_MPAM() >= 1 || ID_AA64PFR1_EL1_MPAM_frac() >= 1; }
bool FEAT_MPAM_PE_BW_CTRL() const { return MPAMIDR_EL1_HAS_BW_CTRL() >= 1; }
bool FEAT_MPAMv0p1() const { return ID_AA64PFR1_EL1_MPAM_frac() >= 1; }
bool FEAT_MPAMv1p0() const { return ID_AA64PFR0_EL1_MPAM() >= 1; }
bool FEAT_MPAMv1p1() const { return (ID_AA64PFR0_EL1_MPAM() == 1 && ID_AA64PFR1_EL1_MPAM_frac() >= 1) || ID_AA64PFR0_EL1_MPAM() >= 2; }
bool FEAT_MTE() const { return ID_AA64PFR1_EL1_MTE() >= 1; }
bool FEAT_MTE2() const { return ID_AA64PFR1_EL1_MTE() >= 2; }
bool FEAT_MTE3() const { return ID_AA64PFR1_EL1_MTE() >= 3; }
bool FEAT_MTE4() const { return FEAT_MTE() && (ID_AA64PFR1_EL1_MTEX() >= 1 || ID_AA64PFR2_EL1_MTEFAR() >= 1 || ID_AA64PFR2_EL1_MTESTOREONLY() >= 1); }
bool FEAT_MTE_ASYM_FAULT() const { return ID_AA64PFR1_EL1_MTE() >= 3; }
bool FEAT_MTE_ASYNC() const { return ID_AA64PFR1_EL1_MTE() >= 2 && ID_AA64PFR1_EL1_MTE_frac() == 0; }
bool FEAT_MTE_CANONICAL_TAGS() const { return FEAT_MTE() && ID_AA64PFR1_EL1_MTEX() >= 1; }
bool FEAT_MTE_NO_ADDRESS_TAGS() const { return FEAT_MTE() && ID_AA64PFR1_EL1_MTEX() >= 1; }
bool FEAT_MTE_PERM() const { return ID_AA64PFR1_EL1_MTE() >= 2 && ID_AA64PFR2_EL1_MTEPERM() >= 1; }
bool FEAT_MTE_STORE_ONLY() const { return ID_AA64PFR1_EL1_MTE() >= 2 && ID_AA64PFR1_EL1_MTEX() >= 1 && ID_AA64PFR2_EL1_MTESTOREONLY() >= 1; }
bool FEAT_MTE_TAGGED_FAR() const { return ID_AA64PFR1_EL1_MTE() >= 2 && ID_AA64PFR1_EL1_MTEX() >= 1 && ID_AA64PFR2_EL1_MTEFAR() >= 1; }
bool FEAT_MTPMU() const { return ID_AA64DFR0_EL1_MTPMU() >= 1; }
bool FEAT_NMI() const { return ID_AA64PFR1_EL1_NMI() >= 1; }
bool FEAT_nTLBPA() const { return ID_AA64MMFR1_EL1_nTLBPA() >= 1; }
bool FEAT_NV() const { return ID_AA64MMFR2_EL1_NV() >= 1; }
bool FEAT_NV2() const { return ID_AA64MMFR2_EL1_NV() >= 2; }
bool FEAT_NV2p1() const { return ID_AA64MMFR4_EL1_NV_frac() >= 2; }
bool FEAT_OCCMO() const { return ID_AA64ISAR3_EL1_OCCMO() >= 1; }
bool FEAT_PACIMP() const { return ID_AA64ISAR1_EL1_GPI() >= 1 || ID_AA64ISAR1_EL1_API() >= 1; }
bool FEAT_PACQARMA3() const { return ID_AA64ISAR2_EL1_GPA3() >= 1 || ID_AA64ISAR2_EL1_APA3() >= 1; }
bool FEAT_PACQARMA5() const { return ID_AA64ISAR1_EL1_GPA() >= 1 || ID_AA64ISAR1_EL1_APA() >= 1; }
bool FEAT_PAN() const { return ID_AA64MMFR1_EL1_PAN() >= 1; }
bool FEAT_PAN2() const { return ID_AA64MMFR1_EL1_PAN() >= 2; }
bool FEAT_PAN3() const { return ID_AA64MMFR1_EL1_PAN() >= 3; }
bool FEAT_PAuth() const { return ID_AA64ISAR1_EL1_API() >= 1 || ID_AA64ISAR1_EL1_APA() >= 1 || ID_AA64ISAR2_EL1_APA3() >= 1; }
bool FEAT_PAuth2() const { return ID_AA64ISAR1_EL1_API() >= 3 || ID_AA64ISAR1_EL1_APA() >= 3 || ID_AA64ISAR2_EL1_APA3() >= 3; }
bool FEAT_PAuth_LR() const { return ID_AA64ISAR3_EL1_PACM() >= 1; }
bool FEAT_PCDPHINT() const { return ID_AA64ISAR2_EL1_PCDPHINT() >= 1; }
bool FEAT_PFAR() const { return ID_AA64PFR1_EL1_PFAR() >= 1; }
bool FEAT_PMULL() const { return ID_AA64ISAR0_EL1_AES() >= 2; }
bool FEAT_PMUv3() const { return ID_AA64DFR0_EL1_PMUVer() >= 1 && ID_AA64DFR0_EL1_PMUVer() < 15; }
bool FEAT_PMUv3p1() const { return ID_AA64DFR0_EL1_PMUVer() >= 4 && ID_AA64DFR0_EL1_PMUVer() < 15; }
bool FEAT_PMUv3p4() const { return ID_AA64DFR0_EL1_PMUVer() >= 5 && ID_AA64DFR0_EL1_PMUVer() < 15; }
bool FEAT_PMUv3p5() const { return ID_AA64DFR0_EL1_PMUVer() >= 6 && ID_AA64DFR0_EL1_PMUVer() < 15; }
bool FEAT_PMUv3p7() const { return ID_AA64DFR0_EL1_PMUVer() >= 7 && ID_AA64DFR0_EL1_PMUVer() < 15; }
bool FEAT_PMUv3p8() const { return ID_AA64DFR0_EL1_PMUVer() >= 8 && ID_AA64DFR0_EL1_PMUVer() < 15; }
bool FEAT_PMUv3p9() const { return ID_AA64DFR0_EL1_PMUVer() >= 9 && ID_AA64DFR0_EL1_PMUVer() < 15; }
bool FEAT_PMUv3_EDGE() const { return PMMIR_EL1_EDGE() >= 1; }
bool FEAT_PMUv3_ICNTR() const { return ID_AA64DFR1_EL1_PMICNTR() >= 1; }
bool FEAT_PMUv3_SME() const { return PMMIR_EL1_SME() == 1; }
bool FEAT_PMUv3_SS() const { return ID_AA64DFR0_EL1_PMSS() >= 1; }
bool FEAT_PMUv3_TH() const { return PMMIR_EL1_THWIDTH() >= 1; }
bool FEAT_PMUv3_TH2() const { return PMMIR_EL1_EDGE() >= 2; }
bool FEAT_PoPS() const { return ID_AA64MMFR4_EL1_PoPS() >= 1; }
bool FEAT_PRFMSLC() const { return ID_AA64ISAR2_EL1_PRFMSLC() >= 1; }
bool FEAT_RAS() const { return ID_AA64PFR0_EL1_RAS() >= 1; }
bool FEAT_RASv1p1() const { return ID_AA64PFR0_EL1_RAS() >= 2 || ID_AA64PFR1_EL1_RAS_frac() >= 1; }
bool FEAT_RASv2() const { return ID_AA64PFR0_EL1_RAS() >= 3; }
bool FEAT_RDM() const { return ID_AA64ISAR0_EL1_RDM() >= 1; }
bool FEAT_RME() const { return ID_AA64PFR0_EL1_RME() >= 1; }
bool FEAT_RME_GDI() const { return ID_AA64MMFR4_EL1_RMEGDI() >= 1; }
bool FEAT_RME_GPC2() const { return ID_AA64PFR0_EL1_RME() >= 2; }
bool FEAT_RME_GPC3() const { return ID_AA64PFR0_EL1_RME() >= 3; }
bool FEAT_RNG() const { return ID_AA64ISAR0_EL1_RNDR() >= 1; }
bool FEAT_RNG_TRAP() const { return ID_AA64PFR1_EL1_RNDR_trap() >= 1; }
bool FEAT_RPRES() const { return ID_AA64ISAR2_EL1_RPRES() >= 1; }
bool FEAT_RPRFM() const { return ID_AA64ISAR2_EL1_RPRFM() >= 1; }
bool FEAT_S1PIE() const { return ID_AA64MMFR3_EL1_S1PIE() >= 1; }
bool FEAT_S1POE() const { return ID_AA64MMFR3_EL1_S1POE() >= 1; }
bool FEAT_S2PIE() const { return ID_AA64MMFR3_EL1_S2PIE() >= 1; }
bool FEAT_S2FWB() const { return ID_AA64MMFR2_EL1_FWB() >= 1; }
bool FEAT_S2POE() const { return ID_AA64MMFR3_EL1_S2POE() >= 1; }
bool FEAT_S2TGran4K() const { return ID_AA64MMFR0_EL1_TGran4_2() >= 2; }
bool FEAT_S2TGran16K() const { return ID_AA64MMFR0_EL1_TGran16_2() >= 2; }
bool FEAT_S2TGran64K() const { return ID_AA64MMFR0_EL1_TGran64_2() >= 2; }
bool FEAT_SB() const { return ID_AA64ISAR1_EL1_SB() >= 1; }
bool FEAT_SCTLR2() const { return ID_AA64MMFR3_EL1_SCTLRX() >= 1; }
bool FEAT_SEBEP() const { return ID_AA64DFR0_EL1_SEBEP() >= 1; }
bool FEAT_SEL2() const { return ID_AA64PFR0_EL1_SEL2() >= 1; }
bool FEAT_SHA1() const { return ID_AA64ISAR0_EL1_SHA1() >= 1; }
bool FEAT_SHA256() const { return ID_AA64ISAR0_EL1_SHA2() >= 1; }
bool FEAT_SHA512() const { return ID_AA64ISAR0_EL1_SHA2() >= 2; }
bool FEAT_SHA3() const { return ID_AA64ISAR0_EL1_SHA3() >= 1; }
bool FEAT_SM3() const { return ID_AA64ISAR0_EL1_SM3() >= 1; }
bool FEAT_SM4() const { return ID_AA64ISAR0_EL1_SM4() >= 1; }
bool FEAT_SME() const { return ID_AA64PFR1_EL1_SME() >= 1; }
bool FEAT_SME_B16B16() const { return ID_AA64SMFR0_EL1_B16B16() == 1; }
bool FEAT_SME_FA64() const { return ID_AA64PFR1_EL1_SME() >= 1 && ID_AA64SMFR0_EL1_FA64() >= 1; }
bool FEAT_SME_F8F16() const { return ID_AA64PFR1_EL1_SME() >= 1 && ID_AA64SMFR0_EL1_F8F16() == 1; }
bool FEAT_SME_F8F32() const { return ID_AA64PFR1_EL1_SME() >= 1 && ID_AA64SMFR0_EL1_F8F32() == 1; }
bool FEAT_SME_F16F16() const { return ID_AA64PFR1_EL1_SME() >= 1 && ID_AA64SMFR0_EL1_F16F16() >= 1; }
bool FEAT_SME_F64F64() const { return ID_AA64PFR1_EL1_SME() >= 1 && ID_AA64SMFR0_EL1_F64F64() >= 1; }
bool FEAT_SME_I16I64() const { return ID_AA64PFR1_EL1_SME() >= 1 && ID_AA64SMFR0_EL1_I16I64() >= 1; }
bool FEAT_SME_LUTv2() const { return ID_AA64PFR1_EL1_SME() >= 1 && ID_AA64SMFR0_EL1_LUTv2() == 1; }
bool FEAT_SME_MOP4() const { return ID_AA64SMFR0_EL1_SMOP4() != 0; }
bool FEAT_SME_TMOP() const { return ID_AA64SMFR0_EL1_STMOP() != 0; }
bool FEAT_SME2() const { return ID_AA64PFR1_EL1_SME() >= 1 && ID_AA64SMFR0_EL1_SMEver() >= 1; }
bool FEAT_SME2p1() const { return ID_AA64PFR1_EL1_SME() >= 1 && ID_AA64SMFR0_EL1_SMEver() >= 2; }
bool FEAT_SME2p2() const { return FEAT_SME() && FEAT_SVE2p2(); }
bool FEAT_SPE() const { return ID_AA64DFR0_EL1_PMSVer() >= 1; }
bool FEAT_SPEv1p1() const { return ID_AA64DFR0_EL1_PMSVer() >= 2; }
bool FEAT_SPEv1p2() const { return ID_AA64DFR0_EL1_PMSVer() >= 3; }
bool FEAT_SPEv1p3() const { return ID_AA64DFR0_EL1_PMSVer() >= 4; }
bool FEAT_SPEv1p4() const { return ID_AA64DFR0_EL1_PMSVer() >= 5; }
bool FEAT_SPEv1p5() const { return ID_AA64DFR0_EL1_PMSVer() >= 6; }
bool FEAT_SPE_ALTCLK() const { return PMSIDR_EL1_ALTCLK() >= 1; }
bool FEAT_SPE_CRR() const { return PMSIDR_EL1_CRR() >= 1; }
bool FEAT_SPE_DPFZS() const { return ID_AA64DFR1_EL1_DPFZS() == 1; }
bool FEAT_SPE_EFT() const { return PMSIDR_EL1_EFT() == 1; }
bool FEAT_SPE_EXC() const { return ID_AA64DFR2_EL1_SPE_EXC() >= 1; }
bool FEAT_SPE_FDS() const { return PMSIDR_EL1_FDS() >= 1; }
bool FEAT_SPE_FnE() const { return PMSIDR_EL1_FnE() >= 1; }
bool FEAT_SPE_FPF() const { return PMSIDR_EL1_FPF() == 1; }
bool FEAT_SPE_nVM() const { return ID_AA64DFR2_EL1_SPE_nVM() >= 1; }
bool FEAT_SPE_PBT() const { return PMSIDR_EL1_PBT() >= 1; }
bool FEAT_SPE_SME() const { return PMSIDR_EL1_SME() == 1; }
bool FEAT_SPECRES() const { return ID_AA64ISAR1_EL1_SPECRES() >= 1; }
bool FEAT_SPECRES2() const { return ID_AA64ISAR1_EL1_SPECRES() >= 2; }
bool FEAT_SpecSEI() const { return ID_AA64MMFR1_EL1_SpecSEI() >= 1; }
bool FEAT_SPMU() const { return ID_AA64DFR1_EL1_SPMU() >= 1; }
bool FEAT_SPMU2() const { return ID_AA64DFR1_EL1_SPMU() >= 2; }
bool FEAT_SRMASK() const { return ID_AA64MMFR4_EL1_SRMASK() >= 1; }
bool FEAT_SSBS() const { return ID_AA64PFR1_EL1_SSBS() >= 1; }
bool FEAT_SSBS2() const { return ID_AA64PFR1_EL1_SSBS() >= 2; }
bool FEAT_SSVE_AES() const { return ID_AA64SMFR0_EL1_AES() >= 1; }
bool FEAT_SSVE_BitPerm() const { return ID_AA64SMFR0_EL1_SBitPerm() != 0; }
bool FEAT_SSVE_FP8FMA() const { return ID_AA64SMFR0_EL1_SF8FMA() == 1; }
bool FEAT_SSVE_FP8DOT2() const { return ID_AA64SMFR0_EL1_SF8DP2() == 1; }
bool FEAT_SSVE_FP8DOT4() const { return ID_AA64SMFR0_EL1_SF8DP4() == 1; }
bool FEAT_STEP2() const { return ID_AA64DFR2_EL1_STEP() == 1; }
bool FEAT_SVE() const { return ID_AA64PFR0_EL1_SVE() >= 1; }
bool FEAT_SVE2() const { return ID_AA64ZFR0_EL1_SVEver() >= 1; }
bool FEAT_SVE2p1() const { return ID_AA64ZFR0_EL1_SVEver() >= 2; }
bool FEAT_SVE2p2() const { return ID_AA64ZFR0_EL1_SVEver() >= 3; }
bool FEAT_SVE_AES() const { return ID_AA64ZFR0_EL1_AES() >= 1; }
bool FEAT_SVE_AES2() const { return ID_AA64ZFR0_EL1_AES() >= 3; }
bool FEAT_SVE_B16B16() const { return ID_AA64ZFR0_EL1_B16B16() >= 1; }
bool FEAT_SVE_BFSCALE() const { return ID_AA64ZFR0_EL1_B16B16() >= 2; }
bool FEAT_SVE_BitPerm() const { return ID_AA64ZFR0_EL1_BitPerm() >= 1; }
bool FEAT_SVE_F16F32MM() const { return ID_AA64ZFR0_EL1_F16MM() >= 1; }
bool FEAT_SVE_PMULL128() const { return ID_AA64ZFR0_EL1_AES() >= 2; }
bool FEAT_SVE_SHA3() const { return ID_AA64ZFR0_EL1_SHA3() >= 1; }
bool FEAT_SVE_SM4() const { return ID_AA64ZFR0_EL1_SM4() >= 1; }
bool FEAT_SYSINSTR128() const { return ID_AA64ISAR2_EL1_SYSINSTR_128() >= 1; }
bool FEAT_SYSREG128() const { return ID_AA64ISAR2_EL1_SYSREG_128() >= 1; }
bool FEAT_TCR2() const { return ID_AA64MMFR3_EL1_TCRX() >= 1; }
bool FEAT_TGran4K() const { return ID_AA64MMFR0_EL1_TGran4() < 7; }
bool FEAT_TGran16K() const { return ID_AA64MMFR0_EL1_TGran16() >= 1; }
bool FEAT_TGran64K() const { return ID_AA64MMFR0_EL1_TGran64() == 0; }
bool FEAT_THE() const { return ID_AA64PFR1_EL1_THE() >= 1; }
bool FEAT_TIDCP1() const { return ID_AA64MMFR1_EL1_TIDCP1() >= 1; }
bool FEAT_TLBIOS() const { return ID_AA64ISAR0_EL1_TLB() >= 1; }
bool FEAT_TLBIRANGE() const { return ID_AA64ISAR0_EL1_TLB() >= 2; }
bool FEAT_TLBIW() const { return ID_AA64ISAR3_EL1_TLBIW() >= 1; }
bool FEAT_TME() const { return ID_AA64ISAR0_EL1_TME() >= 1; }
bool FEAT_TRBE() const { return ID_AA64DFR0_EL1_TraceBuffer() >= 1; }
bool FEAT_TRBE_EXC() const { return ID_AA64DFR2_EL1_TRBE_EXC() >= 1; }
bool FEAT_TRBE_EXT() const { return ID_AA64DFR0_EL1_ExtTrcBuff() >= 1; }
bool FEAT_TRBE_MPAM() const { return TRBIDR_EL1_MPAM() >= 2; }
bool FEAT_TRBEv1p1() const { return ID_AA64DFR0_EL1_TraceBuffer() >= 2; }
bool FEAT_TRC_SR() const { return ID_AA64DFR0_EL1_TraceVer() >= 1; }
bool FEAT_TRF() const { return ID_AA64DFR0_EL1_TraceFilt() >= 1; }
bool FEAT_TTCNP() const { return ID_AA64MMFR2_EL1_CnP() >= 1; }
bool FEAT_TTL() const { return ID_AA64MMFR2_EL1_TTL() >= 1; }
bool FEAT_TTST() const { return ID_AA64MMFR2_EL1_ST() >= 1; }
bool FEAT_TWED() const { return ID_AA64MMFR1_EL1_TWED() >= 1; }
bool FEAT_UAO() const { return ID_AA64MMFR2_EL1_UAO() >= 1; }
bool FEAT_UINJ() const { return ID_AA64PFR2_EL1_UINJ() >= 1; }
bool FEAT_VHE() const { return ID_AA64MMFR1_EL1_VH() >= 1 || ID_AA64DFR0_EL1_DebugVer() >= 7; }
bool FEAT_VMID16() const { return ID_AA64MMFR1_EL1_VMIDBits() == 2; }
bool FEAT_VPIPT() const { return CTR_EL0_L1Ip() == 0; }
bool FEAT_WFxT() const { return ID_AA64ISAR2_EL1_WFxT() >= 2; }
bool FEAT_XNX() const { return ID_AA64MMFR1_EL1_XNX() >= 1; }
bool FEAT_XS() const { return ID_AA64ISAR1_EL1_XS() >= 1; }
// Supports PACGA in addition to PACIx and PACDx.
bool hasPACGA() const;
// Get the name of the PAC generation algorithm.
std::string pacAlgo() const;
// Get the number of QARMA rounds on this platform. Return 5 for QARMA5, 3 for QARMA3, 0 if none supported.
int pacQARMA() const;
// Check if address tagging is enabled. Variant when two VA ranges are used.
bool addressTaggingEnabled() const { return FEAT_MTE() && TCR_EL1_TBI0(); }
bool AddressTaggingEnabled0() const { return FEAT_MTE() && TCR_EL1_TBI0(); } // lower VA range
bool AddressTaggingEnabled1() const { return FEAT_MTE() && TCR_EL1_TBI1(); } // upper VA range
private:
bool _loaded = false;
// Register values. The @REG value is used by the script aarch/extract-arm-spec.py.
csr_u64_t _aa64isar0 = 0; // @REG: ID_AA64ISAR0_EL1
csr_u64_t _aa64isar1 = 0; // @REG: ID_AA64ISAR1_EL1
csr_u64_t _aa64isar2 = 0; // @REG: ID_AA64ISAR2_EL1
csr_u64_t _aa64isar3 = 0; // @REG: ID_AA64ISAR3_EL1
csr_u64_t _aa64pfr0 = 0; // @REG: ID_AA64PFR0_EL1
csr_u64_t _aa64pfr1 = 0; // @REG: ID_AA64PFR1_EL1
csr_u64_t _aa64pfr2 = 0; // @REG: ID_AA64PFR2_EL1
csr_u64_t _aa64dfr0 = 0; // @REG: ID_AA64DFR0_EL1
csr_u64_t _aa64dfr1 = 0; // @REG: ID_AA64DFR1_EL1
csr_u64_t _aa64dfr2 = 0; // @REG: ID_AA64DFR2_EL1
csr_u64_t _aa64fpfr0 = 0; // @REG: ID_AA64FPFR0_EL1
csr_u64_t _aa64mmfr0 = 0; // @REG: ID_AA64MMFR0_EL1
csr_u64_t _aa64mmfr1 = 0; // @REG: ID_AA64MMFR1_EL1
csr_u64_t _aa64mmfr2 = 0; // @REG: ID_AA64MMFR2_EL1
csr_u64_t _aa64mmfr3 = 0; // @REG: ID_AA64MMFR3_EL1
csr_u64_t _aa64mmfr4 = 0; // @REG: ID_AA64MMFR4_EL1
csr_u64_t _aa64smfr0 = 0; // @REG: ID_AA64SMFR0_EL1
csr_u64_t _aa64zfr0 = 0; // @REG: ID_AA64ZFR0_EL1
csr_u64_t _isar0 = 0; // @REG: ID_ISAR0_EL1
csr_u64_t _isar1 = 0; // @REG: ID_ISAR1_EL1
csr_u64_t _isar2 = 0; // @REG: ID_ISAR2_EL1
csr_u64_t _isar3 = 0; // @REG: ID_ISAR3_EL1
csr_u64_t _isar4 = 0; // @REG: ID_ISAR4_EL1
csr_u64_t _isar5 = 0; // @REG: ID_ISAR5_EL1
csr_u64_t _isar6 = 0; // @REG: ID_ISAR6_EL1
csr_u64_t _mmfr0 = 0; // @REG: ID_MMFR0_EL1
csr_u64_t _mmfr1 = 0; // @REG: ID_MMFR1_EL1
csr_u64_t _mmfr2 = 0; // @REG: ID_MMFR2_EL1
csr_u64_t _mmfr3 = 0; // @REG: ID_MMFR3_EL1
csr_u64_t _mmfr4 = 0; // @REG: ID_MMFR4_EL1
csr_u64_t _mmfr5 = 0; // @REG: ID_MMFR5_EL1
csr_u64_t _pfr0 = 0; // @REG: ID_PFR0_EL1
csr_u64_t _pfr1 = 0; // @REG: ID_PFR1_EL1
csr_u64_t _pfr2 = 0; // @REG: ID_PFR2_EL1
csr_u64_t _ctr = 0; // @REG: CTR_EL0
csr_u64_t _tcr = 0; // @REG: TCR_EL1
csr_u64_t _tcr2 = 0; // @REG: TCR2_EL1
csr_u64_t _trcdevarch = 0; // @REG: TRCDEVARCH
csr_u64_t _pmmir = 0; // @REG: PMMIR_EL1
csr_u64_t _pmsidr = 0; // @REG: PMSIDR_EL1
csr_u64_t _mpamidr = 0; // @REG: MPAMIDR_EL1
csr_u64_t _trbidr = 0; // @REG: TRBIDR_EL1
};