diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.td b/llvm/lib/Target/AArch64/AArch64InstrInfo.td index 44ae0377260c7..d1d352dcc5f1f 100644 --- a/llvm/lib/Target/AArch64/AArch64InstrInfo.td +++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.td @@ -67,7 +67,7 @@ def HasJS : Predicate<"Subtarget->hasJS()">, def HasCCIDX : Predicate<"Subtarget->hasCCIDX()">, AssemblerPredicateWithAll<(all_of FeatureCCIDX), "ccidx">; def HasComplxNum : Predicate<"Subtarget->hasComplxNum()">, - AssemblerPredicateWithAll<(all_of FeatureComplxNum), "complxnum">; + AssemblerPredicateWithAll<(all_of FeatureComplxNum), "fcma">; def HasNV : Predicate<"Subtarget->hasNV()">, AssemblerPredicateWithAll<(all_of FeatureNV), "nv">; def HasMPAM : Predicate<"Subtarget->hasMPAM()">, diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp index 433cb0387c470..5ef3e2e50ec86 100644 --- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp +++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp @@ -3954,6 +3954,14 @@ static const struct Extension { {"poe2", {AArch64::FeatureS1POE2}}, {"tev", {AArch64::FeatureTEV}}, {"btie", {AArch64::FeatureBTIE}}, + {"dit", {AArch64::FeatureDIT}}, + {"brbe", {AArch64::FeatureBRBE}}, + {"bti", {AArch64::FeatureBranchTargetId}}, + {"fcma", {AArch64::FeatureComplxNum}}, + {"jscvt", {AArch64::FeatureJS}}, + {"pauth-lr", {AArch64::FeaturePAuthLR}}, + {"ssve-fexpa", {AArch64::FeatureSSVE_FEXPA}}, + {"wfxt", {AArch64::FeatureWFxT}}, }; static void setRequiredFeatureString(FeatureBitset FBS, std::string &Str) { diff --git a/llvm/test/MC/AArch64/armv8.3a-complex_missing.s b/llvm/test/MC/AArch64/armv8.3a-complex_missing.s index 75008106575e9..b58eb27379493 100644 --- a/llvm/test/MC/AArch64/armv8.3a-complex_missing.s +++ b/llvm/test/MC/AArch64/armv8.3a-complex_missing.s @@ -25,79 +25,79 @@ fcmla v0.4s, v1.4s, v2.s[0], #270 fcmla v0.4h, v1.4h, v2.h[1], #0 fcmla v0.8h, v1.8h, v2.h[3], #0 fcmla v0.4s, v1.4s, v2.s[1], #0 -//CHECK: {{.*}} error: instruction requires: complxnum +//CHECK: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.4h, v1.4h, v2.4h, #0 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.8h, v1.8h, v2.8h, #0 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.2s, v1.2s, v2.2s, #0 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.4s, v1.4s, v2.4s, #0 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.2d, v1.2d, v2.2d, #0 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.2s, v1.2s, v2.2s, #0 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.2s, v1.2s, v2.2s, #90 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.2s, v1.2s, v2.2s, #180 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.2s, v1.2s, v2.2s, #270 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcadd v0.4h, v1.4h, v2.4h, #90 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcadd v0.8h, v1.8h, v2.8h, #90 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcadd v0.2s, v1.2s, v2.2s, #90 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcadd v0.4s, v1.4s, v2.4s, #90 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcadd v0.2d, v1.2d, v2.2d, #90 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcadd v0.2s, v1.2s, v2.2s, #90 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcadd v0.2s, v1.2s, v2.2s, #270 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.4h, v1.4h, v2.h[0], #0 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.8h, v1.8h, v2.h[0], #0 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.4s, v1.4s, v2.s[0], #0 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.4s, v1.4s, v2.s[0], #90 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.4s, v1.4s, v2.s[0], #180 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.4s, v1.4s, v2.s[0], #270 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.4h, v1.4h, v2.h[1], #0 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.8h, v1.8h, v2.h[3], #0 //CHECK-NEXT: ^ -//CHECK-NEXT: {{.*}} error: instruction requires: complxnum +//CHECK-NEXT: {{.*}} error: instruction requires: fcma //CHECK-NEXT: fcmla v0.4s, v1.4s, v2.s[1], #0 //CHECK-NEXT: ^ diff --git a/llvm/test/MC/AArch64/directive-arch_extension.s b/llvm/test/MC/AArch64/directive-arch_extension.s index 3c754077572a1..d33aa24faa120 100644 --- a/llvm/test/MC/AArch64/directive-arch_extension.s +++ b/llvm/test/MC/AArch64/directive-arch_extension.s @@ -197,3 +197,36 @@ fmmla v1.8h, v2.16b, v3.16b .arch_extension f8f32mm fmmla v1.4s, v2.16b, v3.16b // CHECK: fmmla v1.4s, v2.16b, v3.16b + +.arch_extension dit +msr DIT, #1 +// CHECK: msr DIT, #1 + +.arch_extension brbe +brb iall +// CHECK: brb iall + +.arch_extension pauth-lr +autiasppc #0 +// CHECK: autiasppc #0 + +.arch_extension wfxt +wfit x0 +// CHECK: wfit x0 + +.arch armv8-a +.arch_extension ssve-fexpa +fexpa z0.s, z31.s +// CHECK: fexpa z0.s, z31.s + +.arch_extension jscvt +fjcvtzs w0, d0 +// CHECK: fjcvtzs w0, d0 + +.arch_extension fcma +fcmla v0.4s, v1.4s, v2.4s, #0 +// CHECK: fcmla v0.4s, v1.4s, v2.4s, #0 + +.arch_extension bti +bti c +// CHECK: bti c