diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp --- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp +++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp @@ -3284,6 +3284,8 @@ {"sme", {AArch64::FeatureSME}}, {"sme-f64", {AArch64::FeatureSMEF64}}, {"sme-i64", {AArch64::FeatureSMEI64}}, + {"hbc", {AArch64::FeatureHBC}}, + {"mops", {AArch64::FeatureMOPS}}, // FIXME: Unsupported extensions {"lor", {}}, {"rdma", {}}, diff --git a/llvm/test/MC/AArch64/directive-arch_extension-negative.s b/llvm/test/MC/AArch64/directive-arch_extension-negative.s --- a/llvm/test/MC/AArch64/directive-arch_extension-negative.s +++ b/llvm/test/MC/AArch64/directive-arch_extension-negative.s @@ -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 // 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! diff --git a/llvm/test/MC/AArch64/directive-arch_extension.s b/llvm/test/MC/AArch64/directive-arch_extension.s --- a/llvm/test/MC/AArch64/directive-arch_extension.s +++ b/llvm/test/MC/AArch64/directive-arch_extension.s @@ -83,3 +83,12 @@ .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!