[llvm][AArch64] Accept armv8.8 "hbc" and "mops" in .arch_extension directive
authorDavid Spickett <david.spickett@linaro.org>
Wed, 19 Jan 2022 16:56:41 +0000 (16:56 +0000)
committerDavid Spickett <david.spickett@linaro.org>
Thu, 20 Jan 2022 09:16:08 +0000 (09:16 +0000)
Reviewed By: lenary

Differential Revision: https://reviews.llvm.org/D117693

llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
llvm/test/MC/AArch64/directive-arch_extension-negative.s
llvm/test/MC/AArch64/directive-arch_extension.s

index 888d73b..2928b6c 100644 (file)
@@ -3284,6 +3284,8 @@ static const struct Extension {
     {"sme", {AArch64::FeatureSME}},
     {"sme-f64", {AArch64::FeatureSMEF64}},
     {"sme-i64", {AArch64::FeatureSMEI64}},
+    {"hbc", {AArch64::FeatureHBC}},
+    {"mops", {AArch64::FeatureMOPS}},
     // FIXME: Unsupported extensions
     {"lor", {}},
     {"rdma", {}},
index 797a303..16f3bb8 100644 (file)
@@ -1,5 +1,5 @@
 // RUN: not llvm-mc -triple aarch64 \
-// RUN: -mattr=+crc,+sm4,+sha3,+sha2,+aes,+fp,+neon,+ras,+lse,+predres,+ccdp,+mte,+tlb-rmi,+pan-rwv,+ccpp,+rcpc,+ls64,+flagm \
+// RUN: -mattr=+crc,+sm4,+sha3,+sha2,+aes,+fp,+neon,+ras,+lse,+predres,+ccdp,+mte,+tlb-rmi,+pan-rwv,+ccpp,+rcpc,+ls64,+flagm,+hbc,+mops \
 // RUN: -filetype asm -o - %s 2>&1 | FileCheck %s
 
 .arch_extension axp64
@@ -131,3 +131,18 @@ cfinv
 cfinv
 // CHECK: [[@LINE-1]]:1: error: instruction requires: flagm
 // CHECK-NEXT: cfinv
+
+lbl:
+bc.eq lbl
+// CHECK-NOT: [[@LINE-1]]:1: error: instruction requires: hbc
+.arch_extension nohbc
+bc.eq lbl
+// CHECK: [[@LINE-1]]:1: error: instruction requires: hbc
+// CHECK-NEXT: bc.eq lbl
+
+cpyfp [x0]!, [x1]!, x2!
+// CHECK-NOT: [[@LINE-1]]:1: error: instruction requires: mops
+.arch_extension nomops
+cpyfp [x0]!, [x1]!, x2!
+// CHECK: [[@LINE-1]]:1: error: instruction requires: mops
+// CHECK-NEXT: cpyfp [x0]!, [x1]!, x2!
index 064c89a..9274e80 100644 (file)
@@ -83,3 +83,12 @@ paciasp
 .arch_extension flagm
 cfinv
 // CHECK: cfinv
+
+.arch_extension hbc
+lbl:
+    bc.eq lbl
+// CHECK: bc.eq lbl
+
+.arch_extension mops
+cpyfp [x0]!, [x1]!, x2!
+// CHECK: cpyfp [x0]!, [x1]!, x2!