From 715ea155e500e5d84881fbb64640b5d95561e842 Mon Sep 17 00:00:00 2001 From: Jonathan Thackray 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 --- 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 { }]; } +def TIndexHintOperand : AsmOperandClass { + let Name = "TIndexHint"; + let ParserMethod = "tryParseTIndexHint"; +} + +def TIndexhint_op : Operand { + 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 : I< let Inst{7-5} = 0b100; let Inst{4-0} = 0b11111; } + +//--- +// Permission Overlays Extension 2 (FEAT_S1POE2) +//--- + +class TCHANGERegInst : 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 : 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 : 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 : 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 { + def NAME : TCHANGERegInst; + def : InstAlias(NAME) GPR64:$Xd, GPR64:$Xn, 0), 1>; +} + +multiclass TCHANGEImm { + def NAME : TCHANGEImmInst; + def : InstAlias(NAME) GPR64:$Xd, imm0_127:$Xn, 0), 1>; +} + +multiclass TENTER { + def NAME : TENTERInst; + def : InstAlias(NAME) imm0_127:$imm, 0), 1>; +} + +multiclass TEXIT { + def NAME : TEXITInst; + def : InstAlias(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 encoding> : SearchableTable { def : CMHPriorityHint<"ph", 0b1>; + +//===----------------------------------------------------------------------===// +// TIndex instruction options. +//===----------------------------------------------------------------------===// + +class TIndex 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>(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>(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>(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 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 op1, bits<4> crn, bits<3> op2, + bit needsreg> { + // Entries containing "IS" or "OS" allow optional regs when +tlbid enabled + def : PLBIEntry; + def : PLBIEntry; + def : PLBIEntry; + def : PLBIEntry; + def : PLBIEntry; + def : PLBIEntry; +} + +// 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 @@ -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 + CreateTIndexHint(unsigned Val, StringRef Str, SMLoc S, MCContext &Ctx) { + auto Op = std::make_unique(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 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 << ""; 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 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 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 \