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 @@ -3676,6 +3676,9 @@ {"the", {AArch64::FeatureTHE}}, {"d128", {AArch64::FeatureD128}}, {"lse128", {AArch64::FeatureLSE128}}, + {"ite", {AArch64::FeatureITE}}, + {"cssc", {AArch64::FeatureCSSC}}, + {"rcpc3", {AArch64::FeatureRCPC3}}, // 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,6 +1,6 @@ // 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,+hbc,+mops \ -// RUN: -mattr=+rcpc3,+lse128,+d128,+the,+rasv2 \ +// RUN: -mattr=+rcpc3,+lse128,+d128,+the,+rasv2,+ite,+cssc,+specres2 \ // RUN: -filetype asm -o - %s 2>&1 | FileCheck %s .arch_extension axp64 @@ -70,6 +70,13 @@ // CHECK: [[@LINE-1]]:1: error: instruction requires: lse // CHECK-NEXT: casa w5, w7, [x20] +swpp x0, x2, [x3] +// CHECK-NOT: [[@LINE-1]]:1: error: instruction requires: lse128 +.arch_extension nolse128 +swpp x0, x2, [x3] +// CHECK: [[@LINE-1]]:1: error: instruction requires: lse128 +// CHECK-NEXT: swpp x0, x2, [x3] + cfp rctx, x0 // CHECK-NOT: [[@LINE-1]]:5: error: CFPRCTX requires: predres .arch_extension nopredres @@ -77,6 +84,13 @@ // CHECK: [[@LINE-1]]:5: error: CFPRCTX requires: predres // CHECK-NEXT: cfp rctx, x0 +cosp rctx, x0 +// CHECK-NOT: [[@LINE-1]]:6: error: COSP requires: predres2 +.arch_extension nopredres2 +cosp rctx, x0 +// CHECK: [[@LINE-1]]:6: error: COSP requires: predres2 +// CHECK-NEXT: cosp rctx, x0 + dc cvadp, x7 // CHECK-NOT: [[@LINE-1]]:4: error: DC CVADP requires: ccdp .arch_extension noccdp @@ -119,6 +133,13 @@ // CHECK: [[@LINE-1]]:1: error: instruction requires: rcpc // CHECK-NEXT: ldapr x0, [x1] +stilp w24, w0, [x16, #-8]! +// CHECK-NOT: [[@LINE-1]]:1: error: instruction requires: rcpc3 +.arch_extension norcpc3 +stilp w24, w0, [x16, #-8]! +// CHECK: [[@LINE-1]]:1: error: instruction requires: rcpc3 +// CHECK-NEXT: stilp w24, w0, [x16, #-8]! + ld64b x0, [x13] // CHECK-NOT: [[@LINE-1]]:1: error: instruction requires: ls64 .arch_extension nols64 @@ -169,6 +190,20 @@ // CHECK: [[@LINE-1]]:1: error: instruction requires: the // CHECK-NEXT: rcwswp x0, x1, [x2] +trcit x0 +// CHECK-NOT: [[@LINE-1]]:1: error: instruction requires: ite +.arch_extension noite +trcit x0 +// CHECK: [[@LINE-1]]:1: error: instruction requires: ite +// CHECK-NEXT: trcit x0 + +umax x0, x1, x2 +// CHECK-NOT: [[@LINE-1]]:1: error: instruction requires: cssc +.arch_extension nocssc +umax x0, x1, x2 +// CHECK: [[@LINE-1]]:1: error: instruction requires: cssc +// CHECK-NEXT: umax x0, x1, x2 + mrs x0, ERXGSR_EL1 // CHECK-NOT: [[@LINE-1]]:9: error: expected readable system register .arch_extension norasv2 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 @@ -36,10 +36,18 @@ casa w5, w7, [x20] // CHECK: casa w5, w7, [x20] +.arch_extension lse128 +swpp x0, x2, [x3] +// CHECK: swpp x0, x2, [x3] + .arch_extension predres cfp rctx, x0 // CHECK: cfp rctx, x0 +.arch_extension predres2 +cosp rctx, x0 +// CHECK: cosp rctx, x0 + .arch_extension ccdp dc cvadp, x7 // CHECK: dc cvadp, x7 @@ -72,6 +80,10 @@ ldapr x0, [x1] // CHECK: ldapr x0, [x1] +.arch_extension rcpc3 +stilp w24, w0, [x16, #-8]! +// CHECK: stilp w24, w0, [x16, #-8]! + .arch_extension ls64 ld64b x0, [x13] // CHECK: ld64b x0, [x13] @@ -108,3 +120,11 @@ .arch_extension rasv2 mrs x0, ERXGSR_EL1 // CHECK: mrs x0, ERXGSR_EL1 + +.arch_extension ite +trcit x0 +// CHECK: trcit x0 + +.arch_extension cssc +umax x0, x1, x2 +// CHECK: umax x0, x1, x2