[clang] [llvm] [AArch64][llvm] Add support for Permission Overlays Extension 2 (FEAT_S1POE2) (PR #164912)
Jonathan Thackray via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 3 03:55:54 PST 2025
https://github.com/jthackray updated https://github.com/llvm/llvm-project/pull/164912
>From 715ea155e500e5d84881fbb64640b5d95561e842 Mon Sep 17 00:00:00 2001
From: Jonathan Thackray <jonathan.thackray at arm.com>
Date: Tue, 2 Sep 2025 16:43:43 +0100
Subject: [PATCH 1/2] [AArch64][llvm] Add support for Permission Overlays
Extension 2 (FEAT_S1POE2)
Add assembly/disassembly support for AArch64 FEAT_S1POE2 (Stage 1
Permission Overlays Extension 2), as documented here:
https://developer.arm.com/documentation/109697/2025_09/Future-Architecture-Technologies
Co-authored-by: Rodolfo Wottrich <rodolfo.wottrich at arm.com>
---
clang/test/Driver/aarch64-vfat.c | 15 +
.../print-supported-extensions-aarch64.c | 3 +
llvm/lib/Target/AArch64/AArch64Features.td | 13 +
.../lib/Target/AArch64/AArch64InstrFormats.td | 98 +
llvm/lib/Target/AArch64/AArch64InstrInfo.td | 27 +
.../Target/AArch64/AArch64SystemOperands.td | 177 +
.../AArch64/AsmParser/AArch64AsmParser.cpp | 78 +-
.../MCTargetDesc/AArch64InstPrinter.cpp | 25 +
.../AArch64/MCTargetDesc/AArch64InstPrinter.h | 3 +
.../Target/AArch64/Utils/AArch64BaseInfo.cpp | 20 +-
.../Target/AArch64/Utils/AArch64BaseInfo.h | 16 +
llvm/test/MC/AArch64/arm-btie.s | 27 +
.../MC/AArch64/arm-poe2-tlbid-diagnostics.s | 88 +
llvm/test/MC/AArch64/arm-poe2-tlbid.s | 117 +
llvm/test/MC/AArch64/arm-poe2.s | 3263 +++++++++++++++++
llvm/test/MC/AArch64/arm-tev.s | 41 +
.../TargetParser/TargetParserTest.cpp | 13 +-
17 files changed, 4018 insertions(+), 6 deletions(-)
create mode 100644 clang/test/Driver/aarch64-vfat.c
create mode 100644 llvm/test/MC/AArch64/arm-btie.s
create mode 100644 llvm/test/MC/AArch64/arm-poe2-tlbid-diagnostics.s
create mode 100644 llvm/test/MC/AArch64/arm-poe2-tlbid.s
create mode 100644 llvm/test/MC/AArch64/arm-poe2.s
create mode 100644 llvm/test/MC/AArch64/arm-tev.s
diff --git a/clang/test/Driver/aarch64-vfat.c b/clang/test/Driver/aarch64-vfat.c
new file mode 100644
index 0000000000000..fa268641a86e0
--- /dev/null
+++ b/clang/test/Driver/aarch64-vfat.c
@@ -0,0 +1,15 @@
+// ===== Features supported on aarch64 =====
+
+// FAT features (Future Architecture Technologies)
+
+// RUN: %clang -target aarch64 -march=armv9.7a+poe2 -### -c %s 2>&1 | FileCheck -check-prefix=VFAT-POE2 %s
+// RUN: %clang -target aarch64 -march=armv9.7-a+poe2 -### -c %s 2>&1 | FileCheck -check-prefix=VFAT-POE2 %s
+// VFAT-POE2: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "generic" "-target-feature" "+v9.7a"{{.*}} "-target-feature" "+poe2"
+
+// RUN: %clang -target aarch64 -march=armv9.7a+tev -### -c %s 2>&1 | FileCheck -check-prefix=VFAT-TEV %s
+// RUN: %clang -target aarch64 -march=armv9.7-a+tev -### -c %s 2>&1 | FileCheck -check-prefix=VFAT-TEV %s
+// VFAT-TEV: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "generic" "-target-feature" "+v9.7a"{{.*}} "-target-feature" "+tev"
+
+// RUN: %clang -target aarch64 -march=armv9.7a+btie -### -c %s 2>&1 | FileCheck -check-prefix=VFAT-BTIE %s
+// RUN: %clang -target aarch64 -march=armv9.7-a+btie -### -c %s 2>&1 | FileCheck -check-prefix=VFAT-BTIE %s
+// VFAT-BTIE: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "generic" "-target-feature" "+v9.7a"{{.*}} "-target-feature" "+btie"
diff --git a/clang/test/Driver/print-supported-extensions-aarch64.c b/clang/test/Driver/print-supported-extensions-aarch64.c
index 7294c33959e7e..d0c86c7065281 100644
--- a/clang/test/Driver/print-supported-extensions-aarch64.c
+++ b/clang/test/Driver/print-supported-extensions-aarch64.c
@@ -8,6 +8,7 @@
// CHECK-NEXT: bf16 FEAT_BF16 Enable BFloat16 Extension
// CHECK-NEXT: brbe FEAT_BRBE Enable Branch Record Buffer Extension
// CHECK-NEXT: bti FEAT_BTI Enable Branch Target Identification
+// CHECK-NEXT: btie FEAT_BTIE Enable Enhanced Branch Target Identification extension
// CHECK-NEXT: cmh FEAT_CMH Enable Armv9.7-A Contention Management Hints
// CHECK-NEXT: cmpbr FEAT_CMPBR Enable Armv9.6-A base compare and branch instructions
// CHECK-NEXT: fcma FEAT_FCMA Enable Armv8.3-A Floating-point complex number support
@@ -58,6 +59,7 @@
// CHECK-NEXT: pauth-lr FEAT_PAuth_LR Enable Armv9.5-A PAC enhancements
// CHECK-NEXT: pcdphint FEAT_PCDPHINT Enable Armv9.6-A Producer Consumer Data Placement hints
// CHECK-NEXT: pmuv3 FEAT_PMUv3 Enable Armv8.0-A PMUv3 Performance Monitors extension
+// CHECK-NEXT: poe2 FEAT_S1POE2 Enable Stage 1 Permission Overlays Extension 2 instructions
// CHECK-NEXT: pops FEAT_PoPS Enable Armv9.6-A Point Of Physical Storage (PoPS) DC instructions
// CHECK-NEXT: predres FEAT_SPECRES Enable Armv8.5-A execution and data prediction invalidation instructions
// CHECK-NEXT: rng FEAT_RNG Enable Random Number generation instructions
@@ -112,6 +114,7 @@
// CHECK-NEXT: sve2p1 FEAT_SVE2p1 Enable Scalable Vector Extension 2.1 instructions
// CHECK-NEXT: sve2p2 FEAT_SVE2p2 Enable Armv9.6-A Scalable Vector Extension 2.2 instructions
// CHECK-NEXT: sve2p3 FEAT_SVE2p3 Enable Armv9.7-A Scalable Vector Extension 2.3 instructions
+// CHECK-NEXT: tev FEAT_TEV Enable TIndex Exception-like Vector instructions
// CHECK-NEXT: the FEAT_THE Enable Armv8.9-A Translation Hardening Extension
// CHECK-NEXT: tlbid FEAT_TLBID Enable Armv9.7-A TLBI Domains extension
// CHECK-NEXT: tlbiw FEAT_TLBIW Enable Armv9.5-A TLBI VMALL for Dirty State
diff --git a/llvm/lib/Target/AArch64/AArch64Features.td b/llvm/lib/Target/AArch64/AArch64Features.td
index 0e94b78d11d83..c4f6e000dff66 100644
--- a/llvm/lib/Target/AArch64/AArch64Features.td
+++ b/llvm/lib/Target/AArch64/AArch64Features.td
@@ -625,6 +625,19 @@ def FeatureF16F32DOT : ExtensionWithMArch<"f16f32dot", "F16F32DOT", "FEAT_F16F32
def FeatureF16F32MM : ExtensionWithMArch<"f16f32mm", "F16F32MM", "FEAT_F16F32MM",
"Enable Armv9.7-A Advanced SIMD half-precision matrix multiply-accumulate to single-precision", [FeatureNEON, FeatureFullFP16]>;
+//===----------------------------------------------------------------------===//
+// Future Architecture Technologies
+//===----------------------------------------------------------------------===//
+
+def FeatureBTIE: ExtensionWithMArch<"btie", "BTIE", "FEAT_BTIE",
+ "Enable Enhanced Branch Target Identification extension">;
+
+def FeatureS1POE2: ExtensionWithMArch<"poe2", "POE2", "FEAT_S1POE2",
+ "Enable Stage 1 Permission Overlays Extension 2 instructions", [FeatureBTIE]>;
+
+def FeatureTEV: ExtensionWithMArch<"tev", "TEV", "FEAT_TEV",
+ "Enable TIndex Exception-like Vector instructions">;
+
//===----------------------------------------------------------------------===//
// Other Features
//===----------------------------------------------------------------------===//
diff --git a/llvm/lib/Target/AArch64/AArch64InstrFormats.td b/llvm/lib/Target/AArch64/AArch64InstrFormats.td
index 58a53af76e1b5..a39bb31e61196 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrFormats.td
+++ b/llvm/lib/Target/AArch64/AArch64InstrFormats.td
@@ -1909,6 +1909,21 @@ def CMHPriorityHint_op : Operand<i32> {
}];
}
+def TIndexHintOperand : AsmOperandClass {
+ let Name = "TIndexHint";
+ let ParserMethod = "tryParseTIndexHint";
+}
+
+def TIndexhint_op : Operand<i32> {
+ let ParserMatchClass = TIndexHintOperand;
+ let PrintMethod = "printTIndexHintOp";
+ let MCOperandPredicate = [{
+ if (!MCOp.isImm())
+ return false;
+ return AArch64TIndexHint::lookupTIndexByEncoding(MCOp.getImm()) != nullptr;
+ }];
+}
+
class MRSI : RtSystemI<1, (outs GPR64:$Rt), (ins mrs_sysreg_op:$systemreg),
"mrs", "\t$Rt, $systemreg"> {
bits<16> systemreg;
@@ -13338,3 +13353,86 @@ class STCPHInst<string asm> : I<
let Inst{7-5} = 0b100;
let Inst{4-0} = 0b11111;
}
+
+//---
+// Permission Overlays Extension 2 (FEAT_S1POE2)
+//---
+
+class TCHANGERegInst<string asm, bit isB> : I<
+ (outs GPR64:$Xd),
+ (ins GPR64:$Xn, TIndexhint_op:$nb),
+ asm, "\t$Xd, $Xn, $nb", "", []>, Sched<[]> {
+ bits<5> Xd;
+ bits<5> Xn;
+ bits<1> nb;
+ let Inst{31-19} = 0b1101010110000;
+ let Inst{18} = isB;
+ let Inst{17} = nb;
+ let Inst{16-10} = 0b0000000;
+ let Inst{9-5} = Xn;
+ let Inst{4-0} = Xd;
+}
+
+class TCHANGEImmInst<string asm, bit isB> : I<
+ (outs GPR64:$Xd),
+ (ins imm0_127:$imm, TIndexhint_op:$nb),
+ asm, "\t$Xd, $imm, $nb", "", []>, Sched<[]> {
+ bits<5> Xd;
+ bits<7> imm;
+ bits<1> nb;
+ let Inst{31-19} = 0b1101010110010;
+ let Inst{18} = isB;
+ let Inst{17} = nb;
+ let Inst{16-12} = 0b00000;
+ let Inst{11-5} = imm;
+ let Inst{4-0} = Xd;
+}
+
+class TENTERInst<string asm> : I<
+ (outs),
+ (ins imm0_127:$imm, TIndexhint_op:$nb),
+ asm, "\t$imm, $nb", "", []>, Sched<[]> {
+ bits<7> imm;
+ bits<1> nb;
+ let Inst{31-20} = 0b110101001110;
+ let Inst{19-18} = 0b00;
+ let Inst{17} = nb;
+ let Inst{16-12} = 0b00000;
+ let Inst{11-5} = imm;
+ let Inst{4-0} = 0b00000;
+}
+
+class TEXITInst<string asm> : I<
+ (outs),
+ (ins TIndexhint_op:$nb),
+ asm, "\t$nb", "", []>, Sched<[]> {
+ bits<1> nb;
+ let Inst{31-13} = 0b1101011011111111000;
+ let Inst{12-11} = 0b00;
+ let Inst{10} = nb;
+ let Inst{9-0} = 0b1111100000;
+}
+
+
+multiclass TCHANGEReg<string asm , bit isB> {
+ def NAME : TCHANGERegInst<asm, isB>;
+ def : InstAlias<asm # "\t$Xd, $Xn",
+ (!cast<Instruction>(NAME) GPR64:$Xd, GPR64:$Xn, 0), 1>;
+}
+
+multiclass TCHANGEImm<string asm, bit isB> {
+ def NAME : TCHANGEImmInst<asm, isB>;
+ def : InstAlias<asm # "\t$Xd, $Xn",
+ (!cast<Instruction>(NAME) GPR64:$Xd, imm0_127:$Xn, 0), 1>;
+}
+
+multiclass TENTER<string asm> {
+ def NAME : TENTERInst<asm>;
+ def : InstAlias<asm # "\t$imm",
+ (!cast<Instruction>(NAME) imm0_127:$imm, 0), 1>;
+}
+
+multiclass TEXIT<string asm> {
+ def NAME : TEXITInst<asm>;
+ def : InstAlias<asm, (!cast<Instruction>(NAME) 0), 1>;
+}
diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.td b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
index 2871a20e28b65..cbba169f4db92 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrInfo.td
+++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
@@ -346,6 +346,8 @@ def HasCCDP : Predicate<"Subtarget->hasCCDP()">,
AssemblerPredicateWithAll<(all_of FeatureCacheDeepPersist), "ccdp">;
def HasBTI : Predicate<"Subtarget->hasBTI()">,
AssemblerPredicateWithAll<(all_of FeatureBranchTargetId), "bti">;
+def HasBTIE : Predicate<"Subtarget->hasBTIE()">,
+ AssemblerPredicateWithAll<(all_of FeatureBTIE), "btie">;
def HasMTE : Predicate<"Subtarget->hasMTE()">,
AssemblerPredicateWithAll<(all_of FeatureMTE), "mte">;
def HasTME : Predicate<"Subtarget->hasTME()">,
@@ -405,6 +407,10 @@ def HasMTETC : Predicate<"Subtarget->hasMTETC()">,
AssemblerPredicateWithAll<(all_of FeatureMTETC), "mtetc">;
def HasGCIE : Predicate<"Subtarget->hasGCIE()">,
AssemblerPredicateWithAll<(all_of FeatureGCIE), "gcie">;
+def HasS1POE2 : Predicate<"Subtarget->hasS1POE2()">,
+ AssemblerPredicateWithAll<(all_of FeatureS1POE2), "poe2">;
+def HasTEV : Predicate<"Subtarget->hasTEV()">,
+ AssemblerPredicateWithAll<(all_of FeatureTEV), "tev">;
def IsLE : Predicate<"Subtarget->isLittleEndian()">;
def IsBE : Predicate<"!Subtarget->isLittleEndian()">;
def IsWindows : Predicate<"Subtarget->isTargetWindows()">;
@@ -1540,6 +1546,7 @@ let Predicates = [HasPCDPHINT] in {
// should not emit these mnemonics unless BTI is enabled.
def : InstAlias<"bti", (HINT 32), 0>;
def : InstAlias<"bti $op", (HINT btihint_op:$op), 0>;
+def : InstAlias<"bti r", (HINT 32)>, Requires<[HasBTIE]>;
def : InstAlias<"bti", (HINT 32)>, Requires<[HasBTI]>;
def : InstAlias<"bti $op", (HINT btihint_op:$op)>, Requires<[HasBTI]>;
@@ -11426,6 +11433,26 @@ let Predicates = [HasCMH] in {
def STCPH : STCPHInst<"stcph">; // Store Concurrent Priority Hint instruction
}
+//===----------------------------------------------------------------------===//
+// Permission Overlays Extension 2 (FEAT_S1POE2)
+//===----------------------------------------------------------------------===//
+
+let Predicates = [HasS1POE2] in {
+ defm TCHANGEBrr : TCHANGEReg<"tchangeb", true>;
+ defm TCHANGEFrr : TCHANGEReg<"tchangef", false>;
+ defm TCHANGEBri : TCHANGEImm<"tchangeb", true>;
+ defm TCHANGEFri : TCHANGEImm<"tchangef", false>;
+}
+
+//===----------------------------------------------------------------------===//
+// TIndex Exception-like Vector (FEAT_TEV)
+//===----------------------------------------------------------------------===//
+
+let Predicates = [HasTEV] in {
+ defm TENTER : TENTER<"tenter">;
+ defm TEXIT : TEXIT<"texit">;
+}
+
include "AArch64InstrAtomics.td"
include "AArch64SVEInstrInfo.td"
include "AArch64SMEInstrInfo.td"
diff --git a/llvm/lib/Target/AArch64/AArch64SystemOperands.td b/llvm/lib/Target/AArch64/AArch64SystemOperands.td
index ae46d717d0cb1..51913f6cb5c1f 100644
--- a/llvm/lib/Target/AArch64/AArch64SystemOperands.td
+++ b/llvm/lib/Target/AArch64/AArch64SystemOperands.td
@@ -814,10 +814,12 @@ def lookupBTIByName : SearchIndex {
let Key = ["Name"];
}
+def : BTI<"r", 0b000>;
def : BTI<"c", 0b010>;
def : BTI<"j", 0b100>;
def : BTI<"jc", 0b110>;
+
//===----------------------------------------------------------------------===//
// CMHPriority instruction options.
//===----------------------------------------------------------------------===//
@@ -833,6 +835,23 @@ class CMHPriorityHint<string name, bits<1> encoding> : SearchableTable {
def : CMHPriorityHint<"ph", 0b1>;
+
+//===----------------------------------------------------------------------===//
+// TIndex instruction options.
+//===----------------------------------------------------------------------===//
+
+class TIndex<string name, bits<1> encoding> : SearchableTable {
+ let SearchableFields = ["Name", "Encoding"];
+ let EnumValueField = "Encoding";
+
+ string Name = name;
+ bits<1> Encoding;
+ let Encoding = encoding;
+}
+
+def : TIndex<"nb", 0b1>;
+
+
//===----------------------------------------------------------------------===//
// TLBI (translation lookaside buffer invalidate) instruction options.
//===----------------------------------------------------------------------===//
@@ -2694,3 +2713,161 @@ def : GIC<"ldhm", 0b110, 0b1100, 0b0010, 0b001>;
def : GIC<"ldpend", 0b110, 0b1100, 0b0001, 0b100>;
def : GIC<"ldpri", 0b110, 0b1100, 0b0001, 0b010>;
def : GIC<"ldrcfg", 0b110, 0b1100, 0b0001, 0b101>;
+
+
+// Stage 1 Permission Overlays Extension 2 (FEAT_S1POE2).
+// Op0 Op1 CRn CRm Op2
+def : RWSysReg<"DPOTBR0_EL1", 0b11, 0b000, 0b0010, 0b0000, 0b110>;
+def : RWSysReg<"DPOTBR0_EL12", 0b11, 0b101, 0b0010, 0b0000, 0b110>;
+def : RWSysReg<"DPOTBR1_EL1", 0b11, 0b000, 0b0010, 0b0000, 0b111>;
+def : RWSysReg<"DPOTBR1_EL12", 0b11, 0b101, 0b0010, 0b0000, 0b111>;
+def : RWSysReg<"DPOTBR0_EL2", 0b11, 0b100, 0b0010, 0b0000, 0b110>;
+def : RWSysReg<"DPOTBR1_EL2", 0b11, 0b100, 0b0010, 0b0000, 0b111>;
+def : RWSysReg<"DPOTBR0_EL3", 0b11, 0b110, 0b0010, 0b0000, 0b110>;
+
+// Op0 Op1 CRn CRm Op2
+def : RWSysReg<"IRTBRU_EL1", 0b11, 0b000, 0b0010, 0b0000, 0b100>;
+def : RWSysReg<"IRTBRU_EL12", 0b11, 0b101, 0b0010, 0b0000, 0b100>;
+def : RWSysReg<"IRTBRP_EL1", 0b11, 0b000, 0b0010, 0b0000, 0b101>;
+def : RWSysReg<"IRTBRP_EL12", 0b11, 0b101, 0b0010, 0b0000, 0b101>;
+def : RWSysReg<"IRTBRU_EL2", 0b11, 0b100, 0b0010, 0b0000, 0b100>;
+def : RWSysReg<"IRTBRP_EL2", 0b11, 0b100, 0b0010, 0b0000, 0b101>;
+def : RWSysReg<"IRTBRP_EL3", 0b11, 0b110, 0b0010, 0b0000, 0b101>;
+
+// Op0 Op1 CRn CRm Op2
+def : RWSysReg<"TTTBRU_EL1", 0b11, 0b000, 0b1010, 0b0010, 0b110>;
+def : RWSysReg<"TTTBRU_EL12", 0b11, 0b101, 0b1010, 0b0010, 0b110>;
+def : RWSysReg<"TTTBRP_EL1", 0b11, 0b000, 0b1010, 0b0010, 0b111>;
+def : RWSysReg<"TTTBRP_EL12", 0b11, 0b101, 0b1010, 0b0010, 0b111>;
+def : RWSysReg<"TTTBRU_EL2", 0b11, 0b100, 0b1010, 0b0010, 0b110>;
+def : RWSysReg<"TTTBRP_EL2", 0b11, 0b100, 0b1010, 0b0010, 0b111>;
+def : RWSysReg<"TTTBRP_EL3", 0b11, 0b110, 0b1010, 0b0010, 0b111>;
+
+foreach n = 0-15 in {
+ defvar nb = !cast<bits<4>>(n);
+ // Op0 Op1 CRn CRm Op2
+ def : RWSysReg<"FGDTP"#n#"_EL1", 0b11, 0b000, 0b0011, {0b001,nb{3}}, nb{2-0}>;
+ def : RWSysReg<"FGDTP"#n#"_EL2", 0b11, 0b100, 0b0011, {0b001,nb{3}}, nb{2-0}>;
+ def : RWSysReg<"FGDTP"#n#"_EL12", 0b11, 0b101, 0b0011, {0b001,nb{3}}, nb{2-0}>;
+ def : RWSysReg<"FGDTP"#n#"_EL3", 0b11, 0b110, 0b0011, {0b001,nb{3}}, nb{2-0}>;
+
+ def : RWSysReg<"FGDTU"#n#"_EL1", 0b11, 0b000, 0b0011, {0b010,nb{3}}, nb{2-0}>;
+ def : RWSysReg<"FGDTU"#n#"_EL2", 0b11, 0b100, 0b0011, {0b010,nb{3}}, nb{2-0}>;
+ def : RWSysReg<"FGDTU"#n#"_EL12", 0b11, 0b101, 0b0011, {0b010,nb{3}}, nb{2-0}>;
+}
+
+// Op0 Op1 CRn CRm Op2
+def : RWSysReg<"LDSTT_EL1", 0b11, 0b000, 0b0010, 0b0001, 0b111>;
+def : RWSysReg<"LDSTT_EL12", 0b11, 0b101, 0b0010, 0b0001, 0b111>;
+def : RWSysReg<"LDSTT_EL2", 0b11, 0b100, 0b0010, 0b0001, 0b111>;
+
+// Op0 Op1 CRn CRm Op2
+def : RWSysReg<"TINDEX_EL0", 0b11, 0b011, 0b0100, 0b0000, 0b011>;
+def : RWSysReg<"TINDEX_EL1", 0b11, 0b000, 0b0100, 0b0000, 0b011>;
+def : RWSysReg<"TINDEX_EL2", 0b11, 0b100, 0b0100, 0b0000, 0b011>;
+def : RWSysReg<"TINDEX_EL12", 0b11, 0b101, 0b0100, 0b0000, 0b011>;
+def : RWSysReg<"TINDEX_EL3", 0b11, 0b110, 0b0100, 0b0000, 0b011>;
+
+// Op0 Op1 CRn CRm Op2
+def : RWSysReg<"STINDEX_EL1", 0b11, 0b000, 0b0100, 0b0000, 0b010>;
+def : RWSysReg<"STINDEX_EL2", 0b11, 0b100, 0b0100, 0b0000, 0b010>;
+def : RWSysReg<"STINDEX_EL12", 0b11, 0b101, 0b0100, 0b0000, 0b010>;
+def : RWSysReg<"STINDEX_EL3", 0b11, 0b110, 0b0100, 0b0000, 0b010>;
+
+// Op0 Op1 CRn CRm Op2
+def : RWSysReg<"TPIDR3_EL0", 0b11, 0b011, 0b1101, 0b0000, 0b000>;
+def : RWSysReg<"TPIDR3_EL1", 0b11, 0b000, 0b1101, 0b0000, 0b000>;
+def : RWSysReg<"TPIDR3_EL12", 0b11, 0b101, 0b1101, 0b0000, 0b000>;
+def : RWSysReg<"TPIDR3_EL2", 0b11, 0b100, 0b1101, 0b0000, 0b000>;
+def : RWSysReg<"TPIDR3_EL3", 0b11, 0b110, 0b1101, 0b0000, 0b000>;
+
+// Op0 Op1 CRn CRm Op2
+def : RWSysReg<"VNCCR_EL2", 0b11, 0b100, 0b0010, 0b0010, 0b001>;
+
+// Op0 Op1 CRn CRm Op2
+def : RWSysReg<"DPOCR_EL0", 0b11, 0b011, 0b0100, 0b0101, 0b010>;
+
+foreach n = 0-15 in {
+ defvar nb = !cast<bits<4>>(n);
+ // Op0 Op1 CRn CRm Op2
+ def : RWSysReg<"AFGDTP"#n#"_EL1", 0b11, 0b000, 0b0011, {0b011,nb{3}}, nb{2-0}>;
+ def : RWSysReg<"AFGDTU"#n#"_EL1", 0b11, 0b000, 0b0011, {0b100,nb{3}}, nb{2-0}>;
+ def : RWSysReg<"AFGDTP"#n#"_EL2", 0b11, 0b100, 0b0011, {0b011,nb{3}}, nb{2-0}>;
+ def : RWSysReg<"AFGDTU"#n#"_EL2", 0b11, 0b100, 0b0011, {0b100,nb{3}}, nb{2-0}>;
+ def : RWSysReg<"AFGDTP"#n#"_EL12", 0b11, 0b101, 0b0011, {0b011,nb{3}}, nb{2-0}>;
+ def : RWSysReg<"AFGDTU"#n#"_EL12", 0b11, 0b101, 0b0011, {0b100,nb{3}}, nb{2-0}>;
+ def : RWSysReg<"AFGDTP"#n#"_EL3", 0b11, 0b110, 0b0011, {0b011,nb{3}}, nb{2-0}>;
+}
+
+// Extra S1POE2 Hypervisor Configuration Registers
+// Op0 Op1 CRn CRm Op2
+def : RWSysReg<"HCRMASK_EL2", 0b11, 0b100, 0b0001, 0b0101, 0b110>;
+def : RWSysReg<"HCRXMASK_EL2", 0b11, 0b100, 0b0001, 0b0101, 0b111>;
+def : RWSysReg<"NVHCR_EL2", 0b11, 0b100, 0b0001, 0b0101, 0b000>;
+def : RWSysReg<"NVHCRX_EL2", 0b11, 0b100, 0b0001, 0b0101, 0b001>;
+def : RWSysReg<"NVHCRMASK_EL2", 0b11, 0b100, 0b0001, 0b0101, 0b100>;
+def : RWSysReg<"NVHCRXMASK_EL2", 0b11, 0b100, 0b0001, 0b0101, 0b101>;
+
+// S1POE2 Thread private state extension (FEAT_TPS/TPSP).
+foreach n = 0-1 in {
+ defvar nb = !cast<bits<1>>(n);
+ // Op0 Op1 CRn CRm Op2
+ def : RWSysReg<"TPMIN"#n#"_EL0", 0b11, 0b011, 0b0010, 0b0010, {0b1,nb,0}>;
+ def : RWSysReg<"TPMAX"#n#"_EL0", 0b11, 0b011, 0b0010, 0b0010, {0b1,nb,1}>;
+ def : RWSysReg<"TPMIN"#n#"_EL1", 0b11, 0b000, 0b0010, 0b0010, {0b1,nb,0}>;
+ def : RWSysReg<"TPMAX"#n#"_EL1", 0b11, 0b000, 0b0010, 0b0010, {0b1,nb,1}>;
+ def : RWSysReg<"TPMIN"#n#"_EL2", 0b11, 0b100, 0b0010, 0b0010, {0b1,nb,0}>;
+ def : RWSysReg<"TPMAX"#n#"_EL2", 0b11, 0b100, 0b0010, 0b0010, {0b1,nb,1}>;
+ def : RWSysReg<"TPMIN"#n#"_EL12", 0b11, 0b101, 0b0010, 0b0010, {0b1,nb,0}>;
+ def : RWSysReg<"TPMAX"#n#"_EL12", 0b11, 0b101, 0b0010, 0b0010, {0b1,nb,1}>;
+}
+
+class PLBIEntry<bits<3> op1, bits<4> crn, bits<4> crm, bits<3> op2, string name,
+ bit needsreg, bit optionalreg> {
+ string Name = name;
+ bits<14> Encoding;
+ let Encoding{13-11} = op1;
+ let Encoding{10-7} = crn;
+ let Encoding{6-3} = crm;
+ let Encoding{2-0} = op2;
+ bit NeedsReg = needsreg;
+ bit OptionalReg = optionalreg;
+ string RequiresStr = [{ {AArch64::FeatureS1POE2} }];
+}
+
+def PLBITable : GenericTable {
+ let FilterClass = "PLBIEntry";
+ let CppTypeName = "PLBI";
+ let Fields = ["Name", "Encoding", "NeedsReg", "OptionalReg", "RequiresStr"];
+
+ let PrimaryKey = ["Encoding"];
+ let PrimaryKeyName = "lookupPLBIByEncoding";
+}
+
+def lookupPLBIByName : SearchIndex {
+ let Table = PLBITable;
+ let Key = ["Name"];
+}
+
+multiclass PLBI<string name, bits<3> op1, bits<4> crn, bits<3> op2,
+ bit needsreg> {
+ // Entries containing "IS" or "OS" allow optional regs when +tlbid enabled
+ def : PLBIEntry<op1, crn, 0b0111, op2, name, needsreg, 0>;
+ def : PLBIEntry<op1, crn, 0b0011, op2, name#"IS", needsreg, 1>;
+ def : PLBIEntry<op1, crn, 0b0001, op2, name#"OS", needsreg, 1>;
+ def : PLBIEntry<op1, crn, 0b1111, op2, name#"NXS", needsreg, 0>;
+ def : PLBIEntry<op1, crn, 0b1011, op2, name#"ISNXS", needsreg, 1>;
+ def : PLBIEntry<op1, crn, 0b1001, op2, name#"OSNXS", needsreg, 1>;
+}
+
+// CRm defines above six variants of each instruction. It is omitted here.
+// Op1 CRn Op2 needsreg
+defm : PLBI<"ALLE3", 0b110, 0b1010, 0b000, 0>;
+defm : PLBI<"ALLE2", 0b100, 0b1010, 0b000, 0>;
+defm : PLBI<"ALLE1", 0b100, 0b1010, 0b100, 0>;
+defm : PLBI<"VMALLE1", 0b000, 0b1010, 0b000, 0>;
+defm : PLBI<"ASIDE1", 0b000, 0b1010, 0b010, 1>;
+defm : PLBI<"PERME3", 0b110, 0b1010, 0b001, 1>;
+defm : PLBI<"PERME2", 0b100, 0b1010, 0b001, 1>;
+defm : PLBI<"PERME1", 0b000, 0b1010, 0b001, 1>;
+defm : PLBI<"PERMAE1", 0b000, 0b1010, 0b011, 1>;
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index 6273cfc1005d6..71cde9ddf0978 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -268,6 +268,7 @@ class AArch64AsmParser : public MCTargetAsmParser {
ParseStatus tryParsePSBHint(OperandVector &Operands);
ParseStatus tryParseBTIHint(OperandVector &Operands);
ParseStatus tryParseCMHPriorityHint(OperandVector &Operands);
+ ParseStatus tryParseTIndexHint(OperandVector &Operands);
ParseStatus tryParseAdrpLabel(OperandVector &Operands);
ParseStatus tryParseAdrLabel(OperandVector &Operands);
template <bool AddFPZeroAsLiteral>
@@ -373,6 +374,7 @@ class AArch64Operand : public MCParsedAsmOperand {
k_PHint,
k_BTIHint,
k_CMHPriorityHint,
+ k_TIndexHint,
} Kind;
SMLoc StartLoc, EndLoc;
@@ -507,6 +509,11 @@ class AArch64Operand : public MCParsedAsmOperand {
unsigned Length;
unsigned Val;
};
+ struct TIndexHintOp {
+ const char *Data;
+ unsigned Length;
+ unsigned Val;
+ };
struct SVCROp {
const char *Data;
@@ -534,6 +541,7 @@ class AArch64Operand : public MCParsedAsmOperand {
struct PHintOp PHint;
struct BTIHintOp BTIHint;
struct CMHPriorityHintOp CMHPriorityHint;
+ struct TIndexHintOp TIndexHint;
struct ShiftExtendOp ShiftExtend;
struct SVCROp SVCR;
};
@@ -607,6 +615,9 @@ class AArch64Operand : public MCParsedAsmOperand {
case k_CMHPriorityHint:
CMHPriorityHint = o.CMHPriorityHint;
break;
+ case k_TIndexHint:
+ TIndexHint = o.TIndexHint;
+ break;
case k_ShiftExtend:
ShiftExtend = o.ShiftExtend;
break;
@@ -791,6 +802,16 @@ class AArch64Operand : public MCParsedAsmOperand {
return StringRef(CMHPriorityHint.Data, CMHPriorityHint.Length);
}
+ unsigned getTIndexHint() const {
+ assert(Kind == k_TIndexHint && "Invalid access!");
+ return TIndexHint.Val;
+ }
+
+ StringRef getTIndexHintName() const {
+ assert(Kind == k_TIndexHint && "Invalid access!");
+ return StringRef(TIndexHint.Data, TIndexHint.Length);
+ }
+
StringRef getSVCR() const {
assert(Kind == k_SVCR && "Invalid access!");
return StringRef(SVCR.Data, SVCR.Length);
@@ -1534,6 +1555,7 @@ class AArch64Operand : public MCParsedAsmOperand {
bool isPHint() const { return Kind == k_PHint; }
bool isBTIHint() const { return Kind == k_BTIHint; }
bool isCMHPriorityHint() const { return Kind == k_CMHPriorityHint; }
+ bool isTIndexHint() const { return Kind == k_TIndexHint; }
bool isShiftExtend() const { return Kind == k_ShiftExtend; }
bool isShifter() const {
if (!isShiftExtend())
@@ -2224,6 +2246,11 @@ class AArch64Operand : public MCParsedAsmOperand {
Inst.addOperand(MCOperand::createImm(getCMHPriorityHint()));
}
+ void addTIndexHintOperands(MCInst &Inst, unsigned N) const {
+ assert(N == 1 && "Invalid number of operands!");
+ Inst.addOperand(MCOperand::createImm(getTIndexHint()));
+ }
+
void addShifterOperands(MCInst &Inst, unsigned N) const {
assert(N == 1 && "Invalid number of operands!");
unsigned Imm =
@@ -2585,6 +2612,17 @@ class AArch64Operand : public MCParsedAsmOperand {
return Op;
}
+ static std::unique_ptr<AArch64Operand>
+ CreateTIndexHint(unsigned Val, StringRef Str, SMLoc S, MCContext &Ctx) {
+ auto Op = std::make_unique<AArch64Operand>(k_TIndexHint, Ctx);
+ Op->TIndexHint.Val = Val;
+ Op->TIndexHint.Data = Str.data();
+ Op->TIndexHint.Length = Str.size();
+ Op->StartLoc = S;
+ Op->EndLoc = S;
+ return Op;
+ }
+
static std::unique_ptr<AArch64Operand>
CreateMatrixRegister(unsigned RegNum, unsigned ElementWidth, MatrixKind Kind,
SMLoc S, SMLoc E, MCContext &Ctx) {
@@ -2698,6 +2736,9 @@ void AArch64Operand::print(raw_ostream &OS, const MCAsmInfo &MAI) const {
case k_CMHPriorityHint:
OS << getCMHPriorityHintName();
break;
+ case k_TIndexHint:
+ OS << getTIndexHintName();
+ break;
case k_MatrixRegister:
OS << "<matrix " << getMatrixReg() << ">";
break;
@@ -3339,6 +3380,23 @@ ParseStatus AArch64AsmParser::tryParseCMHPriorityHint(OperandVector &Operands) {
return ParseStatus::Success;
}
+/// tryParseTIndexHint - Try to parse a TIndex operand
+ParseStatus AArch64AsmParser::tryParseTIndexHint(OperandVector &Operands) {
+ SMLoc S = getLoc();
+ const AsmToken &Tok = getTok();
+ if (Tok.isNot(AsmToken::Identifier))
+ return TokError("invalid operand for instruction");
+
+ auto TIndex = AArch64TIndexHint::lookupTIndexByName(Tok.getString());
+ if (!TIndex)
+ return TokError("invalid operand for instruction");
+
+ Operands.push_back(AArch64Operand::CreateTIndexHint(
+ TIndex->Encoding, Tok.getString(), S, getContext()));
+ Lex(); // Eat identifier token.
+ return ParseStatus::Success;
+}
+
/// tryParseAdrpLabel - Parse and validate a source label for the ADRP
/// instruction.
ParseStatus AArch64AsmParser::tryParseAdrpLabel(OperandVector &Operands) {
@@ -3896,6 +3954,7 @@ static const struct Extension {
{"f16mm", {AArch64::FeatureF16MM}},
{"f16f32dot", {AArch64::FeatureF16F32DOT}},
{"f16f32mm", {AArch64::FeatureF16F32MM}},
+ {"poe2", {AArch64::FeatureS1POE2}},
};
static void setRequiredFeatureString(FeatureBitset FBS, std::string &Str) {
@@ -3985,6 +4044,7 @@ bool AArch64AsmParser::parseSysAlias(StringRef Name, SMLoc NameLoc,
bool ExpectRegister = true;
bool OptionalRegister = false;
bool hasAll = getSTI().hasFeature(AArch64::FeatureAll);
+ bool hasTLBID = getSTI().hasFeature(AArch64::FeatureTLBID);
if (Mnemonic == "ic") {
const AArch64IC::IC *IC = AArch64IC::lookupICByName(Op);
@@ -4065,6 +4125,20 @@ bool AArch64AsmParser::parseSysAlias(StringRef Name, SMLoc NameLoc,
}
ExpectRegister = false;
createSysAlias(GSB->Encoding, Operands, S);
+ } else if (Mnemonic == "plbi") {
+ const AArch64PLBI::PLBI *PLBI = AArch64PLBI::lookupPLBIByName(Op);
+ if (!PLBI)
+ return TokError("invalid operand for PLBI instruction");
+ else if (!PLBI->haveFeatures(getSTI().getFeatureBits())) {
+ std::string Str("PLBI " + std::string(PLBI->Name) + " requires: ");
+ setRequiredFeatureString(PLBI->getRequiredFeatures(), Str);
+ return TokError(Str);
+ }
+ ExpectRegister = PLBI->NeedsReg;
+ if (hasAll || hasTLBID) {
+ OptionalRegister = PLBI->OptionalReg;
+ }
+ createSysAlias(PLBI->Encoding, Operands, S);
} else if (Mnemonic == "cfp" || Mnemonic == "dvp" || Mnemonic == "cpp" ||
Mnemonic == "cosp") {
@@ -5439,11 +5513,11 @@ bool AArch64AsmParser::parseInstruction(ParseInstructionInfo &Info,
size_t Start = 0, Next = Name.find('.');
StringRef Head = Name.slice(Start, Next);
- // IC, DC, AT, TLBI, MLBI, GIC{R}, GSB and Prediction invalidation
+ // IC, DC, AT, TLBI, MLBI, PLBI, GIC{R}, GSB and Prediction invalidation
// instructions are aliases for the SYS instruction.
if (Head == "ic" || Head == "dc" || Head == "at" || Head == "tlbi" ||
Head == "cfp" || Head == "dvp" || Head == "cpp" || Head == "cosp" ||
- Head == "mlbi" || Head == "gic" || Head == "gsb")
+ Head == "mlbi" || Head == "plbi" || Head == "gic" || Head == "gsb")
return parseSysAlias(Head, NameLoc, Operands);
// GICR instructions are aliases for the SYSL instruction.
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
index 4cd51d6701d97..bbc34ad35296c 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
@@ -1047,6 +1047,18 @@ bool AArch64InstPrinter::printSysAlias(const MCInst *MI,
Ins = "gsb\t";
Name = std::string(GSB->Name);
}
+ } else if (CnVal == 10) {
+ // PLBI aliases
+ const AArch64PLBI::PLBI *PLBI = AArch64PLBI::lookupPLBIByEncoding(Encoding);
+ if (!PLBI || !PLBI->haveFeatures(STI.getFeatureBits()))
+ return false;
+
+ NeedsReg = PLBI->NeedsReg;
+ if (STI.hasFeature(AArch64::FeatureAll) ||
+ STI.hasFeature(AArch64::FeatureTLBID))
+ OptionalReg = PLBI->OptionalReg;
+ Ins = "plbi\t";
+ Name = std::string(PLBI->Name);
} else
return false;
@@ -1608,6 +1620,19 @@ void AArch64InstPrinter::printCMHPriorityHintOp(const MCInst *MI,
AArch64CMHPriorityHint::lookupCMHPriorityHintByEncoding(priorityhint_op);
if (PHint)
O << PHint->Name;
+ else
+ markup(O, Markup::Immediate) << '#' << formatImm(priorityhint_op);
+}
+
+void AArch64InstPrinter::printTIndexHintOp(const MCInst *MI, unsigned OpNum,
+ const MCSubtargetInfo &STI,
+ raw_ostream &O) {
+ unsigned tindexhintop = MI->getOperand(OpNum).getImm();
+ auto TIndex = AArch64TIndexHint::lookupTIndexByEncoding(tindexhintop);
+ if (TIndex)
+ O << TIndex->Name;
+ else
+ markup(O, Markup::Immediate) << '#' << formatImm(tindexhintop);
}
void AArch64InstPrinter::printFPImmOperand(const MCInst *MI, unsigned OpNum,
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.h b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.h
index 307402d920d32..3f7a3b4b0667b 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.h
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.h
@@ -156,6 +156,9 @@ class AArch64InstPrinter : public MCInstPrinter {
void printCMHPriorityHintOp(const MCInst *MI, unsigned OpNum,
const MCSubtargetInfo &STI, raw_ostream &O);
+ void printTIndexHintOp(const MCInst *MI, unsigned OpNum,
+ const MCSubtargetInfo &STI, raw_ostream &O);
+
void printFPImmOperand(const MCInst *MI, unsigned OpNum,
const MCSubtargetInfo &STI, raw_ostream &O);
diff --git a/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp b/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp
index 268a22968f8ab..556d2c32569b4 100644
--- a/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp
+++ b/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp
@@ -145,6 +145,13 @@ namespace AArch64CMHPriorityHint {
} // namespace AArch64CMHPriorityHint
} // namespace llvm
+namespace llvm {
+namespace AArch64TIndexHint {
+#define GET_TINDEX_IMPL
+#include "AArch64GenSystemOperands.inc"
+} // namespace AArch64TIndexHint
+} // namespace llvm
+
namespace llvm {
namespace AArch64SysReg {
#define GET_SysRegsList_IMPL
@@ -186,11 +193,18 @@ std::string AArch64SysReg::genericRegisterString(uint32_t Bits) {
}
namespace llvm {
- namespace AArch64TLBI {
+namespace AArch64TLBI {
#define GET_TLBITable_IMPL
#include "AArch64GenSystemOperands.inc"
- }
-}
+} // namespace AArch64TLBI
+} // namespace llvm
+
+namespace llvm {
+namespace AArch64PLBI {
+#define GET_PLBITable_IMPL
+#include "AArch64GenSystemOperands.inc"
+} // namespace AArch64PLBI
+} // namespace llvm
namespace llvm {
namespace AArch64TLBIP {
diff --git a/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h b/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h
index 27812e94a3516..83157b5513da2 100644
--- a/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h
+++ b/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h
@@ -695,6 +695,14 @@ struct CMHPriorityHint : SysAlias {
#include "AArch64GenSystemOperands.inc"
} // namespace AArch64CMHPriorityHint
+namespace AArch64TIndexHint {
+struct TIndex : SysAlias {
+ using SysAlias::SysAlias;
+};
+#define GET_TINDEX_DECL
+#include "AArch64GenSystemOperands.inc"
+} // namespace AArch64TIndexHint
+
namespace AArch64SME {
enum ToggleCondition : unsigned {
Always,
@@ -853,6 +861,14 @@ struct GSB : SysAlias {
#include "AArch64GenSystemOperands.inc"
} // namespace AArch64GSB
+namespace AArch64PLBI {
+struct PLBI : SysAliasOptionalReg {
+ using SysAliasOptionalReg::SysAliasOptionalReg;
+};
+#define GET_PLBITable_DECL
+#include "AArch64GenSystemOperands.inc"
+} // namespace AArch64PLBI
+
namespace AArch64II {
/// Target Operand Flag enum.
enum TOF {
diff --git a/llvm/test/MC/AArch64/arm-btie.s b/llvm/test/MC/AArch64/arm-btie.s
new file mode 100644
index 0000000000000..1893fe5196b32
--- /dev/null
+++ b/llvm/test/MC/AArch64/arm-btie.s
@@ -0,0 +1,27 @@
+// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+btie < %s | FileCheck %s
+// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+poe2 < %s | FileCheck %s
+// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+bti < %s | FileCheck %s --check-prefix=NOBTIE
+// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding < %s | FileCheck %s --check-prefix=HINT
+
+// "bti r" is the preferred encoding when +btie or +poe2 is specified.
+// Otherwise default back to plain "bti". They are aliases of each other.
+// Check that disassembly when `btie` is not specified causes plain
+// "bti" to be emitted.
+
+bti
+bti r
+
+// CHECK: bti r // encoding: [0x1f,0x24,0x03,0xd5]
+// CHECK: bti r // encoding: [0x1f,0x24,0x03,0xd5]
+
+// NOBTIE: bti // encoding: [0x1f,0x24,0x03,0xd5]
+// NOBTIE: bti // encoding: [0x1f,0x24,0x03,0xd5]
+
+// HINT: hint #32 // encoding: [0x1f,0x24,0x03,0xd5]
+// HINT: hint #32 // encoding: [0x1f,0x24,0x03,0xd5]
+
+hint #32
+
+// CHECK: bti r // encoding: [0x1f,0x24,0x03,0xd5]
+// NOBTIE: bti // encoding: [0x1f,0x24,0x03,0xd5]
+// HINT: hint #32 // encoding: [0x1f,0x24,0x03,0xd5]
diff --git a/llvm/test/MC/AArch64/arm-poe2-tlbid-diagnostics.s b/llvm/test/MC/AArch64/arm-poe2-tlbid-diagnostics.s
new file mode 100644
index 0000000000000..e105be49283ee
--- /dev/null
+++ b/llvm/test/MC/AArch64/arm-poe2-tlbid-diagnostics.s
@@ -0,0 +1,88 @@
+// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+poe2 < %s 2>&1 \
+// RUN: | FileCheck %s --check-prefix=CHECK-ERROR
+// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+poe2,+tlbid < %s 2>&1 \
+// RUN: | FileCheck %s --check-prefix=CHECK-NO-REGISTER
+
+// Test without using +tlbid - no optional register operand allowed
+
+plbi alle3is, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+
+plbi alle3os, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+
+plbi alle2is, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+
+plbi alle2os, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+
+plbi alle1is, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+
+plbi alle1os, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+
+plbi vmalle1is, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+
+plbi vmalle1os, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+
+plbi alle3isnxs, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+
+plbi alle3osnxs, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+
+plbi alle2isnxs, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+
+plbi alle2osnxs, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+
+plbi alle1isnxs, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+
+plbi alle1osnxs, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+
+plbi vmalle1isnxs, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+
+plbi vmalle1osnxs, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+
+
+plbi alle3, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-NO-REGISTER: error: specified plbi op does not use a register
+
+plbi alle2, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-NO-REGISTER: error: specified plbi op does not use a register
+
+plbi alle1, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-NO-REGISTER: error: specified plbi op does not use a register
+
+plbi vmalle1, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-NO-REGISTER: error: specified plbi op does not use a register
+
+plbi alle3nxs, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-NO-REGISTER: error: specified plbi op does not use a register
+
+plbi alle2nxs, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-NO-REGISTER: error: specified plbi op does not use a register
+
+plbi alle1nxs, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-NO-REGISTER: error: specified plbi op does not use a register
+
+plbi vmalle1nxs, x0
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-NO-REGISTER: error: specified plbi op does not use a register
+
diff --git a/llvm/test/MC/AArch64/arm-poe2-tlbid.s b/llvm/test/MC/AArch64/arm-poe2-tlbid.s
new file mode 100644
index 0000000000000..eac4fd58d59a0
--- /dev/null
+++ b/llvm/test/MC/AArch64/arm-poe2-tlbid.s
@@ -0,0 +1,117 @@
+// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+tlbid,+poe2 < %s \
+// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
+// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+poe2 < %s 2>&1 \
+// RUN: | FileCheck %s --check-prefix=CHECK-ERROR
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+all < %s \
+// RUN: | llvm-objdump -d --mattr=+tlbid,+poe2 --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-INST
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+all < %s \
+// RUN: | llvm-objdump -d --mattr=-tlbid,-poe2 --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-UNKNOWN
+// Disassemble encoding and check the re-encoding (-show-encoding) matches.
+// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+tlbid,+poe2 < %s \
+// RUN: | sed '/.text/d' | sed 's/.*encoding: //g' \
+// RUN: | llvm-mc -triple=aarch64 -mattr=+tlbid,+poe2 -disassemble -show-encoding \
+// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
+
+// FEAT_TLBID and POE2 combined
+
+plbi alle3is, x0
+// CHECK-INST: plbi alle3is, x0
+// CHECK-ENCODING: encoding: [0x00,0xa3,0x0e,0xd5]
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-UNKNOWN: d50ea300 sys #6, c10, c3, #0, x0
+
+plbi alle3os, x0
+// CHECK-INST: plbi alle3os, x0
+// CHECK-ENCODING: encoding: [0x00,0xa1,0x0e,0xd5]
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-UNKNOWN: d50ea100 sys #6, c10, c1, #0, x0
+
+plbi alle2is, x0
+// CHECK-INST: plbi alle2is, x0
+// CHECK-ENCODING: encoding: [0x00,0xa3,0x0c,0xd5]
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-UNKNOWN: d50ca300 sys #4, c10, c3, #0, x0
+
+plbi alle2os, x0
+// CHECK-INST: plbi alle2os, x0
+// CHECK-ENCODING: encoding: [0x00,0xa1,0x0c,0xd5]
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-UNKNOWN: d50ca100 sys #4, c10, c1, #0, x0
+
+plbi alle1is, x0
+// CHECK-INST: plbi alle1is, x0
+// CHECK-ENCODING: encoding: [0x80,0xa3,0x0c,0xd5]
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-UNKNOWN: d50ca380 sys #4, c10, c3, #4, x0
+
+plbi alle1os, x0
+// CHECK-INST: plbi alle1os, x0
+// CHECK-ENCODING: encoding: [0x80,0xa1,0x0c,0xd5]
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-UNKNOWN: d50ca180 sys #4, c10, c1, #4, x0
+
+plbi vmalle1is, x0
+// CHECK-INST: plbi vmalle1is, x0
+// CHECK-ENCODING: encoding: [0x00,0xa3,0x08,0xd5]
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-UNKNOWN: d508a300 sys #0, c10, c3, #0, x0
+
+plbi vmalle1os, x0
+// CHECK-INST: plbi vmalle1os, x0
+// CHECK-ENCODING: encoding: [0x00,0xa1,0x08,0xd5]
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-UNKNOWN: d508a100 sys #0, c10, c1, #0, x0
+
+plbi alle3isnxs, x0
+// CHECK-INST: plbi alle3isnxs, x0
+// CHECK-ENCODING: encoding: [0x00,0xab,0x0e,0xd5]
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-UNKNOWN: d50eab00 sys #6, c10, c11, #0, x0
+
+plbi alle3osnxs, x0
+// CHECK-INST: plbi alle3osnxs, x0
+// CHECK-ENCODING: encoding: [0x00,0xa9,0x0e,0xd5]
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-UNKNOWN: d50ea900 sys #6, c10, c9, #0, x0
+
+plbi alle2isnxs, x0
+// CHECK-INST: plbi alle2isnxs, x0
+// CHECK-ENCODING: encoding: [0x00,0xab,0x0c,0xd5]
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-UNKNOWN: d50cab00 sys #4, c10, c11, #0, x0
+
+plbi alle2osnxs, x0
+// CHECK-INST: plbi alle2osnxs, x0
+// CHECK-ENCODING: encoding: [0x00,0xa9,0x0c,0xd5]
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-UNKNOWN: d50ca900 sys #4, c10, c9, #0, x0
+
+plbi alle1isnxs, x0
+// CHECK-INST: plbi alle1isnxs, x0
+// CHECK-ENCODING: encoding: [0x80,0xab,0x0c,0xd5]
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-UNKNOWN: d50cab80 sys #4, c10, c11, #4, x0
+
+plbi alle1osnxs, x0
+// CHECK-INST: plbi alle1osnxs, x0
+// CHECK-ENCODING: encoding: [0x80,0xa9,0x0c,0xd5]
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-UNKNOWN: d50ca980 sys #4, c10, c9, #4, x0
+
+plbi vmalle1isnxs, x0
+// CHECK-INST: plbi vmalle1isnxs, x0
+// CHECK-ENCODING: encoding: [0x00,0xab,0x08,0xd5]
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-UNKNOWN: d508ab00 sys #0, c10, c11, #0, x0
+
+plbi vmalle1osnxs, x0
+// CHECK-INST: plbi vmalle1osnxs, x0
+// CHECK-ENCODING: encoding: [0x00,0xa9,0x08,0xd5]
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-UNKNOWN: d508a900 sys #0, c10, c9, #0, x0
+
+plbi alle3is, x0
+// CHECK-INST: plbi alle3is, x0
+// CHECK-ENCODING: encoding: [0x00,0xa3,0x0e,0xd5]
+// CHECK-ERROR: error: specified plbi op does not use a register
+// CHECK-UNKNOWN: d50ea300 sys #6, c10, c3, #0, x0
diff --git a/llvm/test/MC/AArch64/arm-poe2.s b/llvm/test/MC/AArch64/arm-poe2.s
new file mode 100644
index 0000000000000..cd9b8149b2209
--- /dev/null
+++ b/llvm/test/MC/AArch64/arm-poe2.s
@@ -0,0 +1,3263 @@
+// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+poe2 < %s \
+// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
+// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \
+// RUN: | FileCheck %s --check-prefix=CHECK-ERROR
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+all < %s \
+// RUN: | llvm-objdump -d --mattr=+poe2 --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-INST
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+all < %s \
+// RUN: | llvm-objdump -d --mattr=-poe2 --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-UNKNOWN
+// Disassemble encoding and check the re-encoding (-show-encoding) matches.
+// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+poe2 < %s \
+// RUN: | sed '/.text/d' | sed 's/.*encoding: //g' \
+// RUN: | llvm-mc -triple=aarch64 -mattr=+poe2 -disassemble -show-encoding \
+// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
+
+//------------------------------------------------------------------------------
+// Stage 1 Permission Overlays Extension 2 (FEAT_S1POE2).
+//------------------------------------------------------------------------------
+
+
+mrs x0, TPIDR3_EL0
+// CHECK-INST: mrs x0, TPIDR3_EL0
+// CHECK-ENCODING: encoding: [0x00,0xd0,0x3b,0xd5]
+// CHECK-UNKNOWN: d53bd000 mrs x0, TPIDR3_EL0
+
+mrs x0, TPIDR3_EL1
+// CHECK-INST: mrs x0, TPIDR3_EL1
+// CHECK-ENCODING: encoding: [0x00,0xd0,0x38,0xd5]
+// CHECK-UNKNOWN: d538d000 mrs x0, TPIDR3_EL1
+
+mrs x0, TPIDR3_EL12
+// CHECK-INST: mrs x0, TPIDR3_EL12
+// CHECK-ENCODING: encoding: [0x00,0xd0,0x3d,0xd5]
+// CHECK-UNKNOWN: d53dd000 mrs x0, TPIDR3_EL12
+
+mrs x0, TPIDR3_EL2
+// CHECK-INST: mrs x0, TPIDR3_EL2
+// CHECK-ENCODING: encoding: [0x00,0xd0,0x3c,0xd5]
+// CHECK-UNKNOWN: d53cd000 mrs x0, TPIDR3_EL2
+
+mrs x0, TPIDR3_EL3
+// CHECK-INST: mrs x0, TPIDR3_EL3
+// CHECK-ENCODING: encoding: [0x00,0xd0,0x3e,0xd5]
+// CHECK-UNKNOWN: d53ed000 mrs x0, TPIDR3_EL3
+
+mrs x0, VNCCR_EL2
+// CHECK-INST: mrs x0, VNCCR_EL2
+// CHECK-ENCODING: encoding: [0x20,0x22,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c2220 mrs x0, VNCCR_EL2
+
+mrs x0, DPOCR_EL0
+// CHECK-INST: mrs x0, DPOCR_EL0
+// CHECK-ENCODING: encoding: [0x40,0x45,0x3b,0xd5]
+// CHECK-UNKNOWN: d53b4540 mrs x0, DPOCR_EL0
+
+mrs x0, HCRMASK_EL2
+// CHECK-INST: mrs x0, HCRMASK_EL2
+// CHECK-ENCODING: encoding: [0xc0,0x15,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c15c0 mrs x0, HCRMASK_EL2
+
+mrs x0, HCRXMASK_EL2
+// CHECK-INST: mrs x0, HCRXMASK_EL2
+// CHECK-ENCODING: encoding: [0xe0,0x15,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c15e0 mrs x0, HCRXMASK_EL2
+
+mrs x0, HCR_EL2
+// CHECK-INST: mrs x0, HCR_EL2
+// CHECK-ENCODING: encoding: [0x00,0x11,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c1100 mrs x0, HCR_EL2
+
+mrs x0, NVHCR_EL2
+// CHECK-INST: mrs x0, NVHCR_EL2
+// CHECK-ENCODING: encoding: [0x00,0x15,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c1500 mrs x0, NVHCR_EL2
+
+mrs x0, NVHCRX_EL2
+// CHECK-INST: mrs x0, NVHCRX_EL2
+// CHECK-ENCODING: encoding: [0x20,0x15,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c1520 mrs x0, NVHCRX_EL2
+
+mrs x0, NVHCRMASK_EL2
+// CHECK-INST: mrs x0, NVHCRMASK_EL2
+// CHECK-ENCODING: encoding: [0x80,0x15,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c1580 mrs x0, NVHCRMASK_EL2
+
+mrs x0, NVHCRXMASK_EL2
+// CHECK-INST: mrs x0, NVHCRXMASK_EL2
+// CHECK-ENCODING: encoding: [0xa0,0x15,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c15a0 mrs x0, NVHCRXMASK_EL2
+
+mrs x3, DPOTBR0_EL1
+// CHECK-INST: mrs x3, DPOTBR0_EL1
+// CHECK-ENCODING: encoding: [0xc3,0x20,0x38,0xd5]
+// CHECK-UNKNOWN: d53820c3 mrs x3, DPOTBR0_EL1
+
+mrs x3, DPOTBR0_EL12
+// CHECK-INST: mrs x3, DPOTBR0_EL12
+// CHECK-ENCODING: encoding: [0xc3,0x20,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d20c3 mrs x3, DPOTBR0_EL12
+
+mrs x3, DPOTBR1_EL1
+// CHECK-INST: mrs x3, DPOTBR1_EL1
+// CHECK-ENCODING: encoding: [0xe3,0x20,0x38,0xd5]
+// CHECK-UNKNOWN: d53820e3 mrs x3, DPOTBR1_EL1
+
+mrs x3, DPOTBR1_EL12
+// CHECK-INST: mrs x3, DPOTBR1_EL12
+// CHECK-ENCODING: encoding: [0xe3,0x20,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d20e3 mrs x3, DPOTBR1_EL12
+
+mrs x3, DPOTBR0_EL2
+// CHECK-INST: mrs x3, DPOTBR0_EL2
+// CHECK-ENCODING: encoding: [0xc3,0x20,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c20c3 mrs x3, DPOTBR0_EL2
+
+mrs x3, DPOTBR1_EL2
+// CHECK-INST: mrs x3, DPOTBR1_EL2
+// CHECK-ENCODING: encoding: [0xe3,0x20,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c20e3 mrs x3, DPOTBR1_EL2
+
+mrs x3, DPOTBR0_EL3
+// CHECK-INST: mrs x3, DPOTBR0_EL3
+// CHECK-ENCODING: encoding: [0xc3,0x20,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e20c3 mrs x3, DPOTBR0_EL3
+
+mrs x3, IRTBRU_EL1
+// CHECK-INST: mrs x3, IRTBRU_EL1
+// CHECK-ENCODING: encoding: [0x83,0x20,0x38,0xd5]
+// CHECK-UNKNOWN: d5382083 mrs x3, IRTBRU_EL1
+
+mrs x3, IRTBRU_EL12
+// CHECK-INST: mrs x3, IRTBRU_EL12
+// CHECK-ENCODING: encoding: [0x83,0x20,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d2083 mrs x3, IRTBRU_EL12
+
+mrs x3, IRTBRP_EL1
+// CHECK-INST: mrs x3, IRTBRP_EL1
+// CHECK-ENCODING: encoding: [0xa3,0x20,0x38,0xd5]
+// CHECK-UNKNOWN: d53820a3 mrs x3, IRTBRP_EL1
+
+mrs x3, IRTBRP_EL12
+// CHECK-INST: mrs x3, IRTBRP_EL12
+// CHECK-ENCODING: encoding: [0xa3,0x20,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d20a3 mrs x3, IRTBRP_EL12
+
+mrs x3, IRTBRU_EL2
+// CHECK-INST: mrs x3, IRTBRU_EL2
+// CHECK-ENCODING: encoding: [0x83,0x20,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c2083 mrs x3, IRTBRU_EL2
+
+mrs x3, IRTBRP_EL2
+// CHECK-INST: mrs x3, IRTBRP_EL2
+// CHECK-ENCODING: encoding: [0xa3,0x20,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c20a3 mrs x3, IRTBRP_EL2
+
+mrs x3, IRTBRP_EL3
+// CHECK-INST: mrs x3, IRTBRP_EL3
+// CHECK-ENCODING: encoding: [0xa3,0x20,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e20a3 mrs x3, IRTBRP_EL3
+
+mrs x3, TTTBRU_EL1
+// CHECK-INST: mrs x3, TTTBRU_EL1
+// CHECK-ENCODING: encoding: [0xc3,0xa2,0x38,0xd5]
+// CHECK-UNKNOWN: d538a2c3 mrs x3, TTTBRU_EL1
+
+mrs x3, TTTBRU_EL12
+// CHECK-INST: mrs x3, TTTBRU_EL12
+// CHECK-ENCODING: encoding: [0xc3,0xa2,0x3d,0xd5]
+// CHECK-UNKNOWN: d53da2c3 mrs x3, TTTBRU_EL12
+
+mrs x3, TTTBRP_EL1
+// CHECK-INST: mrs x3, TTTBRP_EL1
+// CHECK-ENCODING: encoding: [0xe3,0xa2,0x38,0xd5]
+// CHECK-UNKNOWN: d538a2e3 mrs x3, TTTBRP_EL1
+
+mrs x3, TTTBRP_EL12
+// CHECK-INST: mrs x3, TTTBRP_EL12
+// CHECK-ENCODING: encoding: [0xe3,0xa2,0x3d,0xd5]
+// CHECK-UNKNOWN: d53da2e3 mrs x3, TTTBRP_EL12
+
+mrs x3, TTTBRU_EL2
+// CHECK-INST: mrs x3, TTTBRU_EL2
+// CHECK-ENCODING: encoding: [0xc3,0xa2,0x3c,0xd5]
+// CHECK-UNKNOWN: d53ca2c3 mrs x3, TTTBRU_EL2
+
+mrs x3, TTTBRP_EL2
+// CHECK-INST: mrs x3, TTTBRP_EL2
+// CHECK-ENCODING: encoding: [0xe3,0xa2,0x3c,0xd5]
+// CHECK-UNKNOWN: d53ca2e3 mrs x3, TTTBRP_EL2
+
+mrs x3, TTTBRP_EL3
+// CHECK-INST: mrs x3, TTTBRP_EL3
+// CHECK-ENCODING: encoding: [0xe3,0xa2,0x3e,0xd5]
+// CHECK-UNKNOWN: d53ea2e3 mrs x3, TTTBRP_EL3
+
+mrs x3, LDSTT_EL1
+// CHECK-INST: mrs x3, LDSTT_EL1
+// CHECK-ENCODING: encoding: [0xe3,0x21,0x38,0xd5]
+// CHECK-UNKNOWN: d53821e3 mrs x3, LDSTT_EL1
+
+mrs x3, LDSTT_EL12
+// CHECK-INST: mrs x3, LDSTT_EL12
+// CHECK-ENCODING: encoding: [0xe3,0x21,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d21e3 mrs x3, LDSTT_EL12
+
+mrs x3, LDSTT_EL2
+// CHECK-INST: mrs x3, LDSTT_EL2
+// CHECK-ENCODING: encoding: [0xe3,0x21,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c21e3 mrs x3, LDSTT_EL2
+
+mrs x3, TINDEX_EL0
+// CHECK-INST: mrs x3, TINDEX_EL0
+// CHECK-ENCODING: encoding: [0x63,0x40,0x3b,0xd5]
+// CHECK-UNKNOWN: d53b4063 mrs x3, TINDEX_EL0
+
+mrs x3, TINDEX_EL1
+// CHECK-INST: mrs x3, TINDEX_EL1
+// CHECK-ENCODING: encoding: [0x63,0x40,0x38,0xd5]
+// CHECK-UNKNOWN: d5384063 mrs x3, TINDEX_EL1
+
+mrs x3, TINDEX_EL12
+// CHECK-INST: mrs x3, TINDEX_EL12
+// CHECK-ENCODING: encoding: [0x63,0x40,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d4063 mrs x3, TINDEX_EL12
+
+mrs x3, TINDEX_EL2
+// CHECK-INST: mrs x3, TINDEX_EL2
+// CHECK-ENCODING: encoding: [0x63,0x40,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c4063 mrs x3, TINDEX_EL2
+
+mrs x3, TINDEX_EL3
+// CHECK-INST: mrs x3, TINDEX_EL3
+// CHECK-ENCODING: encoding: [0x63,0x40,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e4063 mrs x3, TINDEX_EL3
+
+mrs x3, STINDEX_EL1
+// CHECK-INST: mrs x3, STINDEX_EL1
+// CHECK-ENCODING: encoding: [0x43,0x40,0x38,0xd5]
+// CHECK-UNKNOWN: d5384043 mrs x3, STINDEX_EL1
+
+mrs x3, STINDEX_EL12
+// CHECK-INST: mrs x3, STINDEX_EL12
+// CHECK-ENCODING: encoding: [0x43,0x40,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d4043 mrs x3, STINDEX_EL12
+
+mrs x3, STINDEX_EL2
+// CHECK-INST: mrs x3, STINDEX_EL2
+// CHECK-ENCODING: encoding: [0x43,0x40,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c4043 mrs x3, STINDEX_EL2
+
+mrs x3, STINDEX_EL3
+// CHECK-INST: mrs x3, STINDEX_EL3
+// CHECK-ENCODING: encoding: [0x43,0x40,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e4043 mrs x3, STINDEX_EL3
+
+mrs x3, FGDTP0_EL1
+// CHECK-INST: mrs x3, FGDTP0_EL1
+// CHECK-ENCODING: encoding: [0x03,0x32,0x38,0xd5]
+// CHECK-UNKNOWN: d5383203 mrs x3, FGDTP0_EL1
+
+mrs x3, FGDTU0_EL1
+// CHECK-INST: mrs x3, FGDTU0_EL1
+// CHECK-ENCODING: encoding: [0x03,0x34,0x38,0xd5]
+// CHECK-UNKNOWN: d5383403 mrs x3, FGDTU0_EL1
+
+mrs x3, FGDTP0_EL2
+// CHECK-INST: mrs x3, FGDTP0_EL2
+// CHECK-ENCODING: encoding: [0x03,0x32,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3203 mrs x3, FGDTP0_EL2
+
+mrs x3, FGDTU0_EL2
+// CHECK-INST: mrs x3, FGDTU0_EL2
+// CHECK-ENCODING: encoding: [0x03,0x34,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3403 mrs x3, FGDTU0_EL2
+
+mrs x3, FGDTP0_EL12
+// CHECK-INST: mrs x3, FGDTP0_EL12
+// CHECK-ENCODING: encoding: [0x03,0x32,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3203 mrs x3, FGDTP0_EL12
+
+mrs x3, FGDTU0_EL12
+// CHECK-INST: mrs x3, FGDTU0_EL12
+// CHECK-ENCODING: encoding: [0x03,0x34,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3403 mrs x3, FGDTU0_EL12
+
+mrs x3, FGDTP0_EL3
+// CHECK-INST: mrs x3, FGDTP0_EL3
+// CHECK-ENCODING: encoding: [0x03,0x32,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3203 mrs x3, FGDTP0_EL3
+
+mrs x3, FGDTP1_EL1
+// CHECK-INST: mrs x3, FGDTP1_EL1
+// CHECK-ENCODING: encoding: [0x23,0x32,0x38,0xd5]
+// CHECK-UNKNOWN: d5383223 mrs x3, FGDTP1_EL1
+
+mrs x3, FGDTU1_EL1
+// CHECK-INST: mrs x3, FGDTU1_EL1
+// CHECK-ENCODING: encoding: [0x23,0x34,0x38,0xd5]
+// CHECK-UNKNOWN: d5383423 mrs x3, FGDTU1_EL1
+
+mrs x3, FGDTP1_EL2
+// CHECK-INST: mrs x3, FGDTP1_EL2
+// CHECK-ENCODING: encoding: [0x23,0x32,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3223 mrs x3, FGDTP1_EL2
+
+mrs x3, FGDTU1_EL2
+// CHECK-INST: mrs x3, FGDTU1_EL2
+// CHECK-ENCODING: encoding: [0x23,0x34,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3423 mrs x3, FGDTU1_EL2
+
+mrs x3, FGDTP1_EL12
+// CHECK-INST: mrs x3, FGDTP1_EL12
+// CHECK-ENCODING: encoding: [0x23,0x32,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3223 mrs x3, FGDTP1_EL12
+
+mrs x3, FGDTU1_EL12
+// CHECK-INST: mrs x3, FGDTU1_EL12
+// CHECK-ENCODING: encoding: [0x23,0x34,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3423 mrs x3, FGDTU1_EL12
+
+mrs x3, FGDTP1_EL3
+// CHECK-INST: mrs x3, FGDTP1_EL3
+// CHECK-ENCODING: encoding: [0x23,0x32,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3223 mrs x3, FGDTP1_EL3
+
+mrs x3, FGDTP2_EL1
+// CHECK-INST: mrs x3, FGDTP2_EL1
+// CHECK-ENCODING: encoding: [0x43,0x32,0x38,0xd5]
+// CHECK-UNKNOWN: d5383243 mrs x3, FGDTP2_EL1
+
+mrs x3, FGDTU2_EL1
+// CHECK-INST: mrs x3, FGDTU2_EL1
+// CHECK-ENCODING: encoding: [0x43,0x34,0x38,0xd5]
+// CHECK-UNKNOWN: d5383443 mrs x3, FGDTU2_EL1
+
+mrs x3, FGDTP2_EL2
+// CHECK-INST: mrs x3, FGDTP2_EL2
+// CHECK-ENCODING: encoding: [0x43,0x32,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3243 mrs x3, FGDTP2_EL2
+
+mrs x3, FGDTU2_EL2
+// CHECK-INST: mrs x3, FGDTU2_EL2
+// CHECK-ENCODING: encoding: [0x43,0x34,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3443 mrs x3, FGDTU2_EL2
+
+mrs x3, FGDTP2_EL12
+// CHECK-INST: mrs x3, FGDTP2_EL12
+// CHECK-ENCODING: encoding: [0x43,0x32,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3243 mrs x3, FGDTP2_EL12
+
+mrs x3, FGDTU2_EL12
+// CHECK-INST: mrs x3, FGDTU2_EL12
+// CHECK-ENCODING: encoding: [0x43,0x34,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3443 mrs x3, FGDTU2_EL12
+
+mrs x3, FGDTP2_EL3
+// CHECK-INST: mrs x3, FGDTP2_EL3
+// CHECK-ENCODING: encoding: [0x43,0x32,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3243 mrs x3, FGDTP2_EL3
+
+mrs x3, FGDTP3_EL1
+// CHECK-INST: mrs x3, FGDTP3_EL1
+// CHECK-ENCODING: encoding: [0x63,0x32,0x38,0xd5]
+// CHECK-UNKNOWN: d5383263 mrs x3, FGDTP3_EL1
+
+mrs x3, FGDTU3_EL1
+// CHECK-INST: mrs x3, FGDTU3_EL1
+// CHECK-ENCODING: encoding: [0x63,0x34,0x38,0xd5]
+// CHECK-UNKNOWN: d5383463 mrs x3, FGDTU3_EL1
+
+mrs x3, FGDTP3_EL2
+// CHECK-INST: mrs x3, FGDTP3_EL2
+// CHECK-ENCODING: encoding: [0x63,0x32,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3263 mrs x3, FGDTP3_EL2
+
+mrs x3, FGDTU3_EL2
+// CHECK-INST: mrs x3, FGDTU3_EL2
+// CHECK-ENCODING: encoding: [0x63,0x34,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3463 mrs x3, FGDTU3_EL2
+
+mrs x3, FGDTP3_EL12
+// CHECK-INST: mrs x3, FGDTP3_EL12
+// CHECK-ENCODING: encoding: [0x63,0x32,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3263 mrs x3, FGDTP3_EL12
+
+mrs x3, FGDTU3_EL12
+// CHECK-INST: mrs x3, FGDTU3_EL12
+// CHECK-ENCODING: encoding: [0x63,0x34,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3463 mrs x3, FGDTU3_EL12
+
+mrs x3, FGDTP3_EL3
+// CHECK-INST: mrs x3, FGDTP3_EL3
+// CHECK-ENCODING: encoding: [0x63,0x32,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3263 mrs x3, FGDTP3_EL3
+
+mrs x3, FGDTP4_EL1
+// CHECK-INST: mrs x3, FGDTP4_EL1
+// CHECK-ENCODING: encoding: [0x83,0x32,0x38,0xd5]
+// CHECK-UNKNOWN: d5383283 mrs x3, FGDTP4_EL1
+
+mrs x3, FGDTU4_EL1
+// CHECK-INST: mrs x3, FGDTU4_EL1
+// CHECK-ENCODING: encoding: [0x83,0x34,0x38,0xd5]
+// CHECK-UNKNOWN: d5383483 mrs x3, FGDTU4_EL1
+
+mrs x3, FGDTP4_EL2
+// CHECK-INST: mrs x3, FGDTP4_EL2
+// CHECK-ENCODING: encoding: [0x83,0x32,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3283 mrs x3, FGDTP4_EL2
+
+mrs x3, FGDTU4_EL2
+// CHECK-INST: mrs x3, FGDTU4_EL2
+// CHECK-ENCODING: encoding: [0x83,0x34,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3483 mrs x3, FGDTU4_EL2
+
+mrs x3, FGDTP4_EL12
+// CHECK-INST: mrs x3, FGDTP4_EL12
+// CHECK-ENCODING: encoding: [0x83,0x32,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3283 mrs x3, FGDTP4_EL12
+
+mrs x3, FGDTU4_EL12
+// CHECK-INST: mrs x3, FGDTU4_EL12
+// CHECK-ENCODING: encoding: [0x83,0x34,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3483 mrs x3, FGDTU4_EL12
+
+mrs x3, FGDTP4_EL3
+// CHECK-INST: mrs x3, FGDTP4_EL3
+// CHECK-ENCODING: encoding: [0x83,0x32,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3283 mrs x3, FGDTP4_EL3
+
+mrs x3, FGDTP5_EL1
+// CHECK-INST: mrs x3, FGDTP5_EL1
+// CHECK-ENCODING: encoding: [0xa3,0x32,0x38,0xd5]
+// CHECK-UNKNOWN: d53832a3 mrs x3, FGDTP5_EL1
+
+mrs x3, FGDTU5_EL1
+// CHECK-INST: mrs x3, FGDTU5_EL1
+// CHECK-ENCODING: encoding: [0xa3,0x34,0x38,0xd5]
+// CHECK-UNKNOWN: d53834a3 mrs x3, FGDTU5_EL1
+
+mrs x3, FGDTP5_EL2
+// CHECK-INST: mrs x3, FGDTP5_EL2
+// CHECK-ENCODING: encoding: [0xa3,0x32,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c32a3 mrs x3, FGDTP5_EL2
+
+mrs x3, FGDTU5_EL2
+// CHECK-INST: mrs x3, FGDTU5_EL2
+// CHECK-ENCODING: encoding: [0xa3,0x34,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c34a3 mrs x3, FGDTU5_EL2
+
+mrs x3, FGDTP5_EL12
+// CHECK-INST: mrs x3, FGDTP5_EL12
+// CHECK-ENCODING: encoding: [0xa3,0x32,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d32a3 mrs x3, FGDTP5_EL12
+
+mrs x3, FGDTU5_EL12
+// CHECK-INST: mrs x3, FGDTU5_EL12
+// CHECK-ENCODING: encoding: [0xa3,0x34,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d34a3 mrs x3, FGDTU5_EL12
+
+mrs x3, FGDTP5_EL3
+// CHECK-INST: mrs x3, FGDTP5_EL3
+// CHECK-ENCODING: encoding: [0xa3,0x32,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e32a3 mrs x3, FGDTP5_EL3
+
+mrs x3, FGDTP6_EL1
+// CHECK-INST: mrs x3, FGDTP6_EL1
+// CHECK-ENCODING: encoding: [0xc3,0x32,0x38,0xd5]
+// CHECK-UNKNOWN: d53832c3 mrs x3, FGDTP6_EL1
+
+mrs x3, FGDTU6_EL1
+// CHECK-INST: mrs x3, FGDTU6_EL1
+// CHECK-ENCODING: encoding: [0xc3,0x34,0x38,0xd5]
+// CHECK-UNKNOWN: d53834c3 mrs x3, FGDTU6_EL1
+
+mrs x3, FGDTP6_EL2
+// CHECK-INST: mrs x3, FGDTP6_EL2
+// CHECK-ENCODING: encoding: [0xc3,0x32,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c32c3 mrs x3, FGDTP6_EL2
+
+mrs x3, FGDTU6_EL2
+// CHECK-INST: mrs x3, FGDTU6_EL2
+// CHECK-ENCODING: encoding: [0xc3,0x34,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c34c3 mrs x3, FGDTU6_EL2
+
+mrs x3, FGDTP6_EL12
+// CHECK-INST: mrs x3, FGDTP6_EL12
+// CHECK-ENCODING: encoding: [0xc3,0x32,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d32c3 mrs x3, FGDTP6_EL12
+
+mrs x3, FGDTU6_EL12
+// CHECK-INST: mrs x3, FGDTU6_EL12
+// CHECK-ENCODING: encoding: [0xc3,0x34,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d34c3 mrs x3, FGDTU6_EL12
+
+mrs x3, FGDTP6_EL3
+// CHECK-INST: mrs x3, FGDTP6_EL3
+// CHECK-ENCODING: encoding: [0xc3,0x32,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e32c3 mrs x3, FGDTP6_EL3
+
+mrs x3, FGDTP7_EL1
+// CHECK-INST: mrs x3, FGDTP7_EL1
+// CHECK-ENCODING: encoding: [0xe3,0x32,0x38,0xd5]
+// CHECK-UNKNOWN: d53832e3 mrs x3, FGDTP7_EL1
+
+mrs x3, FGDTU7_EL1
+// CHECK-INST: mrs x3, FGDTU7_EL1
+// CHECK-ENCODING: encoding: [0xe3,0x34,0x38,0xd5]
+// CHECK-UNKNOWN: d53834e3 mrs x3, FGDTU7_EL1
+
+mrs x3, FGDTP7_EL2
+// CHECK-INST: mrs x3, FGDTP7_EL2
+// CHECK-ENCODING: encoding: [0xe3,0x32,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c32e3 mrs x3, FGDTP7_EL2
+
+mrs x3, FGDTU7_EL2
+// CHECK-INST: mrs x3, FGDTU7_EL2
+// CHECK-ENCODING: encoding: [0xe3,0x34,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c34e3 mrs x3, FGDTU7_EL2
+
+mrs x3, FGDTP7_EL12
+// CHECK-INST: mrs x3, FGDTP7_EL12
+// CHECK-ENCODING: encoding: [0xe3,0x32,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d32e3 mrs x3, FGDTP7_EL12
+
+mrs x3, FGDTU7_EL12
+// CHECK-INST: mrs x3, FGDTU7_EL12
+// CHECK-ENCODING: encoding: [0xe3,0x34,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d34e3 mrs x3, FGDTU7_EL12
+
+mrs x3, FGDTP7_EL3
+// CHECK-INST: mrs x3, FGDTP7_EL3
+// CHECK-ENCODING: encoding: [0xe3,0x32,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e32e3 mrs x3, FGDTP7_EL3
+
+mrs x3, FGDTP8_EL1
+// CHECK-INST: mrs x3, FGDTP8_EL1
+// CHECK-ENCODING: encoding: [0x03,0x33,0x38,0xd5]
+// CHECK-UNKNOWN: d5383303 mrs x3, FGDTP8_EL1
+
+mrs x3, FGDTU8_EL1
+// CHECK-INST: mrs x3, FGDTU8_EL1
+// CHECK-ENCODING: encoding: [0x03,0x35,0x38,0xd5]
+// CHECK-UNKNOWN: d5383503 mrs x3, FGDTU8_EL1
+
+mrs x3, FGDTP8_EL2
+// CHECK-INST: mrs x3, FGDTP8_EL2
+// CHECK-ENCODING: encoding: [0x03,0x33,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3303 mrs x3, FGDTP8_EL2
+
+mrs x3, FGDTU8_EL2
+// CHECK-INST: mrs x3, FGDTU8_EL2
+// CHECK-ENCODING: encoding: [0x03,0x35,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3503 mrs x3, FGDTU8_EL2
+
+mrs x3, FGDTP8_EL12
+// CHECK-INST: mrs x3, FGDTP8_EL12
+// CHECK-ENCODING: encoding: [0x03,0x33,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3303 mrs x3, FGDTP8_EL12
+
+mrs x3, FGDTU8_EL12
+// CHECK-INST: mrs x3, FGDTU8_EL12
+// CHECK-ENCODING: encoding: [0x03,0x35,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3503 mrs x3, FGDTU8_EL12
+
+mrs x3, FGDTP8_EL3
+// CHECK-INST: mrs x3, FGDTP8_EL3
+// CHECK-ENCODING: encoding: [0x03,0x33,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3303 mrs x3, FGDTP8_EL3
+
+mrs x3, FGDTP9_EL1
+// CHECK-INST: mrs x3, FGDTP9_EL1
+// CHECK-ENCODING: encoding: [0x23,0x33,0x38,0xd5]
+// CHECK-UNKNOWN: d5383323 mrs x3, FGDTP9_EL1
+
+mrs x3, FGDTU9_EL1
+// CHECK-INST: mrs x3, FGDTU9_EL1
+// CHECK-ENCODING: encoding: [0x23,0x35,0x38,0xd5]
+// CHECK-UNKNOWN: d5383523 mrs x3, FGDTU9_EL1
+
+mrs x3, FGDTP9_EL2
+// CHECK-INST: mrs x3, FGDTP9_EL2
+// CHECK-ENCODING: encoding: [0x23,0x33,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3323 mrs x3, FGDTP9_EL2
+
+mrs x3, FGDTU9_EL2
+// CHECK-INST: mrs x3, FGDTU9_EL2
+// CHECK-ENCODING: encoding: [0x23,0x35,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3523 mrs x3, FGDTU9_EL2
+
+mrs x3, FGDTP9_EL12
+// CHECK-INST: mrs x3, FGDTP9_EL12
+// CHECK-ENCODING: encoding: [0x23,0x33,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3323 mrs x3, FGDTP9_EL12
+
+mrs x3, FGDTU9_EL12
+// CHECK-INST: mrs x3, FGDTU9_EL12
+// CHECK-ENCODING: encoding: [0x23,0x35,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3523 mrs x3, FGDTU9_EL12
+
+mrs x3, FGDTP9_EL3
+// CHECK-INST: mrs x3, FGDTP9_EL3
+// CHECK-ENCODING: encoding: [0x23,0x33,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3323 mrs x3, FGDTP9_EL3
+
+mrs x3, FGDTP10_EL1
+// CHECK-INST: mrs x3, FGDTP10_EL1
+// CHECK-ENCODING: encoding: [0x43,0x33,0x38,0xd5]
+// CHECK-UNKNOWN: d5383343 mrs x3, FGDTP10_EL1
+
+mrs x3, FGDTU10_EL1
+// CHECK-INST: mrs x3, FGDTU10_EL1
+// CHECK-ENCODING: encoding: [0x43,0x35,0x38,0xd5]
+// CHECK-UNKNOWN: d5383543 mrs x3, FGDTU10_EL1
+
+mrs x3, FGDTP10_EL2
+// CHECK-INST: mrs x3, FGDTP10_EL2
+// CHECK-ENCODING: encoding: [0x43,0x33,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3343 mrs x3, FGDTP10_EL2
+
+mrs x3, FGDTU10_EL2
+// CHECK-INST: mrs x3, FGDTU10_EL2
+// CHECK-ENCODING: encoding: [0x43,0x35,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3543 mrs x3, FGDTU10_EL2
+
+mrs x3, FGDTP10_EL12
+// CHECK-INST: mrs x3, FGDTP10_EL12
+// CHECK-ENCODING: encoding: [0x43,0x33,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3343 mrs x3, FGDTP10_EL12
+
+mrs x3, FGDTU10_EL12
+// CHECK-INST: mrs x3, FGDTU10_EL12
+// CHECK-ENCODING: encoding: [0x43,0x35,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3543 mrs x3, FGDTU10_EL12
+
+mrs x3, FGDTP10_EL3
+// CHECK-INST: mrs x3, FGDTP10_EL3
+// CHECK-ENCODING: encoding: [0x43,0x33,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3343 mrs x3, FGDTP10_EL3
+
+mrs x3, FGDTP11_EL1
+// CHECK-INST: mrs x3, FGDTP11_EL1
+// CHECK-ENCODING: encoding: [0x63,0x33,0x38,0xd5]
+// CHECK-UNKNOWN: d5383363 mrs x3, FGDTP11_EL1
+
+mrs x3, FGDTU11_EL1
+// CHECK-INST: mrs x3, FGDTU11_EL1
+// CHECK-ENCODING: encoding: [0x63,0x35,0x38,0xd5]
+// CHECK-UNKNOWN: d5383563 mrs x3, FGDTU11_EL1
+
+mrs x3, FGDTP11_EL2
+// CHECK-INST: mrs x3, FGDTP11_EL2
+// CHECK-ENCODING: encoding: [0x63,0x33,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3363 mrs x3, FGDTP11_EL2
+
+mrs x3, FGDTU11_EL2
+// CHECK-INST: mrs x3, FGDTU11_EL2
+// CHECK-ENCODING: encoding: [0x63,0x35,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3563 mrs x3, FGDTU11_EL2
+
+mrs x3, FGDTP11_EL12
+// CHECK-INST: mrs x3, FGDTP11_EL12
+// CHECK-ENCODING: encoding: [0x63,0x33,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3363 mrs x3, FGDTP11_EL12
+
+mrs x3, FGDTU11_EL12
+// CHECK-INST: mrs x3, FGDTU11_EL12
+// CHECK-ENCODING: encoding: [0x63,0x35,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3563 mrs x3, FGDTU11_EL12
+
+mrs x3, FGDTP11_EL3
+// CHECK-INST: mrs x3, FGDTP11_EL3
+// CHECK-ENCODING: encoding: [0x63,0x33,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3363 mrs x3, FGDTP11_EL3
+
+mrs x3, FGDTP12_EL1
+// CHECK-INST: mrs x3, FGDTP12_EL1
+// CHECK-ENCODING: encoding: [0x83,0x33,0x38,0xd5]
+// CHECK-UNKNOWN: d5383383 mrs x3, FGDTP12_EL1
+
+mrs x3, FGDTU12_EL1
+// CHECK-INST: mrs x3, FGDTU12_EL1
+// CHECK-ENCODING: encoding: [0x83,0x35,0x38,0xd5]
+// CHECK-UNKNOWN: d5383583 mrs x3, FGDTU12_EL1
+
+mrs x3, FGDTP12_EL2
+// CHECK-INST: mrs x3, FGDTP12_EL2
+// CHECK-ENCODING: encoding: [0x83,0x33,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3383 mrs x3, FGDTP12_EL2
+
+mrs x3, FGDTU12_EL2
+// CHECK-INST: mrs x3, FGDTU12_EL2
+// CHECK-ENCODING: encoding: [0x83,0x35,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3583 mrs x3, FGDTU12_EL2
+
+mrs x3, FGDTP12_EL12
+// CHECK-INST: mrs x3, FGDTP12_EL12
+// CHECK-ENCODING: encoding: [0x83,0x33,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3383 mrs x3, FGDTP12_EL12
+
+mrs x3, FGDTU12_EL12
+// CHECK-INST: mrs x3, FGDTU12_EL12
+// CHECK-ENCODING: encoding: [0x83,0x35,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3583 mrs x3, FGDTU12_EL12
+
+mrs x3, FGDTP12_EL3
+// CHECK-INST: mrs x3, FGDTP12_EL3
+// CHECK-ENCODING: encoding: [0x83,0x33,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3383 mrs x3, FGDTP12_EL3
+
+mrs x3, FGDTP13_EL1
+// CHECK-INST: mrs x3, FGDTP13_EL1
+// CHECK-ENCODING: encoding: [0xa3,0x33,0x38,0xd5]
+// CHECK-UNKNOWN: d53833a3 mrs x3, FGDTP13_EL1
+
+mrs x3, FGDTU13_EL1
+// CHECK-INST: mrs x3, FGDTU13_EL1
+// CHECK-ENCODING: encoding: [0xa3,0x35,0x38,0xd5]
+// CHECK-UNKNOWN: d53835a3 mrs x3, FGDTU13_EL1
+
+mrs x3, FGDTP13_EL2
+// CHECK-INST: mrs x3, FGDTP13_EL2
+// CHECK-ENCODING: encoding: [0xa3,0x33,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c33a3 mrs x3, FGDTP13_EL2
+
+mrs x3, FGDTU13_EL2
+// CHECK-INST: mrs x3, FGDTU13_EL2
+// CHECK-ENCODING: encoding: [0xa3,0x35,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c35a3 mrs x3, FGDTU13_EL2
+
+mrs x3, FGDTP13_EL12
+// CHECK-INST: mrs x3, FGDTP13_EL12
+// CHECK-ENCODING: encoding: [0xa3,0x33,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d33a3 mrs x3, FGDTP13_EL12
+
+mrs x3, FGDTU13_EL12
+// CHECK-INST: mrs x3, FGDTU13_EL12
+// CHECK-ENCODING: encoding: [0xa3,0x35,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d35a3 mrs x3, FGDTU13_EL12
+
+mrs x3, FGDTP13_EL3
+// CHECK-INST: mrs x3, FGDTP13_EL3
+// CHECK-ENCODING: encoding: [0xa3,0x33,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e33a3 mrs x3, FGDTP13_EL3
+
+mrs x3, FGDTP14_EL1
+// CHECK-INST: mrs x3, FGDTP14_EL1
+// CHECK-ENCODING: encoding: [0xc3,0x33,0x38,0xd5]
+// CHECK-UNKNOWN: d53833c3 mrs x3, FGDTP14_EL1
+
+mrs x3, FGDTU14_EL1
+// CHECK-INST: mrs x3, FGDTU14_EL1
+// CHECK-ENCODING: encoding: [0xc3,0x35,0x38,0xd5]
+// CHECK-UNKNOWN: d53835c3 mrs x3, FGDTU14_EL1
+
+mrs x3, FGDTP14_EL2
+// CHECK-INST: mrs x3, FGDTP14_EL2
+// CHECK-ENCODING: encoding: [0xc3,0x33,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c33c3 mrs x3, FGDTP14_EL2
+
+mrs x3, FGDTU14_EL2
+// CHECK-INST: mrs x3, FGDTU14_EL2
+// CHECK-ENCODING: encoding: [0xc3,0x35,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c35c3 mrs x3, FGDTU14_EL2
+
+mrs x3, FGDTP14_EL12
+// CHECK-INST: mrs x3, FGDTP14_EL12
+// CHECK-ENCODING: encoding: [0xc3,0x33,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d33c3 mrs x3, FGDTP14_EL12
+
+mrs x3, FGDTU14_EL12
+// CHECK-INST: mrs x3, FGDTU14_EL12
+// CHECK-ENCODING: encoding: [0xc3,0x35,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d35c3 mrs x3, FGDTU14_EL12
+
+mrs x3, FGDTP14_EL3
+// CHECK-INST: mrs x3, FGDTP14_EL3
+// CHECK-ENCODING: encoding: [0xc3,0x33,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e33c3 mrs x3, FGDTP14_EL3
+
+mrs x3, FGDTP15_EL1
+// CHECK-INST: mrs x3, FGDTP15_EL1
+// CHECK-ENCODING: encoding: [0xe3,0x33,0x38,0xd5]
+// CHECK-UNKNOWN: d53833e3 mrs x3, FGDTP15_EL1
+
+mrs x3, FGDTU15_EL1
+// CHECK-INST: mrs x3, FGDTU15_EL1
+// CHECK-ENCODING: encoding: [0xe3,0x35,0x38,0xd5]
+// CHECK-UNKNOWN: d53835e3 mrs x3, FGDTU15_EL1
+
+mrs x3, FGDTP15_EL2
+// CHECK-INST: mrs x3, FGDTP15_EL2
+// CHECK-ENCODING: encoding: [0xe3,0x33,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c33e3 mrs x3, FGDTP15_EL2
+
+mrs x3, FGDTU15_EL2
+// CHECK-INST: mrs x3, FGDTU15_EL2
+// CHECK-ENCODING: encoding: [0xe3,0x35,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c35e3 mrs x3, FGDTU15_EL2
+
+mrs x3, FGDTP15_EL12
+// CHECK-INST: mrs x3, FGDTP15_EL12
+// CHECK-ENCODING: encoding: [0xe3,0x33,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d33e3 mrs x3, FGDTP15_EL12
+
+mrs x3, FGDTU15_EL12
+// CHECK-INST: mrs x3, FGDTU15_EL12
+// CHECK-ENCODING: encoding: [0xe3,0x35,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d35e3 mrs x3, FGDTU15_EL12
+
+mrs x3, FGDTP15_EL3
+// CHECK-INST: mrs x3, FGDTP15_EL3
+// CHECK-ENCODING: encoding: [0xe3,0x33,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e33e3 mrs x3, FGDTP15_EL3
+
+mrs x0, AFGDTP0_EL1
+// CHECK-INST: mrs x0, AFGDTP0_EL1
+// CHECK-ENCODING: encoding: [0x00,0x36,0x38,0xd5]
+// CHECK-UNKNOWN: d5383600 mrs x0, AFGDTP0_EL1
+
+mrs x0, AFGDTU0_EL1
+// CHECK-INST: mrs x0, AFGDTU0_EL1
+// CHECK-ENCODING: encoding: [0x00,0x38,0x38,0xd5]
+// CHECK-UNKNOWN: d5383800 mrs x0, AFGDTU0_EL1
+
+mrs x0, AFGDTP0_EL2
+// CHECK-INST: mrs x0, AFGDTP0_EL2
+// CHECK-ENCODING: encoding: [0x00,0x36,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3600 mrs x0, AFGDTP0_EL2
+
+mrs x0, AFGDTU0_EL2
+// CHECK-INST: mrs x0, AFGDTU0_EL2
+// CHECK-ENCODING: encoding: [0x00,0x38,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3800 mrs x0, AFGDTU0_EL2
+
+mrs x0, AFGDTP0_EL12
+// CHECK-INST: mrs x0, AFGDTP0_EL12
+// CHECK-ENCODING: encoding: [0x00,0x36,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3600 mrs x0, AFGDTP0_EL12
+
+mrs x0, AFGDTU0_EL12
+// CHECK-INST: mrs x0, AFGDTU0_EL12
+// CHECK-ENCODING: encoding: [0x00,0x38,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3800 mrs x0, AFGDTU0_EL12
+
+mrs x0, AFGDTP0_EL3
+// CHECK-INST: mrs x0, AFGDTP0_EL3
+// CHECK-ENCODING: encoding: [0x00,0x36,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3600 mrs x0, AFGDTP0_EL3
+
+mrs x0, AFGDTP1_EL1
+// CHECK-INST: mrs x0, AFGDTP1_EL1
+// CHECK-ENCODING: encoding: [0x20,0x36,0x38,0xd5]
+// CHECK-UNKNOWN: d5383620 mrs x0, AFGDTP1_EL1
+
+mrs x0, AFGDTU1_EL1
+// CHECK-INST: mrs x0, AFGDTU1_EL1
+// CHECK-ENCODING: encoding: [0x20,0x38,0x38,0xd5]
+// CHECK-UNKNOWN: d5383820 mrs x0, AFGDTU1_EL1
+
+mrs x0, AFGDTP1_EL2
+// CHECK-INST: mrs x0, AFGDTP1_EL2
+// CHECK-ENCODING: encoding: [0x20,0x36,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3620 mrs x0, AFGDTP1_EL2
+
+mrs x0, AFGDTU1_EL2
+// CHECK-INST: mrs x0, AFGDTU1_EL2
+// CHECK-ENCODING: encoding: [0x20,0x38,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3820 mrs x0, AFGDTU1_EL2
+
+mrs x0, AFGDTP1_EL12
+// CHECK-INST: mrs x0, AFGDTP1_EL12
+// CHECK-ENCODING: encoding: [0x20,0x36,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3620 mrs x0, AFGDTP1_EL12
+
+mrs x0, AFGDTU1_EL12
+// CHECK-INST: mrs x0, AFGDTU1_EL12
+// CHECK-ENCODING: encoding: [0x20,0x38,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3820 mrs x0, AFGDTU1_EL12
+
+mrs x0, AFGDTP1_EL3
+// CHECK-INST: mrs x0, AFGDTP1_EL3
+// CHECK-ENCODING: encoding: [0x20,0x36,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3620 mrs x0, AFGDTP1_EL3
+
+mrs x0, AFGDTP2_EL1
+// CHECK-INST: mrs x0, AFGDTP2_EL1
+// CHECK-ENCODING: encoding: [0x40,0x36,0x38,0xd5]
+// CHECK-UNKNOWN: d5383640 mrs x0, AFGDTP2_EL1
+
+mrs x0, AFGDTU2_EL1
+// CHECK-INST: mrs x0, AFGDTU2_EL1
+// CHECK-ENCODING: encoding: [0x40,0x38,0x38,0xd5]
+// CHECK-UNKNOWN: d5383840 mrs x0, AFGDTU2_EL1
+
+mrs x0, AFGDTP2_EL2
+// CHECK-INST: mrs x0, AFGDTP2_EL2
+// CHECK-ENCODING: encoding: [0x40,0x36,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3640 mrs x0, AFGDTP2_EL2
+
+mrs x0, AFGDTU2_EL2
+// CHECK-INST: mrs x0, AFGDTU2_EL2
+// CHECK-ENCODING: encoding: [0x40,0x38,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3840 mrs x0, AFGDTU2_EL2
+
+mrs x0, AFGDTP2_EL12
+// CHECK-INST: mrs x0, AFGDTP2_EL12
+// CHECK-ENCODING: encoding: [0x40,0x36,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3640 mrs x0, AFGDTP2_EL12
+
+mrs x0, AFGDTU2_EL12
+// CHECK-INST: mrs x0, AFGDTU2_EL12
+// CHECK-ENCODING: encoding: [0x40,0x38,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3840 mrs x0, AFGDTU2_EL12
+
+mrs x0, AFGDTP2_EL3
+// CHECK-INST: mrs x0, AFGDTP2_EL3
+// CHECK-ENCODING: encoding: [0x40,0x36,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3640 mrs x0, AFGDTP2_EL3
+
+mrs x0, AFGDTP3_EL1
+// CHECK-INST: mrs x0, AFGDTP3_EL1
+// CHECK-ENCODING: encoding: [0x60,0x36,0x38,0xd5]
+// CHECK-UNKNOWN: d5383660 mrs x0, AFGDTP3_EL1
+
+mrs x0, AFGDTU3_EL1
+// CHECK-INST: mrs x0, AFGDTU3_EL1
+// CHECK-ENCODING: encoding: [0x60,0x38,0x38,0xd5]
+// CHECK-UNKNOWN: d5383860 mrs x0, AFGDTU3_EL1
+
+mrs x0, AFGDTP3_EL2
+// CHECK-INST: mrs x0, AFGDTP3_EL2
+// CHECK-ENCODING: encoding: [0x60,0x36,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3660 mrs x0, AFGDTP3_EL2
+
+mrs x0, AFGDTU3_EL2
+// CHECK-INST: mrs x0, AFGDTU3_EL2
+// CHECK-ENCODING: encoding: [0x60,0x38,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3860 mrs x0, AFGDTU3_EL2
+
+mrs x0, AFGDTP3_EL12
+// CHECK-INST: mrs x0, AFGDTP3_EL12
+// CHECK-ENCODING: encoding: [0x60,0x36,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3660 mrs x0, AFGDTP3_EL12
+
+mrs x0, AFGDTU3_EL12
+// CHECK-INST: mrs x0, AFGDTU3_EL12
+// CHECK-ENCODING: encoding: [0x60,0x38,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3860 mrs x0, AFGDTU3_EL12
+
+mrs x0, AFGDTP3_EL3
+// CHECK-INST: mrs x0, AFGDTP3_EL3
+// CHECK-ENCODING: encoding: [0x60,0x36,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3660 mrs x0, AFGDTP3_EL3
+
+mrs x0, AFGDTP4_EL1
+// CHECK-INST: mrs x0, AFGDTP4_EL1
+// CHECK-ENCODING: encoding: [0x80,0x36,0x38,0xd5]
+// CHECK-UNKNOWN: d5383680 mrs x0, AFGDTP4_EL1
+
+mrs x0, AFGDTU4_EL1
+// CHECK-INST: mrs x0, AFGDTU4_EL1
+// CHECK-ENCODING: encoding: [0x80,0x38,0x38,0xd5]
+// CHECK-UNKNOWN: d5383880 mrs x0, AFGDTU4_EL1
+
+mrs x0, AFGDTP4_EL2
+// CHECK-INST: mrs x0, AFGDTP4_EL2
+// CHECK-ENCODING: encoding: [0x80,0x36,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3680 mrs x0, AFGDTP4_EL2
+
+mrs x0, AFGDTU4_EL2
+// CHECK-INST: mrs x0, AFGDTU4_EL2
+// CHECK-ENCODING: encoding: [0x80,0x38,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3880 mrs x0, AFGDTU4_EL2
+
+mrs x0, AFGDTP4_EL12
+// CHECK-INST: mrs x0, AFGDTP4_EL12
+// CHECK-ENCODING: encoding: [0x80,0x36,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3680 mrs x0, AFGDTP4_EL12
+
+mrs x0, AFGDTU4_EL12
+// CHECK-INST: mrs x0, AFGDTU4_EL12
+// CHECK-ENCODING: encoding: [0x80,0x38,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3880 mrs x0, AFGDTU4_EL12
+
+mrs x0, AFGDTP4_EL3
+// CHECK-INST: mrs x0, AFGDTP4_EL3
+// CHECK-ENCODING: encoding: [0x80,0x36,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3680 mrs x0, AFGDTP4_EL3
+
+mrs x0, AFGDTP5_EL1
+// CHECK-INST: mrs x0, AFGDTP5_EL1
+// CHECK-ENCODING: encoding: [0xa0,0x36,0x38,0xd5]
+// CHECK-UNKNOWN: d53836a0 mrs x0, AFGDTP5_EL1
+
+mrs x0, AFGDTU5_EL1
+// CHECK-INST: mrs x0, AFGDTU5_EL1
+// CHECK-ENCODING: encoding: [0xa0,0x38,0x38,0xd5]
+// CHECK-UNKNOWN: d53838a0 mrs x0, AFGDTU5_EL1
+
+mrs x0, AFGDTP5_EL2
+// CHECK-INST: mrs x0, AFGDTP5_EL2
+// CHECK-ENCODING: encoding: [0xa0,0x36,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c36a0 mrs x0, AFGDTP5_EL2
+
+mrs x0, AFGDTU5_EL2
+// CHECK-INST: mrs x0, AFGDTU5_EL2
+// CHECK-ENCODING: encoding: [0xa0,0x38,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c38a0 mrs x0, AFGDTU5_EL2
+
+mrs x0, AFGDTP5_EL12
+// CHECK-INST: mrs x0, AFGDTP5_EL12
+// CHECK-ENCODING: encoding: [0xa0,0x36,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d36a0 mrs x0, AFGDTP5_EL12
+
+mrs x0, AFGDTU5_EL12
+// CHECK-INST: mrs x0, AFGDTU5_EL12
+// CHECK-ENCODING: encoding: [0xa0,0x38,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d38a0 mrs x0, AFGDTU5_EL12
+
+mrs x0, AFGDTP5_EL3
+// CHECK-INST: mrs x0, AFGDTP5_EL3
+// CHECK-ENCODING: encoding: [0xa0,0x36,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e36a0 mrs x0, AFGDTP5_EL3
+
+mrs x0, AFGDTP6_EL1
+// CHECK-INST: mrs x0, AFGDTP6_EL1
+// CHECK-ENCODING: encoding: [0xc0,0x36,0x38,0xd5]
+// CHECK-UNKNOWN: d53836c0 mrs x0, AFGDTP6_EL1
+
+mrs x0, AFGDTU6_EL1
+// CHECK-INST: mrs x0, AFGDTU6_EL1
+// CHECK-ENCODING: encoding: [0xc0,0x38,0x38,0xd5]
+// CHECK-UNKNOWN: d53838c0 mrs x0, AFGDTU6_EL1
+
+mrs x0, AFGDTP6_EL2
+// CHECK-INST: mrs x0, AFGDTP6_EL2
+// CHECK-ENCODING: encoding: [0xc0,0x36,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c36c0 mrs x0, AFGDTP6_EL2
+
+mrs x0, AFGDTU6_EL2
+// CHECK-INST: mrs x0, AFGDTU6_EL2
+// CHECK-ENCODING: encoding: [0xc0,0x38,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c38c0 mrs x0, AFGDTU6_EL2
+
+mrs x0, AFGDTP6_EL12
+// CHECK-INST: mrs x0, AFGDTP6_EL12
+// CHECK-ENCODING: encoding: [0xc0,0x36,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d36c0 mrs x0, AFGDTP6_EL12
+
+mrs x0, AFGDTU6_EL12
+// CHECK-INST: mrs x0, AFGDTU6_EL12
+// CHECK-ENCODING: encoding: [0xc0,0x38,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d38c0 mrs x0, AFGDTU6_EL12
+
+mrs x0, AFGDTP6_EL3
+// CHECK-INST: mrs x0, AFGDTP6_EL3
+// CHECK-ENCODING: encoding: [0xc0,0x36,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e36c0 mrs x0, AFGDTP6_EL3
+
+mrs x0, AFGDTP7_EL1
+// CHECK-INST: mrs x0, AFGDTP7_EL1
+// CHECK-ENCODING: encoding: [0xe0,0x36,0x38,0xd5]
+// CHECK-UNKNOWN: d53836e0 mrs x0, AFGDTP7_EL1
+
+mrs x0, AFGDTU7_EL1
+// CHECK-INST: mrs x0, AFGDTU7_EL1
+// CHECK-ENCODING: encoding: [0xe0,0x38,0x38,0xd5]
+// CHECK-UNKNOWN: d53838e0 mrs x0, AFGDTU7_EL1
+
+mrs x0, AFGDTP7_EL2
+// CHECK-INST: mrs x0, AFGDTP7_EL2
+// CHECK-ENCODING: encoding: [0xe0,0x36,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c36e0 mrs x0, AFGDTP7_EL2
+
+mrs x0, AFGDTU7_EL2
+// CHECK-INST: mrs x0, AFGDTU7_EL2
+// CHECK-ENCODING: encoding: [0xe0,0x38,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c38e0 mrs x0, AFGDTU7_EL2
+
+mrs x0, AFGDTP7_EL12
+// CHECK-INST: mrs x0, AFGDTP7_EL12
+// CHECK-ENCODING: encoding: [0xe0,0x36,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d36e0 mrs x0, AFGDTP7_EL12
+
+mrs x0, AFGDTU7_EL12
+// CHECK-INST: mrs x0, AFGDTU7_EL12
+// CHECK-ENCODING: encoding: [0xe0,0x38,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d38e0 mrs x0, AFGDTU7_EL12
+
+mrs x0, AFGDTP7_EL3
+// CHECK-INST: mrs x0, AFGDTP7_EL3
+// CHECK-ENCODING: encoding: [0xe0,0x36,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e36e0 mrs x0, AFGDTP7_EL3
+
+mrs x0, AFGDTP8_EL1
+// CHECK-INST: mrs x0, AFGDTP8_EL1
+// CHECK-ENCODING: encoding: [0x00,0x37,0x38,0xd5]
+// CHECK-UNKNOWN: d5383700 mrs x0, AFGDTP8_EL1
+
+mrs x0, AFGDTU8_EL1
+// CHECK-INST: mrs x0, AFGDTU8_EL1
+// CHECK-ENCODING: encoding: [0x00,0x39,0x38,0xd5]
+// CHECK-UNKNOWN: d5383900 mrs x0, AFGDTU8_EL1
+
+mrs x0, AFGDTP8_EL2
+// CHECK-INST: mrs x0, AFGDTP8_EL2
+// CHECK-ENCODING: encoding: [0x00,0x37,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3700 mrs x0, AFGDTP8_EL2
+
+mrs x0, AFGDTU8_EL2
+// CHECK-INST: mrs x0, AFGDTU8_EL2
+// CHECK-ENCODING: encoding: [0x00,0x39,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3900 mrs x0, AFGDTU8_EL2
+
+mrs x0, AFGDTP8_EL12
+// CHECK-INST: mrs x0, AFGDTP8_EL12
+// CHECK-ENCODING: encoding: [0x00,0x37,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3700 mrs x0, AFGDTP8_EL12
+
+mrs x0, AFGDTU8_EL12
+// CHECK-INST: mrs x0, AFGDTU8_EL12
+// CHECK-ENCODING: encoding: [0x00,0x39,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3900 mrs x0, AFGDTU8_EL12
+
+mrs x0, AFGDTP8_EL3
+// CHECK-INST: mrs x0, AFGDTP8_EL3
+// CHECK-ENCODING: encoding: [0x00,0x37,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3700 mrs x0, AFGDTP8_EL3
+
+mrs x0, AFGDTP9_EL1
+// CHECK-INST: mrs x0, AFGDTP9_EL1
+// CHECK-ENCODING: encoding: [0x20,0x37,0x38,0xd5]
+// CHECK-UNKNOWN: d5383720 mrs x0, AFGDTP9_EL1
+
+mrs x0, AFGDTU9_EL1
+// CHECK-INST: mrs x0, AFGDTU9_EL1
+// CHECK-ENCODING: encoding: [0x20,0x39,0x38,0xd5]
+// CHECK-UNKNOWN: d5383920 mrs x0, AFGDTU9_EL1
+
+mrs x0, AFGDTP9_EL2
+// CHECK-INST: mrs x0, AFGDTP9_EL2
+// CHECK-ENCODING: encoding: [0x20,0x37,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3720 mrs x0, AFGDTP9_EL2
+
+mrs x0, AFGDTU9_EL2
+// CHECK-INST: mrs x0, AFGDTU9_EL2
+// CHECK-ENCODING: encoding: [0x20,0x39,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3920 mrs x0, AFGDTU9_EL2
+
+mrs x0, AFGDTP9_EL12
+// CHECK-INST: mrs x0, AFGDTP9_EL12
+// CHECK-ENCODING: encoding: [0x20,0x37,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3720 mrs x0, AFGDTP9_EL12
+
+mrs x0, AFGDTU9_EL12
+// CHECK-INST: mrs x0, AFGDTU9_EL12
+// CHECK-ENCODING: encoding: [0x20,0x39,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3920 mrs x0, AFGDTU9_EL12
+
+mrs x0, AFGDTP9_EL3
+// CHECK-INST: mrs x0, AFGDTP9_EL3
+// CHECK-ENCODING: encoding: [0x20,0x37,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3720 mrs x0, AFGDTP9_EL3
+
+mrs x0, AFGDTP10_EL1
+// CHECK-INST: mrs x0, AFGDTP10_EL1
+// CHECK-ENCODING: encoding: [0x40,0x37,0x38,0xd5]
+// CHECK-UNKNOWN: d5383740 mrs x0, AFGDTP10_EL1
+
+mrs x0, AFGDTU10_EL1
+// CHECK-INST: mrs x0, AFGDTU10_EL1
+// CHECK-ENCODING: encoding: [0x40,0x39,0x38,0xd5]
+// CHECK-UNKNOWN: d5383940 mrs x0, AFGDTU10_EL1
+
+mrs x0, AFGDTP10_EL2
+// CHECK-INST: mrs x0, AFGDTP10_EL2
+// CHECK-ENCODING: encoding: [0x40,0x37,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3740 mrs x0, AFGDTP10_EL2
+
+mrs x0, AFGDTU10_EL2
+// CHECK-INST: mrs x0, AFGDTU10_EL2
+// CHECK-ENCODING: encoding: [0x40,0x39,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3940 mrs x0, AFGDTU10_EL2
+
+mrs x0, AFGDTP10_EL12
+// CHECK-INST: mrs x0, AFGDTP10_EL12
+// CHECK-ENCODING: encoding: [0x40,0x37,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3740 mrs x0, AFGDTP10_EL12
+
+mrs x0, AFGDTU10_EL12
+// CHECK-INST: mrs x0, AFGDTU10_EL12
+// CHECK-ENCODING: encoding: [0x40,0x39,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3940 mrs x0, AFGDTU10_EL12
+
+mrs x0, AFGDTP10_EL3
+// CHECK-INST: mrs x0, AFGDTP10_EL3
+// CHECK-ENCODING: encoding: [0x40,0x37,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3740 mrs x0, AFGDTP10_EL3
+
+mrs x0, AFGDTP11_EL1
+// CHECK-INST: mrs x0, AFGDTP11_EL1
+// CHECK-ENCODING: encoding: [0x60,0x37,0x38,0xd5]
+// CHECK-UNKNOWN: d5383760 mrs x0, AFGDTP11_EL1
+
+mrs x0, AFGDTU11_EL1
+// CHECK-INST: mrs x0, AFGDTU11_EL1
+// CHECK-ENCODING: encoding: [0x60,0x39,0x38,0xd5]
+// CHECK-UNKNOWN: d5383960 mrs x0, AFGDTU11_EL1
+
+mrs x0, AFGDTP11_EL2
+// CHECK-INST: mrs x0, AFGDTP11_EL2
+// CHECK-ENCODING: encoding: [0x60,0x37,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3760 mrs x0, AFGDTP11_EL2
+
+mrs x0, AFGDTU11_EL2
+// CHECK-INST: mrs x0, AFGDTU11_EL2
+// CHECK-ENCODING: encoding: [0x60,0x39,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3960 mrs x0, AFGDTU11_EL2
+
+mrs x0, AFGDTP11_EL12
+// CHECK-INST: mrs x0, AFGDTP11_EL12
+// CHECK-ENCODING: encoding: [0x60,0x37,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3760 mrs x0, AFGDTP11_EL12
+
+mrs x0, AFGDTU11_EL12
+// CHECK-INST: mrs x0, AFGDTU11_EL12
+// CHECK-ENCODING: encoding: [0x60,0x39,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3960 mrs x0, AFGDTU11_EL12
+
+mrs x0, AFGDTP11_EL3
+// CHECK-INST: mrs x0, AFGDTP11_EL3
+// CHECK-ENCODING: encoding: [0x60,0x37,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3760 mrs x0, AFGDTP11_EL3
+
+mrs x0, AFGDTP12_EL1
+// CHECK-INST: mrs x0, AFGDTP12_EL1
+// CHECK-ENCODING: encoding: [0x80,0x37,0x38,0xd5]
+// CHECK-UNKNOWN: d5383780 mrs x0, AFGDTP12_EL1
+
+mrs x0, AFGDTU12_EL1
+// CHECK-INST: mrs x0, AFGDTU12_EL1
+// CHECK-ENCODING: encoding: [0x80,0x39,0x38,0xd5]
+// CHECK-UNKNOWN: d5383980 mrs x0, AFGDTU12_EL1
+
+mrs x0, AFGDTP12_EL2
+// CHECK-INST: mrs x0, AFGDTP12_EL2
+// CHECK-ENCODING: encoding: [0x80,0x37,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3780 mrs x0, AFGDTP12_EL2
+
+mrs x0, AFGDTU12_EL2
+// CHECK-INST: mrs x0, AFGDTU12_EL2
+// CHECK-ENCODING: encoding: [0x80,0x39,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c3980 mrs x0, AFGDTU12_EL2
+
+mrs x0, AFGDTP12_EL12
+// CHECK-INST: mrs x0, AFGDTP12_EL12
+// CHECK-ENCODING: encoding: [0x80,0x37,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3780 mrs x0, AFGDTP12_EL12
+
+mrs x0, AFGDTU12_EL12
+// CHECK-INST: mrs x0, AFGDTU12_EL12
+// CHECK-ENCODING: encoding: [0x80,0x39,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d3980 mrs x0, AFGDTU12_EL12
+
+mrs x0, AFGDTP12_EL3
+// CHECK-INST: mrs x0, AFGDTP12_EL3
+// CHECK-ENCODING: encoding: [0x80,0x37,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e3780 mrs x0, AFGDTP12_EL3
+
+mrs x0, AFGDTP13_EL1
+// CHECK-INST: mrs x0, AFGDTP13_EL1
+// CHECK-ENCODING: encoding: [0xa0,0x37,0x38,0xd5]
+// CHECK-UNKNOWN: d53837a0 mrs x0, AFGDTP13_EL1
+
+mrs x0, AFGDTU13_EL1
+// CHECK-INST: mrs x0, AFGDTU13_EL1
+// CHECK-ENCODING: encoding: [0xa0,0x39,0x38,0xd5]
+// CHECK-UNKNOWN: d53839a0 mrs x0, AFGDTU13_EL1
+
+mrs x0, AFGDTP13_EL2
+// CHECK-INST: mrs x0, AFGDTP13_EL2
+// CHECK-ENCODING: encoding: [0xa0,0x37,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c37a0 mrs x0, AFGDTP13_EL2
+
+mrs x0, AFGDTU13_EL2
+// CHECK-INST: mrs x0, AFGDTU13_EL2
+// CHECK-ENCODING: encoding: [0xa0,0x39,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c39a0 mrs x0, AFGDTU13_EL2
+
+mrs x0, AFGDTP13_EL12
+// CHECK-INST: mrs x0, AFGDTP13_EL12
+// CHECK-ENCODING: encoding: [0xa0,0x37,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d37a0 mrs x0, AFGDTP13_EL12
+
+mrs x0, AFGDTU13_EL12
+// CHECK-INST: mrs x0, AFGDTU13_EL12
+// CHECK-ENCODING: encoding: [0xa0,0x39,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d39a0 mrs x0, AFGDTU13_EL12
+
+mrs x0, AFGDTP13_EL3
+// CHECK-INST: mrs x0, AFGDTP13_EL3
+// CHECK-ENCODING: encoding: [0xa0,0x37,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e37a0 mrs x0, AFGDTP13_EL3
+
+mrs x0, AFGDTP14_EL1
+// CHECK-INST: mrs x0, AFGDTP14_EL1
+// CHECK-ENCODING: encoding: [0xc0,0x37,0x38,0xd5]
+// CHECK-UNKNOWN: d53837c0 mrs x0, AFGDTP14_EL1
+
+mrs x0, AFGDTU14_EL1
+// CHECK-INST: mrs x0, AFGDTU14_EL1
+// CHECK-ENCODING: encoding: [0xc0,0x39,0x38,0xd5]
+// CHECK-UNKNOWN: d53839c0 mrs x0, AFGDTU14_EL1
+
+mrs x0, AFGDTP14_EL2
+// CHECK-INST: mrs x0, AFGDTP14_EL2
+// CHECK-ENCODING: encoding: [0xc0,0x37,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c37c0 mrs x0, AFGDTP14_EL2
+
+mrs x0, AFGDTU14_EL2
+// CHECK-INST: mrs x0, AFGDTU14_EL2
+// CHECK-ENCODING: encoding: [0xc0,0x39,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c39c0 mrs x0, AFGDTU14_EL2
+
+mrs x0, AFGDTP14_EL12
+// CHECK-INST: mrs x0, AFGDTP14_EL12
+// CHECK-ENCODING: encoding: [0xc0,0x37,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d37c0 mrs x0, AFGDTP14_EL12
+
+mrs x0, AFGDTU14_EL12
+// CHECK-INST: mrs x0, AFGDTU14_EL12
+// CHECK-ENCODING: encoding: [0xc0,0x39,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d39c0 mrs x0, AFGDTU14_EL12
+
+mrs x0, AFGDTP14_EL3
+// CHECK-INST: mrs x0, AFGDTP14_EL3
+// CHECK-ENCODING: encoding: [0xc0,0x37,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e37c0 mrs x0, AFGDTP14_EL3
+
+mrs x0, AFGDTP15_EL1
+// CHECK-INST: mrs x0, AFGDTP15_EL1
+// CHECK-ENCODING: encoding: [0xe0,0x37,0x38,0xd5]
+// CHECK-UNKNOWN: d53837e0 mrs x0, AFGDTP15_EL1
+
+mrs x0, AFGDTU15_EL1
+// CHECK-INST: mrs x0, AFGDTU15_EL1
+// CHECK-ENCODING: encoding: [0xe0,0x39,0x38,0xd5]
+// CHECK-UNKNOWN: d53839e0 mrs x0, AFGDTU15_EL1
+
+mrs x0, AFGDTP15_EL2
+// CHECK-INST: mrs x0, AFGDTP15_EL2
+// CHECK-ENCODING: encoding: [0xe0,0x37,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c37e0 mrs x0, AFGDTP15_EL2
+
+mrs x0, AFGDTU15_EL2
+// CHECK-INST: mrs x0, AFGDTU15_EL2
+// CHECK-ENCODING: encoding: [0xe0,0x39,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c39e0 mrs x0, AFGDTU15_EL2
+
+mrs x0, AFGDTP15_EL12
+// CHECK-INST: mrs x0, AFGDTP15_EL12
+// CHECK-ENCODING: encoding: [0xe0,0x37,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d37e0 mrs x0, AFGDTP15_EL12
+
+mrs x0, AFGDTU15_EL12
+// CHECK-INST: mrs x0, AFGDTU15_EL12
+// CHECK-ENCODING: encoding: [0xe0,0x39,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d39e0 mrs x0, AFGDTU15_EL12
+
+mrs x0, AFGDTP15_EL3
+// CHECK-INST: mrs x0, AFGDTP15_EL3
+// CHECK-ENCODING: encoding: [0xe0,0x37,0x3e,0xd5]
+// CHECK-UNKNOWN: d53e37e0 mrs x0, AFGDTP15_EL3
+
+mrs x2, TPMIN0_EL0
+// CHECK-INST: mrs x2, TPMIN0_EL0
+// CHECK-ENCODING: encoding: [0x82,0x22,0x3b,0xd5]
+// CHECK-UNKNOWN: d53b2282 mrs x2, TPMIN0_EL0
+
+mrs x2, TPMAX0_EL0
+// CHECK-INST: mrs x2, TPMAX0_EL0
+// CHECK-ENCODING: encoding: [0xa2,0x22,0x3b,0xd5]
+// CHECK-UNKNOWN: d53b22a2 mrs x2, TPMAX0_EL0
+
+mrs x2, TPMIN1_EL0
+// CHECK-INST: mrs x2, TPMIN1_EL0
+// CHECK-ENCODING: encoding: [0xc2,0x22,0x3b,0xd5]
+// CHECK-UNKNOWN: d53b22c2 mrs x2, TPMIN1_EL0
+
+mrs x2, TPMAX1_EL0
+// CHECK-INST: mrs x2, TPMAX1_EL0
+// CHECK-ENCODING: encoding: [0xe2,0x22,0x3b,0xd5]
+// CHECK-UNKNOWN: d53b22e2 mrs x2, TPMAX1_EL0
+
+mrs x2, TPMIN0_EL1
+// CHECK-INST: mrs x2, TPMIN0_EL1
+// CHECK-ENCODING: encoding: [0x82,0x22,0x38,0xd5]
+// CHECK-UNKNOWN: d5382282 mrs x2, TPMIN0_EL1
+
+mrs x2, TPMAX0_EL1
+// CHECK-INST: mrs x2, TPMAX0_EL1
+// CHECK-ENCODING: encoding: [0xa2,0x22,0x38,0xd5]
+// CHECK-UNKNOWN: d53822a2 mrs x2, TPMAX0_EL1
+
+mrs x2, TPMIN1_EL1
+// CHECK-INST: mrs x2, TPMIN1_EL1
+// CHECK-ENCODING: encoding: [0xc2,0x22,0x38,0xd5]
+// CHECK-UNKNOWN: d53822c2 mrs x2, TPMIN1_EL1
+
+mrs x2, TPMAX1_EL1
+// CHECK-INST: mrs x2, TPMAX1_EL1
+// CHECK-ENCODING: encoding: [0xe2,0x22,0x38,0xd5]
+// CHECK-UNKNOWN: d53822e2 mrs x2, TPMAX1_EL1
+
+mrs x2, TPMIN0_EL2
+// CHECK-INST: mrs x2, TPMIN0_EL2
+// CHECK-ENCODING: encoding: [0x82,0x22,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c2282 mrs x2, TPMIN0_EL2
+
+mrs x2, TPMAX0_EL2
+// CHECK-INST: mrs x2, TPMAX0_EL2
+// CHECK-ENCODING: encoding: [0xa2,0x22,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c22a2 mrs x2, TPMAX0_EL2
+
+mrs x2, TPMIN1_EL2
+// CHECK-INST: mrs x2, TPMIN1_EL2
+// CHECK-ENCODING: encoding: [0xc2,0x22,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c22c2 mrs x2, TPMIN1_EL2
+
+mrs x2, TPMAX1_EL2
+// CHECK-INST: mrs x2, TPMAX1_EL2
+// CHECK-ENCODING: encoding: [0xe2,0x22,0x3c,0xd5]
+// CHECK-UNKNOWN: d53c22e2 mrs x2, TPMAX1_EL2
+
+mrs x2, TPMIN0_EL12
+// CHECK-INST: mrs x2, TPMIN0_EL12
+// CHECK-ENCODING: encoding: [0x82,0x22,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d2282 mrs x2, TPMIN0_EL12
+
+mrs x2, TPMAX0_EL12
+// CHECK-INST: mrs x2, TPMAX0_EL12
+// CHECK-ENCODING: encoding: [0xa2,0x22,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d22a2 mrs x2, TPMAX0_EL12
+
+mrs x2, TPMIN1_EL12
+// CHECK-INST: mrs x2, TPMIN1_EL12
+// CHECK-ENCODING: encoding: [0xc2,0x22,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d22c2 mrs x2, TPMIN1_EL12
+
+mrs x2, TPMAX1_EL12
+// CHECK-INST: mrs x2, TPMAX1_EL12
+// CHECK-ENCODING: encoding: [0xe2,0x22,0x3d,0xd5]
+// CHECK-UNKNOWN: d53d22e2 mrs x2, TPMAX1_EL12
+
+
+msr TPIDR3_EL0, x0
+// CHECK-INST: msr TPIDR3_EL0, x0
+// CHECK-ENCODING: encoding: [0x00,0xd0,0x1b,0xd5]
+// CHECK-UNKNOWN: d51bd000 msr TPIDR3_EL0, x0
+
+msr TPIDR3_EL1, x0
+// CHECK-INST: msr TPIDR3_EL1, x0
+// CHECK-ENCODING: encoding: [0x00,0xd0,0x18,0xd5]
+// CHECK-UNKNOWN: d518d000 msr TPIDR3_EL1, x0
+
+msr TPIDR3_EL12, x0
+// CHECK-INST: msr TPIDR3_EL12, x0
+// CHECK-ENCODING: encoding: [0x00,0xd0,0x1d,0xd5]
+// CHECK-UNKNOWN: d51dd000 msr TPIDR3_EL12, x0
+
+msr TPIDR3_EL2, x0
+// CHECK-INST: msr TPIDR3_EL2, x0
+// CHECK-ENCODING: encoding: [0x00,0xd0,0x1c,0xd5]
+// CHECK-UNKNOWN: d51cd000 msr TPIDR3_EL2, x0
+
+msr TPIDR3_EL3, x0
+// CHECK-INST: msr TPIDR3_EL3, x0
+// CHECK-ENCODING: encoding: [0x00,0xd0,0x1e,0xd5]
+// CHECK-UNKNOWN: d51ed000 msr TPIDR3_EL3, x0
+
+msr VNCCR_EL2, x0
+// CHECK-INST: msr VNCCR_EL2, x0
+// CHECK-ENCODING: encoding: [0x20,0x22,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c2220 msr VNCCR_EL2, x0
+
+msr DPOCR_EL0, x0
+// CHECK-INST: msr DPOCR_EL0, x0
+// CHECK-ENCODING: encoding: [0x40,0x45,0x1b,0xd5]
+// CHECK-UNKNOWN: d51b4540 msr DPOCR_EL0, x0
+
+msr HCRMASK_EL2, x0
+// CHECK-INST: msr HCRMASK_EL2, x0
+// CHECK-ENCODING: encoding: [0xc0,0x15,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c15c0 msr HCRMASK_EL2, x0
+
+msr HCRXMASK_EL2, x0
+// CHECK-INST: msr HCRXMASK_EL2, x0
+// CHECK-ENCODING: encoding: [0xe0,0x15,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c15e0 msr HCRXMASK_EL2, x0
+
+msr HCR_EL2, x0
+// CHECK-INST: msr HCR_EL2, x0
+// CHECK-ENCODING: encoding: [0x00,0x11,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c1100 msr HCR_EL2, x0
+
+msr NVHCR_EL2, x0
+// CHECK-INST: msr NVHCR_EL2, x0
+// CHECK-ENCODING: encoding: [0x00,0x15,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c1500 msr NVHCR_EL2, x0
+
+msr NVHCRX_EL2, x0
+// CHECK-INST: msr NVHCRX_EL2, x0
+// CHECK-ENCODING: encoding: [0x20,0x15,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c1520 msr NVHCRX_EL2, x0
+
+msr NVHCRMASK_EL2, x0
+// CHECK-INST: msr NVHCRMASK_EL2, x0
+// CHECK-ENCODING: encoding: [0x80,0x15,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c1580 msr NVHCRMASK_EL2, x0
+
+msr NVHCRXMASK_EL2, x0
+// CHECK-INST: msr NVHCRXMASK_EL2, x0
+// CHECK-ENCODING: encoding: [0xa0,0x15,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c15a0 msr NVHCRXMASK_EL2, x0
+
+msr DPOTBR0_EL1, x3
+// CHECK-INST: msr DPOTBR0_EL1, x3
+// CHECK-ENCODING: encoding: [0xc3,0x20,0x18,0xd5]
+// CHECK-UNKNOWN: d51820c3 msr DPOTBR0_EL1, x3
+
+msr DPOTBR0_EL12, x3
+// CHECK-INST: msr DPOTBR0_EL12, x3
+// CHECK-ENCODING: encoding: [0xc3,0x20,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d20c3 msr DPOTBR0_EL12, x3
+
+msr DPOTBR1_EL1, x3
+// CHECK-INST: msr DPOTBR1_EL1, x3
+// CHECK-ENCODING: encoding: [0xe3,0x20,0x18,0xd5]
+// CHECK-UNKNOWN: d51820e3 msr DPOTBR1_EL1, x3
+
+msr DPOTBR1_EL12, x3
+// CHECK-INST: msr DPOTBR1_EL12, x3
+// CHECK-ENCODING: encoding: [0xe3,0x20,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d20e3 msr DPOTBR1_EL12, x3
+
+msr DPOTBR0_EL2, x3
+// CHECK-INST: msr DPOTBR0_EL2, x3
+// CHECK-ENCODING: encoding: [0xc3,0x20,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c20c3 msr DPOTBR0_EL2, x3
+
+msr DPOTBR1_EL2, x3
+// CHECK-INST: msr DPOTBR1_EL2, x3
+// CHECK-ENCODING: encoding: [0xe3,0x20,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c20e3 msr DPOTBR1_EL2, x3
+
+msr DPOTBR0_EL3, x3
+// CHECK-INST: msr DPOTBR0_EL3, x3
+// CHECK-ENCODING: encoding: [0xc3,0x20,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e20c3 msr DPOTBR0_EL3, x3
+
+msr IRTBRU_EL1, x3
+// CHECK-INST: msr IRTBRU_EL1, x3
+// CHECK-ENCODING: encoding: [0x83,0x20,0x18,0xd5]
+// CHECK-UNKNOWN: d5182083 msr IRTBRU_EL1, x3
+
+msr IRTBRU_EL12, x3
+// CHECK-INST: msr IRTBRU_EL12, x3
+// CHECK-ENCODING: encoding: [0x83,0x20,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d2083 msr IRTBRU_EL12, x3
+
+msr IRTBRP_EL1, x3
+// CHECK-INST: msr IRTBRP_EL1, x3
+// CHECK-ENCODING: encoding: [0xa3,0x20,0x18,0xd5]
+// CHECK-UNKNOWN: d51820a3 msr IRTBRP_EL1, x3
+
+msr IRTBRP_EL12, x3
+// CHECK-INST: msr IRTBRP_EL12, x3
+// CHECK-ENCODING: encoding: [0xa3,0x20,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d20a3 msr IRTBRP_EL12, x3
+
+msr IRTBRU_EL2, x3
+// CHECK-INST: msr IRTBRU_EL2, x3
+// CHECK-ENCODING: encoding: [0x83,0x20,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c2083 msr IRTBRU_EL2, x3
+
+msr IRTBRP_EL2, x3
+// CHECK-INST: msr IRTBRP_EL2, x3
+// CHECK-ENCODING: encoding: [0xa3,0x20,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c20a3 msr IRTBRP_EL2, x3
+
+msr IRTBRP_EL3, x3
+// CHECK-INST: msr IRTBRP_EL3, x3
+// CHECK-ENCODING: encoding: [0xa3,0x20,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e20a3 msr IRTBRP_EL3, x3
+
+msr TTTBRU_EL1, x3
+// CHECK-INST: msr TTTBRU_EL1, x3
+// CHECK-ENCODING: encoding: [0xc3,0xa2,0x18,0xd5]
+// CHECK-UNKNOWN: d518a2c3 msr TTTBRU_EL1, x3
+
+msr TTTBRU_EL12, x3
+// CHECK-INST: msr TTTBRU_EL12, x3
+// CHECK-ENCODING: encoding: [0xc3,0xa2,0x1d,0xd5]
+// CHECK-UNKNOWN: d51da2c3 msr TTTBRU_EL12, x3
+
+msr TTTBRP_EL1, x3
+// CHECK-INST: msr TTTBRP_EL1, x3
+// CHECK-ENCODING: encoding: [0xe3,0xa2,0x18,0xd5]
+// CHECK-UNKNOWN: d518a2e3 msr TTTBRP_EL1, x3
+
+msr TTTBRP_EL12, x3
+// CHECK-INST: msr TTTBRP_EL12, x3
+// CHECK-ENCODING: encoding: [0xe3,0xa2,0x1d,0xd5]
+// CHECK-UNKNOWN: d51da2e3 msr TTTBRP_EL12, x3
+
+msr TTTBRU_EL2, x3
+// CHECK-INST: msr TTTBRU_EL2, x3
+// CHECK-ENCODING: encoding: [0xc3,0xa2,0x1c,0xd5]
+// CHECK-UNKNOWN: d51ca2c3 msr TTTBRU_EL2, x3
+
+msr TTTBRP_EL2, x3
+// CHECK-INST: msr TTTBRP_EL2, x3
+// CHECK-ENCODING: encoding: [0xe3,0xa2,0x1c,0xd5]
+// CHECK-UNKNOWN: d51ca2e3 msr TTTBRP_EL2, x3
+
+msr TTTBRP_EL3, x3
+// CHECK-INST: msr TTTBRP_EL3, x3
+// CHECK-ENCODING: encoding: [0xe3,0xa2,0x1e,0xd5]
+// CHECK-UNKNOWN: d51ea2e3 msr TTTBRP_EL3, x3
+
+msr LDSTT_EL1, x3
+// CHECK-INST: msr LDSTT_EL1, x3
+// CHECK-ENCODING: encoding: [0xe3,0x21,0x18,0xd5]
+// CHECK-UNKNOWN: d51821e3 msr LDSTT_EL1, x3
+
+msr LDSTT_EL12, x3
+// CHECK-INST: msr LDSTT_EL12, x3
+// CHECK-ENCODING: encoding: [0xe3,0x21,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d21e3 msr LDSTT_EL12, x3
+
+msr LDSTT_EL2, x3
+// CHECK-INST: msr LDSTT_EL2, x3
+// CHECK-ENCODING: encoding: [0xe3,0x21,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c21e3 msr LDSTT_EL2, x3
+
+msr TINDEX_EL0, x3
+// CHECK-INST: msr TINDEX_EL0, x3
+// CHECK-ENCODING: encoding: [0x63,0x40,0x1b,0xd5]
+// CHECK-UNKNOWN: d51b4063 msr TINDEX_EL0, x3
+
+msr TINDEX_EL1, x3
+// CHECK-INST: msr TINDEX_EL1, x3
+// CHECK-ENCODING: encoding: [0x63,0x40,0x18,0xd5]
+// CHECK-UNKNOWN: d5184063 msr TINDEX_EL1, x3
+
+msr TINDEX_EL2, x3
+// CHECK-INST: msr TINDEX_EL2, x3
+// CHECK-ENCODING: encoding: [0x63,0x40,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c4063 msr TINDEX_EL2, x3
+
+msr TINDEX_EL12, x3
+// CHECK-INST: msr TINDEX_EL12, x3
+// CHECK-ENCODING: encoding: [0x63,0x40,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d4063 msr TINDEX_EL12, x3
+
+msr TINDEX_EL3, x3
+// CHECK-INST: msr TINDEX_EL3, x3
+// CHECK-ENCODING: encoding: [0x63,0x40,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e4063 msr TINDEX_EL3, x3
+
+msr STINDEX_EL1, x3
+// CHECK-INST: msr STINDEX_EL1, x3
+// CHECK-ENCODING: encoding: [0x43,0x40,0x18,0xd5]
+// CHECK-UNKNOWN: d5184043 msr STINDEX_EL1, x3
+
+msr STINDEX_EL2, x3
+// CHECK-INST: msr STINDEX_EL2, x3
+// CHECK-ENCODING: encoding: [0x43,0x40,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c4043 msr STINDEX_EL2, x3
+
+msr STINDEX_EL12, x3
+// CHECK-INST: msr STINDEX_EL12, x3
+// CHECK-ENCODING: encoding: [0x43,0x40,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d4043 msr STINDEX_EL12, x3
+
+msr STINDEX_EL3, x3
+// CHECK-INST: msr STINDEX_EL3, x3
+// CHECK-ENCODING: encoding: [0x43,0x40,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e4043 msr STINDEX_EL3, x3
+
+msr FGDTP0_EL1, x3
+// CHECK-INST: msr FGDTP0_EL1, x3
+// CHECK-ENCODING: encoding: [0x03,0x32,0x18,0xd5]
+// CHECK-UNKNOWN: d5183203 msr FGDTP0_EL1, x3
+
+msr FGDTU0_EL1, x3
+// CHECK-INST: msr FGDTU0_EL1, x3
+// CHECK-ENCODING: encoding: [0x03,0x34,0x18,0xd5]
+// CHECK-UNKNOWN: d5183403 msr FGDTU0_EL1, x3
+
+msr FGDTP0_EL2, x3
+// CHECK-INST: msr FGDTP0_EL2, x3
+// CHECK-ENCODING: encoding: [0x03,0x32,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3203 msr FGDTP0_EL2, x3
+
+msr FGDTU0_EL2, x3
+// CHECK-INST: msr FGDTU0_EL2, x3
+// CHECK-ENCODING: encoding: [0x03,0x34,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3403 msr FGDTU0_EL2, x3
+
+msr FGDTP0_EL12, x3
+// CHECK-INST: msr FGDTP0_EL12, x3
+// CHECK-ENCODING: encoding: [0x03,0x32,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3203 msr FGDTP0_EL12, x3
+
+msr FGDTU0_EL12, x3
+// CHECK-INST: msr FGDTU0_EL12, x3
+// CHECK-ENCODING: encoding: [0x03,0x34,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3403 msr FGDTU0_EL12, x3
+
+msr FGDTP0_EL3, x3
+// CHECK-INST: msr FGDTP0_EL3, x3
+// CHECK-ENCODING: encoding: [0x03,0x32,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3203 msr FGDTP0_EL3, x3
+
+msr FGDTP1_EL1, x3
+// CHECK-INST: msr FGDTP1_EL1, x3
+// CHECK-ENCODING: encoding: [0x23,0x32,0x18,0xd5]
+// CHECK-UNKNOWN: d5183223 msr FGDTP1_EL1, x3
+
+msr FGDTU1_EL1, x3
+// CHECK-INST: msr FGDTU1_EL1, x3
+// CHECK-ENCODING: encoding: [0x23,0x34,0x18,0xd5]
+// CHECK-UNKNOWN: d5183423 msr FGDTU1_EL1, x3
+
+msr FGDTP1_EL2, x3
+// CHECK-INST: msr FGDTP1_EL2, x3
+// CHECK-ENCODING: encoding: [0x23,0x32,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3223 msr FGDTP1_EL2, x3
+
+msr FGDTU1_EL2, x3
+// CHECK-INST: msr FGDTU1_EL2, x3
+// CHECK-ENCODING: encoding: [0x23,0x34,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3423 msr FGDTU1_EL2, x3
+
+msr FGDTP1_EL12, x3
+// CHECK-INST: msr FGDTP1_EL12, x3
+// CHECK-ENCODING: encoding: [0x23,0x32,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3223 msr FGDTP1_EL12, x3
+
+msr FGDTU1_EL12, x3
+// CHECK-INST: msr FGDTU1_EL12, x3
+// CHECK-ENCODING: encoding: [0x23,0x34,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3423 msr FGDTU1_EL12, x3
+
+msr FGDTP1_EL3, x3
+// CHECK-INST: msr FGDTP1_EL3, x3
+// CHECK-ENCODING: encoding: [0x23,0x32,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3223 msr FGDTP1_EL3, x3
+
+msr FGDTP2_EL1, x3
+// CHECK-INST: msr FGDTP2_EL1, x3
+// CHECK-ENCODING: encoding: [0x43,0x32,0x18,0xd5]
+// CHECK-UNKNOWN: d5183243 msr FGDTP2_EL1, x3
+
+msr FGDTU2_EL1, x3
+// CHECK-INST: msr FGDTU2_EL1, x3
+// CHECK-ENCODING: encoding: [0x43,0x34,0x18,0xd5]
+// CHECK-UNKNOWN: d5183443 msr FGDTU2_EL1, x3
+
+msr FGDTP2_EL2, x3
+// CHECK-INST: msr FGDTP2_EL2, x3
+// CHECK-ENCODING: encoding: [0x43,0x32,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3243 msr FGDTP2_EL2, x3
+
+msr FGDTU2_EL2, x3
+// CHECK-INST: msr FGDTU2_EL2, x3
+// CHECK-ENCODING: encoding: [0x43,0x34,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3443 msr FGDTU2_EL2, x3
+
+msr FGDTP2_EL12, x3
+// CHECK-INST: msr FGDTP2_EL12, x3
+// CHECK-ENCODING: encoding: [0x43,0x32,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3243 msr FGDTP2_EL12, x3
+
+msr FGDTU2_EL12, x3
+// CHECK-INST: msr FGDTU2_EL12, x3
+// CHECK-ENCODING: encoding: [0x43,0x34,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3443 msr FGDTU2_EL12, x3
+
+msr FGDTP2_EL3, x3
+// CHECK-INST: msr FGDTP2_EL3, x3
+// CHECK-ENCODING: encoding: [0x43,0x32,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3243 msr FGDTP2_EL3, x3
+
+msr FGDTP3_EL1, x3
+// CHECK-INST: msr FGDTP3_EL1, x3
+// CHECK-ENCODING: encoding: [0x63,0x32,0x18,0xd5]
+// CHECK-UNKNOWN: d5183263 msr FGDTP3_EL1, x3
+
+msr FGDTU3_EL1, x3
+// CHECK-INST: msr FGDTU3_EL1, x3
+// CHECK-ENCODING: encoding: [0x63,0x34,0x18,0xd5]
+// CHECK-UNKNOWN: d5183463 msr FGDTU3_EL1, x3
+
+msr FGDTP3_EL2, x3
+// CHECK-INST: msr FGDTP3_EL2, x3
+// CHECK-ENCODING: encoding: [0x63,0x32,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3263 msr FGDTP3_EL2, x3
+
+msr FGDTU3_EL2, x3
+// CHECK-INST: msr FGDTU3_EL2, x3
+// CHECK-ENCODING: encoding: [0x63,0x34,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3463 msr FGDTU3_EL2, x3
+
+msr FGDTP3_EL12, x3
+// CHECK-INST: msr FGDTP3_EL12, x3
+// CHECK-ENCODING: encoding: [0x63,0x32,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3263 msr FGDTP3_EL12, x3
+
+msr FGDTU3_EL12, x3
+// CHECK-INST: msr FGDTU3_EL12, x3
+// CHECK-ENCODING: encoding: [0x63,0x34,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3463 msr FGDTU3_EL12, x3
+
+msr FGDTP3_EL3, x3
+// CHECK-INST: msr FGDTP3_EL3, x3
+// CHECK-ENCODING: encoding: [0x63,0x32,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3263 msr FGDTP3_EL3, x3
+
+msr FGDTP4_EL1, x3
+// CHECK-INST: msr FGDTP4_EL1, x3
+// CHECK-ENCODING: encoding: [0x83,0x32,0x18,0xd5]
+// CHECK-UNKNOWN: d5183283 msr FGDTP4_EL1, x3
+
+msr FGDTU4_EL1, x3
+// CHECK-INST: msr FGDTU4_EL1, x3
+// CHECK-ENCODING: encoding: [0x83,0x34,0x18,0xd5]
+// CHECK-UNKNOWN: d5183483 msr FGDTU4_EL1, x3
+
+msr FGDTP4_EL2, x3
+// CHECK-INST: msr FGDTP4_EL2, x3
+// CHECK-ENCODING: encoding: [0x83,0x32,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3283 msr FGDTP4_EL2, x3
+
+msr FGDTU4_EL2, x3
+// CHECK-INST: msr FGDTU4_EL2, x3
+// CHECK-ENCODING: encoding: [0x83,0x34,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3483 msr FGDTU4_EL2, x3
+
+msr FGDTP4_EL12, x3
+// CHECK-INST: msr FGDTP4_EL12, x3
+// CHECK-ENCODING: encoding: [0x83,0x32,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3283 msr FGDTP4_EL12, x3
+
+msr FGDTU4_EL12, x3
+// CHECK-INST: msr FGDTU4_EL12, x3
+// CHECK-ENCODING: encoding: [0x83,0x34,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3483 msr FGDTU4_EL12, x3
+
+msr FGDTP4_EL3, x3
+// CHECK-INST: msr FGDTP4_EL3, x3
+// CHECK-ENCODING: encoding: [0x83,0x32,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3283 msr FGDTP4_EL3, x3
+
+msr FGDTP5_EL1, x3
+// CHECK-INST: msr FGDTP5_EL1, x3
+// CHECK-ENCODING: encoding: [0xa3,0x32,0x18,0xd5]
+// CHECK-UNKNOWN: d51832a3 msr FGDTP5_EL1, x3
+
+msr FGDTU5_EL1, x3
+// CHECK-INST: msr FGDTU5_EL1, x3
+// CHECK-ENCODING: encoding: [0xa3,0x34,0x18,0xd5]
+// CHECK-UNKNOWN: d51834a3 msr FGDTU5_EL1, x3
+
+msr FGDTP5_EL2, x3
+// CHECK-INST: msr FGDTP5_EL2, x3
+// CHECK-ENCODING: encoding: [0xa3,0x32,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c32a3 msr FGDTP5_EL2, x3
+
+msr FGDTU5_EL2, x3
+// CHECK-INST: msr FGDTU5_EL2, x3
+// CHECK-ENCODING: encoding: [0xa3,0x34,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c34a3 msr FGDTU5_EL2, x3
+
+msr FGDTP5_EL12, x3
+// CHECK-INST: msr FGDTP5_EL12, x3
+// CHECK-ENCODING: encoding: [0xa3,0x32,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d32a3 msr FGDTP5_EL12, x3
+
+msr FGDTU5_EL12, x3
+// CHECK-INST: msr FGDTU5_EL12, x3
+// CHECK-ENCODING: encoding: [0xa3,0x34,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d34a3 msr FGDTU5_EL12, x3
+
+msr FGDTP5_EL3, x3
+// CHECK-INST: msr FGDTP5_EL3, x3
+// CHECK-ENCODING: encoding: [0xa3,0x32,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e32a3 msr FGDTP5_EL3, x3
+
+msr FGDTP6_EL1, x3
+// CHECK-INST: msr FGDTP6_EL1, x3
+// CHECK-ENCODING: encoding: [0xc3,0x32,0x18,0xd5]
+// CHECK-UNKNOWN: d51832c3 msr FGDTP6_EL1, x3
+
+msr FGDTU6_EL1, x3
+// CHECK-INST: msr FGDTU6_EL1, x3
+// CHECK-ENCODING: encoding: [0xc3,0x34,0x18,0xd5]
+// CHECK-UNKNOWN: d51834c3 msr FGDTU6_EL1, x3
+
+msr FGDTP6_EL2, x3
+// CHECK-INST: msr FGDTP6_EL2, x3
+// CHECK-ENCODING: encoding: [0xc3,0x32,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c32c3 msr FGDTP6_EL2, x3
+
+msr FGDTU6_EL2, x3
+// CHECK-INST: msr FGDTU6_EL2, x3
+// CHECK-ENCODING: encoding: [0xc3,0x34,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c34c3 msr FGDTU6_EL2, x3
+
+msr FGDTP6_EL12, x3
+// CHECK-INST: msr FGDTP6_EL12, x3
+// CHECK-ENCODING: encoding: [0xc3,0x32,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d32c3 msr FGDTP6_EL12, x3
+
+msr FGDTU6_EL12, x3
+// CHECK-INST: msr FGDTU6_EL12, x3
+// CHECK-ENCODING: encoding: [0xc3,0x34,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d34c3 msr FGDTU6_EL12, x3
+
+msr FGDTP6_EL3, x3
+// CHECK-INST: msr FGDTP6_EL3, x3
+// CHECK-ENCODING: encoding: [0xc3,0x32,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e32c3 msr FGDTP6_EL3, x3
+
+msr FGDTP7_EL1, x3
+// CHECK-INST: msr FGDTP7_EL1, x3
+// CHECK-ENCODING: encoding: [0xe3,0x32,0x18,0xd5]
+// CHECK-UNKNOWN: d51832e3 msr FGDTP7_EL1, x3
+
+msr FGDTU7_EL1, x3
+// CHECK-INST: msr FGDTU7_EL1, x3
+// CHECK-ENCODING: encoding: [0xe3,0x34,0x18,0xd5]
+// CHECK-UNKNOWN: d51834e3 msr FGDTU7_EL1, x3
+
+msr FGDTP7_EL2, x3
+// CHECK-INST: msr FGDTP7_EL2, x3
+// CHECK-ENCODING: encoding: [0xe3,0x32,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c32e3 msr FGDTP7_EL2, x3
+
+msr FGDTU7_EL2, x3
+// CHECK-INST: msr FGDTU7_EL2, x3
+// CHECK-ENCODING: encoding: [0xe3,0x34,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c34e3 msr FGDTU7_EL2, x3
+
+msr FGDTP7_EL12, x3
+// CHECK-INST: msr FGDTP7_EL12, x3
+// CHECK-ENCODING: encoding: [0xe3,0x32,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d32e3 msr FGDTP7_EL12, x3
+
+msr FGDTU7_EL12, x3
+// CHECK-INST: msr FGDTU7_EL12, x3
+// CHECK-ENCODING: encoding: [0xe3,0x34,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d34e3 msr FGDTU7_EL12, x3
+
+msr FGDTP7_EL3, x3
+// CHECK-INST: msr FGDTP7_EL3, x3
+// CHECK-ENCODING: encoding: [0xe3,0x32,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e32e3 msr FGDTP7_EL3, x3
+
+msr FGDTP8_EL1, x3
+// CHECK-INST: msr FGDTP8_EL1, x3
+// CHECK-ENCODING: encoding: [0x03,0x33,0x18,0xd5]
+// CHECK-UNKNOWN: d5183303 msr FGDTP8_EL1, x3
+
+msr FGDTU8_EL1, x3
+// CHECK-INST: msr FGDTU8_EL1, x3
+// CHECK-ENCODING: encoding: [0x03,0x35,0x18,0xd5]
+// CHECK-UNKNOWN: d5183503 msr FGDTU8_EL1, x3
+
+msr FGDTP8_EL2, x3
+// CHECK-INST: msr FGDTP8_EL2, x3
+// CHECK-ENCODING: encoding: [0x03,0x33,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3303 msr FGDTP8_EL2, x3
+
+msr FGDTU8_EL2, x3
+// CHECK-INST: msr FGDTU8_EL2, x3
+// CHECK-ENCODING: encoding: [0x03,0x35,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3503 msr FGDTU8_EL2, x3
+
+msr FGDTP8_EL12, x3
+// CHECK-INST: msr FGDTP8_EL12, x3
+// CHECK-ENCODING: encoding: [0x03,0x33,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3303 msr FGDTP8_EL12, x3
+
+msr FGDTU8_EL12, x3
+// CHECK-INST: msr FGDTU8_EL12, x3
+// CHECK-ENCODING: encoding: [0x03,0x35,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3503 msr FGDTU8_EL12, x3
+
+msr FGDTP8_EL3, x3
+// CHECK-INST: msr FGDTP8_EL3, x3
+// CHECK-ENCODING: encoding: [0x03,0x33,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3303 msr FGDTP8_EL3, x3
+
+msr FGDTP9_EL1, x3
+// CHECK-INST: msr FGDTP9_EL1, x3
+// CHECK-ENCODING: encoding: [0x23,0x33,0x18,0xd5]
+// CHECK-UNKNOWN: d5183323 msr FGDTP9_EL1, x3
+
+msr FGDTU9_EL1, x3
+// CHECK-INST: msr FGDTU9_EL1, x3
+// CHECK-ENCODING: encoding: [0x23,0x35,0x18,0xd5]
+// CHECK-UNKNOWN: d5183523 msr FGDTU9_EL1, x3
+
+msr FGDTP9_EL2, x3
+// CHECK-INST: msr FGDTP9_EL2, x3
+// CHECK-ENCODING: encoding: [0x23,0x33,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3323 msr FGDTP9_EL2, x3
+
+msr FGDTU9_EL2, x3
+// CHECK-INST: msr FGDTU9_EL2, x3
+// CHECK-ENCODING: encoding: [0x23,0x35,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3523 msr FGDTU9_EL2, x3
+
+msr FGDTP9_EL12, x3
+// CHECK-INST: msr FGDTP9_EL12, x3
+// CHECK-ENCODING: encoding: [0x23,0x33,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3323 msr FGDTP9_EL12, x3
+
+msr FGDTU9_EL12, x3
+// CHECK-INST: msr FGDTU9_EL12, x3
+// CHECK-ENCODING: encoding: [0x23,0x35,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3523 msr FGDTU9_EL12, x3
+
+msr FGDTP9_EL3, x3
+// CHECK-INST: msr FGDTP9_EL3, x3
+// CHECK-ENCODING: encoding: [0x23,0x33,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3323 msr FGDTP9_EL3, x3
+
+msr FGDTP10_EL1, x3
+// CHECK-INST: msr FGDTP10_EL1, x3
+// CHECK-ENCODING: encoding: [0x43,0x33,0x18,0xd5]
+// CHECK-UNKNOWN: d5183343 msr FGDTP10_EL1, x3
+
+msr FGDTU10_EL1, x3
+// CHECK-INST: msr FGDTU10_EL1, x3
+// CHECK-ENCODING: encoding: [0x43,0x35,0x18,0xd5]
+// CHECK-UNKNOWN: d5183543 msr FGDTU10_EL1, x3
+
+msr FGDTP10_EL2, x3
+// CHECK-INST: msr FGDTP10_EL2, x3
+// CHECK-ENCODING: encoding: [0x43,0x33,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3343 msr FGDTP10_EL2, x3
+
+msr FGDTU10_EL2, x3
+// CHECK-INST: msr FGDTU10_EL2, x3
+// CHECK-ENCODING: encoding: [0x43,0x35,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3543 msr FGDTU10_EL2, x3
+
+msr FGDTP10_EL12, x3
+// CHECK-INST: msr FGDTP10_EL12, x3
+// CHECK-ENCODING: encoding: [0x43,0x33,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3343 msr FGDTP10_EL12, x3
+
+msr FGDTU10_EL12, x3
+// CHECK-INST: msr FGDTU10_EL12, x3
+// CHECK-ENCODING: encoding: [0x43,0x35,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3543 msr FGDTU10_EL12, x3
+
+msr FGDTP10_EL3, x3
+// CHECK-INST: msr FGDTP10_EL3, x3
+// CHECK-ENCODING: encoding: [0x43,0x33,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3343 msr FGDTP10_EL3, x3
+
+msr FGDTP11_EL1, x3
+// CHECK-INST: msr FGDTP11_EL1, x3
+// CHECK-ENCODING: encoding: [0x63,0x33,0x18,0xd5]
+// CHECK-UNKNOWN: d5183363 msr FGDTP11_EL1, x3
+
+msr FGDTU11_EL1, x3
+// CHECK-INST: msr FGDTU11_EL1, x3
+// CHECK-ENCODING: encoding: [0x63,0x35,0x18,0xd5]
+// CHECK-UNKNOWN: d5183563 msr FGDTU11_EL1, x3
+
+msr FGDTP11_EL2, x3
+// CHECK-INST: msr FGDTP11_EL2, x3
+// CHECK-ENCODING: encoding: [0x63,0x33,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3363 msr FGDTP11_EL2, x3
+
+msr FGDTU11_EL2, x3
+// CHECK-INST: msr FGDTU11_EL2, x3
+// CHECK-ENCODING: encoding: [0x63,0x35,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3563 msr FGDTU11_EL2, x3
+
+msr FGDTP11_EL12, x3
+// CHECK-INST: msr FGDTP11_EL12, x3
+// CHECK-ENCODING: encoding: [0x63,0x33,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3363 msr FGDTP11_EL12, x3
+
+msr FGDTU11_EL12, x3
+// CHECK-INST: msr FGDTU11_EL12, x3
+// CHECK-ENCODING: encoding: [0x63,0x35,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3563 msr FGDTU11_EL12, x3
+
+msr FGDTP11_EL3, x3
+// CHECK-INST: msr FGDTP11_EL3, x3
+// CHECK-ENCODING: encoding: [0x63,0x33,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3363 msr FGDTP11_EL3, x3
+
+msr FGDTP12_EL1, x3
+// CHECK-INST: msr FGDTP12_EL1, x3
+// CHECK-ENCODING: encoding: [0x83,0x33,0x18,0xd5]
+// CHECK-UNKNOWN: d5183383 msr FGDTP12_EL1, x3
+
+msr FGDTU12_EL1, x3
+// CHECK-INST: msr FGDTU12_EL1, x3
+// CHECK-ENCODING: encoding: [0x83,0x35,0x18,0xd5]
+// CHECK-UNKNOWN: d5183583 msr FGDTU12_EL1, x3
+
+msr FGDTP12_EL2, x3
+// CHECK-INST: msr FGDTP12_EL2, x3
+// CHECK-ENCODING: encoding: [0x83,0x33,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3383 msr FGDTP12_EL2, x3
+
+msr FGDTU12_EL2, x3
+// CHECK-INST: msr FGDTU12_EL2, x3
+// CHECK-ENCODING: encoding: [0x83,0x35,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3583 msr FGDTU12_EL2, x3
+
+msr FGDTP12_EL12, x3
+// CHECK-INST: msr FGDTP12_EL12, x3
+// CHECK-ENCODING: encoding: [0x83,0x33,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3383 msr FGDTP12_EL12, x3
+
+msr FGDTU12_EL12, x3
+// CHECK-INST: msr FGDTU12_EL12, x3
+// CHECK-ENCODING: encoding: [0x83,0x35,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3583 msr FGDTU12_EL12, x3
+
+msr FGDTP12_EL3, x3
+// CHECK-INST: msr FGDTP12_EL3, x3
+// CHECK-ENCODING: encoding: [0x83,0x33,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3383 msr FGDTP12_EL3, x3
+
+msr FGDTP13_EL1, x3
+// CHECK-INST: msr FGDTP13_EL1, x3
+// CHECK-ENCODING: encoding: [0xa3,0x33,0x18,0xd5]
+// CHECK-UNKNOWN: d51833a3 msr FGDTP13_EL1, x3
+
+msr FGDTU13_EL1, x3
+// CHECK-INST: msr FGDTU13_EL1, x3
+// CHECK-ENCODING: encoding: [0xa3,0x35,0x18,0xd5]
+// CHECK-UNKNOWN: d51835a3 msr FGDTU13_EL1, x3
+
+msr FGDTP13_EL2, x3
+// CHECK-INST: msr FGDTP13_EL2, x3
+// CHECK-ENCODING: encoding: [0xa3,0x33,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c33a3 msr FGDTP13_EL2, x3
+
+msr FGDTU13_EL2, x3
+// CHECK-INST: msr FGDTU13_EL2, x3
+// CHECK-ENCODING: encoding: [0xa3,0x35,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c35a3 msr FGDTU13_EL2, x3
+
+msr FGDTP13_EL12, x3
+// CHECK-INST: msr FGDTP13_EL12, x3
+// CHECK-ENCODING: encoding: [0xa3,0x33,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d33a3 msr FGDTP13_EL12, x3
+
+msr FGDTU13_EL12, x3
+// CHECK-INST: msr FGDTU13_EL12, x3
+// CHECK-ENCODING: encoding: [0xa3,0x35,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d35a3 msr FGDTU13_EL12, x3
+
+msr FGDTP13_EL3, x3
+// CHECK-INST: msr FGDTP13_EL3, x3
+// CHECK-ENCODING: encoding: [0xa3,0x33,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e33a3 msr FGDTP13_EL3, x3
+
+msr FGDTP14_EL1, x3
+// CHECK-INST: msr FGDTP14_EL1, x3
+// CHECK-ENCODING: encoding: [0xc3,0x33,0x18,0xd5]
+// CHECK-UNKNOWN: d51833c3 msr FGDTP14_EL1, x3
+
+msr FGDTU14_EL1, x3
+// CHECK-INST: msr FGDTU14_EL1, x3
+// CHECK-ENCODING: encoding: [0xc3,0x35,0x18,0xd5]
+// CHECK-UNKNOWN: d51835c3 msr FGDTU14_EL1, x3
+
+msr FGDTP14_EL2, x3
+// CHECK-INST: msr FGDTP14_EL2, x3
+// CHECK-ENCODING: encoding: [0xc3,0x33,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c33c3 msr FGDTP14_EL2, x3
+
+msr FGDTU14_EL2, x3
+// CHECK-INST: msr FGDTU14_EL2, x3
+// CHECK-ENCODING: encoding: [0xc3,0x35,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c35c3 msr FGDTU14_EL2, x3
+
+msr FGDTP14_EL12, x3
+// CHECK-INST: msr FGDTP14_EL12, x3
+// CHECK-ENCODING: encoding: [0xc3,0x33,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d33c3 msr FGDTP14_EL12, x3
+
+msr FGDTU14_EL12, x3
+// CHECK-INST: msr FGDTU14_EL12, x3
+// CHECK-ENCODING: encoding: [0xc3,0x35,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d35c3 msr FGDTU14_EL12, x3
+
+msr FGDTP14_EL3, x3
+// CHECK-INST: msr FGDTP14_EL3, x3
+// CHECK-ENCODING: encoding: [0xc3,0x33,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e33c3 msr FGDTP14_EL3, x3
+
+msr FGDTP15_EL1, x3
+// CHECK-INST: msr FGDTP15_EL1, x3
+// CHECK-ENCODING: encoding: [0xe3,0x33,0x18,0xd5]
+// CHECK-UNKNOWN: d51833e3 msr FGDTP15_EL1, x3
+
+msr FGDTU15_EL1, x3
+// CHECK-INST: msr FGDTU15_EL1, x3
+// CHECK-ENCODING: encoding: [0xe3,0x35,0x18,0xd5]
+// CHECK-UNKNOWN: d51835e3 msr FGDTU15_EL1, x3
+
+msr FGDTP15_EL2, x3
+// CHECK-INST: msr FGDTP15_EL2, x3
+// CHECK-ENCODING: encoding: [0xe3,0x33,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c33e3 msr FGDTP15_EL2, x3
+
+msr FGDTU15_EL2, x3
+// CHECK-INST: msr FGDTU15_EL2, x3
+// CHECK-ENCODING: encoding: [0xe3,0x35,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c35e3 msr FGDTU15_EL2, x3
+
+msr FGDTP15_EL12, x3
+// CHECK-INST: msr FGDTP15_EL12, x3
+// CHECK-ENCODING: encoding: [0xe3,0x33,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d33e3 msr FGDTP15_EL12, x3
+
+msr FGDTU15_EL12, x3
+// CHECK-INST: msr FGDTU15_EL12, x3
+// CHECK-ENCODING: encoding: [0xe3,0x35,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d35e3 msr FGDTU15_EL12, x3
+
+msr FGDTP15_EL3, x3
+// CHECK-INST: msr FGDTP15_EL3, x3
+// CHECK-ENCODING: encoding: [0xe3,0x33,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e33e3 msr FGDTP15_EL3, x3
+
+msr AFGDTP0_EL1, x0
+// CHECK-INST: msr AFGDTP0_EL1, x0
+// CHECK-ENCODING: encoding: [0x00,0x36,0x18,0xd5]
+// CHECK-UNKNOWN: d5183600 msr AFGDTP0_EL1, x0
+
+msr AFGDTU0_EL1, x0
+// CHECK-INST: msr AFGDTU0_EL1, x0
+// CHECK-ENCODING: encoding: [0x00,0x38,0x18,0xd5]
+// CHECK-UNKNOWN: d5183800 msr AFGDTU0_EL1, x0
+
+msr AFGDTP0_EL2, x0
+// CHECK-INST: msr AFGDTP0_EL2, x0
+// CHECK-ENCODING: encoding: [0x00,0x36,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3600 msr AFGDTP0_EL2, x0
+
+msr AFGDTU0_EL2, x0
+// CHECK-INST: msr AFGDTU0_EL2, x0
+// CHECK-ENCODING: encoding: [0x00,0x38,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3800 msr AFGDTU0_EL2, x0
+
+msr AFGDTP0_EL12, x0
+// CHECK-INST: msr AFGDTP0_EL12, x0
+// CHECK-ENCODING: encoding: [0x00,0x36,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3600 msr AFGDTP0_EL12, x0
+
+msr AFGDTU0_EL12, x0
+// CHECK-INST: msr AFGDTU0_EL12, x0
+// CHECK-ENCODING: encoding: [0x00,0x38,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3800 msr AFGDTU0_EL12, x0
+
+msr AFGDTP0_EL3, x0
+// CHECK-INST: msr AFGDTP0_EL3, x0
+// CHECK-ENCODING: encoding: [0x00,0x36,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3600 msr AFGDTP0_EL3, x0
+
+msr AFGDTP1_EL1, x0
+// CHECK-INST: msr AFGDTP1_EL1, x0
+// CHECK-ENCODING: encoding: [0x20,0x36,0x18,0xd5]
+// CHECK-UNKNOWN: d5183620 msr AFGDTP1_EL1, x0
+
+msr AFGDTU1_EL1, x0
+// CHECK-INST: msr AFGDTU1_EL1, x0
+// CHECK-ENCODING: encoding: [0x20,0x38,0x18,0xd5]
+// CHECK-UNKNOWN: d5183820 msr AFGDTU1_EL1, x0
+
+msr AFGDTP1_EL2, x0
+// CHECK-INST: msr AFGDTP1_EL2, x0
+// CHECK-ENCODING: encoding: [0x20,0x36,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3620 msr AFGDTP1_EL2, x0
+
+msr AFGDTU1_EL2, x0
+// CHECK-INST: msr AFGDTU1_EL2, x0
+// CHECK-ENCODING: encoding: [0x20,0x38,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3820 msr AFGDTU1_EL2, x0
+
+msr AFGDTP1_EL12, x0
+// CHECK-INST: msr AFGDTP1_EL12, x0
+// CHECK-ENCODING: encoding: [0x20,0x36,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3620 msr AFGDTP1_EL12, x0
+
+msr AFGDTU1_EL12, x0
+// CHECK-INST: msr AFGDTU1_EL12, x0
+// CHECK-ENCODING: encoding: [0x20,0x38,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3820 msr AFGDTU1_EL12, x0
+
+msr AFGDTP1_EL3, x0
+// CHECK-INST: msr AFGDTP1_EL3, x0
+// CHECK-ENCODING: encoding: [0x20,0x36,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3620 msr AFGDTP1_EL3, x0
+
+msr AFGDTP2_EL1, x0
+// CHECK-INST: msr AFGDTP2_EL1, x0
+// CHECK-ENCODING: encoding: [0x40,0x36,0x18,0xd5]
+// CHECK-UNKNOWN: d5183640 msr AFGDTP2_EL1, x0
+
+msr AFGDTU2_EL1, x0
+// CHECK-INST: msr AFGDTU2_EL1, x0
+// CHECK-ENCODING: encoding: [0x40,0x38,0x18,0xd5]
+// CHECK-UNKNOWN: d5183840 msr AFGDTU2_EL1, x0
+
+msr AFGDTP2_EL2, x0
+// CHECK-INST: msr AFGDTP2_EL2, x0
+// CHECK-ENCODING: encoding: [0x40,0x36,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3640 msr AFGDTP2_EL2, x0
+
+msr AFGDTU2_EL2, x0
+// CHECK-INST: msr AFGDTU2_EL2, x0
+// CHECK-ENCODING: encoding: [0x40,0x38,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3840 msr AFGDTU2_EL2, x0
+
+msr AFGDTP2_EL12, x0
+// CHECK-INST: msr AFGDTP2_EL12, x0
+// CHECK-ENCODING: encoding: [0x40,0x36,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3640 msr AFGDTP2_EL12, x0
+
+msr AFGDTU2_EL12, x0
+// CHECK-INST: msr AFGDTU2_EL12, x0
+// CHECK-ENCODING: encoding: [0x40,0x38,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3840 msr AFGDTU2_EL12, x0
+
+msr AFGDTP2_EL3, x0
+// CHECK-INST: msr AFGDTP2_EL3, x0
+// CHECK-ENCODING: encoding: [0x40,0x36,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3640 msr AFGDTP2_EL3, x0
+
+msr AFGDTP3_EL1, x0
+// CHECK-INST: msr AFGDTP3_EL1, x0
+// CHECK-ENCODING: encoding: [0x60,0x36,0x18,0xd5]
+// CHECK-UNKNOWN: d5183660 msr AFGDTP3_EL1, x0
+
+msr AFGDTU3_EL1, x0
+// CHECK-INST: msr AFGDTU3_EL1, x0
+// CHECK-ENCODING: encoding: [0x60,0x38,0x18,0xd5]
+// CHECK-UNKNOWN: d5183860 msr AFGDTU3_EL1, x0
+
+msr AFGDTP3_EL2, x0
+// CHECK-INST: msr AFGDTP3_EL2, x0
+// CHECK-ENCODING: encoding: [0x60,0x36,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3660 msr AFGDTP3_EL2, x0
+
+msr AFGDTU3_EL2, x0
+// CHECK-INST: msr AFGDTU3_EL2, x0
+// CHECK-ENCODING: encoding: [0x60,0x38,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3860 msr AFGDTU3_EL2, x0
+
+msr AFGDTP3_EL12, x0
+// CHECK-INST: msr AFGDTP3_EL12, x0
+// CHECK-ENCODING: encoding: [0x60,0x36,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3660 msr AFGDTP3_EL12, x0
+
+msr AFGDTU3_EL12, x0
+// CHECK-INST: msr AFGDTU3_EL12, x0
+// CHECK-ENCODING: encoding: [0x60,0x38,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3860 msr AFGDTU3_EL12, x0
+
+msr AFGDTP3_EL3, x0
+// CHECK-INST: msr AFGDTP3_EL3, x0
+// CHECK-ENCODING: encoding: [0x60,0x36,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3660 msr AFGDTP3_EL3, x0
+
+msr AFGDTP4_EL1, x0
+// CHECK-INST: msr AFGDTP4_EL1, x0
+// CHECK-ENCODING: encoding: [0x80,0x36,0x18,0xd5]
+// CHECK-UNKNOWN: d5183680 msr AFGDTP4_EL1, x0
+
+msr AFGDTU4_EL1, x0
+// CHECK-INST: msr AFGDTU4_EL1, x0
+// CHECK-ENCODING: encoding: [0x80,0x38,0x18,0xd5]
+// CHECK-UNKNOWN: d5183880 msr AFGDTU4_EL1, x0
+
+msr AFGDTP4_EL2, x0
+// CHECK-INST: msr AFGDTP4_EL2, x0
+// CHECK-ENCODING: encoding: [0x80,0x36,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3680 msr AFGDTP4_EL2, x0
+
+msr AFGDTU4_EL2, x0
+// CHECK-INST: msr AFGDTU4_EL2, x0
+// CHECK-ENCODING: encoding: [0x80,0x38,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3880 msr AFGDTU4_EL2, x0
+
+msr AFGDTP4_EL12, x0
+// CHECK-INST: msr AFGDTP4_EL12, x0
+// CHECK-ENCODING: encoding: [0x80,0x36,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3680 msr AFGDTP4_EL12, x0
+
+msr AFGDTU4_EL12, x0
+// CHECK-INST: msr AFGDTU4_EL12, x0
+// CHECK-ENCODING: encoding: [0x80,0x38,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3880 msr AFGDTU4_EL12, x0
+
+msr AFGDTP4_EL3, x0
+// CHECK-INST: msr AFGDTP4_EL3, x0
+// CHECK-ENCODING: encoding: [0x80,0x36,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3680 msr AFGDTP4_EL3, x0
+
+msr AFGDTP5_EL1, x0
+// CHECK-INST: msr AFGDTP5_EL1, x0
+// CHECK-ENCODING: encoding: [0xa0,0x36,0x18,0xd5]
+// CHECK-UNKNOWN: d51836a0 msr AFGDTP5_EL1, x0
+
+msr AFGDTU5_EL1, x0
+// CHECK-INST: msr AFGDTU5_EL1, x0
+// CHECK-ENCODING: encoding: [0xa0,0x38,0x18,0xd5]
+// CHECK-UNKNOWN: d51838a0 msr AFGDTU5_EL1, x0
+
+msr AFGDTP5_EL2, x0
+// CHECK-INST: msr AFGDTP5_EL2, x0
+// CHECK-ENCODING: encoding: [0xa0,0x36,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c36a0 msr AFGDTP5_EL2, x0
+
+msr AFGDTU5_EL2, x0
+// CHECK-INST: msr AFGDTU5_EL2, x0
+// CHECK-ENCODING: encoding: [0xa0,0x38,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c38a0 msr AFGDTU5_EL2, x0
+
+msr AFGDTP5_EL12, x0
+// CHECK-INST: msr AFGDTP5_EL12, x0
+// CHECK-ENCODING: encoding: [0xa0,0x36,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d36a0 msr AFGDTP5_EL12, x0
+
+msr AFGDTU5_EL12, x0
+// CHECK-INST: msr AFGDTU5_EL12, x0
+// CHECK-ENCODING: encoding: [0xa0,0x38,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d38a0 msr AFGDTU5_EL12, x0
+
+msr AFGDTP5_EL3, x0
+// CHECK-INST: msr AFGDTP5_EL3, x0
+// CHECK-ENCODING: encoding: [0xa0,0x36,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e36a0 msr AFGDTP5_EL3, x0
+
+msr AFGDTP6_EL1, x0
+// CHECK-INST: msr AFGDTP6_EL1, x0
+// CHECK-ENCODING: encoding: [0xc0,0x36,0x18,0xd5]
+// CHECK-UNKNOWN: d51836c0 msr AFGDTP6_EL1, x0
+
+msr AFGDTU6_EL1, x0
+// CHECK-INST: msr AFGDTU6_EL1, x0
+// CHECK-ENCODING: encoding: [0xc0,0x38,0x18,0xd5]
+// CHECK-UNKNOWN: d51838c0 msr AFGDTU6_EL1, x0
+
+msr AFGDTP6_EL2, x0
+// CHECK-INST: msr AFGDTP6_EL2, x0
+// CHECK-ENCODING: encoding: [0xc0,0x36,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c36c0 msr AFGDTP6_EL2, x0
+
+msr AFGDTU6_EL2, x0
+// CHECK-INST: msr AFGDTU6_EL2, x0
+// CHECK-ENCODING: encoding: [0xc0,0x38,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c38c0 msr AFGDTU6_EL2, x0
+
+msr AFGDTP6_EL12, x0
+// CHECK-INST: msr AFGDTP6_EL12, x0
+// CHECK-ENCODING: encoding: [0xc0,0x36,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d36c0 msr AFGDTP6_EL12, x0
+
+msr AFGDTU6_EL12, x0
+// CHECK-INST: msr AFGDTU6_EL12, x0
+// CHECK-ENCODING: encoding: [0xc0,0x38,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d38c0 msr AFGDTU6_EL12, x0
+
+msr AFGDTP6_EL3, x0
+// CHECK-INST: msr AFGDTP6_EL3, x0
+// CHECK-ENCODING: encoding: [0xc0,0x36,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e36c0 msr AFGDTP6_EL3, x0
+
+msr AFGDTP7_EL1, x0
+// CHECK-INST: msr AFGDTP7_EL1, x0
+// CHECK-ENCODING: encoding: [0xe0,0x36,0x18,0xd5]
+// CHECK-UNKNOWN: d51836e0 msr AFGDTP7_EL1, x0
+
+msr AFGDTU7_EL1, x0
+// CHECK-INST: msr AFGDTU7_EL1, x0
+// CHECK-ENCODING: encoding: [0xe0,0x38,0x18,0xd5]
+// CHECK-UNKNOWN: d51838e0 msr AFGDTU7_EL1, x0
+
+msr AFGDTP7_EL2, x0
+// CHECK-INST: msr AFGDTP7_EL2, x0
+// CHECK-ENCODING: encoding: [0xe0,0x36,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c36e0 msr AFGDTP7_EL2, x0
+
+msr AFGDTU7_EL2, x0
+// CHECK-INST: msr AFGDTU7_EL2, x0
+// CHECK-ENCODING: encoding: [0xe0,0x38,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c38e0 msr AFGDTU7_EL2, x0
+
+msr AFGDTP7_EL12, x0
+// CHECK-INST: msr AFGDTP7_EL12, x0
+// CHECK-ENCODING: encoding: [0xe0,0x36,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d36e0 msr AFGDTP7_EL12, x0
+
+msr AFGDTU7_EL12, x0
+// CHECK-INST: msr AFGDTU7_EL12, x0
+// CHECK-ENCODING: encoding: [0xe0,0x38,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d38e0 msr AFGDTU7_EL12, x0
+
+msr AFGDTP7_EL3, x0
+// CHECK-INST: msr AFGDTP7_EL3, x0
+// CHECK-ENCODING: encoding: [0xe0,0x36,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e36e0 msr AFGDTP7_EL3, x0
+
+msr AFGDTP8_EL1, x0
+// CHECK-INST: msr AFGDTP8_EL1, x0
+// CHECK-ENCODING: encoding: [0x00,0x37,0x18,0xd5]
+// CHECK-UNKNOWN: d5183700 msr AFGDTP8_EL1, x0
+
+msr AFGDTU8_EL1, x0
+// CHECK-INST: msr AFGDTU8_EL1, x0
+// CHECK-ENCODING: encoding: [0x00,0x39,0x18,0xd5]
+// CHECK-UNKNOWN: d5183900 msr AFGDTU8_EL1, x0
+
+msr AFGDTP8_EL2, x0
+// CHECK-INST: msr AFGDTP8_EL2, x0
+// CHECK-ENCODING: encoding: [0x00,0x37,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3700 msr AFGDTP8_EL2, x0
+
+msr AFGDTU8_EL2, x0
+// CHECK-INST: msr AFGDTU8_EL2, x0
+// CHECK-ENCODING: encoding: [0x00,0x39,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3900 msr AFGDTU8_EL2, x0
+
+msr AFGDTP8_EL12, x0
+// CHECK-INST: msr AFGDTP8_EL12, x0
+// CHECK-ENCODING: encoding: [0x00,0x37,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3700 msr AFGDTP8_EL12, x0
+
+msr AFGDTU8_EL12, x0
+// CHECK-INST: msr AFGDTU8_EL12, x0
+// CHECK-ENCODING: encoding: [0x00,0x39,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3900 msr AFGDTU8_EL12, x0
+
+msr AFGDTP8_EL3, x0
+// CHECK-INST: msr AFGDTP8_EL3, x0
+// CHECK-ENCODING: encoding: [0x00,0x37,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3700 msr AFGDTP8_EL3, x0
+
+msr AFGDTP9_EL1, x0
+// CHECK-INST: msr AFGDTP9_EL1, x0
+// CHECK-ENCODING: encoding: [0x20,0x37,0x18,0xd5]
+// CHECK-UNKNOWN: d5183720 msr AFGDTP9_EL1, x0
+
+msr AFGDTU9_EL1, x0
+// CHECK-INST: msr AFGDTU9_EL1, x0
+// CHECK-ENCODING: encoding: [0x20,0x39,0x18,0xd5]
+// CHECK-UNKNOWN: d5183920 msr AFGDTU9_EL1, x0
+
+msr AFGDTP9_EL2, x0
+// CHECK-INST: msr AFGDTP9_EL2, x0
+// CHECK-ENCODING: encoding: [0x20,0x37,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3720 msr AFGDTP9_EL2, x0
+
+msr AFGDTU9_EL2, x0
+// CHECK-INST: msr AFGDTU9_EL2, x0
+// CHECK-ENCODING: encoding: [0x20,0x39,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3920 msr AFGDTU9_EL2, x0
+
+msr AFGDTP9_EL12, x0
+// CHECK-INST: msr AFGDTP9_EL12, x0
+// CHECK-ENCODING: encoding: [0x20,0x37,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3720 msr AFGDTP9_EL12, x0
+
+msr AFGDTU9_EL12, x0
+// CHECK-INST: msr AFGDTU9_EL12, x0
+// CHECK-ENCODING: encoding: [0x20,0x39,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3920 msr AFGDTU9_EL12, x0
+
+msr AFGDTP9_EL3, x0
+// CHECK-INST: msr AFGDTP9_EL3, x0
+// CHECK-ENCODING: encoding: [0x20,0x37,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3720 msr AFGDTP9_EL3, x0
+
+msr AFGDTP10_EL1, x0
+// CHECK-INST: msr AFGDTP10_EL1, x0
+// CHECK-ENCODING: encoding: [0x40,0x37,0x18,0xd5]
+// CHECK-UNKNOWN: d5183740 msr AFGDTP10_EL1, x0
+
+msr AFGDTU10_EL1, x0
+// CHECK-INST: msr AFGDTU10_EL1, x0
+// CHECK-ENCODING: encoding: [0x40,0x39,0x18,0xd5]
+// CHECK-UNKNOWN: d5183940 msr AFGDTU10_EL1, x0
+
+msr AFGDTP10_EL2, x0
+// CHECK-INST: msr AFGDTP10_EL2, x0
+// CHECK-ENCODING: encoding: [0x40,0x37,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3740 msr AFGDTP10_EL2, x0
+
+msr AFGDTU10_EL2, x0
+// CHECK-INST: msr AFGDTU10_EL2, x0
+// CHECK-ENCODING: encoding: [0x40,0x39,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3940 msr AFGDTU10_EL2, x0
+
+msr AFGDTP10_EL12, x0
+// CHECK-INST: msr AFGDTP10_EL12, x0
+// CHECK-ENCODING: encoding: [0x40,0x37,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3740 msr AFGDTP10_EL12, x0
+
+msr AFGDTU10_EL12, x0
+// CHECK-INST: msr AFGDTU10_EL12, x0
+// CHECK-ENCODING: encoding: [0x40,0x39,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3940 msr AFGDTU10_EL12, x0
+
+msr AFGDTP10_EL3, x0
+// CHECK-INST: msr AFGDTP10_EL3, x0
+// CHECK-ENCODING: encoding: [0x40,0x37,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3740 msr AFGDTP10_EL3, x0
+
+msr AFGDTP11_EL1, x0
+// CHECK-INST: msr AFGDTP11_EL1, x0
+// CHECK-ENCODING: encoding: [0x60,0x37,0x18,0xd5]
+// CHECK-UNKNOWN: d5183760 msr AFGDTP11_EL1, x0
+
+msr AFGDTU11_EL1, x0
+// CHECK-INST: msr AFGDTU11_EL1, x0
+// CHECK-ENCODING: encoding: [0x60,0x39,0x18,0xd5]
+// CHECK-UNKNOWN: d5183960 msr AFGDTU11_EL1, x0
+
+msr AFGDTP11_EL2, x0
+// CHECK-INST: msr AFGDTP11_EL2, x0
+// CHECK-ENCODING: encoding: [0x60,0x37,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3760 msr AFGDTP11_EL2, x0
+
+msr AFGDTU11_EL2, x0
+// CHECK-INST: msr AFGDTU11_EL2, x0
+// CHECK-ENCODING: encoding: [0x60,0x39,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3960 msr AFGDTU11_EL2, x0
+
+msr AFGDTP11_EL12, x0
+// CHECK-INST: msr AFGDTP11_EL12, x0
+// CHECK-ENCODING: encoding: [0x60,0x37,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3760 msr AFGDTP11_EL12, x0
+
+msr AFGDTU11_EL12, x0
+// CHECK-INST: msr AFGDTU11_EL12, x0
+// CHECK-ENCODING: encoding: [0x60,0x39,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3960 msr AFGDTU11_EL12, x0
+
+msr AFGDTP11_EL3, x0
+// CHECK-INST: msr AFGDTP11_EL3, x0
+// CHECK-ENCODING: encoding: [0x60,0x37,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3760 msr AFGDTP11_EL3, x0
+
+msr AFGDTP12_EL1, x0
+// CHECK-INST: msr AFGDTP12_EL1, x0
+// CHECK-ENCODING: encoding: [0x80,0x37,0x18,0xd5]
+// CHECK-UNKNOWN: d5183780 msr AFGDTP12_EL1, x0
+
+msr AFGDTU12_EL1, x0
+// CHECK-INST: msr AFGDTU12_EL1, x0
+// CHECK-ENCODING: encoding: [0x80,0x39,0x18,0xd5]
+// CHECK-UNKNOWN: d5183980 msr AFGDTU12_EL1, x0
+
+msr AFGDTP12_EL2, x0
+// CHECK-INST: msr AFGDTP12_EL2, x0
+// CHECK-ENCODING: encoding: [0x80,0x37,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3780 msr AFGDTP12_EL2, x0
+
+msr AFGDTU12_EL2, x0
+// CHECK-INST: msr AFGDTU12_EL2, x0
+// CHECK-ENCODING: encoding: [0x80,0x39,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c3980 msr AFGDTU12_EL2, x0
+
+msr AFGDTP12_EL12, x0
+// CHECK-INST: msr AFGDTP12_EL12, x0
+// CHECK-ENCODING: encoding: [0x80,0x37,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3780 msr AFGDTP12_EL12, x0
+
+msr AFGDTU12_EL12, x0
+// CHECK-INST: msr AFGDTU12_EL12, x0
+// CHECK-ENCODING: encoding: [0x80,0x39,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d3980 msr AFGDTU12_EL12, x0
+
+msr AFGDTP12_EL3, x0
+// CHECK-INST: msr AFGDTP12_EL3, x0
+// CHECK-ENCODING: encoding: [0x80,0x37,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e3780 msr AFGDTP12_EL3, x0
+
+msr AFGDTP13_EL1, x0
+// CHECK-INST: msr AFGDTP13_EL1, x0
+// CHECK-ENCODING: encoding: [0xa0,0x37,0x18,0xd5]
+// CHECK-UNKNOWN: d51837a0 msr AFGDTP13_EL1, x0
+
+msr AFGDTU13_EL1, x0
+// CHECK-INST: msr AFGDTU13_EL1, x0
+// CHECK-ENCODING: encoding: [0xa0,0x39,0x18,0xd5]
+// CHECK-UNKNOWN: d51839a0 msr AFGDTU13_EL1, x0
+
+msr AFGDTP13_EL2, x0
+// CHECK-INST: msr AFGDTP13_EL2, x0
+// CHECK-ENCODING: encoding: [0xa0,0x37,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c37a0 msr AFGDTP13_EL2, x0
+
+msr AFGDTU13_EL2, x0
+// CHECK-INST: msr AFGDTU13_EL2, x0
+// CHECK-ENCODING: encoding: [0xa0,0x39,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c39a0 msr AFGDTU13_EL2, x0
+
+msr AFGDTP13_EL12, x0
+// CHECK-INST: msr AFGDTP13_EL12, x0
+// CHECK-ENCODING: encoding: [0xa0,0x37,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d37a0 msr AFGDTP13_EL12, x0
+
+msr AFGDTU13_EL12, x0
+// CHECK-INST: msr AFGDTU13_EL12, x0
+// CHECK-ENCODING: encoding: [0xa0,0x39,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d39a0 msr AFGDTU13_EL12, x0
+
+msr AFGDTP13_EL3, x0
+// CHECK-INST: msr AFGDTP13_EL3, x0
+// CHECK-ENCODING: encoding: [0xa0,0x37,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e37a0 msr AFGDTP13_EL3, x0
+
+msr AFGDTP14_EL1, x0
+// CHECK-INST: msr AFGDTP14_EL1, x0
+// CHECK-ENCODING: encoding: [0xc0,0x37,0x18,0xd5]
+// CHECK-UNKNOWN: d51837c0 msr AFGDTP14_EL1, x0
+
+msr AFGDTU14_EL1, x0
+// CHECK-INST: msr AFGDTU14_EL1, x0
+// CHECK-ENCODING: encoding: [0xc0,0x39,0x18,0xd5]
+// CHECK-UNKNOWN: d51839c0 msr AFGDTU14_EL1, x0
+
+msr AFGDTP14_EL2, x0
+// CHECK-INST: msr AFGDTP14_EL2, x0
+// CHECK-ENCODING: encoding: [0xc0,0x37,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c37c0 msr AFGDTP14_EL2, x0
+
+msr AFGDTU14_EL2, x0
+// CHECK-INST: msr AFGDTU14_EL2, x0
+// CHECK-ENCODING: encoding: [0xc0,0x39,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c39c0 msr AFGDTU14_EL2, x0
+
+msr AFGDTP14_EL12, x0
+// CHECK-INST: msr AFGDTP14_EL12, x0
+// CHECK-ENCODING: encoding: [0xc0,0x37,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d37c0 msr AFGDTP14_EL12, x0
+
+msr AFGDTU14_EL12, x0
+// CHECK-INST: msr AFGDTU14_EL12, x0
+// CHECK-ENCODING: encoding: [0xc0,0x39,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d39c0 msr AFGDTU14_EL12, x0
+
+msr AFGDTP14_EL3, x0
+// CHECK-INST: msr AFGDTP14_EL3, x0
+// CHECK-ENCODING: encoding: [0xc0,0x37,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e37c0 msr AFGDTP14_EL3, x0
+
+msr AFGDTP15_EL1, x0
+// CHECK-INST: msr AFGDTP15_EL1, x0
+// CHECK-ENCODING: encoding: [0xe0,0x37,0x18,0xd5]
+// CHECK-UNKNOWN: d51837e0 msr AFGDTP15_EL1, x0
+
+msr AFGDTU15_EL1, x0
+// CHECK-INST: msr AFGDTU15_EL1, x0
+// CHECK-ENCODING: encoding: [0xe0,0x39,0x18,0xd5]
+// CHECK-UNKNOWN: d51839e0 msr AFGDTU15_EL1, x0
+
+msr AFGDTP15_EL2, x0
+// CHECK-INST: msr AFGDTP15_EL2, x0
+// CHECK-ENCODING: encoding: [0xe0,0x37,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c37e0 msr AFGDTP15_EL2, x0
+
+msr AFGDTU15_EL2, x0
+// CHECK-INST: msr AFGDTU15_EL2, x0
+// CHECK-ENCODING: encoding: [0xe0,0x39,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c39e0 msr AFGDTU15_EL2, x0
+
+msr AFGDTP15_EL12, x0
+// CHECK-INST: msr AFGDTP15_EL12, x0
+// CHECK-ENCODING: encoding: [0xe0,0x37,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d37e0 msr AFGDTP15_EL12, x0
+
+msr AFGDTU15_EL12, x0
+// CHECK-INST: msr AFGDTU15_EL12, x0
+// CHECK-ENCODING: encoding: [0xe0,0x39,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d39e0 msr AFGDTU15_EL12, x0
+
+msr AFGDTP15_EL3, x0
+// CHECK-INST: msr AFGDTP15_EL3, x0
+// CHECK-ENCODING: encoding: [0xe0,0x37,0x1e,0xd5]
+// CHECK-UNKNOWN: d51e37e0 msr AFGDTP15_EL3, x0
+
+msr TPMIN0_EL0, x2
+// CHECK-INST: msr TPMIN0_EL0, x2
+// CHECK-ENCODING: encoding: [0x82,0x22,0x1b,0xd5]
+// CHECK-UNKNOWN: d51b2282 msr TPMIN0_EL0, x2
+
+msr TPMAX0_EL0, x2
+// CHECK-INST: msr TPMAX0_EL0, x2
+// CHECK-ENCODING: encoding: [0xa2,0x22,0x1b,0xd5]
+// CHECK-UNKNOWN: d51b22a2 msr TPMAX0_EL0, x2
+
+msr TPMIN1_EL0, x2
+// CHECK-INST: msr TPMIN1_EL0, x2
+// CHECK-ENCODING: encoding: [0xc2,0x22,0x1b,0xd5]
+// CHECK-UNKNOWN: d51b22c2 msr TPMIN1_EL0, x2
+
+msr TPMAX1_EL0, x2
+// CHECK-INST: msr TPMAX1_EL0, x2
+// CHECK-ENCODING: encoding: [0xe2,0x22,0x1b,0xd5]
+// CHECK-UNKNOWN: d51b22e2 msr TPMAX1_EL0, x2
+
+msr TPMIN0_EL1, x2
+// CHECK-INST: msr TPMIN0_EL1, x2
+// CHECK-ENCODING: encoding: [0x82,0x22,0x18,0xd5]
+// CHECK-UNKNOWN: d5182282 msr TPMIN0_EL1, x2
+
+msr TPMAX0_EL1, x2
+// CHECK-INST: msr TPMAX0_EL1, x2
+// CHECK-ENCODING: encoding: [0xa2,0x22,0x18,0xd5]
+// CHECK-UNKNOWN: d51822a2 msr TPMAX0_EL1, x2
+
+msr TPMIN1_EL1, x2
+// CHECK-INST: msr TPMIN1_EL1, x2
+// CHECK-ENCODING: encoding: [0xc2,0x22,0x18,0xd5]
+// CHECK-UNKNOWN: d51822c2 msr TPMIN1_EL1, x2
+
+msr TPMAX1_EL1, x2
+// CHECK-INST: msr TPMAX1_EL1, x2
+// CHECK-ENCODING: encoding: [0xe2,0x22,0x18,0xd5]
+// CHECK-UNKNOWN: d51822e2 msr TPMAX1_EL1, x2
+
+msr TPMIN0_EL2, x2
+// CHECK-INST: msr TPMIN0_EL2, x2
+// CHECK-ENCODING: encoding: [0x82,0x22,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c2282 msr TPMIN0_EL2, x2
+
+msr TPMAX0_EL2, x2
+// CHECK-INST: msr TPMAX0_EL2, x2
+// CHECK-ENCODING: encoding: [0xa2,0x22,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c22a2 msr TPMAX0_EL2, x2
+
+msr TPMIN1_EL2, x2
+// CHECK-INST: msr TPMIN1_EL2, x2
+// CHECK-ENCODING: encoding: [0xc2,0x22,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c22c2 msr TPMIN1_EL2, x2
+
+msr TPMAX1_EL2, x2
+// CHECK-INST: msr TPMAX1_EL2, x2
+// CHECK-ENCODING: encoding: [0xe2,0x22,0x1c,0xd5]
+// CHECK-UNKNOWN: d51c22e2 msr TPMAX1_EL2, x2
+
+msr TPMIN0_EL12, x2
+// CHECK-INST: msr TPMIN0_EL12, x2
+// CHECK-ENCODING: encoding: [0x82,0x22,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d2282 msr TPMIN0_EL12, x2
+
+msr TPMAX0_EL12, x2
+// CHECK-INST: msr TPMAX0_EL12, x2
+// CHECK-ENCODING: encoding: [0xa2,0x22,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d22a2 msr TPMAX0_EL12, x2
+
+msr TPMIN1_EL12, x2
+// CHECK-INST: msr TPMIN1_EL12, x2
+// CHECK-ENCODING: encoding: [0xc2,0x22,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d22c2 msr TPMIN1_EL12, x2
+
+msr TPMAX1_EL12, x2
+// CHECK-INST: msr TPMAX1_EL12, x2
+// CHECK-ENCODING: encoding: [0xe2,0x22,0x1d,0xd5]
+// CHECK-UNKNOWN: d51d22e2 msr TPMAX1_EL12, x2
+
+
+tchangef x0, x1
+// CHECK-INST: tchangef x0, x1
+// CHECK-ENCODING: [0x20,0x00,0x80,0xd5]
+// CHECK-UNKNOWN: d5800020
+// CHECK-ERROR: error: instruction requires: poe2
+
+tchangef x0, x1, nB
+// CHECK-INST: tchangef x0, x1, nb
+// CHECK-ENCODING: [0x20,0x00,0x82,0xd5]
+// CHECK-UNKNOWN: d5820020
+// CHECK-ERROR: error: instruction requires: poe2
+
+tchangef x1, #3
+// CHECK-INST: tchangef x1, #3
+// CHECK-ENCODING: [0x61,0x00,0x90,0xd5]
+// CHECK-UNKNOWN: d5900061
+// CHECK-ERROR: error: instruction requires: poe2
+
+tchangef x1, #3, nB
+// CHECK-INST: tchangef x1, #3, nb
+// CHECK-ENCODING: [0x61,0x00,0x92,0xd5]
+// CHECK-UNKNOWN: d5920061
+// CHECK-ERROR: error: instruction requires: poe2
+
+tchangeb x0, x1
+// CHECK-INST: tchangeb x0, x1
+// CHECK-ENCODING: [0x20,0x00,0x84,0xd5]
+// CHECK-UNKNOWN: d5840020
+// CHECK-ERROR: error: instruction requires: poe2
+
+tchangeb x0, x1, nB
+// CHECK-INST: tchangeb x0, x1, nb
+// CHECK-ENCODING: [0x20,0x00,0x86,0xd5]
+// CHECK-UNKNOWN: d5860020
+// CHECK-ERROR: error: instruction requires: poe2
+
+tchangeb x1, #9
+// CHECK-INST: tchangeb x1, #9
+// CHECK-ENCODING: [0x21,0x01,0x94,0xd5]
+// CHECK-UNKNOWN: d5940121
+// CHECK-ERROR: error: instruction requires: poe2
+
+tchangeb x1, #9, nB
+// CHECK-INST: tchangeb x1, #9, nb
+// CHECK-ENCODING: [0x21,0x01,0x96,0xd5]
+// CHECK-UNKNOWN: d5960121
+// CHECK-ERROR: error: instruction requires: poe2
+
+
+PLBI ALLE3
+// CHECK-INST: plbi alle3
+// CHECK-ENCODING: [0x1f,0xa7,0x0e,0xd5]
+// CHECK-UNKNOWN: d50ea71f sys #6, c10, c7, #0
+// CHECK-ERROR: error: PLBI ALLE3 requires: poe2
+
+PLBI ALLE3IS
+// CHECK-INST: plbi alle3is
+// CHECK-ENCODING: [0x1f,0xa3,0x0e,0xd5]
+// CHECK-UNKNOWN: d50ea31f sys #6, c10, c3, #0
+// CHECK-ERROR: error: PLBI ALLE3IS requires: poe2
+
+PLBI ALLE3OS
+// CHECK-INST: plbi alle3os
+// CHECK-ENCODING: [0x1f,0xa1,0x0e,0xd5]
+// CHECK-UNKNOWN: d50ea11f sys #6, c10, c1, #0
+// CHECK-ERROR: error: PLBI ALLE3OS requires: poe2
+
+PLBI ALLE2
+// CHECK-INST: plbi alle2
+// CHECK-ENCODING: [0x1f,0xa7,0x0c,0xd5]
+// CHECK-UNKNOWN: d50ca71f sys #4, c10, c7, #0
+// CHECK-ERROR: error: PLBI ALLE2 requires: poe2
+
+PLBI ALLE2IS
+// CHECK-INST: plbi alle2is
+// CHECK-ENCODING: [0x1f,0xa3,0x0c,0xd5]
+// CHECK-UNKNOWN: d50ca31f sys #4, c10, c3, #0
+// CHECK-ERROR: error: PLBI ALLE2IS requires: poe2
+
+PLBI ALLE2OS
+// CHECK-INST: plbi alle2os
+// CHECK-ENCODING: [0x1f,0xa1,0x0c,0xd5]
+// CHECK-UNKNOWN: d50ca11f sys #4, c10, c1, #0
+// CHECK-ERROR: error: PLBI ALLE2OS requires: poe2
+
+PLBI ALLE1
+// CHECK-INST: plbi alle1
+// CHECK-ENCODING: [0x9f,0xa7,0x0c,0xd5]
+// CHECK-UNKNOWN: d50ca79f sys #4, c10, c7, #4
+// CHECK-ERROR: error: PLBI ALLE1 requires: poe2
+
+PLBI ALLE1IS
+// CHECK-INST: plbi alle1is
+// CHECK-ENCODING: [0x9f,0xa3,0x0c,0xd5]
+// CHECK-UNKNOWN: d50ca39f sys #4, c10, c3, #4
+// CHECK-ERROR: error: PLBI ALLE1IS requires: poe2
+
+PLBI ALLE1OS
+// CHECK-INST: plbi alle1os
+// CHECK-ENCODING: [0x9f,0xa1,0x0c,0xd5]
+// CHECK-UNKNOWN: d50ca19f sys #4, c10, c1, #4
+// CHECK-ERROR: error: PLBI ALLE1OS requires: poe2
+
+PLBI VMALLE1
+// CHECK-INST: plbi vmalle1
+// CHECK-ENCODING: [0x1f,0xa7,0x08,0xd5]
+// CHECK-UNKNOWN: d508a71f sys #0, c10, c7, #0
+// CHECK-ERROR: error: PLBI VMALLE1 requires: poe2
+
+PLBI VMALLE1IS
+// CHECK-INST: plbi vmalle1is
+// CHECK-ENCODING: [0x1f,0xa3,0x08,0xd5]
+// CHECK-UNKNOWN: d508a31f sys #0, c10, c3, #0
+// CHECK-ERROR: error: PLBI VMALLE1IS requires: poe2
+
+PLBI VMALLE1OS
+// CHECK-INST: plbi vmalle1os
+// CHECK-ENCODING: [0x1f,0xa1,0x08,0xd5]
+// CHECK-UNKNOWN: d508a11f sys #0, c10, c1, #0
+// CHECK-ERROR: error: PLBI VMALLE1OS requires: poe2
+
+PLBI ASIDE1, X3
+// CHECK-INST: plbi aside1, x3
+// CHECK-ENCODING: [0x43,0xa7,0x08,0xd5]
+// CHECK-UNKNOWN: d508a743 sys #0, c10, c7, #2, x3
+// CHECK-ERROR: error: PLBI ASIDE1 requires: poe2
+
+PLBI ASIDE1IS, X3
+// CHECK-INST: plbi aside1is, x3
+// CHECK-ENCODING: [0x43,0xa3,0x08,0xd5]
+// CHECK-UNKNOWN: d508a343 sys #0, c10, c3, #2, x3
+// CHECK-ERROR: error: PLBI ASIDE1IS requires: poe2
+
+PLBI ASIDE1OS, X3
+// CHECK-INST: plbi aside1os, x3
+// CHECK-ENCODING: [0x43,0xa1,0x08,0xd5]
+// CHECK-UNKNOWN: d508a143 sys #0, c10, c1, #2, x3
+// CHECK-ERROR: error: PLBI ASIDE1OS requires: poe2
+
+PLBI PERME3, X3
+// CHECK-INST: plbi perme3, x3
+// CHECK-ENCODING: [0x23,0xa7,0x0e,0xd5]
+// CHECK-UNKNOWN: d50ea723 sys #6, c10, c7, #1, x3
+// CHECK-ERROR: error: PLBI PERME3 requires: poe2
+
+PLBI PERME3IS, X3
+// CHECK-INST: plbi perme3is, x3
+// CHECK-ENCODING: [0x23,0xa3,0x0e,0xd5]
+// CHECK-UNKNOWN: d50ea323 sys #6, c10, c3, #1, x3
+// CHECK-ERROR: error: PLBI PERME3IS requires: poe2
+
+PLBI PERME3OS, X3
+// CHECK-INST: plbi perme3os, x3
+// CHECK-ENCODING: [0x23,0xa1,0x0e,0xd5]
+// CHECK-UNKNOWN: d50ea123 sys #6, c10, c1, #1, x3
+// CHECK-ERROR: error: PLBI PERME3OS requires: poe2
+
+PLBI PERME2, X3
+// CHECK-INST: plbi perme2, x3
+// CHECK-ENCODING: [0x23,0xa7,0x0c,0xd5]
+// CHECK-UNKNOWN: d50ca723 sys #4, c10, c7, #1, x3
+// CHECK-ERROR: error: PLBI PERME2 requires: poe2
+
+PLBI PERME2IS, X3
+// CHECK-INST: plbi perme2is, x3
+// CHECK-ENCODING: [0x23,0xa3,0x0c,0xd5]
+// CHECK-UNKNOWN: d50ca323 sys #4, c10, c3, #1, x3
+// CHECK-ERROR: error: PLBI PERME2IS requires: poe2
+
+PLBI PERME2OS, X3
+// CHECK-INST: plbi perme2os, x3
+// CHECK-ENCODING: [0x23,0xa1,0x0c,0xd5]
+// CHECK-UNKNOWN: d50ca123 sys #4, c10, c1, #1, x3
+// CHECK-ERROR: error: PLBI PERME2OS requires: poe2
+
+PLBI PERME1, X3
+// CHECK-INST: plbi perme1, x3
+// CHECK-ENCODING: [0x23,0xa7,0x08,0xd5]
+// CHECK-UNKNOWN: d508a723 sys #0, c10, c7, #1, x3
+// CHECK-ERROR: error: PLBI PERME1 requires: poe2
+
+PLBI PERME1IS, X3
+// CHECK-INST: plbi perme1is, x3
+// CHECK-ENCODING: [0x23,0xa3,0x08,0xd5]
+// CHECK-UNKNOWN: d508a323 sys #0, c10, c3, #1, x3
+// CHECK-ERROR: error: PLBI PERME1IS requires: poe2
+
+PLBI PERME1OS, X3
+// CHECK-INST: plbi perme1os, x3
+// CHECK-ENCODING: [0x23,0xa1,0x08,0xd5]
+// CHECK-UNKNOWN: d508a123 sys #0, c10, c1, #1, x3
+// CHECK-ERROR: error: PLBI PERME1OS requires: poe2
+
+PLBI ALLE3NXS
+// CHECK-INST: plbi alle3nxs
+// CHECK-ENCODING: [0x1f,0xaf,0x0e,0xd5]
+// CHECK-UNKNOWN: d50eaf1f sys #6, c10, c15, #0
+// CHECK-ERROR: error: PLBI ALLE3NXS requires: poe2
+
+PLBI ALLE3ISNXS
+// CHECK-INST: plbi alle3isnxs
+// CHECK-ENCODING: [0x1f,0xab,0x0e,0xd5]
+// CHECK-UNKNOWN: d50eab1f sys #6, c10, c11, #0
+// CHECK-ERROR: error: PLBI ALLE3ISNXS requires: poe2
+
+PLBI ALLE3OSNXS
+// CHECK-INST: plbi alle3osnxs
+// CHECK-ENCODING: [0x1f,0xa9,0x0e,0xd5]
+// CHECK-UNKNOWN: d50ea91f sys #6, c10, c9, #0
+// CHECK-ERROR: error: PLBI ALLE3OSNXS requires: poe2
+
+PLBI ALLE2NXS
+// CHECK-INST: plbi alle2nxs
+// CHECK-ENCODING: [0x1f,0xaf,0x0c,0xd5]
+// CHECK-UNKNOWN: d50caf1f sys #4, c10, c15, #0
+// CHECK-ERROR: error: PLBI ALLE2NXS requires: poe2
+
+PLBI ALLE2ISNXS
+// CHECK-INST: plbi alle2isnxs
+// CHECK-ENCODING: [0x1f,0xab,0x0c,0xd5]
+// CHECK-UNKNOWN: d50cab1f sys #4, c10, c11, #0
+// CHECK-ERROR: error: PLBI ALLE2ISNXS requires: poe2
+
+PLBI ALLE2OSNXS
+// CHECK-INST: plbi alle2osnxs
+// CHECK-ENCODING: [0x1f,0xa9,0x0c,0xd5]
+// CHECK-UNKNOWN: d50ca91f sys #4, c10, c9, #0
+// CHECK-ERROR: error: PLBI ALLE2OSNXS requires: poe2
+
+PLBI ALLE1NXS
+// CHECK-INST: plbi alle1nxs
+// CHECK-ENCODING: [0x9f,0xaf,0x0c,0xd5]
+// CHECK-UNKNOWN: d50caf9f sys #4, c10, c15, #4
+// CHECK-ERROR: error: PLBI ALLE1NXS requires: poe2
+
+PLBI ALLE1ISNXS
+// CHECK-INST: plbi alle1isnxs
+// CHECK-ENCODING: [0x9f,0xab,0x0c,0xd5]
+// CHECK-UNKNOWN: d50cab9f sys #4, c10, c11, #4
+// CHECK-ERROR: error: PLBI ALLE1ISNXS requires: poe2
+
+PLBI ALLE1OSNXS
+// CHECK-INST: plbi alle1osnxs
+// CHECK-ENCODING: [0x9f,0xa9,0x0c,0xd5]
+// CHECK-UNKNOWN: d50ca99f sys #4, c10, c9, #4
+// CHECK-ERROR: error: PLBI ALLE1OSNXS requires: poe2
+
+PLBI VMALLE1NXS
+// CHECK-INST: plbi vmalle1nxs
+// CHECK-ENCODING: [0x1f,0xaf,0x08,0xd5]
+// CHECK-UNKNOWN: d508af1f sys #0, c10, c15, #0
+// CHECK-ERROR: error: PLBI VMALLE1NXS requires: poe2
+
+PLBI VMALLE1ISNXS
+// CHECK-INST: plbi vmalle1isnxs
+// CHECK-ENCODING: [0x1f,0xab,0x08,0xd5]
+// CHECK-UNKNOWN: d508ab1f sys #0, c10, c11, #0
+// CHECK-ERROR: error: PLBI VMALLE1ISNXS requires: poe2
+
+PLBI VMALLE1OSNXS
+// CHECK-INST: plbi vmalle1osnxs
+// CHECK-ENCODING: [0x1f,0xa9,0x08,0xd5]
+// CHECK-UNKNOWN: d508a91f sys #0, c10, c9, #0
+// CHECK-ERROR: error: PLBI VMALLE1OSNXS requires: poe2
+
+PLBI ASIDE1NXS, X3
+// CHECK-INST: plbi aside1nxs, x3
+// CHECK-ENCODING: [0x43,0xaf,0x08,0xd5]
+// CHECK-UNKNOWN: d508af43 sys #0, c10, c15, #2, x3
+// CHECK-ERROR: error: PLBI ASIDE1NXS requires: poe2
+
+PLBI ASIDE1ISNXS, X3
+// CHECK-INST: plbi aside1isnxs, x3
+// CHECK-ENCODING: [0x43,0xab,0x08,0xd5]
+// CHECK-UNKNOWN: d508ab43 sys #0, c10, c11, #2, x3
+// CHECK-ERROR: error: PLBI ASIDE1ISNXS requires: poe2
+
+PLBI ASIDE1OSNXS, X3
+// CHECK-INST: plbi aside1osnxs, x3
+// CHECK-ENCODING: [0x43,0xa9,0x08,0xd5]
+// CHECK-UNKNOWN: d508a943 sys #0, c10, c9, #2, x3
+// CHECK-ERROR: error: PLBI ASIDE1OSNXS requires: poe2
+
+PLBI PERME3NXS, X3
+// CHECK-INST: plbi perme3nxs, x3
+// CHECK-ENCODING: [0x23,0xaf,0x0e,0xd5]
+// CHECK-UNKNOWN: d50eaf23 sys #6, c10, c15, #1, x3
+// CHECK-ERROR: error: PLBI PERME3NXS requires: poe2
+
+PLBI PERME3ISNXS, X3
+// CHECK-INST: plbi perme3isnxs, x3
+// CHECK-ENCODING: [0x23,0xab,0x0e,0xd5]
+// CHECK-UNKNOWN: d50eab23 sys #6, c10, c11, #1, x3
+// CHECK-ERROR: error: PLBI PERME3ISNXS requires: poe2
+
+PLBI PERME3OSNXS, X3
+// CHECK-INST: plbi perme3osnxs, x3
+// CHECK-ENCODING: [0x23,0xa9,0x0e,0xd5]
+// CHECK-UNKNOWN: d50ea923 sys #6, c10, c9, #1, x3
+// CHECK-ERROR: error: PLBI PERME3OSNXS requires: poe2
+
+PLBI PERME2NXS, X3
+// CHECK-INST: plbi perme2nxs, x3
+// CHECK-ENCODING: [0x23,0xaf,0x0c,0xd5]
+// CHECK-UNKNOWN: d50caf23 sys #4, c10, c15, #1, x3
+// CHECK-ERROR: error: PLBI PERME2NXS requires: poe2
+
+PLBI PERME2ISNXS, X3
+// CHECK-INST: plbi perme2isnxs, x3
+// CHECK-ENCODING: [0x23,0xab,0x0c,0xd5]
+// CHECK-UNKNOWN: d50cab23 sys #4, c10, c11, #1, x3
+// CHECK-ERROR: error: PLBI PERME2ISNXS requires: poe2
+
+PLBI PERME2OSNXS, X3
+// CHECK-INST: plbi perme2osnxs, x3
+// CHECK-ENCODING: [0x23,0xa9,0x0c,0xd5]
+// CHECK-UNKNOWN: d50ca923 sys #4, c10, c9, #1, x3
+// CHECK-ERROR: error: PLBI PERME2OSNXS requires: poe2
+
+PLBI PERME1NXS, X3
+// CHECK-INST: plbi perme1nxs, x3
+// CHECK-ENCODING: [0x23,0xaf,0x08,0xd5]
+// CHECK-UNKNOWN: d508af23 sys #0, c10, c15, #1, x3
+// CHECK-ERROR: error: PLBI PERME1NXS requires: poe2
+
+PLBI PERME1ISNXS, X3
+// CHECK-INST: plbi perme1isnxs, x3
+// CHECK-ENCODING: [0x23,0xab,0x08,0xd5]
+// CHECK-UNKNOWN: d508ab23 sys #0, c10, c11, #1, x3
+// CHECK-ERROR: error: PLBI PERME1ISNXS requires: poe2
+
+PLBI PERME1OSNXS, X3
+// CHECK-INST: plbi perme1osnxs, x3
+// CHECK-ENCODING: [0x23,0xa9,0x08,0xd5]
+// CHECK-UNKNOWN: d508a923 sys #0, c10, c9, #1, x3
+// CHECK-ERROR: error: PLBI PERME1OSNXS requires: poe2
+
+PLBI PERMAE1, X3
+// CHECK-INST: plbi permae1, x3
+// CHECK-ENCODING: [0x63,0xa7,0x08,0xd5]
+// CHECK-UNKNOWN: d508a763 sys #0, c10, c7, #3, x3
+// CHECK-ERROR: error: PLBI PERMAE1 requires: poe2
+
+PLBI PERMAE1IS, X3
+// CHECK-INST: plbi permae1is, x3
+// CHECK-ENCODING: [0x63,0xa3,0x08,0xd5]
+// CHECK-UNKNOWN: d508a363 sys #0, c10, c3, #3, x3
+// CHECK-ERROR: error: PLBI PERMAE1IS requires: poe2
+
+PLBI PERMAE1OS, X3
+// CHECK-INST: plbi permae1os, x3
+// CHECK-ENCODING: [0x63,0xa1,0x08,0xd5]
+// CHECK-UNKNOWN: d508a163 sys #0, c10, c1, #3, x3
+// CHECK-ERROR: error: PLBI PERMAE1OS requires: poe2
+
+PLBI PERMAE1NXS, X3
+// CHECK-INST: plbi permae1nxs, x3
+// CHECK-ENCODING: [0x63,0xaf,0x08,0xd5]
+// CHECK-UNKNOWN: d508af63 sys #0, c10, c15, #3, x3
+// CHECK-ERROR: error: PLBI PERMAE1NXS requires: poe2
+
+PLBI PERMAE1ISNXS, X3
+// CHECK-INST: plbi permae1isnxs, x3
+// CHECK-ENCODING: [0x63,0xab,0x08,0xd5]
+// CHECK-UNKNOWN: d508ab63 sys #0, c10, c11, #3, x3
+// CHECK-ERROR: error: PLBI PERMAE1ISNXS requires: poe2
+
+PLBI PERMAE1OSNXS, X3
+// CHECK-INST: plbi permae1osnxs, x3
+// CHECK-ENCODING: [0x63,0xa9,0x08,0xd5]
+// CHECK-UNKNOWN: d508a963 sys #0, c10, c9, #3, x3
+// CHECK-ERROR: error: PLBI PERMAE1OSNXS requires: poe2
diff --git a/llvm/test/MC/AArch64/arm-tev.s b/llvm/test/MC/AArch64/arm-tev.s
new file mode 100644
index 0000000000000..bce4857c32816
--- /dev/null
+++ b/llvm/test/MC/AArch64/arm-tev.s
@@ -0,0 +1,41 @@
+// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+tev < %s \
+// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
+// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \
+// RUN: | FileCheck %s --check-prefix=CHECK-ERROR
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+all < %s \
+// RUN: | llvm-objdump -d --mattr=+tev --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-INST
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+all < %s \
+// RUN: | llvm-objdump -d --mattr=-tev --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-UNKNOWN
+// Disassemble encoding and check the re-encoding (-show-encoding) matches.
+// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+tev < %s \
+// RUN: | sed '/.text/d' | sed 's/.*encoding: //g' \
+// RUN: | llvm-mc -triple=aarch64 -mattr=+tev -disassemble -show-encoding \
+// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
+
+//------------------------------------------------------------------------------
+// TIndex Exception-like Vector (FEAT_TEV).
+//------------------------------------------------------------------------------
+
+TENTER #32
+// CHECK-INST: tenter #32
+// CHECK-ENCODING: [0x00,0x04,0xe0,0xd4]
+// CHECK-UNKNOWN: d4e00400
+// CHECK-ERROR: error: instruction requires: tev
+
+TENTER #32, NB
+// CHECK-INST: tenter #32, nb
+// CHECK-ENCODING: [0x00,0x04,0xe2,0xd4]
+// CHECK-UNKNOWN: d4e20400
+// CHECK-ERROR: error: instruction requires: tev
+
+TEXIT
+// CHECK-INST: texit
+// CHECK-ENCODING: [0xe0,0x03,0xff,0xd6]
+// CHECK-UNKNOWN: d6ff03e0
+// CHECK-ERROR: error: instruction requires: tev
+
+TEXIT NB
+// CHECK-INST: texit nb
+// CHECK-ENCODING: [0xe0,0x07,0xff,0xd6]
+// CHECK-UNKNOWN: d6ff07e0
+// CHECK-ERROR: error: instruction requires: tev
diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 0e5d40ad3c7b1..d119b062c8e1a 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1452,7 +1452,8 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
AArch64::AEK_GCIE, AArch64::AEK_SME2P3,
AArch64::AEK_SVE2P3, AArch64::AEK_SVE_B16MM,
AArch64::AEK_F16MM, AArch64::AEK_F16F32DOT,
- AArch64::AEK_F16F32MM,
+ AArch64::AEK_F16F32MM, AArch64::AEK_POE2,
+ AArch64::AEK_TEV, AArch64::AEK_BTIE,
};
std::vector<StringRef> Features;
@@ -1576,6 +1577,9 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
EXPECT_TRUE(llvm::is_contained(Features, "+f16mm"));
EXPECT_TRUE(llvm::is_contained(Features, "+f16f32dot"));
EXPECT_TRUE(llvm::is_contained(Features, "+f16f32mm"));
+ EXPECT_TRUE(llvm::is_contained(Features, "+poe2"));
+ EXPECT_TRUE(llvm::is_contained(Features, "+tev"));
+ EXPECT_TRUE(llvm::is_contained(Features, "+btie"));
// Assuming we listed every extension above, this should produce the same
// result.
@@ -1754,6 +1758,9 @@ TEST(TargetParserTest, AArch64ArchExtFeature) {
{"f16mm", "nof16mm", "+f16mm", "-f16mm"},
{"f16f32dot", "nof16f32dot", "+f16f32dot", "-f16f32dot"},
{"f16f32mm", "nof16f32mm", "+f16f32mm", "-f16f32mm"},
+ {"poe2", "nopoe2", "+poe2", "-poe2"},
+ {"tev", "notev", "+tev", "-tev"},
+ {"btie", "nobtie", "+btie", "-btie"},
};
for (unsigned i = 0; i < std::size(ArchExt); i++) {
@@ -2203,6 +2210,10 @@ AArch64ExtensionDependenciesBaseArchTestParams
{},
{"predres", "specres2"}},
+ // poe2 -> btie
+ {AArch64::ARMV9_6A, {"nobtie", "poe2"}, {"btie", "poe2"}, {}},
+ {AArch64::ARMV9_6A, {"poe2", "nobtie"}, {}, {"btie", "poe2"}},
+
// ras -> ras2
{AArch64::ARMV8A, {"noras", "rasv2"}, {"ras", "rasv2"}, {}},
{AArch64::ARMV8A, {"rasv2", "noras"}, {}, {"ras", "rasv2"}},
>From b3a019fdcb5717adb3224e6d044df1a8120e26b8 Mon Sep 17 00:00:00 2001
From: Jonathan Thackray <jonathan.thackray at arm.com>
Date: Mon, 3 Nov 2025 11:53:01 +0000
Subject: [PATCH 2/2] fixup! [AArch64][llvm] Add support for Permission
Overlays Extension 2 (FEAT_S1POE2)
Address CR comments
---
llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp | 2 ++
llvm/test/MC/AArch64/arm-poe2-tlbid-diagnostics.s | 2 +-
llvm/test/MC/AArch64/arm-poe2-tlbid.s | 4 ++--
llvm/test/MC/AArch64/arm-poe2.s | 4 ++--
llvm/test/MC/AArch64/arm-tev.s | 4 ++--
5 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index 71cde9ddf0978..c19d33e51ccb2 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -3955,6 +3955,8 @@ static const struct Extension {
{"f16f32dot", {AArch64::FeatureF16F32DOT}},
{"f16f32mm", {AArch64::FeatureF16F32MM}},
{"poe2", {AArch64::FeatureS1POE2}},
+ {"tev", {AArch64::FeatureTEV}},
+ {"btie", {AArch64::FeatureBTIE}},
};
static void setRequiredFeatureString(FeatureBitset FBS, std::string &Str) {
diff --git a/llvm/test/MC/AArch64/arm-poe2-tlbid-diagnostics.s b/llvm/test/MC/AArch64/arm-poe2-tlbid-diagnostics.s
index e105be49283ee..79b47b6f43193 100644
--- a/llvm/test/MC/AArch64/arm-poe2-tlbid-diagnostics.s
+++ b/llvm/test/MC/AArch64/arm-poe2-tlbid-diagnostics.s
@@ -53,7 +53,7 @@ plbi vmalle1isnxs, x0
plbi vmalle1osnxs, x0
// CHECK-ERROR: error: specified plbi op does not use a register
-
+// Tests where no optional register operand allowed
plbi alle3, x0
// CHECK-ERROR: error: specified plbi op does not use a register
// CHECK-NO-REGISTER: error: specified plbi op does not use a register
diff --git a/llvm/test/MC/AArch64/arm-poe2-tlbid.s b/llvm/test/MC/AArch64/arm-poe2-tlbid.s
index eac4fd58d59a0..4087d9dec7fa9 100644
--- a/llvm/test/MC/AArch64/arm-poe2-tlbid.s
+++ b/llvm/test/MC/AArch64/arm-poe2-tlbid.s
@@ -2,9 +2,9 @@
// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+poe2 < %s 2>&1 \
// RUN: | FileCheck %s --check-prefix=CHECK-ERROR
-// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+all < %s \
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+tlbid,+poe2 < %s \
// RUN: | llvm-objdump -d --mattr=+tlbid,+poe2 --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-INST
-// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+all < %s \
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+tlbid,+poe2 < %s \
// RUN: | llvm-objdump -d --mattr=-tlbid,-poe2 --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-UNKNOWN
// Disassemble encoding and check the re-encoding (-show-encoding) matches.
// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+tlbid,+poe2 < %s \
diff --git a/llvm/test/MC/AArch64/arm-poe2.s b/llvm/test/MC/AArch64/arm-poe2.s
index cd9b8149b2209..b9aa734cf5b68 100644
--- a/llvm/test/MC/AArch64/arm-poe2.s
+++ b/llvm/test/MC/AArch64/arm-poe2.s
@@ -2,9 +2,9 @@
// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \
// RUN: | FileCheck %s --check-prefix=CHECK-ERROR
-// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+all < %s \
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+poe2 < %s \
// RUN: | llvm-objdump -d --mattr=+poe2 --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-INST
-// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+all < %s \
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+poe2 < %s \
// RUN: | llvm-objdump -d --mattr=-poe2 --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-UNKNOWN
// Disassemble encoding and check the re-encoding (-show-encoding) matches.
// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+poe2 < %s \
diff --git a/llvm/test/MC/AArch64/arm-tev.s b/llvm/test/MC/AArch64/arm-tev.s
index bce4857c32816..e80210f060088 100644
--- a/llvm/test/MC/AArch64/arm-tev.s
+++ b/llvm/test/MC/AArch64/arm-tev.s
@@ -2,9 +2,9 @@
// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \
// RUN: | FileCheck %s --check-prefix=CHECK-ERROR
-// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+all < %s \
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+tev < %s \
// RUN: | llvm-objdump -d --mattr=+tev --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-INST
-// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+all < %s \
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+tev < %s \
// RUN: | llvm-objdump -d --mattr=-tev --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-UNKNOWN
// Disassemble encoding and check the re-encoding (-show-encoding) matches.
// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+tev < %s \
More information about the llvm-commits
mailing list