[clang] [lldb] [llvm] Targetparser from tablegen full (PR #90320)
Tomas Matheson via cfe-commits
cfe-commits at lists.llvm.org
Sat Apr 27 00:54:34 PDT 2024
https://github.com/tmatheson-arm created https://github.com/llvm/llvm-project/pull/90320
This is https://github.com/llvm/llvm-project/pull/90314, plus the renaming of several `SubtargetFeature`s or `ArmExtKind` (`AEK_*`) enum values to bring them all inline. Split into a separate PR to make review easier.
Thanks to `ExtensionSet::toLLVMFeatureList`, all values of `ArchExtKind` should correspond to a particular `-target-feature`. Therefore as a general rule I have updated the `AEK_` to match the `-target-feature` name, but if the `-target-feature` name seemed needlessly inconsistent with both the command line flags and the actual `FEAT_` name as defined in the Arm ARM, I have changed the `-target-feature` name instead/also. In these cases it naturally changes the attributes as written in IR, i.e. is a breaking change in IR. Is that an issue?
This renaming could be avoided by subclassing `SubtargetFeature` and adding an `EnumName` field (e.g. `AEK_SPE`), allowing it to differ from the `FieldName` (e.g. `HasSPE`). However I think it would be better to fix the inconsistencies instead, and later add a subclass of `SubtargetFeature` that enforced the consistency.
>From 171acdbd2b25960c94513c66d155a06bbd237580 Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Fri, 26 Apr 2024 19:50:41 +0100
Subject: [PATCH 01/15] [AArch64][TargetParser] autogen ArchExtKind enum
Thanks to ExtensionSet::toLLVMFeatureList, all values of ArchExtKind
should correpond to a particular -target-feature. The valid values of
-target-feature are in turn defined by SubtargetFeature defs.
Therefore we can generate ArchExtKind from the tablegen data. To do
this, we consider only SubtargetFeature defs which have a FieldName
starting with "Has". This is a bit of magic, and it would be better to
limit this by subclassing SubtargetFeature instead.
Because the Has* FieldNames do not always correpond to the AEK_ names,
which do not always correpond to -march strings, some additional enum
entries have been added to remap the names. Follow up commits will
rename either the FieldNames or the AEK_ names or both, in order to make
them all consistent.
---
.../llvm/TargetParser/AArch64TargetParser.h | 103 ++++--------------
llvm/utils/TableGen/ARMTargetDefEmitter.cpp | 16 +++
2 files changed, 38 insertions(+), 81 deletions(-)
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index 0d1cfd152151aa..0d1d46d9c2ca37 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -103,90 +103,31 @@ enum CPUFeatures {
static_assert(FEAT_MAX < 62,
"Number of features in CPUFeatures are limited to 62 entries");
-// Arch extension modifiers for CPUs. These are labelled with their Arm ARM
-// feature name (though the canonical reference for those is AArch64.td)
-// clang-format off
+// Each ArchExtKind correponds directly to a possible -target-feature.
enum ArchExtKind : unsigned {
- AEK_NONE = 1,
- AEK_CRC = 2, // FEAT_CRC32
- AEK_CRYPTO = 3,
- AEK_FP = 4, // FEAT_FP
- AEK_SIMD = 5, // FEAT_AdvSIMD
- AEK_FP16 = 6, // FEAT_FP16
- AEK_PROFILE = 7, // FEAT_SPE
- AEK_RAS = 8, // FEAT_RAS, FEAT_RASv1p1
- AEK_LSE = 9, // FEAT_LSE
- AEK_SVE = 10, // FEAT_SVE
- AEK_DOTPROD = 11, // FEAT_DotProd
- AEK_RCPC = 12, // FEAT_LRCPC
- AEK_RDM = 13, // FEAT_RDM
- AEK_SM4 = 14, // FEAT_SM4, FEAT_SM3
- AEK_SHA3 = 15, // FEAT_SHA3, FEAT_SHA512
- AEK_SHA2 = 16, // FEAT_SHA1, FEAT_SHA256
- AEK_AES = 17, // FEAT_AES, FEAT_PMULL
- AEK_FP16FML = 18, // FEAT_FHM
- AEK_RAND = 19, // FEAT_RNG
- AEK_MTE = 20, // FEAT_MTE, FEAT_MTE2
- AEK_SSBS = 21, // FEAT_SSBS, FEAT_SSBS2
- AEK_SB = 22, // FEAT_SB
- AEK_PREDRES = 23, // FEAT_SPECRES
- AEK_SVE2 = 24, // FEAT_SVE2
- AEK_SVE2AES = 25, // FEAT_SVE_AES, FEAT_SVE_PMULL128
- AEK_SVE2SM4 = 26, // FEAT_SVE_SM4
- AEK_SVE2SHA3 = 27, // FEAT_SVE_SHA3
- AEK_SVE2BITPERM = 28, // FEAT_SVE_BitPerm
- AEK_TME = 29, // FEAT_TME
- AEK_BF16 = 30, // FEAT_BF16
- AEK_I8MM = 31, // FEAT_I8MM
- AEK_F32MM = 32, // FEAT_F32MM
- AEK_F64MM = 33, // FEAT_F64MM
- AEK_LS64 = 34, // FEAT_LS64, FEAT_LS64_V, FEAT_LS64_ACCDATA
- AEK_BRBE = 35, // FEAT_BRBE
- AEK_PAUTH = 36, // FEAT_PAuth
- AEK_FLAGM = 37, // FEAT_FlagM
- AEK_SME = 38, // FEAT_SME
- AEK_SMEF64F64 = 39, // FEAT_SME_F64F64
- AEK_SMEI16I64 = 40, // FEAT_SME_I16I64
- AEK_HBC = 41, // FEAT_HBC
- AEK_MOPS = 42, // FEAT_MOPS
- AEK_PERFMON = 43, // FEAT_PMUv3
- AEK_SME2 = 44, // FEAT_SME2
- AEK_SVE2p1 = 45, // FEAT_SVE2p1
- AEK_SME2p1 = 46, // FEAT_SME2p1
- AEK_B16B16 = 47, // FEAT_B16B16
- AEK_SMEF16F16 = 48, // FEAT_SMEF16F16
- AEK_CSSC = 49, // FEAT_CSSC
- AEK_RCPC3 = 50, // FEAT_LRCPC3
- AEK_THE = 51, // FEAT_THE
- AEK_D128 = 52, // FEAT_D128
- AEK_LSE128 = 53, // FEAT_LSE128
- AEK_SPECRES2 = 54, // FEAT_SPECRES2
- AEK_RASv2 = 55, // FEAT_RASv2
- AEK_ITE = 56, // FEAT_ITE
- AEK_GCS = 57, // FEAT_GCS
- AEK_FPMR = 58, // FEAT_FPMR
- AEK_FP8 = 59, // FEAT_FP8
- AEK_FAMINMAX = 60, // FEAT_FAMINMAX
- AEK_FP8FMA = 61, // FEAT_FP8FMA
- AEK_SSVE_FP8FMA = 62, // FEAT_SSVE_FP8FMA
- AEK_FP8DOT2 = 63, // FEAT_FP8DOT2
- AEK_SSVE_FP8DOT2 = 64, // FEAT_SSVE_FP8DOT2
- AEK_FP8DOT4 = 65, // FEAT_FP8DOT4
- AEK_SSVE_FP8DOT4 = 66, // FEAT_SSVE_FP8DOT4
- AEK_LUT = 67, // FEAT_LUT
- AEK_SME_LUTv2 = 68, // FEAT_SME_LUTv2
- AEK_SMEF8F16 = 69, // FEAT_SME_F8F16
- AEK_SMEF8F32 = 70, // FEAT_SME_F8F32
- AEK_SMEFA64 = 71, // FEAT_SME_FA64
- AEK_CPA = 72, // FEAT_CPA
- AEK_PAUTHLR = 73, // FEAT_PAuth_LR
- AEK_TLBIW = 74, // FEAT_TLBIW
- AEK_JSCVT = 75, // FEAT_JSCVT
- AEK_FCMA = 76, // FEAT_FCMA
- AEK_NUM_EXTENSIONS
+ AEK_NONE = 1,
+#define ARM_SUBTARGET_FEATURE(NAME, ENUM) ENUM,
+#include "llvm/TargetParser/AArch64TargetParserDef.inc"
+ AEK_NUM_EXTENSIONS,
+
+ // FIXME temporary fixes for inconsistent naming.
+ AEK_F32MM = AEK_MATMULFP32,
+ AEK_F64MM = AEK_MATMULFP64,
+ AEK_FCMA = AEK_COMPLXNUM,
+ AEK_FP = AEK_FPARMV8,
+ AEK_FP16 = AEK_FULLFP16,
+ AEK_I8MM = AEK_MATMULINT8,
+ AEK_JSCVT = AEK_JS,
+ AEK_PROFILE = AEK_SPE,
+ AEK_RASv2 = AEK_RASV2,
+ AEK_RAND = AEK_RANDGEN,
+ AEK_SIMD = AEK_NEON,
+ AEK_SME2p1 = AEK_SME2P1,
+ AEK_SVE2p1 = AEK_SVE2P1,
+ AEK_SME_LUTv2 = AEK_SME_LUTV2,
+
};
using ExtensionBitset = Bitset<AEK_NUM_EXTENSIONS>;
-// clang-format on
// Represents an extension that can be enabled with -march=<arch>+<extension>.
// Typically these correspond to Arm Architecture extensions, unlike
diff --git a/llvm/utils/TableGen/ARMTargetDefEmitter.cpp b/llvm/utils/TableGen/ARMTargetDefEmitter.cpp
index db87ac3336c184..2e340b534a4cba 100644
--- a/llvm/utils/TableGen/ARMTargetDefEmitter.cpp
+++ b/llvm/utils/TableGen/ARMTargetDefEmitter.cpp
@@ -56,6 +56,22 @@ static void EmitARMTargetDef(RecordKeeper &RK, raw_ostream &OS) {
for (const StringRef &Arch : ARMArchVals.keys())
OS << "ARM_ARCHITECTURE(" << Arch << ")\n";
OS << "\n#undef ARM_ARCHITECTURE\n\n";
+
+ OS << "#ifndef ARM_SUBTARGET_FEATURE\n"
+ << "#define ARM_SUBTARGET_FEATURE(NAME, ENUM)\n"
+ << "#endif\n\n";
+ // Look for all SubtargetFeatures where the FieldName starts with "Has"
+ // FIXME make a subclass of SubtargetFeature instead.
+ for (const Record *Rec : RK.getAllDerivedDefinitions("SubtargetFeature")) {
+ StringRef Name = Rec->getValueAsString("Name");
+ StringRef FieldName = Rec->getValueAsString("FieldName");
+ if (!FieldName.starts_with("Has"))
+ continue;
+ // upper() removes dashes "-"
+ std::string Enum = std::string("AEK_") + FieldName.substr(3).upper();
+ OS << "ARM_SUBTARGET_FEATURE(" << Name << ", " << Enum << ")\n";
+ }
+ OS << "\n#undef ARM_SUBTARGET_FEATURE\n\n";
}
static TableGen::Emitter::Opt
>From d6d31bab79aff85a7c6958db1dbdbaeb4b67efdc Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Fri, 26 Apr 2024 19:58:07 +0100
Subject: [PATCH 02/15] Rename HasMatmulFP32 to HasF32MM
---
clang/lib/Basic/Targets/AArch64.cpp | 6 +++---
clang/lib/Basic/Targets/AArch64.h | 2 +-
llvm/include/llvm/TargetParser/AArch64TargetParser.h | 1 -
llvm/lib/Target/AArch64/AArch64Features.td | 2 +-
llvm/lib/Target/AArch64/AArch64InstrInfo.td | 4 ++--
llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td | 4 ++--
llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp | 2 +-
7 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/clang/lib/Basic/Targets/AArch64.cpp b/clang/lib/Basic/Targets/AArch64.cpp
index c8d243a8fb7aea..9bfc4045adb8ea 100644
--- a/clang/lib/Basic/Targets/AArch64.cpp
+++ b/clang/lib/Basic/Targets/AArch64.cpp
@@ -535,7 +535,7 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts,
if ((FPU & SveMode) && HasMatmulFP64)
Builder.defineMacro("__ARM_FEATURE_SVE_MATMUL_FP64", "1");
- if ((FPU & SveMode) && HasMatmulFP32)
+ if ((FPU & SveMode) && HasF32MM)
Builder.defineMacro("__ARM_FEATURE_SVE_MATMUL_FP32", "1");
if ((FPU & SveMode) && HasMatMul)
@@ -721,7 +721,7 @@ bool AArch64TargetInfo::hasFeature(StringRef Feature) const {
.Case("sve", FPU & SveMode)
.Case("sve-bf16", FPU & SveMode && HasBFloat16)
.Case("sve-i8mm", FPU & SveMode && HasMatMul)
- .Case("f32mm", FPU & SveMode && HasMatmulFP32)
+ .Case("f32mm", FPU & SveMode && HasF32MM)
.Case("f64mm", FPU & SveMode && HasMatmulFP64)
.Case("sve2", FPU & SveMode && HasSVE2)
.Case("sve2-pmull128", FPU & SveMode && HasSVE2AES)
@@ -837,7 +837,7 @@ bool AArch64TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
FPU |= NeonMode;
FPU |= SveMode;
HasFullFP16 = true;
- HasMatmulFP32 = true;
+ HasF32MM = true;
}
if (Feature == "+f64mm") {
FPU |= NeonMode;
diff --git a/clang/lib/Basic/Targets/AArch64.h b/clang/lib/Basic/Targets/AArch64.h
index 12fb50286f7511..13cb8ea4eab90a 100644
--- a/clang/lib/Basic/Targets/AArch64.h
+++ b/clang/lib/Basic/Targets/AArch64.h
@@ -54,7 +54,7 @@ class LLVM_LIBRARY_VISIBILITY AArch64TargetInfo : public TargetInfo {
bool HasSVE2SM4 = false;
bool HasSVE2BitPerm = false;
bool HasMatmulFP64 = false;
- bool HasMatmulFP32 = false;
+ bool HasF32MM = false;
bool HasLSE = false;
bool HasFlagM = false;
bool HasAlternativeNZCV = false;
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index 0d1d46d9c2ca37..3be5314135bbc9 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -111,7 +111,6 @@ enum ArchExtKind : unsigned {
AEK_NUM_EXTENSIONS,
// FIXME temporary fixes for inconsistent naming.
- AEK_F32MM = AEK_MATMULFP32,
AEK_F64MM = AEK_MATMULFP64,
AEK_FCMA = AEK_COMPLXNUM,
AEK_FP = AEK_FPARMV8,
diff --git a/llvm/lib/Target/AArch64/AArch64Features.td b/llvm/lib/Target/AArch64/AArch64Features.td
index 3a3751a85afd1e..f4a135b68b8976 100644
--- a/llvm/lib/Target/AArch64/AArch64Features.td
+++ b/llvm/lib/Target/AArch64/AArch64Features.td
@@ -453,7 +453,7 @@ def FeatureTaggedGlobals : SubtargetFeature<"tagged-globals",
def FeatureMatMulInt8 : SubtargetFeature<"i8mm", "HasMatMulInt8",
"true", "Enable Matrix Multiply Int8 Extension (FEAT_I8MM)">;
-def FeatureMatMulFP32 : SubtargetFeature<"f32mm", "HasMatMulFP32",
+def FeatureF32MM : SubtargetFeature<"f32mm", "HasF32MM",
"true", "Enable Matrix Multiply FP32 Extension (FEAT_F32MM)", [FeatureSVE]>;
def FeatureMatMulFP64 : SubtargetFeature<"f64mm", "HasMatMulFP64",
diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.td b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
index 17d96370c04a59..2f197376f6adee 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrInfo.td
+++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
@@ -269,8 +269,8 @@ def HasBF16 : Predicate<"Subtarget->hasBF16()">,
def HasNoBF16 : Predicate<"!Subtarget->hasBF16()">;
def HasMatMulInt8 : Predicate<"Subtarget->hasMatMulInt8()">,
AssemblerPredicateWithAll<(all_of FeatureMatMulInt8), "i8mm">;
-def HasMatMulFP32 : Predicate<"Subtarget->hasMatMulFP32()">,
- AssemblerPredicateWithAll<(all_of FeatureMatMulFP32), "f32mm">;
+def HasF32MM : Predicate<"Subtarget->hasF32MM()">,
+ AssemblerPredicateWithAll<(all_of FeatureF32MM), "f32mm">;
def HasMatMulFP64 : Predicate<"Subtarget->hasMatMulFP64()">,
AssemblerPredicateWithAll<(all_of FeatureMatMulFP64), "f64mm">;
def HasXS : Predicate<"Subtarget->hasXS()">,
diff --git a/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td b/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
index 3331ba7f99a161..0d9f5fd2b2a416 100644
--- a/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
+++ b/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
@@ -3390,9 +3390,9 @@ let Predicates = [HasSVEorSME, HasMatMulInt8] in {
defm SUDOT_ZZZI : sve_int_dot_mixed_indexed<1, "sudot", int_aarch64_sve_sudot_lane>;
} // End HasSVEorSME, HasMatMulInt8
-let Predicates = [HasSVE, HasMatMulFP32] in {
+let Predicates = [HasSVE, HasF32MM] in {
defm FMMLA_ZZZ_S : sve_fp_matrix_mla<0, "fmmla", ZPR32, int_aarch64_sve_fmmla, nxv4f32>;
-} // End HasSVE, HasMatMulFP32
+} // End HasSVE, HasF32MM
let Predicates = [HasSVE, HasMatMulFP64] in {
defm FMMLA_ZZZ_D : sve_fp_matrix_mla<1, "fmmla", ZPR64, int_aarch64_sve_fmmla, nxv2f64>;
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index a3b966aa61550c..dc0eaa7140fe39 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -3703,7 +3703,7 @@ static const struct Extension {
{"bf16", {AArch64::FeatureBF16}},
{"compnum", {AArch64::FeatureComplxNum}},
{"dotprod", {AArch64::FeatureDotProd}},
- {"f32mm", {AArch64::FeatureMatMulFP32}},
+ {"f32mm", {AArch64::FeatureF32MM}},
{"f64mm", {AArch64::FeatureMatMulFP64}},
{"fp16", {AArch64::FeatureFullFP16}},
{"fp16fml", {AArch64::FeatureFP16FML}},
>From 8dfb0485af0a888b68f7a76794a88ef685dfed6f Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Fri, 26 Apr 2024 20:01:29 +0100
Subject: [PATCH 03/15] Rename HasMatMulFP64 to FeatureF64MM
---
clang/lib/Basic/Targets/AArch64.cpp | 6 +++---
clang/lib/Basic/Targets/AArch64.h | 2 +-
llvm/include/llvm/TargetParser/AArch64TargetParser.h | 1 -
llvm/lib/Target/AArch64/AArch64Features.td | 2 +-
llvm/lib/Target/AArch64/AArch64InstrInfo.td | 4 ++--
llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td | 8 ++++----
llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp | 4 ++--
7 files changed, 13 insertions(+), 14 deletions(-)
diff --git a/clang/lib/Basic/Targets/AArch64.cpp b/clang/lib/Basic/Targets/AArch64.cpp
index 9bfc4045adb8ea..e4288004c54af3 100644
--- a/clang/lib/Basic/Targets/AArch64.cpp
+++ b/clang/lib/Basic/Targets/AArch64.cpp
@@ -532,7 +532,7 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts,
Builder.defineMacro("__ARM_FEATURE_SVE_BF16", "1");
}
- if ((FPU & SveMode) && HasMatmulFP64)
+ if ((FPU & SveMode) && HasF64MM)
Builder.defineMacro("__ARM_FEATURE_SVE_MATMUL_FP64", "1");
if ((FPU & SveMode) && HasF32MM)
@@ -722,7 +722,7 @@ bool AArch64TargetInfo::hasFeature(StringRef Feature) const {
.Case("sve-bf16", FPU & SveMode && HasBFloat16)
.Case("sve-i8mm", FPU & SveMode && HasMatMul)
.Case("f32mm", FPU & SveMode && HasF32MM)
- .Case("f64mm", FPU & SveMode && HasMatmulFP64)
+ .Case("f64mm", FPU & SveMode && HasF64MM)
.Case("sve2", FPU & SveMode && HasSVE2)
.Case("sve2-pmull128", FPU & SveMode && HasSVE2AES)
.Case("sve2-bitperm", FPU & SveMode && HasSVE2BitPerm)
@@ -843,7 +843,7 @@ bool AArch64TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
FPU |= NeonMode;
FPU |= SveMode;
HasFullFP16 = true;
- HasMatmulFP64 = true;
+ HasF64MM = true;
}
if (Feature == "+sme") {
HasSME = true;
diff --git a/clang/lib/Basic/Targets/AArch64.h b/clang/lib/Basic/Targets/AArch64.h
index 13cb8ea4eab90a..11772b376d43c1 100644
--- a/clang/lib/Basic/Targets/AArch64.h
+++ b/clang/lib/Basic/Targets/AArch64.h
@@ -53,7 +53,7 @@ class LLVM_LIBRARY_VISIBILITY AArch64TargetInfo : public TargetInfo {
bool HasSVE2SHA3 = false;
bool HasSVE2SM4 = false;
bool HasSVE2BitPerm = false;
- bool HasMatmulFP64 = false;
+ bool HasF64MM = false;
bool HasF32MM = false;
bool HasLSE = false;
bool HasFlagM = false;
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index 3be5314135bbc9..d374b4b42e0699 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -111,7 +111,6 @@ enum ArchExtKind : unsigned {
AEK_NUM_EXTENSIONS,
// FIXME temporary fixes for inconsistent naming.
- AEK_F64MM = AEK_MATMULFP64,
AEK_FCMA = AEK_COMPLXNUM,
AEK_FP = AEK_FPARMV8,
AEK_FP16 = AEK_FULLFP16,
diff --git a/llvm/lib/Target/AArch64/AArch64Features.td b/llvm/lib/Target/AArch64/AArch64Features.td
index f4a135b68b8976..cb19d662022685 100644
--- a/llvm/lib/Target/AArch64/AArch64Features.td
+++ b/llvm/lib/Target/AArch64/AArch64Features.td
@@ -456,7 +456,7 @@ def FeatureMatMulInt8 : SubtargetFeature<"i8mm", "HasMatMulInt8",
def FeatureF32MM : SubtargetFeature<"f32mm", "HasF32MM",
"true", "Enable Matrix Multiply FP32 Extension (FEAT_F32MM)", [FeatureSVE]>;
-def FeatureMatMulFP64 : SubtargetFeature<"f64mm", "HasMatMulFP64",
+def FeatureF64MM : SubtargetFeature<"f64mm", "HasF64MM",
"true", "Enable Matrix Multiply FP64 Extension (FEAT_F64MM)", [FeatureSVE]>;
def FeatureXS : SubtargetFeature<"xs", "HasXS",
diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.td b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
index 2f197376f6adee..b7230e56abca2e 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrInfo.td
+++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
@@ -271,8 +271,8 @@ def HasMatMulInt8 : Predicate<"Subtarget->hasMatMulInt8()">,
AssemblerPredicateWithAll<(all_of FeatureMatMulInt8), "i8mm">;
def HasF32MM : Predicate<"Subtarget->hasF32MM()">,
AssemblerPredicateWithAll<(all_of FeatureF32MM), "f32mm">;
-def HasMatMulFP64 : Predicate<"Subtarget->hasMatMulFP64()">,
- AssemblerPredicateWithAll<(all_of FeatureMatMulFP64), "f64mm">;
+def HasF64MM : Predicate<"Subtarget->hasF64MM()">,
+ AssemblerPredicateWithAll<(all_of FeatureF64MM), "f64mm">;
def HasXS : Predicate<"Subtarget->hasXS()">,
AssemblerPredicateWithAll<(all_of FeatureXS), "xs">;
def HasWFxT : Predicate<"Subtarget->hasWFxT()">,
diff --git a/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td b/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
index 0d9f5fd2b2a416..bb31f370f48732 100644
--- a/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
+++ b/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
@@ -3394,7 +3394,7 @@ let Predicates = [HasSVE, HasF32MM] in {
defm FMMLA_ZZZ_S : sve_fp_matrix_mla<0, "fmmla", ZPR32, int_aarch64_sve_fmmla, nxv4f32>;
} // End HasSVE, HasF32MM
-let Predicates = [HasSVE, HasMatMulFP64] in {
+let Predicates = [HasSVE, HasF64MM] in {
defm FMMLA_ZZZ_D : sve_fp_matrix_mla<1, "fmmla", ZPR64, int_aarch64_sve_fmmla, nxv2f64>;
defm LD1RO_B_IMM : sve_mem_ldor_si<0b00, "ld1rob", Z_b, ZPR8, nxv16i8, nxv16i1, AArch64ld1ro_z>;
defm LD1RO_H_IMM : sve_mem_ldor_si<0b01, "ld1roh", Z_h, ZPR16, nxv8i16, nxv8i1, AArch64ld1ro_z>;
@@ -3404,16 +3404,16 @@ let Predicates = [HasSVE, HasMatMulFP64] in {
defm LD1RO_H : sve_mem_ldor_ss<0b01, "ld1roh", Z_h, ZPR16, GPR64NoXZRshifted16, nxv8i16, nxv8i1, AArch64ld1ro_z, am_sve_regreg_lsl1>;
defm LD1RO_W : sve_mem_ldor_ss<0b10, "ld1row", Z_s, ZPR32, GPR64NoXZRshifted32, nxv4i32, nxv4i1, AArch64ld1ro_z, am_sve_regreg_lsl2>;
defm LD1RO_D : sve_mem_ldor_ss<0b11, "ld1rod", Z_d, ZPR64, GPR64NoXZRshifted64, nxv2i64, nxv2i1, AArch64ld1ro_z, am_sve_regreg_lsl3>;
-} // End HasSVE, HasMatMulFP64
+} // End HasSVE, HasF64MM
-let Predicates = [HasSVEorSME, HasMatMulFP64] in {
+let Predicates = [HasSVEorSME, HasF64MM] in {
defm ZIP1_ZZZ_Q : sve_int_perm_bin_perm_128_zz<0b00, 0, "zip1", int_aarch64_sve_zip1q>;
defm ZIP2_ZZZ_Q : sve_int_perm_bin_perm_128_zz<0b00, 1, "zip2", int_aarch64_sve_zip2q>;
defm UZP1_ZZZ_Q : sve_int_perm_bin_perm_128_zz<0b01, 0, "uzp1", int_aarch64_sve_uzp1q>;
defm UZP2_ZZZ_Q : sve_int_perm_bin_perm_128_zz<0b01, 1, "uzp2", int_aarch64_sve_uzp2q>;
defm TRN1_ZZZ_Q : sve_int_perm_bin_perm_128_zz<0b11, 0, "trn1", int_aarch64_sve_trn1q>;
defm TRN2_ZZZ_Q : sve_int_perm_bin_perm_128_zz<0b11, 1, "trn2", int_aarch64_sve_trn2q>;
-} // End HasSVEorSME, HasMatMulFP64
+} // End HasSVEorSME, HasF64MM
let Predicates = [HasSVE2orSME] in {
// SVE2 integer multiply-add (indexed)
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index dc0eaa7140fe39..b2d550117e7024 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -3704,7 +3704,7 @@ static const struct Extension {
{"compnum", {AArch64::FeatureComplxNum}},
{"dotprod", {AArch64::FeatureDotProd}},
{"f32mm", {AArch64::FeatureF32MM}},
- {"f64mm", {AArch64::FeatureMatMulFP64}},
+ {"f64mm", {AArch64::FeatureF64MM}},
{"fp16", {AArch64::FeatureFullFP16}},
{"fp16fml", {AArch64::FeatureFP16FML}},
{"i8mm", {AArch64::FeatureMatMulInt8}},
@@ -3731,7 +3731,7 @@ static const struct Extension {
{"sme-lutv2", {AArch64::FeatureSME_LUTv2}},
{"sme-f8f16", {AArch64::FeatureSMEF8F16}},
{"sme-f8f32", {AArch64::FeatureSMEF8F32}},
- {"sme-fa64", {AArch64::FeatureSMEFA64}},
+ {"sme-fa64", {AArch64::FeatureSMEFA64}},
{"cpa", {AArch64::FeatureCPA}},
{"tlbiw", {AArch64::FeatureTLBIW}},
};
>From 958172f354446539c29cf414e221d32de957bc3a Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Fri, 26 Apr 2024 20:15:31 +0100
Subject: [PATCH 04/15] Rename +complxnum to +fcma, etc
---
clang/test/CodeGen/aarch64-targetattr.c | 12 ++---
.../test/CodeGen/attr-target-clones-aarch64.c | 2 +-
clang/test/CodeGen/attr-target-version.c | 2 +-
.../Preprocessor/aarch64-target-features.c | 10 ++--
.../llvm/TargetParser/AArch64TargetParser.h | 3 +-
llvm/lib/Target/AArch64/AArch64Features.td | 6 +--
.../Target/AArch64/AArch64ISelLowering.cpp | 5 +-
.../lib/Target/AArch64/AArch64InstrFormats.td | 16 +++---
llvm/lib/Target/AArch64/AArch64InstrInfo.td | 12 ++---
llvm/lib/Target/AArch64/AArch64Processors.td | 6 +--
.../AArch64/AsmParser/AArch64AsmParser.cpp | 2 +-
...-deinterleaving-add-mull-fixed-contract.ll | 2 +-
...plex-deinterleaving-add-mull-fixed-fast.ll | 2 +-
.../AArch64/complex-deinterleaving-crash.ll | 2 +-
.../AArch64/complex-deinterleaving-f16-add.ll | 12 ++---
.../AArch64/complex-deinterleaving-f16-mul.ll | 2 +-
.../AArch64/complex-deinterleaving-f32-add.ll | 2 +-
.../AArch64/complex-deinterleaving-f32-mul.ll | 2 +-
.../AArch64/complex-deinterleaving-f64-add.ll | 2 +-
.../AArch64/complex-deinterleaving-f64-mul.ll | 2 +-
.../complex-deinterleaving-mixed-cases.ll | 2 +-
.../complex-deinterleaving-multiuses.ll | 2 +-
.../complex-deinterleaving-reductions.ll | 2 +-
.../AArch64/complex-deinterleaving-splat.ll | 2 +-
.../complex-deinterleaving-uniform-cases.ll | 2 +-
llvm/test/MC/AArch64/armv8.3a-complex.s | 2 +-
llvm/test/MC/AArch64/armv8.3a-complex_bad.s | 2 +-
.../MC/AArch64/armv8.3a-complex_missing.s | 52 +++++++++----------
.../test/MC/AArch64/armv8.3a-complex_nofp16.s | 2 +-
.../MC/AArch64/armv8.3a-complex_nofp16_bad.s | 2 +-
llvm/test/MC/AArch64/armv8r-sysreg.s | 4 +-
.../Disassembler/AArch64/armv8.3a-complex.txt | 2 +-
.../TargetParser/TargetParserTest.cpp | 6 +--
33 files changed, 92 insertions(+), 94 deletions(-)
diff --git a/clang/test/CodeGen/aarch64-targetattr.c b/clang/test/CodeGen/aarch64-targetattr.c
index bf4c1476d8815a..531f33fbf8797e 100644
--- a/clang/test/CodeGen/aarch64-targetattr.c
+++ b/clang/test/CodeGen/aarch64-targetattr.c
@@ -97,19 +97,19 @@ void minusarch() {}
// CHECK: attributes #0 = { {{.*}} "target-features"="+crc,+fp-armv8,+lse,+neon,+ras,+rdm,+v8.1a,+v8.2a,+v8a" }
// CHECK: attributes #1 = { {{.*}} "target-features"="+crc,+fp-armv8,+fullfp16,+lse,+neon,+ras,+rdm,+sve,+v8.1a,+v8.2a,+v8a" }
// CHECK: attributes #2 = { {{.*}} "target-features"="+crc,+fp-armv8,+fullfp16,+lse,+neon,+ras,+rdm,+sve,+sve2,+v8.1a,+v8.2a,+v8a" }
-// CHECK: attributes #3 = { {{.*}} "target-features"="+bf16,+complxnum,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+ras,+rcpc,+rdm,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" }
-// CHECK: attributes #4 = { {{.*}} "target-cpu"="cortex-a710" "target-features"="+bf16,+complxnum,+crc,+dotprod,+flagm,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+mte,+neon,+pauth,+ras,+rcpc,+rdm,+sb,+sve,+sve2,+sve2-bitperm" }
+// CHECK: attributes #3 = { {{.*}} "target-features"="+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+ras,+rcpc,+rdm,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" }
+// CHECK: attributes #4 = { {{.*}} "target-cpu"="cortex-a710" "target-features"="+bf16,+fcma,+crc,+dotprod,+flagm,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+mte,+neon,+pauth,+ras,+rcpc,+rdm,+sb,+sve,+sve2,+sve2-bitperm" }
// CHECK: attributes #5 = { {{.*}} "tune-cpu"="cortex-a710" }
// CHECK: attributes #6 = { {{.*}} "target-cpu"="generic" }
// CHECK: attributes #7 = { {{.*}} "tune-cpu"="generic" }
// CHECK: attributes #8 = { {{.*}} "target-cpu"="neoverse-n1" "target-features"="+aes,+crc,+dotprod,+fp-armv8,+fullfp16,+lse,+neon,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs" "tune-cpu"="cortex-a710" }
// CHECK: attributes #9 = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+sve" "tune-cpu"="cortex-a710" }
-// CHECK: attributes #10 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+complxnum,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+rand,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,+sve,+sve2" }
-// CHECK: attributes #11 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+complxnum,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+rand,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,-sve" }
+// CHECK: attributes #10 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+rand,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,+sve,+sve2" }
+// CHECK: attributes #11 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+rand,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,-sve" }
// CHECK: attributes #12 = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+sve" }
// CHECK: attributes #13 = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+sve,-sve2" }
// CHECK: attributes #14 = { {{.*}} "target-features"="+fullfp16" }
-// CHECK: attributes #15 = { {{.*}} "target-cpu"="neoverse-n1" "target-features"="+aes,+bf16,+complxnum,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" "tune-cpu"="cortex-a710" }
-// CHECK: attributes #16 = { {{.*}} "branch-target-enforcement"="true" "guarded-control-stack"="true" {{.*}} "target-features"="+aes,+bf16,+complxnum,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" "tune-cpu"="cortex-a710" }
+// CHECK: attributes #15 = { {{.*}} "target-cpu"="neoverse-n1" "target-features"="+aes,+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" "tune-cpu"="cortex-a710" }
+// CHECK: attributes #16 = { {{.*}} "branch-target-enforcement"="true" "guarded-control-stack"="true" {{.*}} "target-features"="+aes,+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" "tune-cpu"="cortex-a710" }
// CHECK: attributes #17 = { {{.*}} "target-features"="-neon" }
// CHECK: attributes #18 = { {{.*}} "target-features"="-v9.3a" }
diff --git a/clang/test/CodeGen/attr-target-clones-aarch64.c b/clang/test/CodeGen/attr-target-clones-aarch64.c
index 8c8b951e9118d7..7b95d4a6a434f9 100644
--- a/clang/test/CodeGen/attr-target-clones-aarch64.c
+++ b/clang/test/CodeGen/attr-target-clones-aarch64.c
@@ -412,7 +412,7 @@ inline int __attribute__((target_clones("fp16", "sve2-bitperm+fcma", "default"))
// CHECK: attributes #[[ATTR5:[0-9]+]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+crc,+dotprod,+fp-armv8,+neon" }
// CHECK: attributes #[[ATTR6:[0-9]+]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
// CHECK: attributes #[[ATTR7:[0-9]+]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+neon" }
-// CHECK: attributes #[[ATTR8:[0-9]+]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+complxnum,+fp-armv8,+fullfp16,+neon,+sve,+sve2,+sve2-bitperm" }
+// CHECK: attributes #[[ATTR8:[0-9]+]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fcma,+fp-armv8,+fullfp16,+neon,+sve,+sve2,+sve2-bitperm" }
// CHECK: attributes #[[ATTR9:[0-9]+]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+neon,+rand" }
// CHECK: attributes #[[ATTR10:[0-9]+]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+predres,+rcpc" }
// CHECK: attributes #[[ATTR11:[0-9]+]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+neon,+sve,+sve2,+sve2-aes,+wfxt" }
diff --git a/clang/test/CodeGen/attr-target-version.c b/clang/test/CodeGen/attr-target-version.c
index dd4cbbf5a89860..ab6d5cd76b3303 100644
--- a/clang/test/CodeGen/attr-target-version.c
+++ b/clang/test/CodeGen/attr-target-version.c
@@ -1152,7 +1152,7 @@ int caller(void) { return used_def_without_default_decl() + used_decl_without_de
// CHECK: attributes #[[ATTR20:[0-9]+]] = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+neon,+rdm,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR21]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+jsconv,+neon,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR22]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+aes,+f64mm,+fullfp16,+neon,+sve,-fp-armv8,-v9.5a" }
-// CHECK: attributes #[[ATTR23]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+bf16,+complxnum,+fullfp16,+neon,+rdm,+sme,-fp-armv8,-v9.5a" }
+// CHECK: attributes #[[ATTR23]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+bf16,+fcma,+fullfp16,+neon,+rdm,+sme,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR24]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+f32mm,+fullfp16,+i8mm,+neon,+sha2,+sha3,+sve,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR25]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+bf16,+dit,+fullfp16,+neon,+sve,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR26]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+ccpp,+rcpc,-fp-armv8,-v9.5a" }
diff --git a/clang/test/Preprocessor/aarch64-target-features.c b/clang/test/Preprocessor/aarch64-target-features.c
index 85762b7fed4d71..0290d73ac31b94 100644
--- a/clang/test/Preprocessor/aarch64-target-features.c
+++ b/clang/test/Preprocessor/aarch64-target-features.c
@@ -318,15 +318,15 @@
// CHECK-MCPU-APPLE-A7: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8a" "-target-feature" "+aes"{{.*}} "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-APPLE-A10: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8a" "-target-feature" "+aes"{{.*}} "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-APPLE-A11: "-cc1"{{.*}} "-triple" "aarch64{{.*}}"{{.*}}"-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.2a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
-// CHECK-MCPU-APPLE-A12: "-cc1"{{.*}} "-triple" "aarch64"{{.*}} "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.3a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+complxnum" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
+// CHECK-MCPU-APPLE-A12: "-cc1"{{.*}} "-triple" "aarch64"{{.*}} "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.3a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fcma" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-A34: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
-// CHECK-MCPU-APPLE-A13: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "apple-a13" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.4a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+complxnum" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+sha3" "-target-feature" "+neon"
+// CHECK-MCPU-APPLE-A13: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "apple-a13" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.4a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+fcma" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+sha3" "-target-feature" "+neon"
// CHECK-MCPU-A35: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-A53: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-A57: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-A72: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-CORTEX-A73: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
-// CHECK-MCPU-CORTEX-R82: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8r" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+complxnum" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sb" "-target-feature" "+neon" "-target-feature" "+ssbs"
+// CHECK-MCPU-CORTEX-R82: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8r" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+fcma" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sb" "-target-feature" "+neon" "-target-feature" "+ssbs"
// CHECK-MCPU-M3: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-M4: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.2a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-KRYO: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
@@ -335,10 +335,10 @@
// CHECK-MCPU-CARMEL: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.2a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
// RUN: %clang -target x86_64-apple-macosx -arch arm64 -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-ARCH-ARM64 %s
-// CHECK-ARCH-ARM64: "-target-cpu" "apple-m1" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.5a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+complxnum" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+sha3" "-target-feature" "+neon"
+// CHECK-ARCH-ARM64: "-target-cpu" "apple-m1" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.5a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+fcma" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+sha3" "-target-feature" "+neon"
// RUN: %clang -target x86_64-apple-macosx -arch arm64_32 -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-ARCH-ARM64_32 %s
-// CHECK-ARCH-ARM64_32: "-target-cpu" "apple-s4" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.3a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+complxnum" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
+// CHECK-ARCH-ARM64_32: "-target-cpu" "apple-s4" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.3a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fcma" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
// RUN: %clang -target aarch64 -march=armv8-a+fp+simd+crc+crypto -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MARCH-1 %s
// RUN: %clang -target aarch64 -march=armv8-a+nofp+nosimd+nocrc+nocrypto+fp+simd+crc+crypto -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MARCH-1 %s
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index d374b4b42e0699..2736cc1dae1965 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -111,7 +111,6 @@ enum ArchExtKind : unsigned {
AEK_NUM_EXTENSIONS,
// FIXME temporary fixes for inconsistent naming.
- AEK_FCMA = AEK_COMPLXNUM,
AEK_FP = AEK_FPARMV8,
AEK_FP16 = AEK_FULLFP16,
AEK_I8MM = AEK_MATMULINT8,
@@ -167,7 +166,7 @@ inline constexpr ExtensionInfo Extensions[] = {
{"ebf16", AArch64::AEK_NONE, {}, {}, FEAT_EBF16, "+bf16", 290},
{"f32mm", AArch64::AEK_F32MM, "+f32mm", "-f32mm", FEAT_SVE_F32MM, "+sve,+f32mm,+fullfp16,+fp-armv8,+neon", 350},
{"f64mm", AArch64::AEK_F64MM, "+f64mm", "-f64mm", FEAT_SVE_F64MM, "+sve,+f64mm,+fullfp16,+fp-armv8,+neon", 360},
- {"fcma", AArch64::AEK_FCMA, "+complxnum", "-complxnum", FEAT_FCMA, "+fp-armv8,+neon,+complxnum", 220},
+ {"fcma", AArch64::AEK_FCMA, "+fcma", "-fcma", FEAT_FCMA, "+fp-armv8,+neon,+fcma", 220},
{"flagm", AArch64::AEK_FLAGM, "+flagm", "-flagm", FEAT_FLAGM, "+flagm", 20},
{"flagm2", AArch64::AEK_NONE, {}, {}, FEAT_FLAGM2, "+flagm,+altnzcv", 30},
{"fp", AArch64::AEK_FP, "+fp-armv8", "-fp-armv8", FEAT_FP, "+fp-armv8,+neon", 90},
diff --git a/llvm/lib/Target/AArch64/AArch64Features.td b/llvm/lib/Target/AArch64/AArch64Features.td
index cb19d662022685..b88dabe368eb56 100644
--- a/llvm/lib/Target/AArch64/AArch64Features.td
+++ b/llvm/lib/Target/AArch64/AArch64Features.td
@@ -327,8 +327,8 @@ def FeatureCCIDX : SubtargetFeature<
"ccidx", "HasCCIDX", "true",
"Enable v8.3-A Extend of the CCSIDR number of sets (FEAT_CCIDX)">;
-def FeatureComplxNum : SubtargetFeature<
- "complxnum", "HasComplxNum", "true",
+def FeatureFCMA : SubtargetFeature<
+ "fcma", "HasFCMA", "true",
"Enable v8.3-A Floating-point complex number support (FEAT_FCMA)",
[FeatureNEON]>;
@@ -650,7 +650,7 @@ def HasV8_2aOps : SubtargetFeature<"v8.2a", "HasV8_2aOps", "true",
def HasV8_3aOps : SubtargetFeature<"v8.3a", "HasV8_3aOps", "true",
"Support ARM v8.3a instructions", [HasV8_2aOps, FeatureRCPC, FeaturePAuth,
- FeatureJS, FeatureCCIDX, FeatureComplxNum]>;
+ FeatureJS, FeatureCCIDX, FeatureFCMA]>;
def HasV8_4aOps : SubtargetFeature<"v8.4a", "HasV8_4aOps", "true",
"Support ARM v8.4a instructions", [HasV8_3aOps, FeatureDotProd,
diff --git a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
index 8e9782c1930c3c..5caf6e59e98faa 100644
--- a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+++ b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
@@ -27631,8 +27631,7 @@ bool AArch64TargetLowering::isTargetCanonicalConstantNode(SDValue Op) const {
}
bool AArch64TargetLowering::isComplexDeinterleavingSupported() const {
- return Subtarget->hasSVE() || Subtarget->hasSVE2() ||
- Subtarget->hasComplxNum();
+ return Subtarget->hasSVE() || Subtarget->hasSVE2() || Subtarget->hasFCMA();
}
bool AArch64TargetLowering::isComplexDeinterleavingOperationSupported(
@@ -27643,7 +27642,7 @@ bool AArch64TargetLowering::isComplexDeinterleavingOperationSupported(
// If the vector is scalable, SVE is enabled, implying support for complex
// numbers. Otherwise, we need to ensure complex number support is available
- if (!VTy->isScalableTy() && !Subtarget->hasComplxNum())
+ if (!VTy->isScalableTy() && !Subtarget->hasFCMA())
return false;
auto *ScalarTy = VTy->getScalarType();
diff --git a/llvm/lib/Target/AArch64/AArch64InstrFormats.td b/llvm/lib/Target/AArch64/AArch64InstrFormats.td
index 1f437d0ed6f8d7..cad38cf2e67273 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrFormats.td
+++ b/llvm/lib/Target/AArch64/AArch64InstrFormats.td
@@ -11351,7 +11351,7 @@ class BaseSIMDThreeSameVectorComplex<bit Q, bit U, bits<2> size, bits<3> opcode,
//8.3 CompNum - Floating-point complex number support
multiclass SIMDThreeSameVectorComplexHSD<bit U, bits<3> opcode, Operand rottype,
string asm, SDPatternOperator OpNode>{
- let Predicates = [HasComplxNum, HasNEON, HasFullFP16] in {
+ let Predicates = [HasFCMA, HasNEON, HasFullFP16] in {
def v4f16 : BaseSIMDThreeSameVectorComplex<0, U, 0b01, opcode, V64, rottype,
asm, ".4h",
[(set (v4f16 V64:$dst), (OpNode (v4f16 V64:$Rd),
@@ -11367,7 +11367,7 @@ multiclass SIMDThreeSameVectorComplexHSD<bit U, bits<3> opcode, Operand rottype,
(i32 rottype:$rot)))]>;
}
- let Predicates = [HasComplxNum, HasNEON] in {
+ let Predicates = [HasFCMA, HasNEON] in {
def v2f32 : BaseSIMDThreeSameVectorComplex<0, U, 0b10, opcode, V64, rottype,
asm, ".2s",
[(set (v2f32 V64:$dst), (OpNode (v2f32 V64:$Rd),
@@ -11423,7 +11423,7 @@ class BaseSIMDThreeSameVectorTiedComplex<bit Q, bit U, bits<2> size,
multiclass SIMDThreeSameVectorTiedComplexHSD<bit U, bits<3> opcode,
Operand rottype, string asm,
SDPatternOperator OpNode> {
- let Predicates = [HasComplxNum, HasNEON, HasFullFP16] in {
+ let Predicates = [HasFCMA, HasNEON, HasFullFP16] in {
def v4f16 : BaseSIMDThreeSameVectorTiedComplex<0, U, 0b01, opcode, V64,
rottype, asm, ".4h",
[(set (v4f16 V64:$dst), (OpNode (v4f16 V64:$Rd),
@@ -11439,7 +11439,7 @@ multiclass SIMDThreeSameVectorTiedComplexHSD<bit U, bits<3> opcode,
(i32 rottype:$rot)))]>;
}
- let Predicates = [HasComplxNum, HasNEON] in {
+ let Predicates = [HasFCMA, HasNEON] in {
def v2f32 : BaseSIMDThreeSameVectorTiedComplex<0, U, 0b10, opcode, V64,
rottype, asm, ".2s",
[(set (v2f32 V64:$dst), (OpNode (v2f32 V64:$Rd),
@@ -11505,7 +11505,7 @@ class BaseSIMDIndexedTiedComplex<bit Q, bit U, bit Scalar, bits<2> size,
// classes.
multiclass SIMDIndexedTiedComplexHSD<bit opc1, bit opc2, Operand rottype,
string asm> {
- let Predicates = [HasComplxNum, HasNEON, HasFullFP16] in {
+ let Predicates = [HasFCMA, HasNEON, HasFullFP16] in {
def v4f16_indexed : BaseSIMDIndexedTiedComplex<0, 1, 0, 0b01, opc1, opc2, V64,
V64, V128, VectorIndexD, rottype, asm, ".4h", ".4h",
".4h", ".h", []> {
@@ -11521,9 +11521,9 @@ multiclass SIMDIndexedTiedComplexHSD<bit opc1, bit opc2, Operand rottype,
let Inst{11} = idx{1};
let Inst{21} = idx{0};
}
- } // Predicates = HasComplxNum, HasNEON, HasFullFP16]
+ } // Predicates = HasFCMA, HasNEON, HasFullFP16]
- let Predicates = [HasComplxNum, HasNEON] in {
+ let Predicates = [HasFCMA, HasNEON] in {
def v4f32_indexed : BaseSIMDIndexedTiedComplex<1, 1, 0, 0b10, opc1, opc2,
V128, V128, V128, VectorIndexD, rottype, asm, ".4s",
".4s", ".4s", ".s", []> {
@@ -11531,7 +11531,7 @@ multiclass SIMDIndexedTiedComplexHSD<bit opc1, bit opc2, Operand rottype,
let Inst{11} = idx{0};
let Inst{21} = 0;
}
- } // Predicates = [HasComplxNum, HasNEON]
+ } // Predicates = [HasFCMA, HasNEON]
}
//----------------------------------------------------------------------------
diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.td b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
index b7230e56abca2e..f26de5c6199e4a 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrInfo.td
+++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
@@ -75,8 +75,8 @@ 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">;
+def HasFCMA : Predicate<"Subtarget->hasFCMA()">,
+ AssemblerPredicateWithAll<(all_of FeatureFCMA), "fcma">;
def HasNV : Predicate<"Subtarget->hasNV()">,
AssemblerPredicateWithAll<(all_of FeatureNV), "nv">;
@@ -1499,7 +1499,7 @@ defm FCADD : SIMDThreeSameVectorComplexHSD<1, 0b111, complexrotateopodd,
"fcadd", null_frag>;
defm FCMLA : SIMDIndexedTiedComplexHSD<0, 1, complexrotateop, "fcmla">;
-let Predicates = [HasComplxNum, HasNEON, HasFullFP16] in {
+let Predicates = [HasFCMA, HasNEON, HasFullFP16] in {
def : Pat<(v4f16 (int_aarch64_neon_vcadd_rot90 (v4f16 V64:$Rn), (v4f16 V64:$Rm))),
(FCADDv4f16 (v4f16 V64:$Rn), (v4f16 V64:$Rm), (i32 0))>;
def : Pat<(v4f16 (int_aarch64_neon_vcadd_rot270 (v4f16 V64:$Rn), (v4f16 V64:$Rm))),
@@ -1510,7 +1510,7 @@ let Predicates = [HasComplxNum, HasNEON, HasFullFP16] in {
(FCADDv8f16 (v8f16 V128:$Rn), (v8f16 V128:$Rm), (i32 1))>;
}
-let Predicates = [HasComplxNum, HasNEON] in {
+let Predicates = [HasFCMA, HasNEON] in {
def : Pat<(v2f32 (int_aarch64_neon_vcadd_rot90 (v2f32 V64:$Rn), (v2f32 V64:$Rm))),
(FCADDv2f32 (v2f32 V64:$Rn), (v2f32 V64:$Rm), (i32 0))>;
def : Pat<(v2f32 (int_aarch64_neon_vcadd_rot270 (v2f32 V64:$Rn), (v2f32 V64:$Rm))),
@@ -1546,7 +1546,7 @@ multiclass FCMLA_LANE_PATS<ValueType ty, DAGOperand Reg, dag RHSDup> {
}
-let Predicates = [HasComplxNum, HasNEON, HasFullFP16] in {
+let Predicates = [HasFCMA, HasNEON, HasFullFP16] in {
defm : FCMLA_PATS<v4f16, V64>;
defm : FCMLA_PATS<v8f16, V128>;
@@ -1555,7 +1555,7 @@ let Predicates = [HasComplxNum, HasNEON, HasFullFP16] in {
defm : FCMLA_LANE_PATS<v8f16, V128,
(v8f16 (bitconvert (v4i32 (AArch64duplane32 (v4i32 V128:$Rm), VectorIndexS:$idx))))>;
}
-let Predicates = [HasComplxNum, HasNEON] in {
+let Predicates = [HasFCMA, HasNEON] in {
defm : FCMLA_PATS<v2f32, V64>;
defm : FCMLA_PATS<v4f32, V128>;
defm : FCMLA_PATS<v2f64, V128>;
diff --git a/llvm/lib/Target/AArch64/AArch64Processors.td b/llvm/lib/Target/AArch64/AArch64Processors.td
index 8772e51bf0ab42..85ad7e384dcfb7 100644
--- a/llvm/lib/Target/AArch64/AArch64Processors.td
+++ b/llvm/lib/Target/AArch64/AArch64Processors.td
@@ -667,7 +667,7 @@ def ProcessorFeatures {
list<SubtargetFeature> R82 = [HasV8_0rOps, FeaturePerfMon, FeatureFullFP16,
FeatureFP16FML, FeatureSSBS, FeaturePredRes,
FeatureSB, FeatureRDM, FeatureDotProd,
- FeatureComplxNum, FeatureJS];
+ FeatureFCMA, FeatureJS];
list<SubtargetFeature> X1 = [HasV8_2aOps, FeatureCrypto, FeatureFPARMv8,
FeatureNEON, FeatureRCPC, FeaturePerfMon,
FeatureSPE, FeatureFullFP16, FeatureDotProd,
@@ -692,7 +692,7 @@ def ProcessorFeatures {
FeatureFP16FML, FeatureSPE_EEF];
list<SubtargetFeature> A64FX = [HasV8_2aOps, FeatureFPARMv8, FeatureNEON,
FeatureSHA2, FeaturePerfMon, FeatureFullFP16,
- FeatureSVE, FeatureComplxNum];
+ FeatureSVE, FeatureFCMA];
list<SubtargetFeature> Carmel = [HasV8_2aOps, FeatureNEON, FeatureCrypto,
FeatureFullFP16];
list<SubtargetFeature> AppleA7 = [HasV8_0aOps, FeatureCrypto, FeatureFPARMv8,
@@ -780,7 +780,7 @@ def ProcessorFeatures {
list<SubtargetFeature> TSV110 = [HasV8_2aOps, FeatureCrypto, FeatureFPARMv8,
FeatureNEON, FeaturePerfMon, FeatureSPE,
FeatureFullFP16, FeatureFP16FML, FeatureDotProd,
- FeatureJS, FeatureComplxNum];
+ FeatureJS, FeatureFCMA];
list<SubtargetFeature> Ampere1 = [HasV8_6aOps, FeatureNEON, FeaturePerfMon,
FeatureSSBS, FeatureRandGen, FeatureSB,
FeatureSHA2, FeatureSHA3, FeatureAES];
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index b2d550117e7024..a3d0960f055842 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -3701,7 +3701,7 @@ static const struct Extension {
{"rcpc3", {AArch64::FeatureRCPC3}},
{"gcs", {AArch64::FeatureGCS}},
{"bf16", {AArch64::FeatureBF16}},
- {"compnum", {AArch64::FeatureComplxNum}},
+ {"compnum", {AArch64::FeatureFCMA}},
{"dotprod", {AArch64::FeatureDotProd}},
{"f32mm", {AArch64::FeatureF32MM}},
{"f64mm", {AArch64::FeatureF64MM}},
diff --git a/llvm/test/CodeGen/AArch64/complex-deinterleaving-add-mull-fixed-contract.ll b/llvm/test/CodeGen/AArch64/complex-deinterleaving-add-mull-fixed-contract.ll
index 09672d1be21613..2bf8e0b5a2c420 100644
--- a/llvm/test/CodeGen/AArch64/complex-deinterleaving-add-mull-fixed-contract.ll
+++ b/llvm/test/CodeGen/AArch64/complex-deinterleaving-add-mull-fixed-contract.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s --mattr=+complxnum,+neon -o - | FileCheck %s
+; RUN: llc < %s --mattr=+fcma,+neon -o - | FileCheck %s
target triple = "aarch64"
diff --git a/llvm/test/CodeGen/AArch64/complex-deinterleaving-add-mull-fixed-fast.ll b/llvm/test/CodeGen/AArch64/complex-deinterleaving-add-mull-fixed-fast.ll
index 7692b1cf0aaae1..3c7a44290134ac 100644
--- a/llvm/test/CodeGen/AArch64/complex-deinterleaving-add-mull-fixed-fast.ll
+++ b/llvm/test/CodeGen/AArch64/complex-deinterleaving-add-mull-fixed-fast.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s --mattr=+complxnum,+neon -o - | FileCheck %s
+; RUN: llc < %s --mattr=+fcma,+neon -o - | FileCheck %s
target triple = "aarch64"
diff --git a/llvm/test/CodeGen/AArch64/complex-deinterleaving-crash.ll b/llvm/test/CodeGen/AArch64/complex-deinterleaving-crash.ll
index 68cb29f8f5c8f8..b8e9ab0cb5eeb8 100644
--- a/llvm/test/CodeGen/AArch64/complex-deinterleaving-crash.ll
+++ b/llvm/test/CodeGen/AArch64/complex-deinterleaving-crash.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
-; RUN: llc %s --mattr=+complxnum -o - | FileCheck %s
+; RUN: llc %s --mattr=+fcma -o - | FileCheck %s
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-ni:1-p2:32:8:8:32-ni:2"
target triple = "aarch64-none-linux-gnu"
diff --git a/llvm/test/CodeGen/AArch64/complex-deinterleaving-f16-add.ll b/llvm/test/CodeGen/AArch64/complex-deinterleaving-f16-add.ll
index 7cdb10e7159f03..282eba5ba28265 100644
--- a/llvm/test/CodeGen/AArch64/complex-deinterleaving-f16-add.ll
+++ b/llvm/test/CodeGen/AArch64/complex-deinterleaving-f16-add.ll
@@ -1,10 +1,10 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s --mattr=+complxnum,+neon,+fullfp16 -o - | FileCheck %s --check-prefixes=CHECK,CHECK-SD
-; RUN: llc < %s --mattr=+complxnum,+neon,+fullfp16,+sve -o - | FileCheck %s --check-prefixes=CHECK,CHECK-SD
-; RUN: llc < %s --mattr=+complxnum,+neon,+fullfp16,+sve2 -o - | FileCheck %s --check-prefixes=CHECK,CHECK-SD
-; RUN: llc < %s --global-isel --global-isel-abort=2 --mattr=+complxnum,+neon,+fullfp16 -o - 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-GI
-; RUN: llc < %s --global-isel --global-isel-abort=2 --mattr=+complxnum,+neon,+fullfp16,+sve -o - 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-GI
-; RUN: llc < %s --global-isel --global-isel-abort=2 --mattr=+complxnum,+neon,+fullfp16,+sve2 -o - 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-GI
+; RUN: llc < %s --mattr=+fcma,+neon,+fullfp16 -o - | FileCheck %s --check-prefixes=CHECK,CHECK-SD
+; RUN: llc < %s --mattr=+fcma,+neon,+fullfp16,+sve -o - | FileCheck %s --check-prefixes=CHECK,CHECK-SD
+; RUN: llc < %s --mattr=+fcma,+neon,+fullfp16,+sve2 -o - | FileCheck %s --check-prefixes=CHECK,CHECK-SD
+; RUN: llc < %s --global-isel --global-isel-abort=2 --mattr=+fcma,+neon,+fullfp16 -o - 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-GI
+; RUN: llc < %s --global-isel --global-isel-abort=2 --mattr=+fcma,+neon,+fullfp16,+sve -o - 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-GI
+; RUN: llc < %s --global-isel --global-isel-abort=2 --mattr=+fcma,+neon,+fullfp16,+sve2 -o - 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-GI
target triple = "aarch64"
diff --git a/llvm/test/CodeGen/AArch64/complex-deinterleaving-f16-mul.ll b/llvm/test/CodeGen/AArch64/complex-deinterleaving-f16-mul.ll
index fbe913e5472cc2..96c7ff996671b4 100644
--- a/llvm/test/CodeGen/AArch64/complex-deinterleaving-f16-mul.ll
+++ b/llvm/test/CodeGen/AArch64/complex-deinterleaving-f16-mul.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s --mattr=+complxnum,+neon,+fullfp16 -o - | FileCheck %s
+; RUN: llc < %s --mattr=+fcma,+neon,+fullfp16 -o - | FileCheck %s
target triple = "aarch64"
diff --git a/llvm/test/CodeGen/AArch64/complex-deinterleaving-f32-add.ll b/llvm/test/CodeGen/AArch64/complex-deinterleaving-f32-add.ll
index c4d0c9364f1be0..e59522df634d5c 100644
--- a/llvm/test/CodeGen/AArch64/complex-deinterleaving-f32-add.ll
+++ b/llvm/test/CodeGen/AArch64/complex-deinterleaving-f32-add.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s --mattr=+complxnum,+neon,+fullfp16 -o - | FileCheck %s
+; RUN: llc < %s --mattr=+fcma,+neon,+fullfp16 -o - | FileCheck %s
target triple = "aarch64"
diff --git a/llvm/test/CodeGen/AArch64/complex-deinterleaving-f32-mul.ll b/llvm/test/CodeGen/AArch64/complex-deinterleaving-f32-mul.ll
index 5f30d9642ce8b0..8f4c4cab0234c8 100644
--- a/llvm/test/CodeGen/AArch64/complex-deinterleaving-f32-mul.ll
+++ b/llvm/test/CodeGen/AArch64/complex-deinterleaving-f32-mul.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s --mattr=+complxnum,+neon,+fullfp16 -o - | FileCheck %s
+; RUN: llc < %s --mattr=+fcma,+neon,+fullfp16 -o - | FileCheck %s
target triple = "aarch64"
diff --git a/llvm/test/CodeGen/AArch64/complex-deinterleaving-f64-add.ll b/llvm/test/CodeGen/AArch64/complex-deinterleaving-f64-add.ll
index e0c76b7bbe7167..108f47c8cd1228 100644
--- a/llvm/test/CodeGen/AArch64/complex-deinterleaving-f64-add.ll
+++ b/llvm/test/CodeGen/AArch64/complex-deinterleaving-f64-add.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s --mattr=+complxnum,+neon,+fullfp16 -o - | FileCheck %s
+; RUN: llc < %s --mattr=+fcma,+neon,+fullfp16 -o - | FileCheck %s
target triple = "aarch64"
diff --git a/llvm/test/CodeGen/AArch64/complex-deinterleaving-f64-mul.ll b/llvm/test/CodeGen/AArch64/complex-deinterleaving-f64-mul.ll
index 6d7b156c3b64c9..e525c0b498f9dc 100644
--- a/llvm/test/CodeGen/AArch64/complex-deinterleaving-f64-mul.ll
+++ b/llvm/test/CodeGen/AArch64/complex-deinterleaving-f64-mul.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s --mattr=+complxnum,+neon,+fullfp16 -o - | FileCheck %s
+; RUN: llc < %s --mattr=+fcma,+neon,+fullfp16 -o - | FileCheck %s
target triple = "aarch64"
diff --git a/llvm/test/CodeGen/AArch64/complex-deinterleaving-mixed-cases.ll b/llvm/test/CodeGen/AArch64/complex-deinterleaving-mixed-cases.ll
index 1ed9cf2db24f72..9646faa0dbb701 100644
--- a/llvm/test/CodeGen/AArch64/complex-deinterleaving-mixed-cases.ll
+++ b/llvm/test/CodeGen/AArch64/complex-deinterleaving-mixed-cases.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s --mattr=+complxnum,+neon,+fullfp16 -o - | FileCheck %s
+; RUN: llc < %s --mattr=+fcma,+neon,+fullfp16 -o - | FileCheck %s
target triple = "aarch64"
diff --git a/llvm/test/CodeGen/AArch64/complex-deinterleaving-multiuses.ll b/llvm/test/CodeGen/AArch64/complex-deinterleaving-multiuses.ll
index 039025dafa0d6e..7b5bf64d25517e 100644
--- a/llvm/test/CodeGen/AArch64/complex-deinterleaving-multiuses.ll
+++ b/llvm/test/CodeGen/AArch64/complex-deinterleaving-multiuses.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s --mattr=+complxnum,+neon -o - | FileCheck %s
+; RUN: llc < %s --mattr=+fcma,+neon -o - | FileCheck %s
target triple = "aarch64"
; Expected to transform
diff --git a/llvm/test/CodeGen/AArch64/complex-deinterleaving-reductions.ll b/llvm/test/CodeGen/AArch64/complex-deinterleaving-reductions.ll
index 44d0a9392ba629..a08f1f3fa7caf8 100644
--- a/llvm/test/CodeGen/AArch64/complex-deinterleaving-reductions.ll
+++ b/llvm/test/CodeGen/AArch64/complex-deinterleaving-reductions.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s --mattr=+complxnum,+neon -o - | FileCheck %s
+; RUN: llc < %s --mattr=+fcma,+neon -o - | FileCheck %s
target triple = "aarch64"
diff --git a/llvm/test/CodeGen/AArch64/complex-deinterleaving-splat.ll b/llvm/test/CodeGen/AArch64/complex-deinterleaving-splat.ll
index ad9240b0922bda..d4bcf71d081b06 100644
--- a/llvm/test/CodeGen/AArch64/complex-deinterleaving-splat.ll
+++ b/llvm/test/CodeGen/AArch64/complex-deinterleaving-splat.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s --mattr=+complxnum -o - | FileCheck %s
+; RUN: llc < %s --mattr=+fcma -o - | FileCheck %s
target triple = "aarch64"
diff --git a/llvm/test/CodeGen/AArch64/complex-deinterleaving-uniform-cases.ll b/llvm/test/CodeGen/AArch64/complex-deinterleaving-uniform-cases.ll
index e8d9ec7dc85de7..084792168d1e45 100644
--- a/llvm/test/CodeGen/AArch64/complex-deinterleaving-uniform-cases.ll
+++ b/llvm/test/CodeGen/AArch64/complex-deinterleaving-uniform-cases.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s --mattr=+complxnum,+neon,+fullfp16 -o - | FileCheck %s
+; RUN: llc < %s --mattr=+fcma,+neon,+fullfp16 -o - | FileCheck %s
target triple = "aarch64"
diff --git a/llvm/test/MC/AArch64/armv8.3a-complex.s b/llvm/test/MC/AArch64/armv8.3a-complex.s
index dae5d477951005..12c7cc557a4de3 100644
--- a/llvm/test/MC/AArch64/armv8.3a-complex.s
+++ b/llvm/test/MC/AArch64/armv8.3a-complex.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+complxnum,+fullfp16 -o - %s 2>%t | FileCheck %s
+// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+fcma,+fullfp16 -o - %s 2>%t | FileCheck %s
// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.3a,+fullfp16 -o - %s 2>%t | FileCheck %s
fcmla v0.4h, v1.4h, v2.4h, #0
fcmla v0.8h, v1.8h, v2.8h, #0
diff --git a/llvm/test/MC/AArch64/armv8.3a-complex_bad.s b/llvm/test/MC/AArch64/armv8.3a-complex_bad.s
index cdc023445ca077..a3490c245447d9 100644
--- a/llvm/test/MC/AArch64/armv8.3a-complex_bad.s
+++ b/llvm/test/MC/AArch64/armv8.3a-complex_bad.s
@@ -1,4 +1,4 @@
-// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+complxnum,+fullfp16 -o - %s 2>&1 | FileCheck %s
+// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+fcma,+fullfp16 -o - %s 2>&1 | FileCheck %s
fcmla v0.2s, v1.2s, v2.2s, #1
fcmla v0.2s, v1.2s, v2.2s, #360
fcmla v0.2s, v1.2s, v2.2s, #-90
diff --git a/llvm/test/MC/AArch64/armv8.3a-complex_missing.s b/llvm/test/MC/AArch64/armv8.3a-complex_missing.s
index 75008106575e91..a98f1cf18215b7 100644
--- a/llvm/test/MC/AArch64/armv8.3a-complex_missing.s
+++ b/llvm/test/MC/AArch64/armv8.3a-complex_missing.s
@@ -1,4 +1,4 @@
-// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.3a,-complxnum,+fullfp16 -o - %s 2>&1 | FileCheck %s
+// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.3a,-fcma,+fullfp16 -o - %s 2>&1 | FileCheck %s
// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+fullfp16 -o - %s 2>&1 | FileCheck %s
fcmla v0.4h, v1.4h, v2.4h, #0
fcmla v0.8h, v1.8h, v2.8h, #0
@@ -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/armv8.3a-complex_nofp16.s b/llvm/test/MC/AArch64/armv8.3a-complex_nofp16.s
index 63d6d3c52c97d0..9ba5ac06f8d85a 100644
--- a/llvm/test/MC/AArch64/armv8.3a-complex_nofp16.s
+++ b/llvm/test/MC/AArch64/armv8.3a-complex_nofp16.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+complxnum -o - %s 2>%t | FileCheck %s
+// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+fcma -o - %s 2>%t | FileCheck %s
fcmla v0.2s, v1.2s, v2.2s, #0
fcmla v0.4s, v1.4s, v2.4s, #0
fcmla v0.2d, v1.2d, v2.2d, #0
diff --git a/llvm/test/MC/AArch64/armv8.3a-complex_nofp16_bad.s b/llvm/test/MC/AArch64/armv8.3a-complex_nofp16_bad.s
index 2d4679805549f1..ea3584b09b68ee 100644
--- a/llvm/test/MC/AArch64/armv8.3a-complex_nofp16_bad.s
+++ b/llvm/test/MC/AArch64/armv8.3a-complex_nofp16_bad.s
@@ -1,4 +1,4 @@
-// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+complxnum -o - %s 2>&1 | FileCheck %s
+// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+fcma -o - %s 2>&1 | FileCheck %s
fcmla v0.4h, v1.4h, v2.4h, #0
fcmla v0.8h, v1.8h, v2.8h, #0
fcadd v0.4h, v1.4h, v2.4h, #90
diff --git a/llvm/test/MC/AArch64/armv8r-sysreg.s b/llvm/test/MC/AArch64/armv8r-sysreg.s
index 46a23d5827b295..85ecb5be712e5a 100644
--- a/llvm/test/MC/AArch64/armv8r-sysreg.s
+++ b/llvm/test/MC/AArch64/armv8r-sysreg.s
@@ -1,7 +1,7 @@
// RUN: llvm-mc -triple aarch64 -show-encoding -mattr=+v8r -o - %s | FileCheck %s
-// RUN: llvm-mc -triple aarch64 -show-encoding -mattr=+v8r,-fp-armv8,-rdm,-dotprod,-complxnum,-jsconv -o - %s | FileCheck %s
+// RUN: llvm-mc -triple aarch64 -show-encoding -mattr=+v8r,-fp-armv8,-rdm,-dotprod,-fcma,-jsconv -o - %s | FileCheck %s
// RUN: llvm-mc -triple aarch64 -show-encoding -mcpu=cortex-r82 -o - %s | FileCheck %s
-// RUN: llvm-mc -triple aarch64 -show-encoding -mcpu=cortex-r82 -mattr=-fp-armv8,-rdm,-dotprod,-complxnum,-jsconv -o - %s | FileCheck %s
+// RUN: llvm-mc -triple aarch64 -show-encoding -mcpu=cortex-r82 -mattr=-fp-armv8,-rdm,-dotprod,-fcma,-jsconv -o - %s | FileCheck %s
.text
mrs x0, VSCTLR_EL2
mrs x0, MPUIR_EL1
diff --git a/llvm/test/MC/Disassembler/AArch64/armv8.3a-complex.txt b/llvm/test/MC/Disassembler/AArch64/armv8.3a-complex.txt
index ea8b498fdc6e73..7701b5bdef795a 100644
--- a/llvm/test/MC/Disassembler/AArch64/armv8.3a-complex.txt
+++ b/llvm/test/MC/Disassembler/AArch64/armv8.3a-complex.txt
@@ -1,7 +1,7 @@
# RUN: not llvm-mc -triple aarch64-none-linux-gnu -mattr=+v8.3a,-fullfp16 --disassemble < %s 2>%t | FileCheck %s --check-prefix=CHECK
# RUN: FileCheck %s < %t --check-prefix=NO-FP16
# RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+v8.3a,+fullfp16 --disassemble < %s 2>%t | FileCheck %s --check-prefix=CHECK --check-prefix=FP16
-# RUN: not llvm-mc -triple aarch64-none-linux-gnu -mattr=+v8r,+complxnum --disassemble < %s 2>%t | FileCheck %s --check-prefix=CHECK
+# RUN: not llvm-mc -triple aarch64-none-linux-gnu -mattr=+v8r,+fcma --disassemble < %s 2>%t | FileCheck %s --check-prefix=CHECK
# RUN: FileCheck %s < %t --check-prefix=NO-FP16
# RUN: not llvm-mc -triple aarch64-none-linux-gnu -mattr=-v8.3a,+fullfp16 --disassemble < %s 2>&1 | FileCheck %s --check-prefix=NO-V83A
diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 75e235008b4f25..5de536dbe1ef2d 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -2083,7 +2083,7 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
EXPECT_TRUE(llvm::is_contained(Features, "+pauth-lr"));
EXPECT_TRUE(llvm::is_contained(Features, "+tlbiw"));
EXPECT_TRUE(llvm::is_contained(Features, "+jsconv"));
- EXPECT_TRUE(llvm::is_contained(Features, "+complxnum"));
+ EXPECT_TRUE(llvm::is_contained(Features, "+fcma"));
// Assuming we listed every extension above, this should produce the same
// result. (note that AEK_NONE doesn't have a name so it won't be in the
@@ -2435,8 +2435,8 @@ AArch64ExtensionDependenciesBaseArchTestParams
{AArch64::ARMV8A, {"rdm", "nosimd"}, {}, {"neon", "rdm"}},
{AArch64::ARMV8A, {"nosimd", "dotprod"}, {"neon", "dotprod"}, {}},
{AArch64::ARMV8A, {"dotprod", "nosimd"}, {}, {"neon", "dotprod"}},
- {AArch64::ARMV8A, {"nosimd", "fcma"}, {"neon", "complxnum"}, {}},
- {AArch64::ARMV8A, {"fcma", "nosimd"}, {}, {"neon", "complxnum"}},
+ {AArch64::ARMV8A, {"nosimd", "fcma"}, {"neon", "fcma"}, {}},
+ {AArch64::ARMV8A, {"fcma", "nosimd"}, {}, {"neon", "fcma"}},
// fp16 -> {fp16fml, sve}
{AArch64::ARMV8A, {"nofp16", "fp16fml"}, {"fullfp16", "fp16fml"}, {}},
>From f242f53c9154d2218a9b699e31cd5aeae2c8b3a2 Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Fri, 26 Apr 2024 20:33:53 +0100
Subject: [PATCH 05/15] Rename HasMatMulInt8 to HasI8MM
---
.../llvm/TargetParser/AArch64TargetParser.h | 1 -
llvm/lib/Target/AArch64/AArch64Features.td | 4 ++--
llvm/lib/Target/AArch64/AArch64InstrInfo.td | 6 +++---
llvm/lib/Target/AArch64/AArch64Processors.td | 18 +++++++++---------
llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td | 8 ++++----
llvm/lib/Target/AArch64/AArch64SchedA64FX.td | 2 +-
.../AArch64/AsmParser/AArch64AsmParser.cpp | 2 +-
llvm/lib/Target/ARM/ARMFeatures.td | 4 ++--
llvm/lib/Target/ARM/ARMInstrNEON.td | 2 +-
llvm/lib/Target/ARM/ARMPredicates.td | 4 ++--
llvm/lib/Target/ARM/ARMProcessors.td | 6 +++---
llvm/lib/Target/ARM/ARMScheduleA57.td | 2 +-
llvm/lib/Target/ARM/ARMScheduleM55.td | 2 +-
13 files changed, 30 insertions(+), 31 deletions(-)
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index 2736cc1dae1965..c6c4f7fde2dbca 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -113,7 +113,6 @@ enum ArchExtKind : unsigned {
// FIXME temporary fixes for inconsistent naming.
AEK_FP = AEK_FPARMV8,
AEK_FP16 = AEK_FULLFP16,
- AEK_I8MM = AEK_MATMULINT8,
AEK_JSCVT = AEK_JS,
AEK_PROFILE = AEK_SPE,
AEK_RASv2 = AEK_RASV2,
diff --git a/llvm/lib/Target/AArch64/AArch64Features.td b/llvm/lib/Target/AArch64/AArch64Features.td
index b88dabe368eb56..3646f498cac041 100644
--- a/llvm/lib/Target/AArch64/AArch64Features.td
+++ b/llvm/lib/Target/AArch64/AArch64Features.td
@@ -450,7 +450,7 @@ def FeatureTaggedGlobals : SubtargetFeature<"tagged-globals",
"true", "Use an instruction sequence for taking the address of a global "
"that allows a memory tag in the upper address bits">;
-def FeatureMatMulInt8 : SubtargetFeature<"i8mm", "HasMatMulInt8",
+def FeatureI8MM : SubtargetFeature<"i8mm", "HasI8MM",
"true", "Enable Matrix Multiply Int8 Extension (FEAT_I8MM)">;
def FeatureF32MM : SubtargetFeature<"f32mm", "HasF32MM",
@@ -667,7 +667,7 @@ def HasV8_5aOps : SubtargetFeature<
def HasV8_6aOps : SubtargetFeature<
"v8.6a", "HasV8_6aOps", "true", "Support ARM v8.6a instructions",
[HasV8_5aOps, FeatureAMVS, FeatureBF16, FeatureFineGrainedTraps,
- FeatureEnhancedCounterVirtualization, FeatureMatMulInt8]>;
+ FeatureEnhancedCounterVirtualization, FeatureI8MM]>;
def HasV8_7aOps : SubtargetFeature<
"v8.7a", "HasV8_7aOps", "true", "Support ARM v8.7a instructions",
diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.td b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
index f26de5c6199e4a..b1ffb2d0be3df2 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrInfo.td
+++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
@@ -267,8 +267,8 @@ def HasTRBE : Predicate<"Subtarget->hasTRBE()">,
def HasBF16 : Predicate<"Subtarget->hasBF16()">,
AssemblerPredicateWithAll<(all_of FeatureBF16), "bf16">;
def HasNoBF16 : Predicate<"!Subtarget->hasBF16()">;
-def HasMatMulInt8 : Predicate<"Subtarget->hasMatMulInt8()">,
- AssemblerPredicateWithAll<(all_of FeatureMatMulInt8), "i8mm">;
+def HasI8MM : Predicate<"Subtarget->hasI8MM()">,
+ AssemblerPredicateWithAll<(all_of FeatureI8MM), "i8mm">;
def HasF32MM : Predicate<"Subtarget->hasF32MM()">,
AssemblerPredicateWithAll<(all_of FeatureF32MM), "f32mm">;
def HasF64MM : Predicate<"Subtarget->hasF64MM()">,
@@ -1329,7 +1329,7 @@ def : Pat<(bf16 (any_fpround (f32 FPR32:$Rn))), (BFCVT $Rn)>;
}
// ARMv8.6A AArch64 matrix multiplication
-let Predicates = [HasMatMulInt8] in {
+let Predicates = [HasI8MM] in {
def SMMLA : SIMDThreeSameVectorMatMul<0, 0, "smmla", int_aarch64_neon_smmla>;
def UMMLA : SIMDThreeSameVectorMatMul<0, 1, "ummla", int_aarch64_neon_ummla>;
def USMMLA : SIMDThreeSameVectorMatMul<1, 0, "usmmla", int_aarch64_neon_usmmla>;
diff --git a/llvm/lib/Target/AArch64/AArch64Processors.td b/llvm/lib/Target/AArch64/AArch64Processors.td
index 85ad7e384dcfb7..ff43628c485eff 100644
--- a/llvm/lib/Target/AArch64/AArch64Processors.td
+++ b/llvm/lib/Target/AArch64/AArch64Processors.td
@@ -619,7 +619,7 @@ def ProcessorFeatures {
FeatureNEON, FeatureFullFP16, FeatureDotProd,
FeatureRCPC, FeaturePerfMon];
list<SubtargetFeature> A510 = [HasV9_0aOps, FeatureNEON, FeaturePerfMon,
- FeatureMatMulInt8, FeatureBF16, FeatureAM,
+ FeatureI8MM, FeatureBF16, FeatureAM,
FeatureMTE, FeatureETE, FeatureSVE2BitPerm,
FeatureFP16FML];
list<SubtargetFeature> A520 = [HasV9_2aOps, FeaturePerfMon, FeatureAM,
@@ -653,11 +653,11 @@ def ProcessorFeatures {
FeatureSSBS];
list<SubtargetFeature> A710 = [HasV9_0aOps, FeatureNEON, FeaturePerfMon,
FeatureETE, FeatureMTE, FeatureFP16FML,
- FeatureSVE2BitPerm, FeatureBF16, FeatureMatMulInt8];
+ FeatureSVE2BitPerm, FeatureBF16, FeatureI8MM];
list<SubtargetFeature> A715 = [HasV9_0aOps, FeatureNEON, FeatureMTE,
FeatureFP16FML, FeatureSVE, FeatureTRBE,
FeatureSVE2BitPerm, FeatureBF16, FeatureETE,
- FeaturePerfMon, FeatureMatMulInt8, FeatureSPE];
+ FeaturePerfMon, FeatureI8MM, FeatureSPE];
list<SubtargetFeature> A720 = [HasV9_2aOps, FeatureMTE, FeatureFP16FML,
FeatureTRBE, FeatureSVE2BitPerm, FeatureETE,
FeaturePerfMon, FeatureSPE, FeatureSPE_EEF];
@@ -678,12 +678,12 @@ def ProcessorFeatures {
FeaturePAuth, FeatureSSBS, FeatureFlagM,
FeatureLSE2];
list<SubtargetFeature> X2 = [HasV9_0aOps, FeatureNEON, FeaturePerfMon,
- FeatureMatMulInt8, FeatureBF16, FeatureAM,
+ FeatureI8MM, FeatureBF16, FeatureAM,
FeatureMTE, FeatureETE, FeatureSVE2BitPerm,
FeatureFP16FML];
list<SubtargetFeature> X3 = [HasV9_0aOps, FeatureSVE, FeatureNEON,
FeaturePerfMon, FeatureETE, FeatureTRBE,
- FeatureSPE, FeatureBF16, FeatureMatMulInt8,
+ FeatureSPE, FeatureBF16, FeatureI8MM,
FeatureMTE, FeatureSVE2BitPerm, FeatureFullFP16,
FeatureFP16FML];
list<SubtargetFeature> X4 = [HasV9_2aOps,
@@ -739,7 +739,7 @@ def ProcessorFeatures {
FeatureRCPC, FeatureSPE, FeatureSSBS,
FeaturePerfMon];
list<SubtargetFeature> NeoverseN2 = [HasV9_0aOps, FeatureBF16, FeatureETE, FeatureFP16FML,
- FeatureMatMulInt8, FeatureMTE, FeatureSVE2,
+ FeatureI8MM, FeatureMTE, FeatureSVE2,
FeatureSVE2BitPerm, FeatureTRBE,
FeaturePerfMon];
list<SubtargetFeature> NeoverseN3 = [HasV9_2aOps, FeatureETE, FeatureFP16FML,
@@ -748,16 +748,16 @@ def ProcessorFeatures {
FeatureSVE2BitPerm];
list<SubtargetFeature> Neoverse512TVB = [HasV8_4aOps, FeatureBF16, FeatureCacheDeepPersist,
FeatureCrypto, FeatureFPARMv8, FeatureFP16FML,
- FeatureFullFP16, FeatureMatMulInt8, FeatureNEON,
+ FeatureFullFP16, FeatureI8MM, FeatureNEON,
FeaturePerfMon, FeatureRandGen, FeatureSPE,
FeatureSSBS, FeatureSVE];
list<SubtargetFeature> NeoverseV1 = [HasV8_4aOps, FeatureBF16, FeatureCacheDeepPersist,
FeatureCrypto, FeatureFPARMv8, FeatureFP16FML,
- FeatureFullFP16, FeatureMatMulInt8, FeatureNEON,
+ FeatureFullFP16, FeatureI8MM, FeatureNEON,
FeaturePerfMon, FeatureRandGen, FeatureSPE,
FeatureSSBS, FeatureSVE];
list<SubtargetFeature> NeoverseV2 = [HasV9_0aOps, FeatureBF16, FeatureSPE,
- FeaturePerfMon, FeatureETE, FeatureMatMulInt8,
+ FeaturePerfMon, FeatureETE, FeatureI8MM,
FeatureNEON, FeatureSVE2BitPerm, FeatureFP16FML,
FeatureMTE, FeatureRandGen];
list<SubtargetFeature> NeoverseV3 = [HasV9_2aOps, FeatureETE, FeatureFP16FML,
diff --git a/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td b/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
index bb31f370f48732..7480b048830b2c 100644
--- a/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
+++ b/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
@@ -3378,17 +3378,17 @@ let Predicates = [HasSVEorSME] in {
(SUB_ZPmZ_D PPR:$pred, ZPR:$op, (DUP_ZI_D 255, 0))>;
} // End HasSVEorSME
-let Predicates = [HasSVE, HasMatMulInt8] in {
+let Predicates = [HasSVE, HasI8MM] in {
defm SMMLA_ZZZ : sve_int_matmul<0b00, "smmla", int_aarch64_sve_smmla>;
defm UMMLA_ZZZ : sve_int_matmul<0b11, "ummla", int_aarch64_sve_ummla>;
defm USMMLA_ZZZ : sve_int_matmul<0b10, "usmmla", int_aarch64_sve_usmmla>;
-} // End HasSVE, HasMatMulInt8
+} // End HasSVE, HasI8MM
-let Predicates = [HasSVEorSME, HasMatMulInt8] in {
+let Predicates = [HasSVEorSME, HasI8MM] in {
defm USDOT_ZZZ : sve_int_dot_mixed<"usdot", int_aarch64_sve_usdot>;
defm USDOT_ZZZI : sve_int_dot_mixed_indexed<0, "usdot", int_aarch64_sve_usdot_lane>;
defm SUDOT_ZZZI : sve_int_dot_mixed_indexed<1, "sudot", int_aarch64_sve_sudot_lane>;
-} // End HasSVEorSME, HasMatMulInt8
+} // End HasSVEorSME, HasI8MM
let Predicates = [HasSVE, HasF32MM] in {
defm FMMLA_ZZZ_S : sve_fp_matrix_mla<0, "fmmla", ZPR32, int_aarch64_sve_fmmla, nxv4f32>;
diff --git a/llvm/lib/Target/AArch64/AArch64SchedA64FX.td b/llvm/lib/Target/AArch64/AArch64SchedA64FX.td
index d6fe84a2c9c9b4..eca3a08d9bcd94 100644
--- a/llvm/lib/Target/AArch64/AArch64SchedA64FX.td
+++ b/llvm/lib/Target/AArch64/AArch64SchedA64FX.td
@@ -21,7 +21,7 @@ def A64FXModel : SchedMachineModel {
let CompleteModel = 1;
list<Predicate> UnsupportedFeatures = !listconcat(SMEUnsupported.F, SVEUnsupported.F,
- [HasMTE, HasMatMulInt8, HasBF16,
+ [HasMTE, HasI8MM, HasBF16,
HasPAuth, HasPAuthLR, HasCPA,
HasCSSC]);
let FullInstRWOverlapCheck = 0;
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index a3d0960f055842..088de150caf41f 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -3707,7 +3707,7 @@ static const struct Extension {
{"f64mm", {AArch64::FeatureF64MM}},
{"fp16", {AArch64::FeatureFullFP16}},
{"fp16fml", {AArch64::FeatureFP16FML}},
- {"i8mm", {AArch64::FeatureMatMulInt8}},
+ {"i8mm", {AArch64::FeatureI8MM}},
{"lor", {AArch64::FeatureLOR}},
{"profile", {AArch64::FeatureSPE}},
// "rdma" is the name documented by binutils for the feature, but
diff --git a/llvm/lib/Target/ARM/ARMFeatures.td b/llvm/lib/Target/ARM/ARMFeatures.td
index 111c87838291f6..2d8aa9e8b55f78 100644
--- a/llvm/lib/Target/ARM/ARMFeatures.td
+++ b/llvm/lib/Target/ARM/ARMFeatures.td
@@ -501,7 +501,7 @@ def FeatureBF16 : SubtargetFeature<"bf16", "HasBF16", "true",
"Enable support for BFloat16 instructions", [FeatureNEON]>;
// True if subtarget supports 8-bit integer matrix multiply.
-def FeatureMatMulInt8 : SubtargetFeature<"i8mm", "HasMatMulInt8",
+def FeatureI8MM : SubtargetFeature<"i8mm", "HasI8MM",
"true", "Enable Matrix Multiply Int8 Extension", [FeatureNEON]>;
// Armv8.1-M extensions
@@ -652,7 +652,7 @@ def HasV8_5aOps : SubtargetFeature<"v8.5a", "HasV8_5aOps", "true",
def HasV8_6aOps : SubtargetFeature<"v8.6a", "HasV8_6aOps", "true",
"Support ARM v8.6a instructions",
[HasV8_5aOps, FeatureBF16,
- FeatureMatMulInt8]>;
+ FeatureI8MM]>;
def HasV8_7aOps : SubtargetFeature<"v8.7a", "HasV8_7aOps", "true",
"Support ARM v8.7a instructions",
diff --git a/llvm/lib/Target/ARM/ARMInstrNEON.td b/llvm/lib/Target/ARM/ARMInstrNEON.td
index 21a5817252aeaa..e472a4dcad1f65 100644
--- a/llvm/lib/Target/ARM/ARMInstrNEON.td
+++ b/llvm/lib/Target/ARM/ARMInstrNEON.td
@@ -4868,7 +4868,7 @@ defm VSDOTQI : DOTI<"vsdot", "s8", 0b1, 0b0, QPR, v4i32, v16i8,
int_arm_neon_sdot, (EXTRACT_SUBREG QPR:$Vm, dsub_0)>;
// v8.6A matrix multiplication extension
-let Predicates = [HasMatMulInt8] in {
+let Predicates = [HasI8MM] in {
class N3VMatMul<bit B, bit U, string Asm, string AsmTy,
SDPatternOperator OpNode>
: N3Vnp<{0b1100, B}, 0b10, 0b1100, 1, U, (outs QPR:$dst),
diff --git a/llvm/lib/Target/ARM/ARMPredicates.td b/llvm/lib/Target/ARM/ARMPredicates.td
index aca970d900a8dc..9c64822f005f4f 100644
--- a/llvm/lib/Target/ARM/ARMPredicates.td
+++ b/llvm/lib/Target/ARM/ARMPredicates.td
@@ -117,8 +117,8 @@ def HasFP16FML : Predicate<"Subtarget->hasFP16FML()">,
AssemblerPredicate<(all_of FeatureFP16FML),"full half-float fml">;
def HasBF16 : Predicate<"Subtarget->hasBF16()">,
AssemblerPredicate<(all_of FeatureBF16),"BFloat16 floating point extension">;
-def HasMatMulInt8 : Predicate<"Subtarget->hasMatMulInt8()">,
- AssemblerPredicate<(all_of FeatureMatMulInt8),"8-bit integer matrix multiply">;
+def HasI8MM : Predicate<"Subtarget->hasI8MM()">,
+ AssemblerPredicate<(all_of FeatureI8MM),"8-bit integer matrix multiply">;
def HasDivideInThumb : Predicate<"Subtarget->hasDivideInThumbMode()">,
AssemblerPredicate<(all_of FeatureHWDivThumb), "divide in THUMB">;
def HasDivideInARM : Predicate<"Subtarget->hasDivideInARMMode()">,
diff --git a/llvm/lib/Target/ARM/ARMProcessors.td b/llvm/lib/Target/ARM/ARMProcessors.td
index 2c559497640037..38310044bd9756 100644
--- a/llvm/lib/Target/ARM/ARMProcessors.td
+++ b/llvm/lib/Target/ARM/ARMProcessors.td
@@ -502,7 +502,7 @@ def : ProcNoItin<"cortex-a710", [ARMv9a, ProcA710,
FeatureHWDivARM,
FeatureFP16FML,
FeatureBF16,
- FeatureMatMulInt8,
+ FeatureI8MM,
FeatureSB]>;
def : ProcNoItin<"cortex-x1", [ARMv82a, ProcX1,
@@ -528,7 +528,7 @@ def : ProcNoItin<"neoverse-v1", [ARMv84a,
FeatureCRC,
FeatureFullFP16,
FeatureBF16,
- FeatureMatMulInt8]>;
+ FeatureI8MM]>;
def : ProcNoItin<"neoverse-n1", [ARMv82a,
FeatureHWDivThumb,
@@ -540,7 +540,7 @@ def : ProcNoItin<"neoverse-n1", [ARMv82a,
def : ProcNoItin<"neoverse-n2", [ARMv9a,
FeatureBF16,
FeatureFP16FML,
- FeatureMatMulInt8]>;
+ FeatureI8MM]>;
def : ProcessorModel<"cyclone", SwiftModel, [ARMv8a, ProcSwift,
FeatureHasRetAddrStack,
diff --git a/llvm/lib/Target/ARM/ARMScheduleA57.td b/llvm/lib/Target/ARM/ARMScheduleA57.td
index 3baac6b233c458..d42ba3928502fe 100644
--- a/llvm/lib/Target/ARM/ARMScheduleA57.td
+++ b/llvm/lib/Target/ARM/ARMScheduleA57.td
@@ -84,7 +84,7 @@ def CortexA57Model : SchedMachineModel {
let FullInstRWOverlapCheck = 0;
let UnsupportedFeatures = [HasV8_1MMainline, HasMVEInt, HasMVEFloat, IsMClass,
- HasFPRegsV8_1M, HasFP16FML, HasMatMulInt8, HasBF16];
+ HasFPRegsV8_1M, HasFP16FML, HasI8MM, HasBF16];
}
//===----------------------------------------------------------------------===//
diff --git a/llvm/lib/Target/ARM/ARMScheduleM55.td b/llvm/lib/Target/ARM/ARMScheduleM55.td
index ff05936e8ba45c..0a53b302817e49 100644
--- a/llvm/lib/Target/ARM/ARMScheduleM55.td
+++ b/llvm/lib/Target/ARM/ARMScheduleM55.td
@@ -90,7 +90,7 @@ def CortexM55Model : SchedMachineModel {
let FullInstRWOverlapCheck = 1;
let CompleteModel = 0;
- let UnsupportedFeatures = [IsARM, HasNEON, HasDotProd, HasMatMulInt8, HasZCZ,
+ let UnsupportedFeatures = [IsARM, HasNEON, HasDotProd, HasI8MM, HasZCZ,
IsNotMClass, HasV8, HasV8_3a, HasTrustZone, HasDFB,
IsWindows];
}
>From 0235e5fd1ec3102e74d83b3dad28fcd5b211acfe Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Fri, 26 Apr 2024 20:56:02 +0100
Subject: [PATCH 06/15] Rename target-feature +rand to +rng etc
---
clang/lib/Basic/Targets/AArch64.cpp | 8 +++----
clang/lib/Basic/Targets/AArch64.h | 2 +-
clang/test/CodeGen/aarch64-targetattr.c | 4 ++--
clang/test/CodeGen/arm_acle.c | 4 ++--
.../test/CodeGen/attr-target-clones-aarch64.c | 2 +-
clang/test/CodeGen/attr-target-version.c | 2 +-
clang/test/Driver/aarch64-rand.c | 8 +++----
.../command-disassemble-aarch64-extensions.s | 2 +-
.../llvm/TargetParser/AArch64TargetParser.h | 21 ++++++++--------
llvm/lib/Target/AArch64/AArch64Features.td | 2 +-
llvm/lib/Target/AArch64/AArch64Processors.td | 18 +++++++-------
.../Target/AArch64/AArch64SystemOperands.td | 2 +-
.../AArch64/AsmParser/AArch64AsmParser.cpp | 2 +-
llvm/test/CodeGen/AArch64/rand.ll | 2 +-
llvm/test/MC/AArch64/armv8.5a-rand-error.s | 2 +-
llvm/test/MC/AArch64/armv8.5a-rand.s | 4 ++--
.../MC/Disassembler/AArch64/armv8.5a-rand.txt | 4 ++--
.../TargetParser/TargetParserTest.cpp | 24 +++++++++----------
18 files changed, 56 insertions(+), 57 deletions(-)
diff --git a/clang/lib/Basic/Targets/AArch64.cpp b/clang/lib/Basic/Targets/AArch64.cpp
index e4288004c54af3..e34fc90847fbdf 100644
--- a/clang/lib/Basic/Targets/AArch64.cpp
+++ b/clang/lib/Basic/Targets/AArch64.cpp
@@ -575,7 +575,7 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts,
if (HasLS64)
Builder.defineMacro("__ARM_FEATURE_LS64", "1");
- if (HasRandGen)
+ if (HasRNG)
Builder.defineMacro("__ARM_FEATURE_RNG", "1");
if (HasMOPS)
@@ -698,7 +698,7 @@ bool AArch64TargetInfo::hasFeature(StringRef Feature) const {
.Cases("neon", "simd", FPU & NeonMode)
.Case("jscvt", HasJSCVT)
.Case("fcma", HasFCMA)
- .Case("rng", HasRandGen)
+ .Case("rng", HasRNG)
.Case("flagm", HasFlagM)
.Case("flagm2", HasAlternativeNZCV)
.Case("fp16fml", HasFP16FML)
@@ -1001,8 +1001,8 @@ bool AArch64TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
HasLSE = true;
if (Feature == "+ls64")
HasLS64 = true;
- if (Feature == "+rand")
- HasRandGen = true;
+ if (Feature == "+rng")
+ HasRNG = true;
if (Feature == "+flagm")
HasFlagM = true;
if (Feature == "+altnzcv") {
diff --git a/clang/lib/Basic/Targets/AArch64.h b/clang/lib/Basic/Targets/AArch64.h
index 11772b376d43c1..4209c01a67f806 100644
--- a/clang/lib/Basic/Targets/AArch64.h
+++ b/clang/lib/Basic/Targets/AArch64.h
@@ -45,7 +45,7 @@ class LLVM_LIBRARY_VISIBILITY AArch64TargetInfo : public TargetInfo {
bool HasTME = false;
bool HasPAuth = false;
bool HasLS64 = false;
- bool HasRandGen = false;
+ bool HasRNG = false;
bool HasMatMul = false;
bool HasBFloat16 = false;
bool HasSVE2 = false;
diff --git a/clang/test/CodeGen/aarch64-targetattr.c b/clang/test/CodeGen/aarch64-targetattr.c
index 531f33fbf8797e..6e065180bfc27f 100644
--- a/clang/test/CodeGen/aarch64-targetattr.c
+++ b/clang/test/CodeGen/aarch64-targetattr.c
@@ -104,8 +104,8 @@ void minusarch() {}
// CHECK: attributes #7 = { {{.*}} "tune-cpu"="generic" }
// CHECK: attributes #8 = { {{.*}} "target-cpu"="neoverse-n1" "target-features"="+aes,+crc,+dotprod,+fp-armv8,+fullfp16,+lse,+neon,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs" "tune-cpu"="cortex-a710" }
// CHECK: attributes #9 = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+sve" "tune-cpu"="cortex-a710" }
-// CHECK: attributes #10 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+rand,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,+sve,+sve2" }
-// CHECK: attributes #11 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+rand,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,-sve" }
+// CHECK: attributes #10 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+rng,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,+sve,+sve2" }
+// CHECK: attributes #11 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+rng,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,-sve" }
// CHECK: attributes #12 = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+sve" }
// CHECK: attributes #13 = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+sve,-sve2" }
// CHECK: attributes #14 = { {{.*}} "target-features"="+fullfp16" }
diff --git a/clang/test/CodeGen/arm_acle.c b/clang/test/CodeGen/arm_acle.c
index 00afaf15fded39..69ee575b486546 100644
--- a/clang/test/CodeGen/arm_acle.c
+++ b/clang/test/CodeGen/arm_acle.c
@@ -2,8 +2,8 @@
// RUN: %clang_cc1 -ffreestanding -triple armv8a-none-eabi -target-feature +crc -target-feature +dsp -O0 -disable-O0-optnone -S -emit-llvm -o - %s | opt -S -passes=mem2reg | FileCheck %s -check-prefixes=ARM,AArch32
// RUN: %clang_cc1 -ffreestanding -Wno-error=implicit-function-declaration -triple aarch64-none-elf -target-feature +neon -target-feature +crc -target-feature +crypto -O0 -disable-O0-optnone -S -emit-llvm -o - %s | opt -S -passes=mem2reg | FileCheck %s -check-prefixes=ARM,AArch64
// RUN: %clang_cc1 -ffreestanding -triple aarch64-none-elf -target-feature +v8.3a -target-feature +crc -O0 -disable-O0-optnone -S -emit-llvm -o - %s | opt -S -passes=mem2reg | FileCheck %s -check-prefixes=ARM,AArch64,AArch6483
-// RUN: %clang_cc1 -ffreestanding -triple aarch64-none-elf -target-feature +v8.5a -target-feature +crc -target-feature +rand -O0 -disable-O0-optnone -S -emit-llvm -o - %s | opt -S -passes=mem2reg | FileCheck %s -check-prefixes=ARM,AArch64,AArch6483,AArch6485
-// RUN: %clang_cc1 -ffreestanding -triple aarch64-none-elf -target-feature +v9.4a -target-feature +crc -target-feature +rand -target-feature +d128 -O0 -disable-O0-optnone -S -emit-llvm -o - %s | opt -S -passes=mem2reg | FileCheck %s -check-prefixes=ARM,AArch64,AArch6483,AArch6485,AArch6494D128
+// RUN: %clang_cc1 -ffreestanding -triple aarch64-none-elf -target-feature +v8.5a -target-feature +crc -target-feature +rng -O0 -disable-O0-optnone -S -emit-llvm -o - %s | opt -S -passes=mem2reg | FileCheck %s -check-prefixes=ARM,AArch64,AArch6483,AArch6485
+// RUN: %clang_cc1 -ffreestanding -triple aarch64-none-elf -target-feature +v9.4a -target-feature +crc -target-feature +rng -target-feature +d128 -O0 -disable-O0-optnone -S -emit-llvm -o - %s | opt -S -passes=mem2reg | FileCheck %s -check-prefixes=ARM,AArch64,AArch6483,AArch6485,AArch6494D128
#include <arm_acle.h>
diff --git a/clang/test/CodeGen/attr-target-clones-aarch64.c b/clang/test/CodeGen/attr-target-clones-aarch64.c
index 7b95d4a6a434f9..c6f7d37ddf7fc8 100644
--- a/clang/test/CodeGen/attr-target-clones-aarch64.c
+++ b/clang/test/CodeGen/attr-target-clones-aarch64.c
@@ -413,7 +413,7 @@ inline int __attribute__((target_clones("fp16", "sve2-bitperm+fcma", "default"))
// CHECK: attributes #[[ATTR6:[0-9]+]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
// CHECK: attributes #[[ATTR7:[0-9]+]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+neon" }
// CHECK: attributes #[[ATTR8:[0-9]+]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fcma,+fp-armv8,+fullfp16,+neon,+sve,+sve2,+sve2-bitperm" }
-// CHECK: attributes #[[ATTR9:[0-9]+]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+neon,+rand" }
+// CHECK: attributes #[[ATTR9:[0-9]+]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+neon,+rng" }
// CHECK: attributes #[[ATTR10:[0-9]+]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+predres,+rcpc" }
// CHECK: attributes #[[ATTR11:[0-9]+]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+neon,+sve,+sve2,+sve2-aes,+wfxt" }
// CHECK: attributes #[[ATTR12:[0-9]+]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+bti" }
diff --git a/clang/test/CodeGen/attr-target-version.c b/clang/test/CodeGen/attr-target-version.c
index ab6d5cd76b3303..ff4822b0d61ece 100644
--- a/clang/test/CodeGen/attr-target-version.c
+++ b/clang/test/CodeGen/attr-target-version.c
@@ -1129,7 +1129,7 @@ int caller(void) { return used_def_without_default_decl() + used_decl_without_de
// CHECK-NOFMV-NEXT: ret i32 0
//
//.
-// CHECK: attributes #[[ATTR0]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+flagm,+fp16fml,+fullfp16,+neon,+rand,-fp-armv8,-v9.5a" }
+// CHECK: attributes #[[ATTR0]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+flagm,+fp16fml,+fullfp16,+neon,+rng,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR1]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+altnzcv,+bf16,+flagm,+sme,+sme-i16i64,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR2]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+lse,+neon,+sha2,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR3]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+dotprod,+ls64,+neon,-fp-armv8,-v9.5a" }
diff --git a/clang/test/Driver/aarch64-rand.c b/clang/test/Driver/aarch64-rand.c
index 80891ec3f54828..30d42b2c582a3d 100644
--- a/clang/test/Driver/aarch64-rand.c
+++ b/clang/test/Driver/aarch64-rand.c
@@ -1,12 +1,12 @@
// RUN: %clang -### --target=aarch64-none-elf -march=armv8.4a+rng %s 2>&1 | FileCheck %s
// RUN: %clang -### --target=aarch64-none-elf -march=armv8.5a+rng %s 2>&1 | FileCheck %s
-// CHECK: "-target-feature" "+rand"
+// CHECK: "-target-feature" "+rng"
// RUN: %clang -### --target=aarch64-none-elf -mcpu=neoverse-v1+norng %s 2>&1 | FileCheck %s --check-prefix=NORAND
-// NORAND: "-target-feature" "-rand"
+// NORAND: "-target-feature" "-rng"
// RUN: %clang -### --target=aarch64-none-elf %s 2>&1 | FileCheck %s --check-prefix=ABSENTRAND
// RUN: %clang -### --target=aarch64-none-elf -march=armv8.4a %s 2>&1 | FileCheck %s --check-prefix=ABSENTRAND
// RUN: %clang -### --target=aarch64-none-elf -march=armv8.5a %s 2>&1 | FileCheck %s --check-prefix=ABSENTRAND
-// ABSENTRAND-NOT: "-target-feature" "+rand"
-// ABSENTRAND-NOT: "-target-feature" "-rand"
+// ABSENTRAND-NOT: "-target-feature" "+rng"
+// ABSENTRAND-NOT: "-target-feature" "-rng"
diff --git a/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s b/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
index e154f544e7cc6e..25c345c1b91a7b 100644
--- a/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
+++ b/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
@@ -40,7 +40,7 @@ fn:
ldaprb w0, [x0, #0] // AEK_RCPC
stilp w26, w2, [x18] // AEK_RCPC3
sqrdmlah v0.4h, v1.4h, v2.4h // AEK_RDM
- mrs x0, rndr // AEK_RAND
+ mrs x0, rndr // AEK_RNG
sb // AEK_SB
sha256h q0, q0, v0.4s // AEK_SHA2
bcax v0.16b, v0.16b, v0.16b, v0.16b // AEK_SHA3
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index c6c4f7fde2dbca..b16447c0bcb8f2 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -116,7 +116,6 @@ enum ArchExtKind : unsigned {
AEK_JSCVT = AEK_JS,
AEK_PROFILE = AEK_SPE,
AEK_RASv2 = AEK_RASV2,
- AEK_RAND = AEK_RANDGEN,
AEK_SIMD = AEK_NEON,
AEK_SME2p1 = AEK_SME2P1,
AEK_SVE2p1 = AEK_SVE2P1,
@@ -197,7 +196,7 @@ inline constexpr ExtensionInfo Extensions[] = {
{"rcpc2", AArch64::AEK_NONE, {}, {}, FEAT_RCPC2, "+rcpc", 240},
{"rcpc3", AArch64::AEK_RCPC3, "+rcpc3", "-rcpc3", FEAT_RCPC3, "+rcpc,+rcpc3", 241},
{"rdm", AArch64::AEK_RDM, "+rdm", "-rdm", FEAT_RDM, "+rdm,+fp-armv8,+neon", 108},
- {"rng", AArch64::AEK_RAND, "+rand", "-rand", FEAT_RNG, "+rand", 10},
+ {"rng", AArch64::AEK_RNG, "+rng", "-rng", FEAT_RNG, "+rng", 10},
{"rpres", AArch64::AEK_NONE, {}, {}, FEAT_RPRES, "", 300},
{"sb", AArch64::AEK_SB, "+sb", "-sb", FEAT_SB, "+sb", 470},
{"sha1", AArch64::AEK_NONE, {}, {}, FEAT_SHA1, "+fp-armv8,+neon", 120},
@@ -619,26 +618,26 @@ inline constexpr CpuInfo CpuInfos[] = {
AArch64::AEK_SB, AArch64::AEK_PREDRES,
AArch64::AEK_FP16FML, AArch64::AEK_PAUTH,
AArch64::AEK_FLAGM, AArch64::AEK_PERFMON,
- AArch64::AEK_RAND, AArch64::AEK_SVE2BITPERM,
+ AArch64::AEK_RNG, AArch64::AEK_SVE2BITPERM,
AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})},
{"neoverse-512tvb", ARMV8_4A,
AArch64::ExtensionBitset(
{AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
AArch64::AEK_SM4, AArch64::AEK_SVE, AArch64::AEK_SSBS,
AArch64::AEK_FP16, AArch64::AEK_BF16, AArch64::AEK_DOTPROD,
- AArch64::AEK_PROFILE, AArch64::AEK_RAND, AArch64::AEK_FP16FML,
+ AArch64::AEK_PROFILE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
AArch64::AEK_I8MM})},
{"neoverse-v1", ARMV8_4A,
AArch64::ExtensionBitset(
{AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
AArch64::AEK_SM4, AArch64::AEK_SVE, AArch64::AEK_SSBS,
AArch64::AEK_FP16, AArch64::AEK_BF16, AArch64::AEK_DOTPROD,
- AArch64::AEK_PROFILE, AArch64::AEK_RAND, AArch64::AEK_FP16FML,
+ AArch64::AEK_PROFILE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
AArch64::AEK_I8MM})},
{"neoverse-v2", ARMV9A,
AArch64::ExtensionBitset(
{AArch64::AEK_SVE, AArch64::AEK_SVE2, AArch64::AEK_SSBS,
- AArch64::AEK_FP16, AArch64::AEK_BF16, AArch64::AEK_RAND,
+ AArch64::AEK_FP16, AArch64::AEK_BF16, AArch64::AEK_RNG,
AArch64::AEK_DOTPROD, AArch64::AEK_PROFILE, AArch64::AEK_SVE2BITPERM,
AArch64::AEK_FP16FML, AArch64::AEK_I8MM, AArch64::AEK_MTE})},
{"neoverse-v3", ARMV9_2A,
@@ -646,14 +645,14 @@ inline constexpr CpuInfo CpuInfos[] = {
{AArch64::AEK_PROFILE, AArch64::AEK_MTE, AArch64::AEK_SSBS,
AArch64::AEK_SB, AArch64::AEK_PREDRES, AArch64::AEK_LS64,
AArch64::AEK_BRBE, AArch64::AEK_PAUTH, AArch64::AEK_FLAGM,
- AArch64::AEK_PERFMON, AArch64::AEK_RAND, AArch64::AEK_SVE2BITPERM,
+ AArch64::AEK_PERFMON, AArch64::AEK_RNG, AArch64::AEK_SVE2BITPERM,
AArch64::AEK_FP16FML})},
{"neoverse-v3ae", ARMV9_2A,
(AArch64::ExtensionBitset(
{AArch64::AEK_PROFILE, AArch64::AEK_MTE, AArch64::AEK_SSBS,
AArch64::AEK_SB, AArch64::AEK_PREDRES, AArch64::AEK_LS64,
AArch64::AEK_BRBE, AArch64::AEK_PAUTH, AArch64::AEK_FLAGM,
- AArch64::AEK_PERFMON, AArch64::AEK_RAND, AArch64::AEK_SVE2BITPERM,
+ AArch64::AEK_PERFMON, AArch64::AEK_RNG, AArch64::AEK_SVE2BITPERM,
AArch64::AEK_FP16FML}))},
{"cyclone", ARMV8A,
AArch64::ExtensionBitset(
@@ -765,14 +764,14 @@ inline constexpr CpuInfo CpuInfos[] = {
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_SHA3, AArch64::AEK_FP16,
AArch64::AEK_SB, AArch64::AEK_SSBS,
- AArch64::AEK_RAND})},
+ AArch64::AEK_RNG})},
{"ampere1a", ARMV8_6A,
AArch64::ExtensionBitset(
- {AArch64::AEK_FP16, AArch64::AEK_RAND, AArch64::AEK_SM4,
+ {AArch64::AEK_FP16, AArch64::AEK_RNG, AArch64::AEK_SM4,
AArch64::AEK_SHA3, AArch64::AEK_SHA2, AArch64::AEK_AES,
AArch64::AEK_MTE, AArch64::AEK_SB, AArch64::AEK_SSBS})},
{"ampere1b", ARMV8_7A,
- AArch64::ExtensionBitset({AArch64::AEK_FP16, AArch64::AEK_RAND,
+ AArch64::ExtensionBitset({AArch64::AEK_FP16, AArch64::AEK_RNG,
AArch64::AEK_SM4, AArch64::AEK_SHA3,
AArch64::AEK_SHA2, AArch64::AEK_AES,
AArch64::AEK_MTE, AArch64::AEK_SB,
diff --git a/llvm/lib/Target/AArch64/AArch64Features.td b/llvm/lib/Target/AArch64/AArch64Features.td
index 3646f498cac041..d0a78696482919 100644
--- a/llvm/lib/Target/AArch64/AArch64Features.td
+++ b/llvm/lib/Target/AArch64/AArch64Features.td
@@ -429,7 +429,7 @@ def FeatureCacheDeepPersist : SubtargetFeature<"ccdp", "HasCCDP",
def FeatureBranchTargetId : SubtargetFeature<"bti", "HasBTI",
"true", "Enable Branch Target Identification (FEAT_BTI)" >;
-def FeatureRandGen : SubtargetFeature<"rand", "HasRandGen",
+def FeatureRNG : SubtargetFeature<"rng", "HasRNG",
"true", "Enable Random Number generation instructions (FEAT_RNG)" >;
def FeatureMTE : SubtargetFeature<"mte", "HasMTE",
diff --git a/llvm/lib/Target/AArch64/AArch64Processors.td b/llvm/lib/Target/AArch64/AArch64Processors.td
index ff43628c485eff..7aa8b23c765cad 100644
--- a/llvm/lib/Target/AArch64/AArch64Processors.td
+++ b/llvm/lib/Target/AArch64/AArch64Processors.td
@@ -744,29 +744,29 @@ def ProcessorFeatures {
FeaturePerfMon];
list<SubtargetFeature> NeoverseN3 = [HasV9_2aOps, FeatureETE, FeatureFP16FML,
FeatureFullFP16, FeatureMTE, FeaturePerfMon,
- FeatureRandGen, FeatureSPE, FeatureSPE_EEF,
+ FeatureRNG, FeatureSPE, FeatureSPE_EEF,
FeatureSVE2BitPerm];
list<SubtargetFeature> Neoverse512TVB = [HasV8_4aOps, FeatureBF16, FeatureCacheDeepPersist,
FeatureCrypto, FeatureFPARMv8, FeatureFP16FML,
FeatureFullFP16, FeatureI8MM, FeatureNEON,
- FeaturePerfMon, FeatureRandGen, FeatureSPE,
+ FeaturePerfMon, FeatureRNG, FeatureSPE,
FeatureSSBS, FeatureSVE];
list<SubtargetFeature> NeoverseV1 = [HasV8_4aOps, FeatureBF16, FeatureCacheDeepPersist,
FeatureCrypto, FeatureFPARMv8, FeatureFP16FML,
FeatureFullFP16, FeatureI8MM, FeatureNEON,
- FeaturePerfMon, FeatureRandGen, FeatureSPE,
+ FeaturePerfMon, FeatureRNG, FeatureSPE,
FeatureSSBS, FeatureSVE];
list<SubtargetFeature> NeoverseV2 = [HasV9_0aOps, FeatureBF16, FeatureSPE,
FeaturePerfMon, FeatureETE, FeatureI8MM,
FeatureNEON, FeatureSVE2BitPerm, FeatureFP16FML,
- FeatureMTE, FeatureRandGen];
+ FeatureMTE, FeatureRNG];
list<SubtargetFeature> NeoverseV3 = [HasV9_2aOps, FeatureETE, FeatureFP16FML,
FeatureFullFP16, FeatureLS64, FeatureMTE,
- FeaturePerfMon, FeatureRandGen, FeatureSPE,
+ FeaturePerfMon, FeatureRNG, FeatureSPE,
FeatureSPE_EEF, FeatureSVE2BitPerm, FeatureBRBE];
list<SubtargetFeature> NeoverseV3AE = [HasV9_2aOps, FeatureETE, FeatureFP16FML,
FeatureFullFP16, FeatureLS64, FeatureMTE,
- FeaturePerfMon, FeatureRandGen, FeatureSPE,
+ FeaturePerfMon, FeatureRNG, FeatureSPE,
FeatureSPE_EEF, FeatureSVE2BitPerm, FeatureBRBE];
list<SubtargetFeature> Saphira = [HasV8_4aOps, FeatureCrypto, FeatureFPARMv8,
FeatureNEON, FeatureSPE, FeaturePerfMon];
@@ -782,14 +782,14 @@ def ProcessorFeatures {
FeatureFullFP16, FeatureFP16FML, FeatureDotProd,
FeatureJS, FeatureFCMA];
list<SubtargetFeature> Ampere1 = [HasV8_6aOps, FeatureNEON, FeaturePerfMon,
- FeatureSSBS, FeatureRandGen, FeatureSB,
+ FeatureSSBS, FeatureRNG, FeatureSB,
FeatureSHA2, FeatureSHA3, FeatureAES];
list<SubtargetFeature> Ampere1A = [HasV8_6aOps, FeatureNEON, FeaturePerfMon,
- FeatureMTE, FeatureSSBS, FeatureRandGen,
+ FeatureMTE, FeatureSSBS, FeatureRNG,
FeatureSB, FeatureSM4, FeatureSHA2,
FeatureSHA3, FeatureAES];
list<SubtargetFeature> Ampere1B = [HasV8_7aOps, FeatureNEON, FeaturePerfMon,
- FeatureMTE, FeatureSSBS, FeatureRandGen,
+ FeatureMTE, FeatureSSBS, FeatureRNG,
FeatureSB, FeatureSM4, FeatureSHA2,
FeatureSHA3, FeatureAES, FeatureCSSC,
FeatureWFxT, FeatureFullFP16];
diff --git a/llvm/lib/Target/AArch64/AArch64SystemOperands.td b/llvm/lib/Target/AArch64/AArch64SystemOperands.td
index 0564741c497000..07052f7f75e0e9 100644
--- a/llvm/lib/Target/AArch64/AArch64SystemOperands.td
+++ b/llvm/lib/Target/AArch64/AArch64SystemOperands.td
@@ -840,7 +840,7 @@ def : ROSysReg<"ERXFR_EL1", 0b11, 0b000, 0b0101, 0b0100, 0b000>;
// v8.5a "random number" registers
// Op0 Op1 CRn CRm Op2
-let Requires = [{ {AArch64::FeatureRandGen} }] in {
+let Requires = [{ {AArch64::FeatureRNG} }] in {
def : ROSysReg<"RNDR", 0b11, 0b011, 0b0010, 0b0100, 0b000>;
def : ROSysReg<"RNDRRS", 0b11, 0b011, 0b0010, 0b0100, 0b001>;
}
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index 088de150caf41f..c701f154a07fdc 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -3670,7 +3670,7 @@ static const struct Extension {
{"pan-rwv", {AArch64::FeaturePAN_RWV}},
{"ccpp", {AArch64::FeatureCCPP}},
{"rcpc", {AArch64::FeatureRCPC}},
- {"rng", {AArch64::FeatureRandGen}},
+ {"rng", {AArch64::FeatureRNG}},
{"sve", {AArch64::FeatureSVE}},
{"sve2", {AArch64::FeatureSVE2}},
{"sve2-aes", {AArch64::FeatureSVE2AES}},
diff --git a/llvm/test/CodeGen/AArch64/rand.ll b/llvm/test/CodeGen/AArch64/rand.ll
index 706774d83b1870..10d22c1bc632f9 100644
--- a/llvm/test/CodeGen/AArch64/rand.ll
+++ b/llvm/test/CodeGen/AArch64/rand.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc -mtriple=aarch64 -mattr=+v8.5a,+rand -aarch64-enable-sink-fold=true %s -o - | FileCheck %s
+; RUN: llc -mtriple=aarch64 -mattr=+v8.5a,+rng -aarch64-enable-sink-fold=true %s -o - | FileCheck %s
define i32 @rndr(ptr %__addr) {
; CHECK-LABEL: rndr:
diff --git a/llvm/test/MC/AArch64/armv8.5a-rand-error.s b/llvm/test/MC/AArch64/armv8.5a-rand-error.s
index c4cca8a87b2ae9..82dd371db46674 100644
--- a/llvm/test/MC/AArch64/armv8.5a-rand-error.s
+++ b/llvm/test/MC/AArch64/armv8.5a-rand-error.s
@@ -1,4 +1,4 @@
-// RUN: not llvm-mc -triple aarch64 -show-encoding -mattr=+rand < %s 2>&1| FileCheck %s
+// RUN: not llvm-mc -triple aarch64 -show-encoding -mattr=+rng < %s 2>&1| FileCheck %s
mrs rndr
mrs rndrrs
diff --git a/llvm/test/MC/AArch64/armv8.5a-rand.s b/llvm/test/MC/AArch64/armv8.5a-rand.s
index 770990b437e49d..c906d1b874de02 100644
--- a/llvm/test/MC/AArch64/armv8.5a-rand.s
+++ b/llvm/test/MC/AArch64/armv8.5a-rand.s
@@ -1,6 +1,6 @@
-// RUN: llvm-mc -triple aarch64 -show-encoding -mattr=+rand < %s | FileCheck %s
+// RUN: llvm-mc -triple aarch64 -show-encoding -mattr=+rng < %s | FileCheck %s
// RUN: not llvm-mc -triple aarch64 -show-encoding -mattr=+v8.5a < %s 2>&1 | FileCheck %s --check-prefix=NORAND
-// RUN: not llvm-mc -triple aarch64 -show-encoding -mattr=-rand < %s 2>&1 | FileCheck %s --check-prefix=NORAND
+// RUN: not llvm-mc -triple aarch64 -show-encoding -mattr=-rng < %s 2>&1 | FileCheck %s --check-prefix=NORAND
mrs x0, rndr
mrs x1, rndrrs
diff --git a/llvm/test/MC/Disassembler/AArch64/armv8.5a-rand.txt b/llvm/test/MC/Disassembler/AArch64/armv8.5a-rand.txt
index 712ed019789d32..b57c79f5c8f81d 100644
--- a/llvm/test/MC/Disassembler/AArch64/armv8.5a-rand.txt
+++ b/llvm/test/MC/Disassembler/AArch64/armv8.5a-rand.txt
@@ -1,6 +1,6 @@
-# RUN: llvm-mc -triple=aarch64 -mattr=+rand -disassemble < %s | FileCheck %s
+# RUN: llvm-mc -triple=aarch64 -mattr=+rng -disassemble < %s | FileCheck %s
# RUN: llvm-mc -triple=aarch64 -mattr=+v8.5a -disassemble < %s | FileCheck %s --check-prefix=NORAND
-# RUN: llvm-mc -triple=aarch64 -mattr=-rand -disassemble < %s | FileCheck %s --check-prefix=NORAND
+# RUN: llvm-mc -triple=aarch64 -mattr=-rng -disassemble < %s | FileCheck %s --check-prefix=NORAND
[0x00,0x24,0x3b,0xd5]
[0x21,0x24,0x3b,0xd5]
diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 5de536dbe1ef2d..a3b9ced8601586 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1325,7 +1325,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
AArch64::AEK_SM4, AArch64::AEK_FP16, AArch64::AEK_BF16,
- AArch64::AEK_PROFILE, AArch64::AEK_RAND, AArch64::AEK_FP16FML,
+ AArch64::AEK_PROFILE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
"8.4-A"),
@@ -1341,7 +1341,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_FP16, AArch64::AEK_BF16,
AArch64::AEK_SVE2, AArch64::AEK_PROFILE,
AArch64::AEK_FP16FML, AArch64::AEK_I8MM,
- AArch64::AEK_SVE2BITPERM, AArch64::AEK_RAND,
+ AArch64::AEK_SVE2BITPERM, AArch64::AEK_RNG,
AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
"9-A"),
@@ -1359,7 +1359,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SB, AArch64::AEK_PREDRES,
AArch64::AEK_LS64, AArch64::AEK_BRBE,
AArch64::AEK_PAUTH, AArch64::AEK_FLAGM,
- AArch64::AEK_PERFMON, AArch64::AEK_RAND,
+ AArch64::AEK_PERFMON, AArch64::AEK_RNG,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_FP16FML,
AArch64::AEK_PROFILE, AArch64::AEK_JSCVT,
AArch64::AEK_FCMA}),
@@ -1378,7 +1378,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SB, AArch64::AEK_PREDRES,
AArch64::AEK_LS64, AArch64::AEK_BRBE,
AArch64::AEK_PAUTH, AArch64::AEK_FLAGM,
- AArch64::AEK_PERFMON, AArch64::AEK_RAND,
+ AArch64::AEK_PERFMON, AArch64::AEK_RNG,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_FP16FML,
AArch64::AEK_PROFILE, AArch64::AEK_JSCVT,
AArch64::AEK_FCMA}),
@@ -1688,7 +1688,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SB, AArch64::AEK_PREDRES,
AArch64::AEK_FCMA, AArch64::AEK_PAUTH,
AArch64::AEK_FLAGM, AArch64::AEK_PERFMON,
- AArch64::AEK_RAND, AArch64::AEK_SVE2BITPERM,
+ AArch64::AEK_RNG, AArch64::AEK_SVE2BITPERM,
AArch64::AEK_FP16FML, AArch64::AEK_PROFILE,
AArch64::AEK_JSCVT}),
"9.2-A"),
@@ -1700,7 +1700,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_SHA3, AArch64::AEK_BF16, AArch64::AEK_SHA2,
AArch64::AEK_AES, AArch64::AEK_I8MM, AArch64::AEK_SSBS,
- AArch64::AEK_SB, AArch64::AEK_RAND, AArch64::AEK_JSCVT,
+ AArch64::AEK_SB, AArch64::AEK_RNG, AArch64::AEK_JSCVT,
AArch64::AEK_FCMA, AArch64::AEK_PAUTH}),
"8.6-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1711,7 +1711,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_SM4, AArch64::AEK_SHA3, AArch64::AEK_BF16,
AArch64::AEK_SHA2, AArch64::AEK_AES, AArch64::AEK_I8MM,
- AArch64::AEK_SSBS, AArch64::AEK_SB, AArch64::AEK_RAND,
+ AArch64::AEK_SSBS, AArch64::AEK_SB, AArch64::AEK_RNG,
AArch64::AEK_MTE, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
"8.6-A"),
@@ -1723,7 +1723,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_SM4, AArch64::AEK_SHA3, AArch64::AEK_BF16,
AArch64::AEK_SHA2, AArch64::AEK_AES, AArch64::AEK_I8MM,
- AArch64::AEK_SSBS, AArch64::AEK_SB, AArch64::AEK_RAND,
+ AArch64::AEK_SSBS, AArch64::AEK_SB, AArch64::AEK_RNG,
AArch64::AEK_MTE, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH, AArch64::AEK_CSSC}),
"8.7-A"),
@@ -1736,7 +1736,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
AArch64::AEK_SM4, AArch64::AEK_FP16, AArch64::AEK_BF16,
- AArch64::AEK_PROFILE, AArch64::AEK_RAND, AArch64::AEK_FP16FML,
+ AArch64::AEK_PROFILE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
"8.4-A"),
@@ -1966,7 +1966,7 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
AArch64::AEK_SVE2, AArch64::AEK_SVE2AES,
AArch64::AEK_SVE2SM4, AArch64::AEK_SVE2SHA3,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_RCPC,
- AArch64::AEK_RAND, AArch64::AEK_MTE,
+ AArch64::AEK_RNG, AArch64::AEK_MTE,
AArch64::AEK_SSBS, AArch64::AEK_SB,
AArch64::AEK_PREDRES, AArch64::AEK_BF16,
AArch64::AEK_I8MM, AArch64::AEK_F32MM,
@@ -2034,7 +2034,7 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
EXPECT_TRUE(llvm::is_contained(Features, "+sve2p1"));
EXPECT_TRUE(llvm::is_contained(Features, "+b16b16"));
EXPECT_TRUE(llvm::is_contained(Features, "+rcpc"));
- EXPECT_TRUE(llvm::is_contained(Features, "+rand"));
+ EXPECT_TRUE(llvm::is_contained(Features, "+rng"));
EXPECT_TRUE(llvm::is_contained(Features, "+mte"));
EXPECT_TRUE(llvm::is_contained(Features, "+ssbs"));
EXPECT_TRUE(llvm::is_contained(Features, "+sb"));
@@ -2188,7 +2188,7 @@ TEST(TargetParserTest, AArch64ArchExtFeature) {
{"sve2-bitperm", "nosve2-bitperm", "+sve2-bitperm", "-sve2-bitperm"},
{"dotprod", "nodotprod", "+dotprod", "-dotprod"},
{"rcpc", "norcpc", "+rcpc", "-rcpc"},
- {"rng", "norng", "+rand", "-rand"},
+ {"rng", "norng", "+rng", "-rng"},
{"memtag", "nomemtag", "+mte", "-mte"},
{"tme", "notme", "+tme", "-tme"},
{"pauth", "nopauth", "+pauth", "-pauth"},
>From f292e0ce49b18c7ac6dba2aca01aa23fdd59db72 Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Fri, 26 Apr 2024 23:58:59 +0100
Subject: [PATCH 07/15] Rename AEK_SIMD to AEK_NEON
I could have instead renamed the target-feature to +simd, but +neon
is present in so many files that it doesn't seem worth it.
---
clang/lib/Driver/ToolChains/Arch/AArch64.cpp | 2 +-
.../command-disassemble-aarch64-extensions.s | 2 +-
.../llvm/TargetParser/AArch64TargetParser.h | 23 ++-
.../llvm/TargetParser/ARMTargetParser.def | 12 +-
.../llvm/TargetParser/ARMTargetParser.h | 2 +-
.../lib/Target/ARM/AsmParser/ARMAsmParser.cpp | 4 +-
.../ARM/MCTargetDesc/ARMTargetStreamer.cpp | 2 +-
.../TargetParser/TargetParserTest.cpp | 152 +++++++++---------
8 files changed, 99 insertions(+), 100 deletions(-)
diff --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
index 2cd2b35ee51bc6..ea1260f5ab73ba 100644
--- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
@@ -99,7 +99,7 @@ static bool DecodeAArch64Mcpu(const Driver &D, StringRef Mcpu, StringRef &CPU,
CPU = llvm::sys::getHostCPUName();
if (CPU == "generic") {
- Extensions.enable(llvm::AArch64::AEK_SIMD);
+ Extensions.enable(llvm::AArch64::AEK_NEON);
} else {
const std::optional<llvm::AArch64::CpuInfo> CpuInfo =
llvm::AArch64::parseCpu(CPU);
diff --git a/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s b/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
index 25c345c1b91a7b..c5604e84a79c6c 100644
--- a/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
+++ b/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
@@ -44,7 +44,7 @@ fn:
sb // AEK_SB
sha256h q0, q0, v0.4s // AEK_SHA2
bcax v0.16b, v0.16b, v0.16b, v0.16b // AEK_SHA3
- addp v0.4s, v0.4s, v0.4s // AEK_SIMD (neon)
+ addp v0.4s, v0.4s, v0.4s // AEK_NEON
sm4e v0.4s, v0.4s // AEK_SM4
addha za0.s, p0/m, p0/m, z0.s // AEK_SME
fadd za.h[w11, 7], {z12.h - z13.h} // AEK_SMEF16F16
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index b16447c0bcb8f2..92428ae4bc96a0 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -116,7 +116,6 @@ enum ArchExtKind : unsigned {
AEK_JSCVT = AEK_JS,
AEK_PROFILE = AEK_SPE,
AEK_RASv2 = AEK_RASV2,
- AEK_SIMD = AEK_NEON,
AEK_SME2p1 = AEK_SME2P1,
AEK_SVE2p1 = AEK_SVE2P1,
AEK_SME_LUTv2 = AEK_SME_LUTV2,
@@ -202,7 +201,7 @@ inline constexpr ExtensionInfo Extensions[] = {
{"sha1", AArch64::AEK_NONE, {}, {}, FEAT_SHA1, "+fp-armv8,+neon", 120},
{"sha2", AArch64::AEK_SHA2, "+sha2", "-sha2", FEAT_SHA2, "+sha2,+fp-armv8,+neon", 130},
{"sha3", AArch64::AEK_SHA3, "+sha3", "-sha3", FEAT_SHA3, "+sha3,+sha2,+fp-armv8,+neon", 140},
- {"simd", AArch64::AEK_SIMD, "+neon", "-neon", FEAT_SIMD, "+fp-armv8,+neon", 100},
+ {"simd", AArch64::AEK_NEON, "+neon", "-neon", FEAT_SIMD, "+fp-armv8,+neon", 100},
{"sm4", AArch64::AEK_SM4, "+sm4", "-sm4", FEAT_SM4, "+sm4,+fp-armv8,+neon", 106},
{"sme-f16f16", AArch64::AEK_SMEF16F16, "+sme-f16f16", "-sme-f16f16", FEAT_INIT, "+sme2,+sme-f16f16", 0},
{"sme-f64f64", AArch64::AEK_SMEF64F64, "+sme-f64f64", "-sme-f64f64", FEAT_SME_F64, "+sme,+sme-f64f64,+bf16", 560},
@@ -305,17 +304,17 @@ struct ExtensionDependency {
// extension that was added to the architecture first.
inline constexpr ExtensionDependency ExtensionDependencies[] = {
{AEK_FP, AEK_FP16},
- {AEK_FP, AEK_SIMD},
+ {AEK_FP, AEK_NEON},
{AEK_FP, AEK_JSCVT},
{AEK_FP, AEK_FP8},
- {AEK_SIMD, AEK_CRYPTO},
- {AEK_SIMD, AEK_AES},
- {AEK_SIMD, AEK_SHA2},
- {AEK_SIMD, AEK_SHA3},
- {AEK_SIMD, AEK_SM4},
- {AEK_SIMD, AEK_RDM},
- {AEK_SIMD, AEK_DOTPROD},
- {AEK_SIMD, AEK_FCMA},
+ {AEK_NEON, AEK_CRYPTO},
+ {AEK_NEON, AEK_AES},
+ {AEK_NEON, AEK_SHA2},
+ {AEK_NEON, AEK_SHA3},
+ {AEK_NEON, AEK_SM4},
+ {AEK_NEON, AEK_RDM},
+ {AEK_NEON, AEK_DOTPROD},
+ {AEK_NEON, AEK_FCMA},
{AEK_FP16, AEK_FP16FML},
{AEK_FP16, AEK_SVE},
{AEK_BF16, AEK_SME},
@@ -408,7 +407,7 @@ struct ArchInfo {
// clang-format off
inline constexpr ArchInfo ARMV8A = { VersionTuple{8, 0}, AProfile, "armv8-a", "+v8a", (
- AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD})), };
+ AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_NEON})), };
inline constexpr ArchInfo ARMV8_1A = { VersionTuple{8, 1}, AProfile, "armv8.1-a", "+v8.1a", (ARMV8A.DefaultExts |
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM}))};
inline constexpr ArchInfo ARMV8_2A = { VersionTuple{8, 2}, AProfile, "armv8.2-a", "+v8.2a", (ARMV8_1A.DefaultExts |
diff --git a/llvm/include/llvm/TargetParser/ARMTargetParser.def b/llvm/include/llvm/TargetParser/ARMTargetParser.def
index b821d224d7a82c..197ec0b08856cf 100644
--- a/llvm/include/llvm/TargetParser/ARMTargetParser.def
+++ b/llvm/include/llvm/TargetParser/ARMTargetParser.def
@@ -219,12 +219,12 @@ ARM_ARCH_EXT_NAME("dotprod", ARM::AEK_DOTPROD, "+dotprod", "-dotprod")
ARM_ARCH_EXT_NAME("dsp", ARM::AEK_DSP, "+dsp", "-dsp")
ARM_ARCH_EXT_NAME("fp", ARM::AEK_FP, {}, {})
ARM_ARCH_EXT_NAME("fp.dp", ARM::AEK_FP_DP, {}, {})
-ARM_ARCH_EXT_NAME("mve", (ARM::AEK_DSP | ARM::AEK_SIMD), "+mve", "-mve")
-ARM_ARCH_EXT_NAME("mve.fp", (ARM::AEK_DSP | ARM::AEK_SIMD | ARM::AEK_FP),
+ARM_ARCH_EXT_NAME("mve", (ARM::AEK_DSP | ARM::AEK_NEON), "+mve", "-mve")
+ARM_ARCH_EXT_NAME("mve.fp", (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FP),
"+mve.fp", "-mve.fp")
ARM_ARCH_EXT_NAME("idiv", (ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB), {}, {})
ARM_ARCH_EXT_NAME("mp", ARM::AEK_MP, {}, {})
-ARM_ARCH_EXT_NAME("simd", ARM::AEK_SIMD, {}, {})
+ARM_ARCH_EXT_NAME("simd", ARM::AEK_NEON, {}, {})
ARM_ARCH_EXT_NAME("sec", ARM::AEK_SEC, {}, {})
ARM_ARCH_EXT_NAME("virt", ARM::AEK_VIRT, {}, {})
ARM_ARCH_EXT_NAME("fp16", ARM::AEK_FP16, "+fullfp16", "-fullfp16")
@@ -338,12 +338,12 @@ ARM_CPU_NAME("cortex-m23", ARMV8MBaseline, FK_NONE, false, ARM::AEK_NONE)
ARM_CPU_NAME("cortex-m33", ARMV8MMainline, FK_FPV5_SP_D16, false, ARM::AEK_DSP)
ARM_CPU_NAME("cortex-m35p", ARMV8MMainline, FK_FPV5_SP_D16, false, ARM::AEK_DSP)
ARM_CPU_NAME("cortex-m55", ARMV8_1MMainline, FK_FP_ARMV8_FULLFP16_D16, false,
- (ARM::AEK_DSP | ARM::AEK_SIMD | ARM::AEK_FP | ARM::AEK_FP16))
+ (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FP | ARM::AEK_FP16))
ARM_CPU_NAME("cortex-m85", ARMV8_1MMainline, FK_FP_ARMV8_FULLFP16_D16, false,
- (ARM::AEK_DSP | ARM::AEK_SIMD | ARM::AEK_FP | ARM::AEK_FP16 |
+ (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FP | ARM::AEK_FP16 |
ARM::AEK_RAS | ARM::AEK_PACBTI))
ARM_CPU_NAME("cortex-m52", ARMV8_1MMainline, FK_FP_ARMV8_FULLFP16_D16, false,
- (ARM::AEK_DSP | ARM::AEK_SIMD | ARM::AEK_FP | ARM::AEK_FP16 |
+ (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FP | ARM::AEK_FP16 |
ARM::AEK_RAS | ARM::AEK_PACBTI))
ARM_CPU_NAME("cortex-a32", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
ARM_CPU_NAME("cortex-a35", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
diff --git a/llvm/include/llvm/TargetParser/ARMTargetParser.h b/llvm/include/llvm/TargetParser/ARMTargetParser.h
index 2b0ef76a6b51f6..0da378d993faf1 100644
--- a/llvm/include/llvm/TargetParser/ARMTargetParser.h
+++ b/llvm/include/llvm/TargetParser/ARMTargetParser.h
@@ -37,7 +37,7 @@ enum ArchExtKind : uint64_t {
AEK_HWDIVTHUMB = 1 << 4,
AEK_HWDIVARM = 1 << 5,
AEK_MP = 1 << 6,
- AEK_SIMD = 1 << 7,
+ AEK_NEON = 1 << 7,
AEK_SEC = 1 << 8,
AEK_VIRT = 1 << 9,
AEK_DSP = 1 << 10,
diff --git a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
index e54314cc7d00af..260dea8f109768 100644
--- a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
+++ b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
@@ -12916,7 +12916,7 @@ bool ARMAsmParser::enableArchExtFeature(StringRef Name, SMLoc &ExtLoc) {
{ARM::AEK_CRYPTO,
{Feature_HasV8Bit},
{ARM::FeatureCrypto, ARM::FeatureNEON, ARM::FeatureFPARMv8}},
- {(ARM::AEK_DSP | ARM::AEK_SIMD | ARM::AEK_FP),
+ {(ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FP),
{Feature_HasV8_1MMainlineBit},
{ARM::HasMVEFloatOps}},
{ARM::AEK_FP,
@@ -12928,7 +12928,7 @@ bool ARMAsmParser::enableArchExtFeature(StringRef Name, SMLoc &ExtLoc) {
{ARM::AEK_MP,
{Feature_HasV7Bit, Feature_IsNotMClassBit},
{ARM::FeatureMP}},
- {ARM::AEK_SIMD,
+ {ARM::AEK_NEON,
{Feature_HasV8Bit},
{ARM::FeatureNEON, ARM::FeatureVFP2_SP, ARM::FeatureFPARMv8}},
{ARM::AEK_SEC, {Feature_HasV6KBit}, {ARM::FeatureTrustZone}},
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp
index 1237e50c22fdce..8fb00491541a14 100644
--- a/llvm/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp
+++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp
@@ -247,7 +247,7 @@ void ARMTargetStreamer::emitTargetAttributes(const MCSubtargetInfo &STI) {
emitFPU(STI.hasFeature(ARM::FeatureFP64) ? ARM::FK_FPV5_D16
: ARM::FK_FPV5_SP_D16);
if (STI.hasFeature(ARM::HasMVEFloatOps))
- emitArchExtension(ARM::AEK_SIMD | ARM::AEK_DSP | ARM::AEK_FP);
+ emitArchExtension(ARM::AEK_NEON | ARM::AEK_DSP | ARM::AEK_FP);
}
} else if (STI.hasFeature(ARM::FeatureVFP4_D16_SP))
emitFPU(STI.hasFeature(ARM::FeatureD32)
diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index a3b9ced8601586..7f059a6c3c8a98 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -525,17 +525,17 @@ INSTANTIATE_TEST_SUITE_P(
"8-M.Mainline"),
ARMCPUTestParams<uint64_t>(
"cortex-m55", "armv8.1-m.main", "fp-armv8-fullfp16-d16",
- ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_SIMD | ARM::AEK_FP |
+ ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FP |
ARM::AEK_RAS | ARM::AEK_LOB | ARM::AEK_FP16,
"8.1-M.Mainline"),
ARMCPUTestParams<uint64_t>(
"cortex-m85", "armv8.1-m.main", "fp-armv8-fullfp16-d16",
- ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_SIMD | ARM::AEK_FP |
+ ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FP |
ARM::AEK_RAS | ARM::AEK_LOB | ARM::AEK_FP16 | ARM::AEK_PACBTI,
"8.1-M.Mainline"),
ARMCPUTestParams<uint64_t>(
"cortex-m52", "armv8.1-m.main", "fp-armv8-fullfp16-d16",
- ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_SIMD | ARM::AEK_FP |
+ ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FP |
ARM::AEK_RAS | ARM::AEK_LOB | ARM::AEK_FP16 | ARM::AEK_PACBTI,
"8.1-M.Mainline"),
ARMCPUTestParams<uint64_t>("iwmmxt", "iwmmxt", "none", ARM::AEK_NONE,
@@ -1087,25 +1087,25 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a34", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_FP,
- AArch64::AEK_SIMD}),
+ AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a35", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_FP,
- AArch64::AEK_SIMD}),
+ AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a53", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_FP,
- AArch64::AEK_SIMD}),
+ AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a55", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_RAS,
+ AArch64::AEK_FP, AArch64::AEK_NEON, AArch64::AEK_RAS,
AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC}),
"8.2-A"),
@@ -1113,7 +1113,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a510", "armv9-a", "neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_FP,
- AArch64::AEK_SIMD, AArch64::AEK_RAS,
+ AArch64::AEK_NEON, AArch64::AEK_RAS,
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_BF16, AArch64::AEK_I8MM,
@@ -1131,7 +1131,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SVE, AArch64::AEK_SVE2,
AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
AArch64::AEK_LSE, AArch64::AEK_RDM,
- AArch64::AEK_SIMD, AArch64::AEK_RCPC,
+ AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
AArch64::AEK_FP, AArch64::AEK_SB,
AArch64::AEK_SSBS, AArch64::AEK_MTE,
@@ -1147,7 +1147,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SVE, AArch64::AEK_SVE2,
AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
AArch64::AEK_LSE, AArch64::AEK_RDM,
- AArch64::AEK_SIMD, AArch64::AEK_RCPC,
+ AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
AArch64::AEK_FP, AArch64::AEK_SB,
AArch64::AEK_SSBS, AArch64::AEK_MTE,
@@ -1160,7 +1160,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a57", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_FP,
- AArch64::AEK_SIMD}),
+ AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a65", "armv8.2-a", "crypto-neon-fp-armv8",
@@ -1168,7 +1168,7 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_DOTPROD, AArch64::AEK_FP, AArch64::AEK_FP16,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
- AArch64::AEK_RDM, AArch64::AEK_SIMD, AArch64::AEK_SSBS}),
+ AArch64::AEK_RDM, AArch64::AEK_NEON, AArch64::AEK_SSBS}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a65ae", "armv8.2-a", "crypto-neon-fp-armv8",
@@ -1176,25 +1176,25 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_DOTPROD, AArch64::AEK_FP, AArch64::AEK_FP16,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
- AArch64::AEK_RDM, AArch64::AEK_SIMD, AArch64::AEK_SSBS}),
+ AArch64::AEK_RDM, AArch64::AEK_NEON, AArch64::AEK_SSBS}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a72", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_FP,
- AArch64::AEK_SIMD}),
+ AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a73", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_FP,
- AArch64::AEK_SIMD}),
+ AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a75", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_RAS,
+ AArch64::AEK_FP, AArch64::AEK_NEON, AArch64::AEK_RAS,
AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC}),
"8.2-A"),
@@ -1202,7 +1202,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a76", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_SIMD,
+ AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS}),
"8.2-A"),
@@ -1210,7 +1210,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a76ae", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_SIMD,
+ AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS}),
"8.2-A"),
@@ -1218,7 +1218,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a77", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_SIMD,
+ AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS}),
"8.2-A"),
@@ -1226,7 +1226,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a78", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_SIMD,
+ AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
AArch64::AEK_PROFILE}),
@@ -1235,7 +1235,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a78ae", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_SIMD,
+ AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
AArch64::AEK_PROFILE}),
@@ -1244,7 +1244,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a78c", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_RAS, AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_SIMD,
+ AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
AArch64::AEK_SSBS, AArch64::AEK_PROFILE, AArch64::AEK_FLAGM,
@@ -1254,7 +1254,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a710", "armv9-a", "neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_FP,
- AArch64::AEK_SIMD, AArch64::AEK_RAS,
+ AArch64::AEK_NEON, AArch64::AEK_RAS,
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_MTE, AArch64::AEK_FP16,
@@ -1269,7 +1269,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a715", "armv9-a", "neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_FP,
- AArch64::AEK_BF16, AArch64::AEK_SIMD,
+ AArch64::AEK_BF16, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_RDM, AArch64::AEK_RCPC,
AArch64::AEK_DOTPROD, AArch64::AEK_MTE,
@@ -1289,7 +1289,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SVE, AArch64::AEK_SVE2,
AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
AArch64::AEK_LSE, AArch64::AEK_RDM,
- AArch64::AEK_SIMD, AArch64::AEK_RCPC,
+ AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
AArch64::AEK_FP, AArch64::AEK_SB,
AArch64::AEK_SSBS, AArch64::AEK_MTE,
@@ -1306,7 +1306,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SVE, AArch64::AEK_SVE2,
AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
AArch64::AEK_LSE, AArch64::AEK_RDM,
- AArch64::AEK_SIMD, AArch64::AEK_RCPC,
+ AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
AArch64::AEK_FP, AArch64::AEK_SB,
AArch64::AEK_SSBS, AArch64::AEK_MTE,
@@ -1321,7 +1321,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_RAS, AArch64::AEK_SVE, AArch64::AEK_SSBS,
AArch64::AEK_RCPC, AArch64::AEK_CRC, AArch64::AEK_FP,
- AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_LSE,
+ AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
AArch64::AEK_SM4, AArch64::AEK_FP16, AArch64::AEK_BF16,
@@ -1335,7 +1335,7 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_RAS, AArch64::AEK_SVE,
AArch64::AEK_SSBS, AArch64::AEK_RCPC,
AArch64::AEK_CRC, AArch64::AEK_FP,
- AArch64::AEK_SIMD, AArch64::AEK_MTE,
+ AArch64::AEK_NEON, AArch64::AEK_MTE,
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_FP16, AArch64::AEK_BF16,
@@ -1352,7 +1352,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SVE, AArch64::AEK_SVE2,
AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
AArch64::AEK_LSE, AArch64::AEK_RDM,
- AArch64::AEK_SIMD, AArch64::AEK_RCPC,
+ AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
AArch64::AEK_FP, AArch64::AEK_PROFILE,
AArch64::AEK_MTE, AArch64::AEK_SSBS,
@@ -1371,7 +1371,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SVE, AArch64::AEK_SVE2,
AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
AArch64::AEK_LSE, AArch64::AEK_RDM,
- AArch64::AEK_SIMD, AArch64::AEK_RCPC,
+ AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
AArch64::AEK_FP, AArch64::AEK_PROFILE,
AArch64::AEK_MTE, AArch64::AEK_SSBS,
@@ -1387,7 +1387,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-r82", "armv8-r", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_RDM, AArch64::AEK_SSBS,
- AArch64::AEK_DOTPROD, AArch64::AEK_FP, AArch64::AEK_SIMD,
+ AArch64::AEK_DOTPROD, AArch64::AEK_FP, AArch64::AEK_NEON,
AArch64::AEK_FP16, AArch64::AEK_FP16FML, AArch64::AEK_RAS,
AArch64::AEK_RCPC, AArch64::AEK_LSE, AArch64::AEK_SB,
AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_PAUTH}),
@@ -1396,7 +1396,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-x1", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_SIMD,
+ AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
AArch64::AEK_PROFILE}),
@@ -1405,7 +1405,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-x1c", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_SIMD,
+ AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
AArch64::AEK_PAUTH, AArch64::AEK_PROFILE, AArch64::AEK_FLAGM}),
@@ -1414,7 +1414,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-x2", "armv9-a", "neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_FP,
- AArch64::AEK_SIMD, AArch64::AEK_RAS,
+ AArch64::AEK_NEON, AArch64::AEK_RAS,
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_MTE, AArch64::AEK_PAUTH,
@@ -1429,7 +1429,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-x3", "armv9-a", "neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_FP,
- AArch64::AEK_BF16, AArch64::AEK_SIMD,
+ AArch64::AEK_BF16, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_RDM, AArch64::AEK_RCPC,
AArch64::AEK_DOTPROD, AArch64::AEK_MTE,
@@ -1449,7 +1449,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SVE, AArch64::AEK_SVE2,
AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
AArch64::AEK_LSE, AArch64::AEK_RDM,
- AArch64::AEK_SIMD, AArch64::AEK_RCPC,
+ AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
AArch64::AEK_FP, AArch64::AEK_SB,
AArch64::AEK_SSBS, AArch64::AEK_MTE,
@@ -1463,44 +1463,44 @@ INSTANTIATE_TEST_SUITE_P(
"cyclone", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_NONE, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_FP,
- AArch64::AEK_SIMD}),
+ AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"apple-a7", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_NONE, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_FP,
- AArch64::AEK_SIMD}),
+ AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"apple-a8", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_NONE, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_FP,
- AArch64::AEK_SIMD}),
+ AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"apple-a9", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_NONE, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_FP,
- AArch64::AEK_SIMD}),
+ AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"apple-a10", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_FP,
- AArch64::AEK_RDM, AArch64::AEK_SIMD}),
+ AArch64::AEK_RDM, AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"apple-a11", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FP, AArch64::AEK_LSE, AArch64::AEK_RAS,
- AArch64::AEK_RDM, AArch64::AEK_SIMD, AArch64::AEK_FP16}),
+ AArch64::AEK_RDM, AArch64::AEK_NEON, AArch64::AEK_FP16}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"apple-a12", "armv8.3-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_LSE,
+ AArch64::AEK_FP, AArch64::AEK_NEON, AArch64::AEK_LSE,
AArch64::AEK_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
@@ -1509,7 +1509,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-a13", "armv8.4-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_SIMD,
+ AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_JSCVT,
@@ -1519,7 +1519,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-a14", "armv8.5-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_SIMD,
+ AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_JSCVT,
@@ -1529,7 +1529,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-a15", "armv8.6-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_SIMD,
+ AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
@@ -1540,7 +1540,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-a16", "armv8.6-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_SIMD,
+ AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
@@ -1551,7 +1551,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-a17", "armv8.6-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_SIMD,
+ AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
@@ -1562,7 +1562,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-m1", "armv8.5-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_SIMD,
+ AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_JSCVT,
@@ -1572,7 +1572,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-m2", "armv8.6-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_SIMD,
+ AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
@@ -1583,7 +1583,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-m3", "armv8.6-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_SIMD,
+ AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
@@ -1594,7 +1594,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-s4", "armv8.3-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_LSE,
+ AArch64::AEK_FP, AArch64::AEK_NEON, AArch64::AEK_LSE,
AArch64::AEK_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
@@ -1603,7 +1603,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-s5", "armv8.3-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_LSE,
+ AArch64::AEK_FP, AArch64::AEK_NEON, AArch64::AEK_LSE,
AArch64::AEK_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
@@ -1612,7 +1612,7 @@ INSTANTIATE_TEST_SUITE_P(
"exynos-m3", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_FP,
- AArch64::AEK_SIMD}),
+ AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"exynos-m4", "armv8.2-a", "crypto-neon-fp-armv8",
@@ -1620,7 +1620,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SHA2, AArch64::AEK_DOTPROD,
AArch64::AEK_FP, AArch64::AEK_FP16,
AArch64::AEK_LSE, AArch64::AEK_RAS,
- AArch64::AEK_RDM, AArch64::AEK_SIMD}),
+ AArch64::AEK_RDM, AArch64::AEK_NEON}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"exynos-m5", "armv8.2-a", "crypto-neon-fp-armv8",
@@ -1628,19 +1628,19 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SHA2, AArch64::AEK_DOTPROD,
AArch64::AEK_FP, AArch64::AEK_FP16,
AArch64::AEK_LSE, AArch64::AEK_RAS,
- AArch64::AEK_RDM, AArch64::AEK_SIMD}),
+ AArch64::AEK_RDM, AArch64::AEK_NEON}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"falkor", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_FP,
- AArch64::AEK_SIMD, AArch64::AEK_RDM}),
+ AArch64::AEK_NEON, AArch64::AEK_RDM}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"kryo", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_FP,
- AArch64::AEK_SIMD}),
+ AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"neoverse-e1", "armv8.2-a", "crypto-neon-fp-armv8",
@@ -1648,7 +1648,7 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_DOTPROD, AArch64::AEK_FP, AArch64::AEK_FP16,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
- AArch64::AEK_RDM, AArch64::AEK_SIMD, AArch64::AEK_SSBS}),
+ AArch64::AEK_RDM, AArch64::AEK_NEON, AArch64::AEK_SSBS}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"neoverse-n1", "armv8.2-a", "crypto-neon-fp-armv8",
@@ -1656,14 +1656,14 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_DOTPROD, AArch64::AEK_FP, AArch64::AEK_FP16,
AArch64::AEK_LSE, AArch64::AEK_PROFILE, AArch64::AEK_RAS,
- AArch64::AEK_RCPC, AArch64::AEK_RDM, AArch64::AEK_SIMD,
+ AArch64::AEK_RCPC, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_SSBS}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"neoverse-n2", "armv9-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_FP,
- AArch64::AEK_SIMD, AArch64::AEK_FP16,
+ AArch64::AEK_NEON, AArch64::AEK_FP16,
AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_SVE, AArch64::AEK_DOTPROD,
AArch64::AEK_RCPC, AArch64::AEK_RDM,
@@ -1681,7 +1681,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SVE, AArch64::AEK_SVE2,
AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
AArch64::AEK_LSE, AArch64::AEK_RDM,
- AArch64::AEK_SIMD, AArch64::AEK_RCPC,
+ AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
AArch64::AEK_FP, AArch64::AEK_PROFILE,
AArch64::AEK_MTE, AArch64::AEK_SSBS,
@@ -1696,7 +1696,7 @@ INSTANTIATE_TEST_SUITE_P(
"ampere1", "armv8.6-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_FP, AArch64::AEK_FP16,
- AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_LSE,
+ AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_SHA3, AArch64::AEK_BF16, AArch64::AEK_SHA2,
AArch64::AEK_AES, AArch64::AEK_I8MM, AArch64::AEK_SSBS,
@@ -1707,7 +1707,7 @@ INSTANTIATE_TEST_SUITE_P(
"ampere1a", "armv8.6-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_FP, AArch64::AEK_FP16,
- AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_LSE,
+ AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_SM4, AArch64::AEK_SHA3, AArch64::AEK_BF16,
AArch64::AEK_SHA2, AArch64::AEK_AES, AArch64::AEK_I8MM,
@@ -1719,7 +1719,7 @@ INSTANTIATE_TEST_SUITE_P(
"ampere1b", "armv8.7-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_FP, AArch64::AEK_FP16,
- AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_LSE,
+ AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_SM4, AArch64::AEK_SHA3, AArch64::AEK_BF16,
AArch64::AEK_SHA2, AArch64::AEK_AES, AArch64::AEK_I8MM,
@@ -1732,7 +1732,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_RAS, AArch64::AEK_SVE, AArch64::AEK_SSBS,
AArch64::AEK_RCPC, AArch64::AEK_CRC, AArch64::AEK_FP,
- AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_LSE,
+ AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
AArch64::AEK_SM4, AArch64::AEK_FP16, AArch64::AEK_BF16,
@@ -1745,45 +1745,45 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_LSE,
AArch64::AEK_RDM, AArch64::AEK_FP,
- AArch64::AEK_SIMD}),
+ AArch64::AEK_NEON}),
"8.1-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"thunderx3t110", "armv8.3-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_FP,
- AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_RCPC,
+ AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_RCPC,
AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_PAUTH}),
"8.3-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"thunderx", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_SIMD,
+ AArch64::AEK_SHA2, AArch64::AEK_NEON,
AArch64::AEK_FP}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"thunderxt81", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_SIMD,
+ AArch64::AEK_SHA2, AArch64::AEK_NEON,
AArch64::AEK_FP}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"thunderxt83", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_SIMD,
+ AArch64::AEK_SHA2, AArch64::AEK_NEON,
AArch64::AEK_FP}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"thunderxt88", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_SIMD,
+ AArch64::AEK_SHA2, AArch64::AEK_NEON,
AArch64::AEK_FP}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"tsv110", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_RAS,
+ AArch64::AEK_FP, AArch64::AEK_NEON, AArch64::AEK_RAS,
AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_PROFILE,
AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_DOTPROD}),
@@ -1792,7 +1792,7 @@ INSTANTIATE_TEST_SUITE_P(
"a64fx", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_FP,
- AArch64::AEK_SIMD, AArch64::AEK_FP16,
+ AArch64::AEK_NEON, AArch64::AEK_FP16,
AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_SVE, AArch64::AEK_RDM}),
"8.2-A"),
@@ -1800,7 +1800,7 @@ INSTANTIATE_TEST_SUITE_P(
"carmel", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_FP16,
+ AArch64::AEK_FP, AArch64::AEK_NEON, AArch64::AEK_FP16,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_RDM}),
"8.2-A")),
ARMCPUTestParams<AArch64::ExtensionBitset>::PrintToStringParamName);
@@ -1960,7 +1960,7 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
AArch64::AEK_SM4, AArch64::AEK_SHA3,
AArch64::AEK_SHA2, AArch64::AEK_AES,
AArch64::AEK_DOTPROD, AArch64::AEK_FP,
- AArch64::AEK_SIMD, AArch64::AEK_FP16,
+ AArch64::AEK_NEON, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_PROFILE,
AArch64::AEK_RAS, AArch64::AEK_SVE,
AArch64::AEK_SVE2, AArch64::AEK_SVE2AES,
>From 2f0d1bb8cb69ce785ef0c33b51b9f7a5a4e3c48b Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Sat, 27 Apr 2024 00:05:55 +0100
Subject: [PATCH 08/15] Rename AEK_PROFILE to AEK_SPE
---
.../command-disassemble-aarch64-extensions.s | 2 +-
.../llvm/TargetParser/AArch64TargetParser.h | 50 +++++++------
.../TargetParser/TargetParserTest.cpp | 72 +++++++++----------
3 files changed, 61 insertions(+), 63 deletions(-)
diff --git a/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s b/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
index c5604e84a79c6c..cdd785df6c75b6 100644
--- a/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
+++ b/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
@@ -35,7 +35,7 @@ fn:
pacia x0, x1 // AEK_PAUTH
mrs x0, pmccntr_el0 // AEK_PERFMON
cfp rctx, x0 // AEK_PREDRES
- psb csync // AEK_PROFILE/SPE
+ psb csync // AEK_SPE
msr erxpfgctl_el1, x0 // AEK_RAS
ldaprb w0, [x0, #0] // AEK_RCPC
stilp w26, w2, [x18] // AEK_RCPC3
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index 92428ae4bc96a0..a9a01b6b026f9e 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -114,7 +114,6 @@ enum ArchExtKind : unsigned {
AEK_FP = AEK_FPARMV8,
AEK_FP16 = AEK_FULLFP16,
AEK_JSCVT = AEK_JS,
- AEK_PROFILE = AEK_SPE,
AEK_RASv2 = AEK_RASV2,
AEK_SME2p1 = AEK_SME2P1,
AEK_SVE2p1 = AEK_SVE2P1,
@@ -188,7 +187,7 @@ inline constexpr ExtensionInfo Extensions[] = {
{"pmuv3", AArch64::AEK_PERFMON, "+perfmon", "-perfmon", FEAT_INIT, "", 0},
{"predres", AArch64::AEK_PREDRES, "+predres", "-predres", FEAT_PREDRES, "+predres", 480},
{"predres2", AArch64::AEK_SPECRES2, "+specres2", "-specres2", FEAT_INIT, "", 0},
- {"profile", AArch64::AEK_PROFILE, "+spe", "-spe", FEAT_INIT, "", 0},
+ {"profile", AArch64::AEK_SPE, "+spe", "-spe", FEAT_INIT, "", 0},
{"ras", AArch64::AEK_RAS, "+ras", "-ras", FEAT_INIT, "", 0},
{"rasv2", AArch64::AEK_RASv2, "+rasv2", "-rasv2", FEAT_INIT, "", 0},
{"rcpc", AArch64::AEK_RCPC, "+rcpc", "-rcpc", FEAT_RCPC, "+rcpc", 230},
@@ -531,17 +530,17 @@ inline constexpr CpuInfo CpuInfos[] = {
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
AArch64::AEK_RCPC, AArch64::AEK_SSBS,
- AArch64::AEK_PROFILE})},
+ AArch64::AEK_SPE})},
{"cortex-a78ae", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
AArch64::AEK_RCPC, AArch64::AEK_SSBS,
- AArch64::AEK_PROFILE})},
+ AArch64::AEK_SPE})},
{"cortex-a78c", ARMV8_2A,
AArch64::ExtensionBitset(
{AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
- AArch64::AEK_PROFILE, AArch64::AEK_FLAGM, AArch64::AEK_PAUTH})},
+ AArch64::AEK_SPE, AArch64::AEK_FLAGM, AArch64::AEK_PAUTH})},
{"cortex-a710", ARMV9A,
AArch64::ExtensionBitset({AArch64::AEK_MTE, AArch64::AEK_PAUTH,
AArch64::AEK_FLAGM, AArch64::AEK_SB,
@@ -553,31 +552,31 @@ inline constexpr CpuInfo CpuInfos[] = {
{AArch64::AEK_SB, AArch64::AEK_SSBS, AArch64::AEK_MTE,
AArch64::AEK_FP16, AArch64::AEK_FP16FML, AArch64::AEK_PAUTH,
AArch64::AEK_I8MM, AArch64::AEK_PREDRES, AArch64::AEK_PERFMON,
- AArch64::AEK_PROFILE, AArch64::AEK_SVE, AArch64::AEK_SVE2BITPERM,
+ AArch64::AEK_SPE, AArch64::AEK_SVE, AArch64::AEK_SVE2BITPERM,
AArch64::AEK_BF16, AArch64::AEK_FLAGM})},
{"cortex-a720", ARMV9_2A,
AArch64::ExtensionBitset({AArch64::AEK_SB, AArch64::AEK_SSBS,
AArch64::AEK_MTE, AArch64::AEK_FP16FML,
AArch64::AEK_PAUTH, AArch64::AEK_SVE2BITPERM,
AArch64::AEK_FLAGM, AArch64::AEK_PERFMON,
- AArch64::AEK_PREDRES, AArch64::AEK_PROFILE})},
+ AArch64::AEK_PREDRES, AArch64::AEK_SPE})},
{"cortex-a720ae", ARMV9_2A,
AArch64::ExtensionBitset({AArch64::AEK_SB, AArch64::AEK_SSBS,
AArch64::AEK_MTE, AArch64::AEK_FP16FML,
AArch64::AEK_PAUTH, AArch64::AEK_SVE2BITPERM,
AArch64::AEK_FLAGM, AArch64::AEK_PERFMON,
- AArch64::AEK_PREDRES, AArch64::AEK_PROFILE})},
+ AArch64::AEK_PREDRES, AArch64::AEK_SPE})},
{"cortex-r82", ARMV8R, AArch64::ExtensionBitset({AArch64::AEK_LSE})},
{"cortex-x1", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
AArch64::AEK_RCPC, AArch64::AEK_SSBS,
- AArch64::AEK_PROFILE})},
+ AArch64::AEK_SPE})},
{"cortex-x1c", ARMV8_2A,
AArch64::ExtensionBitset(
{AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
- AArch64::AEK_PAUTH, AArch64::AEK_PROFILE, AArch64::AEK_FLAGM})},
+ AArch64::AEK_PAUTH, AArch64::AEK_SPE, AArch64::AEK_FLAGM})},
{"cortex-x2", ARMV9A,
AArch64::ExtensionBitset(
{AArch64::AEK_MTE, AArch64::AEK_BF16, AArch64::AEK_I8MM,
@@ -586,7 +585,7 @@ inline constexpr CpuInfo CpuInfos[] = {
AArch64::AEK_FP16FML, AArch64::AEK_FLAGM})},
{"cortex-x3", ARMV9A,
AArch64::ExtensionBitset(
- {AArch64::AEK_SVE, AArch64::AEK_PERFMON, AArch64::AEK_PROFILE,
+ {AArch64::AEK_SVE, AArch64::AEK_PERFMON, AArch64::AEK_SPE,
AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_MTE,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_SB, AArch64::AEK_PAUTH,
AArch64::AEK_FP16, AArch64::AEK_FP16FML, AArch64::AEK_PREDRES,
@@ -596,7 +595,7 @@ inline constexpr CpuInfo CpuInfos[] = {
AArch64::AEK_MTE, AArch64::AEK_FP16FML,
AArch64::AEK_PAUTH, AArch64::AEK_SVE2BITPERM,
AArch64::AEK_FLAGM, AArch64::AEK_PERFMON,
- AArch64::AEK_PREDRES, AArch64::AEK_PROFILE})},
+ AArch64::AEK_PREDRES, AArch64::AEK_SPE})},
{"neoverse-e1", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
@@ -604,7 +603,7 @@ inline constexpr CpuInfo CpuInfos[] = {
{"neoverse-n1", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
- AArch64::AEK_PROFILE, AArch64::AEK_RCPC,
+ AArch64::AEK_SPE, AArch64::AEK_RCPC,
AArch64::AEK_SSBS})},
{"neoverse-n2", ARMV9A,
AArch64::ExtensionBitset(
@@ -613,42 +612,41 @@ inline constexpr CpuInfo CpuInfos[] = {
AArch64::AEK_SB, AArch64::AEK_SSBS, AArch64::AEK_SVE,
AArch64::AEK_SVE2, AArch64::AEK_SVE2BITPERM})},
{"neoverse-n3", ARMV9_2A,
- AArch64::ExtensionBitset({AArch64::AEK_MTE, AArch64::AEK_SSBS,
- AArch64::AEK_SB, AArch64::AEK_PREDRES,
- AArch64::AEK_FP16FML, AArch64::AEK_PAUTH,
- AArch64::AEK_FLAGM, AArch64::AEK_PERFMON,
- AArch64::AEK_RNG, AArch64::AEK_SVE2BITPERM,
- AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})},
+ AArch64::ExtensionBitset(
+ {AArch64::AEK_MTE, AArch64::AEK_SSBS, AArch64::AEK_SB,
+ AArch64::AEK_PREDRES, AArch64::AEK_FP16FML, AArch64::AEK_PAUTH,
+ AArch64::AEK_FLAGM, AArch64::AEK_PERFMON, AArch64::AEK_RNG,
+ AArch64::AEK_SVE2BITPERM, AArch64::AEK_SPE, AArch64::AEK_PERFMON})},
{"neoverse-512tvb", ARMV8_4A,
AArch64::ExtensionBitset(
{AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
AArch64::AEK_SM4, AArch64::AEK_SVE, AArch64::AEK_SSBS,
AArch64::AEK_FP16, AArch64::AEK_BF16, AArch64::AEK_DOTPROD,
- AArch64::AEK_PROFILE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
+ AArch64::AEK_SPE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
AArch64::AEK_I8MM})},
{"neoverse-v1", ARMV8_4A,
AArch64::ExtensionBitset(
{AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
AArch64::AEK_SM4, AArch64::AEK_SVE, AArch64::AEK_SSBS,
AArch64::AEK_FP16, AArch64::AEK_BF16, AArch64::AEK_DOTPROD,
- AArch64::AEK_PROFILE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
+ AArch64::AEK_SPE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
AArch64::AEK_I8MM})},
{"neoverse-v2", ARMV9A,
AArch64::ExtensionBitset(
{AArch64::AEK_SVE, AArch64::AEK_SVE2, AArch64::AEK_SSBS,
AArch64::AEK_FP16, AArch64::AEK_BF16, AArch64::AEK_RNG,
- AArch64::AEK_DOTPROD, AArch64::AEK_PROFILE, AArch64::AEK_SVE2BITPERM,
+ AArch64::AEK_DOTPROD, AArch64::AEK_SPE, AArch64::AEK_SVE2BITPERM,
AArch64::AEK_FP16FML, AArch64::AEK_I8MM, AArch64::AEK_MTE})},
{"neoverse-v3", ARMV9_2A,
AArch64::ExtensionBitset(
- {AArch64::AEK_PROFILE, AArch64::AEK_MTE, AArch64::AEK_SSBS,
+ {AArch64::AEK_SPE, AArch64::AEK_MTE, AArch64::AEK_SSBS,
AArch64::AEK_SB, AArch64::AEK_PREDRES, AArch64::AEK_LS64,
AArch64::AEK_BRBE, AArch64::AEK_PAUTH, AArch64::AEK_FLAGM,
AArch64::AEK_PERFMON, AArch64::AEK_RNG, AArch64::AEK_SVE2BITPERM,
AArch64::AEK_FP16FML})},
{"neoverse-v3ae", ARMV9_2A,
(AArch64::ExtensionBitset(
- {AArch64::AEK_PROFILE, AArch64::AEK_MTE, AArch64::AEK_SSBS,
+ {AArch64::AEK_SPE, AArch64::AEK_MTE, AArch64::AEK_SSBS,
AArch64::AEK_SB, AArch64::AEK_PREDRES, AArch64::AEK_LS64,
AArch64::AEK_BRBE, AArch64::AEK_PAUTH, AArch64::AEK_FLAGM,
AArch64::AEK_PERFMON, AArch64::AEK_RNG, AArch64::AEK_SVE2BITPERM,
@@ -728,7 +726,7 @@ inline constexpr CpuInfo CpuInfos[] = {
AArch64::AEK_CRC, AArch64::AEK_RDM})},
{"saphira", ARMV8_3A,
AArch64::ExtensionBitset(
- {AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_PROFILE})},
+ {AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SPE})},
{"kryo", ARMV8A,
AArch64::ExtensionBitset(
{AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_CRC})},
@@ -751,7 +749,7 @@ inline constexpr CpuInfo CpuInfos[] = {
{"tsv110", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
- AArch64::AEK_FP16FML, AArch64::AEK_PROFILE,
+ AArch64::AEK_FP16FML, AArch64::AEK_SPE,
AArch64::AEK_JSCVT, AArch64::AEK_FCMA})},
{"a64fx", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 7f059a6c3c8a98..0fa2157cf77f1a 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1229,7 +1229,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
- AArch64::AEK_PROFILE}),
+ AArch64::AEK_SPE}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a78ae", "armv8.2-a", "crypto-neon-fp-armv8",
@@ -1238,7 +1238,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
- AArch64::AEK_PROFILE}),
+ AArch64::AEK_SPE}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a78c", "armv8.2-a", "crypto-neon-fp-armv8",
@@ -1247,7 +1247,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
- AArch64::AEK_SSBS, AArch64::AEK_PROFILE, AArch64::AEK_FLAGM,
+ AArch64::AEK_SSBS, AArch64::AEK_SPE, AArch64::AEK_FLAGM,
AArch64::AEK_PAUTH}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1277,7 +1277,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SVE2, AArch64::AEK_SVE2BITPERM,
AArch64::AEK_SSBS, AArch64::AEK_SB,
AArch64::AEK_I8MM, AArch64::AEK_PERFMON,
- AArch64::AEK_PREDRES, AArch64::AEK_PROFILE,
+ AArch64::AEK_PREDRES, AArch64::AEK_SPE,
AArch64::AEK_FP16FML, AArch64::AEK_FP16,
AArch64::AEK_FLAGM, AArch64::AEK_JSCVT,
AArch64::AEK_FCMA}),
@@ -1296,7 +1296,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_FP16FML, AArch64::AEK_PAUTH,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_FLAGM,
AArch64::AEK_PERFMON, AArch64::AEK_PREDRES,
- AArch64::AEK_PROFILE, AArch64::AEK_JSCVT,
+ AArch64::AEK_SPE, AArch64::AEK_JSCVT,
AArch64::AEK_FCMA}),
"9.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1313,20 +1313,20 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_FP16FML, AArch64::AEK_PAUTH,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_FLAGM,
AArch64::AEK_PERFMON, AArch64::AEK_PREDRES,
- AArch64::AEK_PROFILE, AArch64::AEK_JSCVT,
+ AArch64::AEK_SPE, AArch64::AEK_JSCVT,
AArch64::AEK_FCMA}),
"9.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"neoverse-v1", "armv8.4-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_RAS, AArch64::AEK_SVE, AArch64::AEK_SSBS,
- AArch64::AEK_RCPC, AArch64::AEK_CRC, AArch64::AEK_FP,
- AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
- AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
- AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
- AArch64::AEK_SM4, AArch64::AEK_FP16, AArch64::AEK_BF16,
- AArch64::AEK_PROFILE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
- AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
+ {AArch64::AEK_RAS, AArch64::AEK_SVE, AArch64::AEK_SSBS,
+ AArch64::AEK_RCPC, AArch64::AEK_CRC, AArch64::AEK_FP,
+ AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
+ AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
+ AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
+ AArch64::AEK_SM4, AArch64::AEK_FP16, AArch64::AEK_BF16,
+ AArch64::AEK_SPE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
+ AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
"8.4-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1339,7 +1339,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_FP16, AArch64::AEK_BF16,
- AArch64::AEK_SVE2, AArch64::AEK_PROFILE,
+ AArch64::AEK_SVE2, AArch64::AEK_SPE,
AArch64::AEK_FP16FML, AArch64::AEK_I8MM,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_RNG,
AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
@@ -1354,14 +1354,14 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
- AArch64::AEK_FP, AArch64::AEK_PROFILE,
+ AArch64::AEK_FP, AArch64::AEK_SPE,
AArch64::AEK_MTE, AArch64::AEK_SSBS,
AArch64::AEK_SB, AArch64::AEK_PREDRES,
AArch64::AEK_LS64, AArch64::AEK_BRBE,
AArch64::AEK_PAUTH, AArch64::AEK_FLAGM,
AArch64::AEK_PERFMON, AArch64::AEK_RNG,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_FP16FML,
- AArch64::AEK_PROFILE, AArch64::AEK_JSCVT,
+ AArch64::AEK_SPE, AArch64::AEK_JSCVT,
AArch64::AEK_FCMA}),
"9.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1373,14 +1373,14 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
- AArch64::AEK_FP, AArch64::AEK_PROFILE,
+ AArch64::AEK_FP, AArch64::AEK_SPE,
AArch64::AEK_MTE, AArch64::AEK_SSBS,
AArch64::AEK_SB, AArch64::AEK_PREDRES,
AArch64::AEK_LS64, AArch64::AEK_BRBE,
AArch64::AEK_PAUTH, AArch64::AEK_FLAGM,
AArch64::AEK_PERFMON, AArch64::AEK_RNG,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_FP16FML,
- AArch64::AEK_PROFILE, AArch64::AEK_JSCVT,
+ AArch64::AEK_SPE, AArch64::AEK_JSCVT,
AArch64::AEK_FCMA}),
"9.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1399,7 +1399,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
- AArch64::AEK_PROFILE}),
+ AArch64::AEK_SPE}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-x1c", "armv8.2-a", "crypto-neon-fp-armv8",
@@ -1408,7 +1408,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
- AArch64::AEK_PAUTH, AArch64::AEK_PROFILE, AArch64::AEK_FLAGM}),
+ AArch64::AEK_PAUTH, AArch64::AEK_SPE, AArch64::AEK_FLAGM}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-x2", "armv9-a", "neon-fp-armv8",
@@ -1435,7 +1435,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_DOTPROD, AArch64::AEK_MTE,
AArch64::AEK_PAUTH, AArch64::AEK_SVE,
AArch64::AEK_SVE2, AArch64::AEK_SVE2BITPERM,
- AArch64::AEK_SB, AArch64::AEK_PROFILE,
+ AArch64::AEK_SB, AArch64::AEK_SPE,
AArch64::AEK_PERFMON, AArch64::AEK_I8MM,
AArch64::AEK_FP16, AArch64::AEK_FP16FML,
AArch64::AEK_PREDRES, AArch64::AEK_FLAGM,
@@ -1456,7 +1456,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_FP16FML, AArch64::AEK_PAUTH,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_FLAGM,
AArch64::AEK_PERFMON, AArch64::AEK_PREDRES,
- AArch64::AEK_PROFILE, AArch64::AEK_JSCVT,
+ AArch64::AEK_SPE, AArch64::AEK_JSCVT,
AArch64::AEK_FCMA}),
"9.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1655,7 +1655,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_DOTPROD, AArch64::AEK_FP, AArch64::AEK_FP16,
- AArch64::AEK_LSE, AArch64::AEK_PROFILE, AArch64::AEK_RAS,
+ AArch64::AEK_LSE, AArch64::AEK_SPE, AArch64::AEK_RAS,
AArch64::AEK_RCPC, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_SSBS}),
"8.2-A"),
@@ -1683,13 +1683,13 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
- AArch64::AEK_FP, AArch64::AEK_PROFILE,
+ AArch64::AEK_FP, AArch64::AEK_SPE,
AArch64::AEK_MTE, AArch64::AEK_SSBS,
AArch64::AEK_SB, AArch64::AEK_PREDRES,
AArch64::AEK_FCMA, AArch64::AEK_PAUTH,
AArch64::AEK_FLAGM, AArch64::AEK_PERFMON,
AArch64::AEK_RNG, AArch64::AEK_SVE2BITPERM,
- AArch64::AEK_FP16FML, AArch64::AEK_PROFILE,
+ AArch64::AEK_FP16FML, AArch64::AEK_SPE,
AArch64::AEK_JSCVT}),
"9.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1730,14 +1730,14 @@ INSTANTIATE_TEST_SUITE_P(
ARMCPUTestParams<AArch64::ExtensionBitset>(
"neoverse-512tvb", "armv8.4-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_RAS, AArch64::AEK_SVE, AArch64::AEK_SSBS,
- AArch64::AEK_RCPC, AArch64::AEK_CRC, AArch64::AEK_FP,
- AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
- AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
- AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
- AArch64::AEK_SM4, AArch64::AEK_FP16, AArch64::AEK_BF16,
- AArch64::AEK_PROFILE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
- AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
+ {AArch64::AEK_RAS, AArch64::AEK_SVE, AArch64::AEK_SSBS,
+ AArch64::AEK_RCPC, AArch64::AEK_CRC, AArch64::AEK_FP,
+ AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
+ AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
+ AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
+ AArch64::AEK_SM4, AArch64::AEK_FP16, AArch64::AEK_BF16,
+ AArch64::AEK_SPE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
+ AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
"8.4-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1784,7 +1784,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FP, AArch64::AEK_NEON, AArch64::AEK_RAS,
- AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_PROFILE,
+ AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_SPE,
AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_DOTPROD}),
"8.2-A"),
@@ -1961,7 +1961,7 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
AArch64::AEK_SHA2, AArch64::AEK_AES,
AArch64::AEK_DOTPROD, AArch64::AEK_FP,
AArch64::AEK_NEON, AArch64::AEK_FP16,
- AArch64::AEK_FP16FML, AArch64::AEK_PROFILE,
+ AArch64::AEK_FP16FML, AArch64::AEK_SPE,
AArch64::AEK_RAS, AArch64::AEK_SVE,
AArch64::AEK_SVE2, AArch64::AEK_SVE2AES,
AArch64::AEK_SVE2SM4, AArch64::AEK_SVE2SHA3,
>From b9fca9f10b11b21cafe51d4faad79452ae433e8e Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Sat, 27 Apr 2024 00:15:54 +0100
Subject: [PATCH 09/15] Rename -target-feature +jsconv to +jscvt etc
---
clang/test/CodeGen/aarch64-mixed-target-attributes.c | 4 ++--
clang/test/CodeGen/aarch64-targetattr.c | 12 ++++++------
clang/test/CodeGen/attr-target-version.c | 6 +++---
clang/test/Preprocessor/aarch64-target-features.c | 10 +++++-----
llvm/include/llvm/TargetParser/AArch64TargetParser.h | 3 +--
llvm/lib/Target/AArch64/AArch64Features.td | 6 +++---
llvm/lib/Target/AArch64/AArch64InstrInfo.td | 8 ++++----
llvm/lib/Target/AArch64/AArch64Processors.td | 4 ++--
llvm/test/CodeGen/AArch64/fjcvtzs.ll | 2 +-
llvm/test/CodeGen/AArch64/fjcvtzs.mir | 2 +-
llvm/test/MC/AArch64/armv8.3a-js.s | 10 +++++-----
llvm/test/MC/AArch64/armv8r-sysreg.s | 4 ++--
llvm/test/MC/Disassembler/AArch64/armv8.3a-js.txt | 2 +-
llvm/unittests/TargetParser/TargetParserTest.cpp | 6 +++---
14 files changed, 39 insertions(+), 40 deletions(-)
diff --git a/clang/test/CodeGen/aarch64-mixed-target-attributes.c b/clang/test/CodeGen/aarch64-mixed-target-attributes.c
index aef6ce36ab1c05..569e1cb5d9f434 100644
--- a/clang/test/CodeGen/aarch64-mixed-target-attributes.c
+++ b/clang/test/CodeGen/aarch64-mixed-target-attributes.c
@@ -259,12 +259,12 @@ __attribute__((target_version("jscvt"))) int default_def_with_version_decls(void
//
//.
// CHECK: attributes #[[ATTR0]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="-v9.5a" }
-// CHECK: attributes #[[ATTR1]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+jsconv,+neon,-v9.5a" }
+// CHECK: attributes #[[ATTR1]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+jscvt,+neon,-v9.5a" }
// CHECK: attributes #[[ATTR2]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+dotprod,+fp-armv8,+neon,-v9.5a" }
// CHECK: attributes #[[ATTR3]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+lse,-v9.5a" }
// CHECK: attributes #[[ATTR4]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+neon,+rdm,-v9.5a" }
// CHECK: attributes #[[ATTR5:[0-9]+]] = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+dotprod,+fp-armv8,+neon,-v9.5a" }
-// CHECK: attributes #[[ATTR6:[0-9]+]] = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+jsconv,+neon,-v9.5a" }
+// CHECK: attributes #[[ATTR6:[0-9]+]] = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+jscvt,+neon,-v9.5a" }
// CHECK: attributes #[[ATTR7:[0-9]+]] = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="-v9.5a" }
// CHECK: attributes #[[ATTR8:[0-9]+]] = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+lse,-v9.5a" }
//.
diff --git a/clang/test/CodeGen/aarch64-targetattr.c b/clang/test/CodeGen/aarch64-targetattr.c
index 6e065180bfc27f..d5011d1abd6409 100644
--- a/clang/test/CodeGen/aarch64-targetattr.c
+++ b/clang/test/CodeGen/aarch64-targetattr.c
@@ -97,19 +97,19 @@ void minusarch() {}
// CHECK: attributes #0 = { {{.*}} "target-features"="+crc,+fp-armv8,+lse,+neon,+ras,+rdm,+v8.1a,+v8.2a,+v8a" }
// CHECK: attributes #1 = { {{.*}} "target-features"="+crc,+fp-armv8,+fullfp16,+lse,+neon,+ras,+rdm,+sve,+v8.1a,+v8.2a,+v8a" }
// CHECK: attributes #2 = { {{.*}} "target-features"="+crc,+fp-armv8,+fullfp16,+lse,+neon,+ras,+rdm,+sve,+sve2,+v8.1a,+v8.2a,+v8a" }
-// CHECK: attributes #3 = { {{.*}} "target-features"="+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+ras,+rcpc,+rdm,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" }
-// CHECK: attributes #4 = { {{.*}} "target-cpu"="cortex-a710" "target-features"="+bf16,+fcma,+crc,+dotprod,+flagm,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+mte,+neon,+pauth,+ras,+rcpc,+rdm,+sb,+sve,+sve2,+sve2-bitperm" }
+// CHECK: attributes #3 = { {{.*}} "target-features"="+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jscvt,+lse,+neon,+pauth,+ras,+rcpc,+rdm,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" }
+// CHECK: attributes #4 = { {{.*}} "target-cpu"="cortex-a710" "target-features"="+bf16,+fcma,+crc,+dotprod,+flagm,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jscvt,+lse,+mte,+neon,+pauth,+ras,+rcpc,+rdm,+sb,+sve,+sve2,+sve2-bitperm" }
// CHECK: attributes #5 = { {{.*}} "tune-cpu"="cortex-a710" }
// CHECK: attributes #6 = { {{.*}} "target-cpu"="generic" }
// CHECK: attributes #7 = { {{.*}} "tune-cpu"="generic" }
// CHECK: attributes #8 = { {{.*}} "target-cpu"="neoverse-n1" "target-features"="+aes,+crc,+dotprod,+fp-armv8,+fullfp16,+lse,+neon,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs" "tune-cpu"="cortex-a710" }
// CHECK: attributes #9 = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+sve" "tune-cpu"="cortex-a710" }
-// CHECK: attributes #10 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+rng,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,+sve,+sve2" }
-// CHECK: attributes #11 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+rng,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,-sve" }
+// CHECK: attributes #10 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jscvt,+lse,+neon,+pauth,+rng,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,+sve,+sve2" }
+// CHECK: attributes #11 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jscvt,+lse,+neon,+pauth,+rng,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,-sve" }
// CHECK: attributes #12 = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+sve" }
// CHECK: attributes #13 = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+sve,-sve2" }
// CHECK: attributes #14 = { {{.*}} "target-features"="+fullfp16" }
-// CHECK: attributes #15 = { {{.*}} "target-cpu"="neoverse-n1" "target-features"="+aes,+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" "tune-cpu"="cortex-a710" }
-// CHECK: attributes #16 = { {{.*}} "branch-target-enforcement"="true" "guarded-control-stack"="true" {{.*}} "target-features"="+aes,+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" "tune-cpu"="cortex-a710" }
+// CHECK: attributes #15 = { {{.*}} "target-cpu"="neoverse-n1" "target-features"="+aes,+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jscvt,+lse,+neon,+pauth,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" "tune-cpu"="cortex-a710" }
+// CHECK: attributes #16 = { {{.*}} "branch-target-enforcement"="true" "guarded-control-stack"="true" {{.*}} "target-features"="+aes,+bf16,+fcma,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jscvt,+lse,+neon,+pauth,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" "tune-cpu"="cortex-a710" }
// CHECK: attributes #17 = { {{.*}} "target-features"="-neon" }
// CHECK: attributes #18 = { {{.*}} "target-features"="-v9.3a" }
diff --git a/clang/test/CodeGen/attr-target-version.c b/clang/test/CodeGen/attr-target-version.c
index ff4822b0d61ece..768aaf314b9350 100644
--- a/clang/test/CodeGen/attr-target-version.c
+++ b/clang/test/CodeGen/attr-target-version.c
@@ -1148,15 +1148,15 @@ int caller(void) { return used_def_without_default_decl() + used_decl_without_de
// CHECK: attributes #[[ATTR16]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fullfp16,+neon,+sve,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR17]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+lse,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR18]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+neon,+rdm,-fp-armv8,-v9.5a" }
-// CHECK: attributes #[[ATTR19:[0-9]+]] = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+jsconv,+neon,-fp-armv8,-v9.5a" }
+// CHECK: attributes #[[ATTR19:[0-9]+]] = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+jscvt,+neon,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR20:[0-9]+]] = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+neon,+rdm,-fp-armv8,-v9.5a" }
-// CHECK: attributes #[[ATTR21]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+jsconv,+neon,-fp-armv8,-v9.5a" }
+// CHECK: attributes #[[ATTR21]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+jscvt,+neon,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR22]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+aes,+f64mm,+fullfp16,+neon,+sve,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR23]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+bf16,+fcma,+fullfp16,+neon,+rdm,+sme,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR24]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+f32mm,+fullfp16,+i8mm,+neon,+sha2,+sha3,+sve,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR25]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+bf16,+dit,+fullfp16,+neon,+sve,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR26]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+ccpp,+rcpc,-fp-armv8,-v9.5a" }
-// CHECK: attributes #[[ATTR27]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+ccdp,+ccpp,+jsconv,+neon,-fp-armv8,-v9.5a" }
+// CHECK: attributes #[[ATTR27]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+ccdp,+ccpp,+jscvt,+neon,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR28]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fptoint,+rcpc,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR29]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+bf16,+fullfp16,+neon,+sve,-fp-armv8,-v9.5a" }
// CHECK: attributes #[[ATTR30]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fullfp16,+neon,+sve,+sve2,+sve2-aes,+sve2-sha3,-fp-armv8,-v9.5a" }
diff --git a/clang/test/Preprocessor/aarch64-target-features.c b/clang/test/Preprocessor/aarch64-target-features.c
index 0290d73ac31b94..69566f3789bcd6 100644
--- a/clang/test/Preprocessor/aarch64-target-features.c
+++ b/clang/test/Preprocessor/aarch64-target-features.c
@@ -318,15 +318,15 @@
// CHECK-MCPU-APPLE-A7: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8a" "-target-feature" "+aes"{{.*}} "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-APPLE-A10: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8a" "-target-feature" "+aes"{{.*}} "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-APPLE-A11: "-cc1"{{.*}} "-triple" "aarch64{{.*}}"{{.*}}"-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.2a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
-// CHECK-MCPU-APPLE-A12: "-cc1"{{.*}} "-triple" "aarch64"{{.*}} "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.3a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fcma" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
+// CHECK-MCPU-APPLE-A12: "-cc1"{{.*}} "-triple" "aarch64"{{.*}} "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.3a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fcma" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+jscvt" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-A34: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
-// CHECK-MCPU-APPLE-A13: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "apple-a13" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.4a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+fcma" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+sha3" "-target-feature" "+neon"
+// CHECK-MCPU-APPLE-A13: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "apple-a13" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.4a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+fcma" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jscvt" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+sha3" "-target-feature" "+neon"
// CHECK-MCPU-A35: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-A53: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-A57: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-A72: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-CORTEX-A73: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
-// CHECK-MCPU-CORTEX-R82: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8r" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+fcma" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sb" "-target-feature" "+neon" "-target-feature" "+ssbs"
+// CHECK-MCPU-CORTEX-R82: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8r" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+fcma" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jscvt" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sb" "-target-feature" "+neon" "-target-feature" "+ssbs"
// CHECK-MCPU-M3: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-M4: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.2a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
// CHECK-MCPU-KRYO: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
@@ -335,10 +335,10 @@
// CHECK-MCPU-CARMEL: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.2a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
// RUN: %clang -target x86_64-apple-macosx -arch arm64 -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-ARCH-ARM64 %s
-// CHECK-ARCH-ARM64: "-target-cpu" "apple-m1" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.5a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+fcma" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+sha3" "-target-feature" "+neon"
+// CHECK-ARCH-ARM64: "-target-cpu" "apple-m1" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.5a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+fcma" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jscvt" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+sha3" "-target-feature" "+neon"
// RUN: %clang -target x86_64-apple-macosx -arch arm64_32 -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-ARCH-ARM64_32 %s
-// CHECK-ARCH-ARM64_32: "-target-cpu" "apple-s4" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.3a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fcma" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
+// CHECK-ARCH-ARM64_32: "-target-cpu" "apple-s4" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.3a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fcma" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+jscvt" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
// RUN: %clang -target aarch64 -march=armv8-a+fp+simd+crc+crypto -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MARCH-1 %s
// RUN: %clang -target aarch64 -march=armv8-a+nofp+nosimd+nocrc+nocrypto+fp+simd+crc+crypto -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MARCH-1 %s
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index a9a01b6b026f9e..99e451e2443749 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -113,7 +113,6 @@ enum ArchExtKind : unsigned {
// FIXME temporary fixes for inconsistent naming.
AEK_FP = AEK_FPARMV8,
AEK_FP16 = AEK_FULLFP16,
- AEK_JSCVT = AEK_JS,
AEK_RASv2 = AEK_RASV2,
AEK_SME2p1 = AEK_SME2P1,
AEK_SVE2p1 = AEK_SVE2P1,
@@ -172,7 +171,7 @@ inline constexpr ExtensionInfo Extensions[] = {
{"hbc", AArch64::AEK_HBC, "+hbc", "-hbc", FEAT_INIT, "", 0},
{"i8mm", AArch64::AEK_I8MM, "+i8mm", "-i8mm", FEAT_I8MM, "+i8mm", 270},
{"ite", AArch64::AEK_ITE, "+ite", "-ite", FEAT_INIT, "", 0},
- {"jscvt", AArch64::AEK_JSCVT, "+jsconv", "-jsconv", FEAT_JSCVT, "+fp-armv8,+neon,+jsconv", 210},
+ {"jscvt", AArch64::AEK_JSCVT, "+jscvt", "-jscvt", FEAT_JSCVT, "+fp-armv8,+neon,+jscvt", 210},
{"ls64_accdata", AArch64::AEK_NONE, {}, {}, FEAT_LS64_ACCDATA, "+ls64", 540},
{"ls64_v", AArch64::AEK_NONE, {}, {}, FEAT_LS64_V, "", 530},
{"ls64", AArch64::AEK_LS64, "+ls64", "-ls64", FEAT_LS64, "", 520},
diff --git a/llvm/lib/Target/AArch64/AArch64Features.td b/llvm/lib/Target/AArch64/AArch64Features.td
index d0a78696482919..c34f6080da7a6d 100644
--- a/llvm/lib/Target/AArch64/AArch64Features.td
+++ b/llvm/lib/Target/AArch64/AArch64Features.td
@@ -318,8 +318,8 @@ def FeaturePAuth : SubtargetFeature<
"pauth", "HasPAuth", "true",
"Enable v8.3-A Pointer Authentication extension (FEAT_PAuth)">;
-def FeatureJS : SubtargetFeature<
- "jsconv", "HasJS", "true",
+def FeatureJSCVT : SubtargetFeature<
+ "jscvt", "HasJSCVT", "true",
"Enable v8.3-A JavaScript FP conversion instructions (FEAT_JSCVT)",
[FeatureFPARMv8]>;
@@ -650,7 +650,7 @@ def HasV8_2aOps : SubtargetFeature<"v8.2a", "HasV8_2aOps", "true",
def HasV8_3aOps : SubtargetFeature<"v8.3a", "HasV8_3aOps", "true",
"Support ARM v8.3a instructions", [HasV8_2aOps, FeatureRCPC, FeaturePAuth,
- FeatureJS, FeatureCCIDX, FeatureFCMA]>;
+ FeatureJSCVT, FeatureCCIDX, FeatureFCMA]>;
def HasV8_4aOps : SubtargetFeature<"v8.4a", "HasV8_4aOps", "true",
"Support ARM v8.4a instructions", [HasV8_3aOps, FeatureDotProd,
diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.td b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
index b1ffb2d0be3df2..cd9d7fa0de272a 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrInfo.td
+++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
@@ -69,8 +69,8 @@ def HasPAuth : Predicate<"Subtarget->hasPAuth()">,
def HasPAuthLR : Predicate<"Subtarget->hasPAuthLR()">,
AssemblerPredicateWithAll<(all_of FeaturePAuthLR), "pauth-lr">;
-def HasJS : Predicate<"Subtarget->hasJS()">,
- AssemblerPredicateWithAll<(all_of FeatureJS), "jsconv">;
+def HasJSCVT : Predicate<"Subtarget->hasJSCVT()">,
+ AssemblerPredicateWithAll<(all_of FeatureJSCVT), "jscvt">;
def HasCCIDX : Predicate<"Subtarget->hasCCIDX()">,
AssemblerPredicateWithAll<(all_of FeatureCCIDX), "ccidx">;
@@ -1746,13 +1746,13 @@ let Predicates = [HasPAuthLR] in {
// v8.3a floating point conversion for javascript
-let Predicates = [HasJS, HasFPARMv8], Defs = [NZCV] in
+let Predicates = [HasJSCVT, HasFPARMv8], Defs = [NZCV] in
def FJCVTZS : BaseFPToIntegerUnscaled<0b01, 0b11, 0b110, FPR64, GPR32,
"fjcvtzs",
[(set GPR32:$Rd,
(int_aarch64_fjcvtzs FPR64:$Rn))]> {
let Inst{31} = 0;
-} // HasJS, HasFPARMv8
+} // HasJSCVT, HasFPARMv8
// v8.4 Flag manipulation instructions
let Predicates = [HasFlagM], Defs = [NZCV], Uses = [NZCV] in {
diff --git a/llvm/lib/Target/AArch64/AArch64Processors.td b/llvm/lib/Target/AArch64/AArch64Processors.td
index 7aa8b23c765cad..86ce67a77b9872 100644
--- a/llvm/lib/Target/AArch64/AArch64Processors.td
+++ b/llvm/lib/Target/AArch64/AArch64Processors.td
@@ -667,7 +667,7 @@ def ProcessorFeatures {
list<SubtargetFeature> R82 = [HasV8_0rOps, FeaturePerfMon, FeatureFullFP16,
FeatureFP16FML, FeatureSSBS, FeaturePredRes,
FeatureSB, FeatureRDM, FeatureDotProd,
- FeatureFCMA, FeatureJS];
+ FeatureFCMA, FeatureJSCVT];
list<SubtargetFeature> X1 = [HasV8_2aOps, FeatureCrypto, FeatureFPARMv8,
FeatureNEON, FeatureRCPC, FeaturePerfMon,
FeatureSPE, FeatureFullFP16, FeatureDotProd,
@@ -780,7 +780,7 @@ def ProcessorFeatures {
list<SubtargetFeature> TSV110 = [HasV8_2aOps, FeatureCrypto, FeatureFPARMv8,
FeatureNEON, FeaturePerfMon, FeatureSPE,
FeatureFullFP16, FeatureFP16FML, FeatureDotProd,
- FeatureJS, FeatureFCMA];
+ FeatureJSCVT, FeatureFCMA];
list<SubtargetFeature> Ampere1 = [HasV8_6aOps, FeatureNEON, FeaturePerfMon,
FeatureSSBS, FeatureRNG, FeatureSB,
FeatureSHA2, FeatureSHA3, FeatureAES];
diff --git a/llvm/test/CodeGen/AArch64/fjcvtzs.ll b/llvm/test/CodeGen/AArch64/fjcvtzs.ll
index 017694dcd7b193..1c59030dd4a3dd 100644
--- a/llvm/test/CodeGen/AArch64/fjcvtzs.ll
+++ b/llvm/test/CodeGen/AArch64/fjcvtzs.ll
@@ -1,4 +1,4 @@
-; RUN: llc -mtriple=arm64-eabi -mattr=+jsconv -o - %s | FileCheck %s
+; RUN: llc -mtriple=arm64-eabi -mattr=+jscvt -o - %s | FileCheck %s
define i32 @test_jcvt(double %v) {
; CHECK-LABEL: test_jcvt:
diff --git a/llvm/test/CodeGen/AArch64/fjcvtzs.mir b/llvm/test/CodeGen/AArch64/fjcvtzs.mir
index efdee63669e29e..50509bdddef9ea 100644
--- a/llvm/test/CodeGen/AArch64/fjcvtzs.mir
+++ b/llvm/test/CodeGen/AArch64/fjcvtzs.mir
@@ -1,4 +1,4 @@
-# RUN: not llc -o - %s -mtriple=arm64-eabi -mattr=+jsconv -run-pass=legalizer 2>&1 | FileCheck %s
+# RUN: not llc -o - %s -mtriple=arm64-eabi -mattr=+jscvt -run-pass=legalizer 2>&1 | FileCheck %s
# CHECK: [[@LINE+11]]:49: missing implicit register operand 'implicit-def $nzcv'
diff --git a/llvm/test/MC/AArch64/armv8.3a-js.s b/llvm/test/MC/AArch64/armv8.3a-js.s
index e3e4f9121acf98..e37ebea472b748 100644
--- a/llvm/test/MC/AArch64/armv8.3a-js.s
+++ b/llvm/test/MC/AArch64/armv8.3a-js.s
@@ -1,20 +1,20 @@
// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.3a -o - %s 2>&1 | \
// RUN: FileCheck %s
-// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+jsconv -o - %s 2>&1 | \
+// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+jscvt -o - %s 2>&1 | \
// RUN: FileCheck %s
// RUN: not llvm-mc -triple aarch64-none-linux-gnu %s 2>&1 | \
// RUN: FileCheck --check-prefix=CHECK-JS %s
-// RUN: not llvm-mc -triple aarch64-none-linux-gnu -mattr=+jsconv,-fp-armv8 -o - %s 2>&1 |\
+// RUN: not llvm-mc -triple aarch64-none-linux-gnu -mattr=+jscvt,-fp-armv8 -o - %s 2>&1 |\
// RUN: FileCheck --check-prefix=CHECK-REQ %s
fjcvtzs w0, d0
// CHECK: fjcvtzs w0, d0 // encoding: [0x00,0x00,0x7e,0x1e]
-// CHECK-JS: error: instruction requires: jsconv
+// CHECK-JS: error: instruction requires: jscvt
-// NOJS: error: instruction requires: jsconv
+// NOJS: error: instruction requires: jscvt
-// CHECK-REQ: error: instruction requires: fp-armv8 jsconv
+// CHECK-REQ: error: instruction requires: fp-armv8 jscvt
diff --git a/llvm/test/MC/AArch64/armv8r-sysreg.s b/llvm/test/MC/AArch64/armv8r-sysreg.s
index 85ecb5be712e5a..63db2757f31176 100644
--- a/llvm/test/MC/AArch64/armv8r-sysreg.s
+++ b/llvm/test/MC/AArch64/armv8r-sysreg.s
@@ -1,7 +1,7 @@
// RUN: llvm-mc -triple aarch64 -show-encoding -mattr=+v8r -o - %s | FileCheck %s
-// RUN: llvm-mc -triple aarch64 -show-encoding -mattr=+v8r,-fp-armv8,-rdm,-dotprod,-fcma,-jsconv -o - %s | FileCheck %s
+// RUN: llvm-mc -triple aarch64 -show-encoding -mattr=+v8r,-fp-armv8,-rdm,-dotprod,-fcma,-jscvt -o - %s | FileCheck %s
// RUN: llvm-mc -triple aarch64 -show-encoding -mcpu=cortex-r82 -o - %s | FileCheck %s
-// RUN: llvm-mc -triple aarch64 -show-encoding -mcpu=cortex-r82 -mattr=-fp-armv8,-rdm,-dotprod,-fcma,-jsconv -o - %s | FileCheck %s
+// RUN: llvm-mc -triple aarch64 -show-encoding -mcpu=cortex-r82 -mattr=-fp-armv8,-rdm,-dotprod,-fcma,-jscvt -o - %s | FileCheck %s
.text
mrs x0, VSCTLR_EL2
mrs x0, MPUIR_EL1
diff --git a/llvm/test/MC/Disassembler/AArch64/armv8.3a-js.txt b/llvm/test/MC/Disassembler/AArch64/armv8.3a-js.txt
index 22144cf64d965d..6581a9cbb61a60 100644
--- a/llvm/test/MC/Disassembler/AArch64/armv8.3a-js.txt
+++ b/llvm/test/MC/Disassembler/AArch64/armv8.3a-js.txt
@@ -1,4 +1,4 @@
# RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+v8.3a --disassemble < %s | FileCheck %s
-# RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+v8r,+jsconv --disassemble < %s | FileCheck %s
+# RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+v8r,+jscvt --disassemble < %s | FileCheck %s
# CHECK: fjcvtzs w0, d0
[0x00,0x00,0x7e,0x1e]
diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 0fa2157cf77f1a..89211211ebdc40 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -2082,7 +2082,7 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
EXPECT_TRUE(llvm::is_contained(Features, "+cpa"));
EXPECT_TRUE(llvm::is_contained(Features, "+pauth-lr"));
EXPECT_TRUE(llvm::is_contained(Features, "+tlbiw"));
- EXPECT_TRUE(llvm::is_contained(Features, "+jsconv"));
+ EXPECT_TRUE(llvm::is_contained(Features, "+jscvt"));
EXPECT_TRUE(llvm::is_contained(Features, "+fcma"));
// Assuming we listed every extension above, this should produce the same
@@ -2417,8 +2417,8 @@ AArch64ExtensionDependenciesBaseArchTestParams
{AArch64::ARMV8A, {"simd", "nofp"}, {}, {"fp-armv8", "neon"}},
// fp -> jscvt
- {AArch64::ARMV8A, {"nofp", "jscvt"}, {"fp-armv8", "jsconv"}, {}},
- {AArch64::ARMV8A, {"jscvt", "nofp"}, {}, {"fp-armv8", "jsconv"}},
+ {AArch64::ARMV8A, {"nofp", "jscvt"}, {"fp-armv8", "jscvt"}, {}},
+ {AArch64::ARMV8A, {"jscvt", "nofp"}, {}, {"fp-armv8", "jscvt"}},
// simd -> {aes, sha2, sha3, sm4}
{AArch64::ARMV8A, {"nosimd", "aes"}, {"neon", "aes"}, {}},
>From da9365551e1bec1ba12160a3eb0856c508ed0110 Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Sat, 27 Apr 2024 00:22:15 +0100
Subject: [PATCH 10/15] Rename AEK_FP to AEK_FPARMV8
---
clang/lib/Driver/ToolChains/Arch/AArch64.cpp | 2 +-
.../command-disassemble-aarch64-extensions.s | 2 +-
.../llvm/TargetParser/AArch64TargetParser.h | 13 +-
.../llvm/TargetParser/ARMTargetParser.def | 10 +-
.../llvm/TargetParser/ARMTargetParser.h | 2 +-
.../lib/Target/ARM/AsmParser/ARMAsmParser.cpp | 4 +-
.../ARM/MCTargetDesc/ARMTargetStreamer.cpp | 2 +-
.../TargetParser/TargetParserTest.cpp | 208 +++++++++---------
8 files changed, 123 insertions(+), 120 deletions(-)
diff --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
index ea1260f5ab73ba..947e412d677205 100644
--- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
@@ -245,7 +245,7 @@ void aarch64::getAArch64TargetFeatures(const Driver &D,
// -mgeneral-regs-only disables all floating-point features.
if (Args.getLastArg(options::OPT_mgeneral_regs_only)) {
- Extensions.disable(llvm::AArch64::AEK_FP);
+ Extensions.disable(llvm::AArch64::AEK_FPARMV8);
}
// En/disable crc
diff --git a/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s b/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
index cdd785df6c75b6..c3c9f49c55887d 100644
--- a/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
+++ b/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
@@ -22,7 +22,7 @@ fn:
fmmla z0.s, z1.s, z2.s // AEK_F32MM
fmmla z0.d, z1.d, z2.d // AEK_F64MM
cfinv // AEK_FLAGM
- fcvt d0, s0 // AEK_FP
+ fcvt d0, s0 // AEK_FPARMV8
fabs h1, h2 // AEK_FP16
fmlal v0.2s, v1.2h, v2.2h // AEK_FP16FML
bc.eq lbl // AEK_HBC
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index 99e451e2443749..b5c7de061d70ff 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -111,7 +111,6 @@ enum ArchExtKind : unsigned {
AEK_NUM_EXTENSIONS,
// FIXME temporary fixes for inconsistent naming.
- AEK_FP = AEK_FPARMV8,
AEK_FP16 = AEK_FULLFP16,
AEK_RASv2 = AEK_RASV2,
AEK_SME2p1 = AEK_SME2P1,
@@ -164,7 +163,7 @@ inline constexpr ExtensionInfo Extensions[] = {
{"fcma", AArch64::AEK_FCMA, "+fcma", "-fcma", FEAT_FCMA, "+fp-armv8,+neon,+fcma", 220},
{"flagm", AArch64::AEK_FLAGM, "+flagm", "-flagm", FEAT_FLAGM, "+flagm", 20},
{"flagm2", AArch64::AEK_NONE, {}, {}, FEAT_FLAGM2, "+flagm,+altnzcv", 30},
- {"fp", AArch64::AEK_FP, "+fp-armv8", "-fp-armv8", FEAT_FP, "+fp-armv8,+neon", 90},
+ {"fp", AArch64::AEK_FPARMV8, "+fp-armv8", "-fp-armv8", FEAT_FP, "+fp-armv8,+neon", 90},
{"fp16", AArch64::AEK_FP16, "+fullfp16", "-fullfp16", FEAT_FP16, "+fullfp16,+fp-armv8,+neon", 170},
{"fp16fml", AArch64::AEK_FP16FML, "+fp16fml", "-fp16fml", FEAT_FP16FML, "+fp16fml,+fullfp16,+fp-armv8,+neon", 175},
{"frintts", AArch64::AEK_NONE, {}, {}, FEAT_FRINTTS, "+fptoint", 250},
@@ -301,10 +300,10 @@ struct ExtensionDependency {
// Each entry here is a link in the dependency chain starting from the
// extension that was added to the architecture first.
inline constexpr ExtensionDependency ExtensionDependencies[] = {
- {AEK_FP, AEK_FP16},
- {AEK_FP, AEK_NEON},
- {AEK_FP, AEK_JSCVT},
- {AEK_FP, AEK_FP8},
+ {AEK_FPARMV8, AEK_FP16},
+ {AEK_FPARMV8, AEK_NEON},
+ {AEK_FPARMV8, AEK_JSCVT},
+ {AEK_FPARMV8, AEK_FP8},
{AEK_NEON, AEK_CRYPTO},
{AEK_NEON, AEK_AES},
{AEK_NEON, AEK_SHA2},
@@ -405,7 +404,7 @@ struct ArchInfo {
// clang-format off
inline constexpr ArchInfo ARMV8A = { VersionTuple{8, 0}, AProfile, "armv8-a", "+v8a", (
- AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_NEON})), };
+ AArch64::ExtensionBitset({AArch64::AEK_FPARMV8, AArch64::AEK_NEON})), };
inline constexpr ArchInfo ARMV8_1A = { VersionTuple{8, 1}, AProfile, "armv8.1-a", "+v8.1a", (ARMV8A.DefaultExts |
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM}))};
inline constexpr ArchInfo ARMV8_2A = { VersionTuple{8, 2}, AProfile, "armv8.2-a", "+v8.2a", (ARMV8_1A.DefaultExts |
diff --git a/llvm/include/llvm/TargetParser/ARMTargetParser.def b/llvm/include/llvm/TargetParser/ARMTargetParser.def
index 197ec0b08856cf..8b4e414ccc0926 100644
--- a/llvm/include/llvm/TargetParser/ARMTargetParser.def
+++ b/llvm/include/llvm/TargetParser/ARMTargetParser.def
@@ -217,10 +217,10 @@ ARM_ARCH_EXT_NAME("sha2", ARM::AEK_SHA2, "+sha2", "-sha2")
ARM_ARCH_EXT_NAME("aes", ARM::AEK_AES, "+aes", "-aes")
ARM_ARCH_EXT_NAME("dotprod", ARM::AEK_DOTPROD, "+dotprod", "-dotprod")
ARM_ARCH_EXT_NAME("dsp", ARM::AEK_DSP, "+dsp", "-dsp")
-ARM_ARCH_EXT_NAME("fp", ARM::AEK_FP, {}, {})
+ARM_ARCH_EXT_NAME("fp", ARM::AEK_FPARMV8, {}, {})
ARM_ARCH_EXT_NAME("fp.dp", ARM::AEK_FP_DP, {}, {})
ARM_ARCH_EXT_NAME("mve", (ARM::AEK_DSP | ARM::AEK_NEON), "+mve", "-mve")
-ARM_ARCH_EXT_NAME("mve.fp", (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FP),
+ARM_ARCH_EXT_NAME("mve.fp", (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FPARMV8),
"+mve.fp", "-mve.fp")
ARM_ARCH_EXT_NAME("idiv", (ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB), {}, {})
ARM_ARCH_EXT_NAME("mp", ARM::AEK_MP, {}, {})
@@ -338,12 +338,12 @@ ARM_CPU_NAME("cortex-m23", ARMV8MBaseline, FK_NONE, false, ARM::AEK_NONE)
ARM_CPU_NAME("cortex-m33", ARMV8MMainline, FK_FPV5_SP_D16, false, ARM::AEK_DSP)
ARM_CPU_NAME("cortex-m35p", ARMV8MMainline, FK_FPV5_SP_D16, false, ARM::AEK_DSP)
ARM_CPU_NAME("cortex-m55", ARMV8_1MMainline, FK_FP_ARMV8_FULLFP16_D16, false,
- (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FP | ARM::AEK_FP16))
+ (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FPARMV8 | ARM::AEK_FP16))
ARM_CPU_NAME("cortex-m85", ARMV8_1MMainline, FK_FP_ARMV8_FULLFP16_D16, false,
- (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FP | ARM::AEK_FP16 |
+ (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FPARMV8 | ARM::AEK_FP16 |
ARM::AEK_RAS | ARM::AEK_PACBTI))
ARM_CPU_NAME("cortex-m52", ARMV8_1MMainline, FK_FP_ARMV8_FULLFP16_D16, false,
- (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FP | ARM::AEK_FP16 |
+ (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FPARMV8 | ARM::AEK_FP16 |
ARM::AEK_RAS | ARM::AEK_PACBTI))
ARM_CPU_NAME("cortex-a32", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
ARM_CPU_NAME("cortex-a35", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
diff --git a/llvm/include/llvm/TargetParser/ARMTargetParser.h b/llvm/include/llvm/TargetParser/ARMTargetParser.h
index 0da378d993faf1..3f53285f60e881 100644
--- a/llvm/include/llvm/TargetParser/ARMTargetParser.h
+++ b/llvm/include/llvm/TargetParser/ARMTargetParser.h
@@ -33,7 +33,7 @@ enum ArchExtKind : uint64_t {
AEK_NONE = 1,
AEK_CRC = 1 << 1,
AEK_CRYPTO = 1 << 2,
- AEK_FP = 1 << 3,
+ AEK_FPARMV8 = 1 << 3,
AEK_HWDIVTHUMB = 1 << 4,
AEK_HWDIVARM = 1 << 5,
AEK_MP = 1 << 6,
diff --git a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
index 260dea8f109768..dc13b9ece8e81e 100644
--- a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
+++ b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
@@ -12916,10 +12916,10 @@ bool ARMAsmParser::enableArchExtFeature(StringRef Name, SMLoc &ExtLoc) {
{ARM::AEK_CRYPTO,
{Feature_HasV8Bit},
{ARM::FeatureCrypto, ARM::FeatureNEON, ARM::FeatureFPARMv8}},
- {(ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FP),
+ {(ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FPARMV8),
{Feature_HasV8_1MMainlineBit},
{ARM::HasMVEFloatOps}},
- {ARM::AEK_FP,
+ {ARM::AEK_FPARMV8,
{Feature_HasV8Bit},
{ARM::FeatureVFP2_SP, ARM::FeatureFPARMv8}},
{(ARM::AEK_HWDIVTHUMB | ARM::AEK_HWDIVARM),
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp
index 8fb00491541a14..8f537c2f3ef321 100644
--- a/llvm/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp
+++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp
@@ -247,7 +247,7 @@ void ARMTargetStreamer::emitTargetAttributes(const MCSubtargetInfo &STI) {
emitFPU(STI.hasFeature(ARM::FeatureFP64) ? ARM::FK_FPV5_D16
: ARM::FK_FPV5_SP_D16);
if (STI.hasFeature(ARM::HasMVEFloatOps))
- emitArchExtension(ARM::AEK_NEON | ARM::AEK_DSP | ARM::AEK_FP);
+ emitArchExtension(ARM::AEK_NEON | ARM::AEK_DSP | ARM::AEK_FPARMV8);
}
} else if (STI.hasFeature(ARM::FeatureVFP4_D16_SP))
emitFPU(STI.hasFeature(ARM::FeatureD32)
diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 89211211ebdc40..86a531367289ea 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -525,19 +525,23 @@ INSTANTIATE_TEST_SUITE_P(
"8-M.Mainline"),
ARMCPUTestParams<uint64_t>(
"cortex-m55", "armv8.1-m.main", "fp-armv8-fullfp16-d16",
- ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FP |
- ARM::AEK_RAS | ARM::AEK_LOB | ARM::AEK_FP16,
- "8.1-M.Mainline"),
- ARMCPUTestParams<uint64_t>(
- "cortex-m85", "armv8.1-m.main", "fp-armv8-fullfp16-d16",
- ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FP |
- ARM::AEK_RAS | ARM::AEK_LOB | ARM::AEK_FP16 | ARM::AEK_PACBTI,
- "8.1-M.Mainline"),
- ARMCPUTestParams<uint64_t>(
- "cortex-m52", "armv8.1-m.main", "fp-armv8-fullfp16-d16",
- ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FP |
- ARM::AEK_RAS | ARM::AEK_LOB | ARM::AEK_FP16 | ARM::AEK_PACBTI,
+ ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_NEON |
+ ARM::AEK_FPARMV8 | ARM::AEK_RAS | ARM::AEK_LOB | ARM::AEK_FP16,
"8.1-M.Mainline"),
+ ARMCPUTestParams<uint64_t>("cortex-m85", "armv8.1-m.main",
+ "fp-armv8-fullfp16-d16",
+ ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP |
+ ARM::AEK_NEON | ARM::AEK_FPARMV8 |
+ ARM::AEK_RAS | ARM::AEK_LOB |
+ ARM::AEK_FP16 | ARM::AEK_PACBTI,
+ "8.1-M.Mainline"),
+ ARMCPUTestParams<uint64_t>("cortex-m52", "armv8.1-m.main",
+ "fp-armv8-fullfp16-d16",
+ ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP |
+ ARM::AEK_NEON | ARM::AEK_FPARMV8 |
+ ARM::AEK_RAS | ARM::AEK_LOB |
+ ARM::AEK_FP16 | ARM::AEK_PACBTI,
+ "8.1-M.Mainline"),
ARMCPUTestParams<uint64_t>("iwmmxt", "iwmmxt", "none", ARM::AEK_NONE,
"iwmmxt"),
ARMCPUTestParams<uint64_t>("xscale", "xscale", "none", ARM::AEK_NONE,
@@ -1086,33 +1090,33 @@ INSTANTIATE_TEST_SUITE_P(
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a34", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP,
+ AArch64::AEK_SHA2, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a35", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP,
+ AArch64::AEK_SHA2, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a53", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP,
+ AArch64::AEK_SHA2, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a55", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_NEON, AArch64::AEK_RAS,
+ AArch64::AEK_FPARMV8, AArch64::AEK_NEON, AArch64::AEK_RAS,
AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a510", "armv9-a", "neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_CRC, AArch64::AEK_FP,
+ {AArch64::AEK_CRC, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON, AArch64::AEK_RAS,
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
@@ -1133,7 +1137,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
- AArch64::AEK_FP, AArch64::AEK_SB,
+ AArch64::AEK_FPARMV8, AArch64::AEK_SB,
AArch64::AEK_SSBS, AArch64::AEK_MTE,
AArch64::AEK_FP16FML, AArch64::AEK_PAUTH,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_FLAGM,
@@ -1149,7 +1153,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
- AArch64::AEK_FP, AArch64::AEK_SB,
+ AArch64::AEK_FPARMV8, AArch64::AEK_SB,
AArch64::AEK_SSBS, AArch64::AEK_MTE,
AArch64::AEK_FP16FML, AArch64::AEK_PAUTH,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_FLAGM,
@@ -1159,14 +1163,14 @@ INSTANTIATE_TEST_SUITE_P(
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a57", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP,
+ AArch64::AEK_SHA2, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a65", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_DOTPROD, AArch64::AEK_FP, AArch64::AEK_FP16,
+ AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
AArch64::AEK_RDM, AArch64::AEK_NEON, AArch64::AEK_SSBS}),
"8.2-A"),
@@ -1174,27 +1178,27 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a65ae", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_DOTPROD, AArch64::AEK_FP, AArch64::AEK_FP16,
+ AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
AArch64::AEK_RDM, AArch64::AEK_NEON, AArch64::AEK_SSBS}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a72", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP,
+ AArch64::AEK_SHA2, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a73", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP,
+ AArch64::AEK_SHA2, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a75", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_NEON, AArch64::AEK_RAS,
+ AArch64::AEK_FPARMV8, AArch64::AEK_NEON, AArch64::AEK_RAS,
AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC}),
"8.2-A"),
@@ -1202,7 +1206,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a76", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
+ AArch64::AEK_FPARMV8, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS}),
"8.2-A"),
@@ -1210,7 +1214,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a76ae", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
+ AArch64::AEK_FPARMV8, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS}),
"8.2-A"),
@@ -1218,7 +1222,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a77", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
+ AArch64::AEK_FPARMV8, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS}),
"8.2-A"),
@@ -1226,7 +1230,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a78", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
+ AArch64::AEK_FPARMV8, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
AArch64::AEK_SPE}),
@@ -1235,7 +1239,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a78ae", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
+ AArch64::AEK_FPARMV8, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
AArch64::AEK_SPE}),
@@ -1244,7 +1248,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a78c", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_RAS, AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_NEON,
+ AArch64::AEK_SHA2, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
AArch64::AEK_SSBS, AArch64::AEK_SPE, AArch64::AEK_FLAGM,
@@ -1253,7 +1257,7 @@ INSTANTIATE_TEST_SUITE_P(
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a710", "armv9-a", "neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_CRC, AArch64::AEK_FP,
+ {AArch64::AEK_CRC, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON, AArch64::AEK_RAS,
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
@@ -1268,7 +1272,7 @@ INSTANTIATE_TEST_SUITE_P(
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a715", "armv9-a", "neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_CRC, AArch64::AEK_FP,
+ {AArch64::AEK_CRC, AArch64::AEK_FPARMV8,
AArch64::AEK_BF16, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_RDM, AArch64::AEK_RCPC,
@@ -1291,7 +1295,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
- AArch64::AEK_FP, AArch64::AEK_SB,
+ AArch64::AEK_FPARMV8, AArch64::AEK_SB,
AArch64::AEK_SSBS, AArch64::AEK_MTE,
AArch64::AEK_FP16FML, AArch64::AEK_PAUTH,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_FLAGM,
@@ -1308,7 +1312,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
- AArch64::AEK_FP, AArch64::AEK_SB,
+ AArch64::AEK_FPARMV8, AArch64::AEK_SB,
AArch64::AEK_SSBS, AArch64::AEK_MTE,
AArch64::AEK_FP16FML, AArch64::AEK_PAUTH,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_FLAGM,
@@ -1320,7 +1324,7 @@ INSTANTIATE_TEST_SUITE_P(
"neoverse-v1", "armv8.4-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_RAS, AArch64::AEK_SVE, AArch64::AEK_SSBS,
- AArch64::AEK_RCPC, AArch64::AEK_CRC, AArch64::AEK_FP,
+ AArch64::AEK_RCPC, AArch64::AEK_CRC, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
@@ -1334,7 +1338,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_RAS, AArch64::AEK_SVE,
AArch64::AEK_SSBS, AArch64::AEK_RCPC,
- AArch64::AEK_CRC, AArch64::AEK_FP,
+ AArch64::AEK_CRC, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON, AArch64::AEK_MTE,
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
@@ -1354,7 +1358,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
- AArch64::AEK_FP, AArch64::AEK_SPE,
+ AArch64::AEK_FPARMV8, AArch64::AEK_SPE,
AArch64::AEK_MTE, AArch64::AEK_SSBS,
AArch64::AEK_SB, AArch64::AEK_PREDRES,
AArch64::AEK_LS64, AArch64::AEK_BRBE,
@@ -1373,7 +1377,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
- AArch64::AEK_FP, AArch64::AEK_SPE,
+ AArch64::AEK_FPARMV8, AArch64::AEK_SPE,
AArch64::AEK_MTE, AArch64::AEK_SSBS,
AArch64::AEK_SB, AArch64::AEK_PREDRES,
AArch64::AEK_LS64, AArch64::AEK_BRBE,
@@ -1387,7 +1391,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-r82", "armv8-r", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_RDM, AArch64::AEK_SSBS,
- AArch64::AEK_DOTPROD, AArch64::AEK_FP, AArch64::AEK_NEON,
+ AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_FP16, AArch64::AEK_FP16FML, AArch64::AEK_RAS,
AArch64::AEK_RCPC, AArch64::AEK_LSE, AArch64::AEK_SB,
AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_PAUTH}),
@@ -1396,7 +1400,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-x1", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
+ AArch64::AEK_FPARMV8, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
AArch64::AEK_SPE}),
@@ -1405,7 +1409,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-x1c", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_NEON,
+ AArch64::AEK_FPARMV8, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
AArch64::AEK_PAUTH, AArch64::AEK_SPE, AArch64::AEK_FLAGM}),
@@ -1413,7 +1417,7 @@ INSTANTIATE_TEST_SUITE_P(
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-x2", "armv9-a", "neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_CRC, AArch64::AEK_FP,
+ {AArch64::AEK_CRC, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON, AArch64::AEK_RAS,
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
@@ -1428,7 +1432,7 @@ INSTANTIATE_TEST_SUITE_P(
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-x3", "armv9-a", "neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_CRC, AArch64::AEK_FP,
+ {AArch64::AEK_CRC, AArch64::AEK_FPARMV8,
AArch64::AEK_BF16, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_RDM, AArch64::AEK_RCPC,
@@ -1451,7 +1455,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
- AArch64::AEK_FP, AArch64::AEK_SB,
+ AArch64::AEK_FPARMV8, AArch64::AEK_SB,
AArch64::AEK_SSBS, AArch64::AEK_MTE,
AArch64::AEK_FP16FML, AArch64::AEK_PAUTH,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_FLAGM,
@@ -1462,45 +1466,45 @@ INSTANTIATE_TEST_SUITE_P(
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cyclone", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_NONE, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP,
+ AArch64::AEK_SHA2, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"apple-a7", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_NONE, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP,
+ AArch64::AEK_SHA2, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"apple-a8", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_NONE, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP,
+ AArch64::AEK_SHA2, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"apple-a9", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_NONE, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP,
+ AArch64::AEK_SHA2, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"apple-a10", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP,
+ AArch64::AEK_SHA2, AArch64::AEK_FPARMV8,
AArch64::AEK_RDM, AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"apple-a11", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_LSE, AArch64::AEK_RAS,
+ AArch64::AEK_FPARMV8, AArch64::AEK_LSE, AArch64::AEK_RAS,
AArch64::AEK_RDM, AArch64::AEK_NEON, AArch64::AEK_FP16}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"apple-a12", "armv8.3-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_NEON, AArch64::AEK_LSE,
+ AArch64::AEK_FPARMV8, AArch64::AEK_NEON, AArch64::AEK_LSE,
AArch64::AEK_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
@@ -1509,7 +1513,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-a13", "armv8.4-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_NEON,
+ AArch64::AEK_SHA3, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_JSCVT,
@@ -1519,7 +1523,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-a14", "armv8.5-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_NEON,
+ AArch64::AEK_SHA3, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_JSCVT,
@@ -1529,7 +1533,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-a15", "armv8.6-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_NEON,
+ AArch64::AEK_SHA3, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
@@ -1540,7 +1544,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-a16", "armv8.6-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_NEON,
+ AArch64::AEK_SHA3, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
@@ -1551,7 +1555,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-a17", "armv8.6-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_NEON,
+ AArch64::AEK_SHA3, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
@@ -1562,7 +1566,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-m1", "armv8.5-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_NEON,
+ AArch64::AEK_SHA3, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_JSCVT,
@@ -1572,7 +1576,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-m2", "armv8.6-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_NEON,
+ AArch64::AEK_SHA3, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
@@ -1583,7 +1587,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-m3", "armv8.6-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_NEON,
+ AArch64::AEK_SHA3, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
@@ -1594,7 +1598,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-s4", "armv8.3-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_NEON, AArch64::AEK_LSE,
+ AArch64::AEK_FPARMV8, AArch64::AEK_NEON, AArch64::AEK_LSE,
AArch64::AEK_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
@@ -1603,7 +1607,7 @@ INSTANTIATE_TEST_SUITE_P(
"apple-s5", "armv8.3-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_NEON, AArch64::AEK_LSE,
+ AArch64::AEK_FPARMV8, AArch64::AEK_NEON, AArch64::AEK_LSE,
AArch64::AEK_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
@@ -1611,14 +1615,14 @@ INSTANTIATE_TEST_SUITE_P(
ARMCPUTestParams<AArch64::ExtensionBitset>(
"exynos-m3", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP,
+ AArch64::AEK_SHA2, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"exynos-m4", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_DOTPROD,
- AArch64::AEK_FP, AArch64::AEK_FP16,
+ AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
AArch64::AEK_LSE, AArch64::AEK_RAS,
AArch64::AEK_RDM, AArch64::AEK_NEON}),
"8.2-A"),
@@ -1626,27 +1630,27 @@ INSTANTIATE_TEST_SUITE_P(
"exynos-m5", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_DOTPROD,
- AArch64::AEK_FP, AArch64::AEK_FP16,
+ AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
AArch64::AEK_LSE, AArch64::AEK_RAS,
AArch64::AEK_RDM, AArch64::AEK_NEON}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"falkor", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP,
+ AArch64::AEK_SHA2, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON, AArch64::AEK_RDM}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"kryo", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP,
+ AArch64::AEK_SHA2, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"neoverse-e1", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_DOTPROD, AArch64::AEK_FP, AArch64::AEK_FP16,
+ AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
AArch64::AEK_RDM, AArch64::AEK_NEON, AArch64::AEK_SSBS}),
"8.2-A"),
@@ -1654,7 +1658,7 @@ INSTANTIATE_TEST_SUITE_P(
"neoverse-n1", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_DOTPROD, AArch64::AEK_FP, AArch64::AEK_FP16,
+ AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
AArch64::AEK_LSE, AArch64::AEK_SPE, AArch64::AEK_RAS,
AArch64::AEK_RCPC, AArch64::AEK_RDM, AArch64::AEK_NEON,
AArch64::AEK_SSBS}),
@@ -1662,7 +1666,7 @@ INSTANTIATE_TEST_SUITE_P(
ARMCPUTestParams<AArch64::ExtensionBitset>(
"neoverse-n2", "armv9-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_CRC, AArch64::AEK_FP,
+ {AArch64::AEK_CRC, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON, AArch64::AEK_FP16,
AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_SVE, AArch64::AEK_DOTPROD,
@@ -1683,7 +1687,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
- AArch64::AEK_FP, AArch64::AEK_SPE,
+ AArch64::AEK_FPARMV8, AArch64::AEK_SPE,
AArch64::AEK_MTE, AArch64::AEK_SSBS,
AArch64::AEK_SB, AArch64::AEK_PREDRES,
AArch64::AEK_FCMA, AArch64::AEK_PAUTH,
@@ -1695,43 +1699,43 @@ INSTANTIATE_TEST_SUITE_P(
ARMCPUTestParams<AArch64::ExtensionBitset>(
"ampere1", "armv8.6-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_CRC, AArch64::AEK_FP, AArch64::AEK_FP16,
- AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
- AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
- AArch64::AEK_SHA3, AArch64::AEK_BF16, AArch64::AEK_SHA2,
- AArch64::AEK_AES, AArch64::AEK_I8MM, AArch64::AEK_SSBS,
- AArch64::AEK_SB, AArch64::AEK_RNG, AArch64::AEK_JSCVT,
+ {AArch64::AEK_CRC, AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
+ AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
+ AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
+ AArch64::AEK_SHA3, AArch64::AEK_BF16, AArch64::AEK_SHA2,
+ AArch64::AEK_AES, AArch64::AEK_I8MM, AArch64::AEK_SSBS,
+ AArch64::AEK_SB, AArch64::AEK_RNG, AArch64::AEK_JSCVT,
AArch64::AEK_FCMA, AArch64::AEK_PAUTH}),
"8.6-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"ampere1a", "armv8.6-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_CRC, AArch64::AEK_FP, AArch64::AEK_FP16,
- AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
- AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
- AArch64::AEK_SM4, AArch64::AEK_SHA3, AArch64::AEK_BF16,
- AArch64::AEK_SHA2, AArch64::AEK_AES, AArch64::AEK_I8MM,
- AArch64::AEK_SSBS, AArch64::AEK_SB, AArch64::AEK_RNG,
- AArch64::AEK_MTE, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
+ {AArch64::AEK_CRC, AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
+ AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
+ AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
+ AArch64::AEK_SM4, AArch64::AEK_SHA3, AArch64::AEK_BF16,
+ AArch64::AEK_SHA2, AArch64::AEK_AES, AArch64::AEK_I8MM,
+ AArch64::AEK_SSBS, AArch64::AEK_SB, AArch64::AEK_RNG,
+ AArch64::AEK_MTE, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
"8.6-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"ampere1b", "armv8.7-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_CRC, AArch64::AEK_FP, AArch64::AEK_FP16,
- AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
- AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
- AArch64::AEK_SM4, AArch64::AEK_SHA3, AArch64::AEK_BF16,
- AArch64::AEK_SHA2, AArch64::AEK_AES, AArch64::AEK_I8MM,
- AArch64::AEK_SSBS, AArch64::AEK_SB, AArch64::AEK_RNG,
- AArch64::AEK_MTE, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
+ {AArch64::AEK_CRC, AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
+ AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
+ AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
+ AArch64::AEK_SM4, AArch64::AEK_SHA3, AArch64::AEK_BF16,
+ AArch64::AEK_SHA2, AArch64::AEK_AES, AArch64::AEK_I8MM,
+ AArch64::AEK_SSBS, AArch64::AEK_SB, AArch64::AEK_RNG,
+ AArch64::AEK_MTE, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH, AArch64::AEK_CSSC}),
"8.7-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"neoverse-512tvb", "armv8.4-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_RAS, AArch64::AEK_SVE, AArch64::AEK_SSBS,
- AArch64::AEK_RCPC, AArch64::AEK_CRC, AArch64::AEK_FP,
+ AArch64::AEK_RCPC, AArch64::AEK_CRC, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
@@ -1744,14 +1748,14 @@ INSTANTIATE_TEST_SUITE_P(
"thunderx2t99", "armv8.1-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_LSE,
- AArch64::AEK_RDM, AArch64::AEK_FP,
+ AArch64::AEK_RDM, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON}),
"8.1-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"thunderx3t110", "armv8.3-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_FP,
+ AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_RCPC,
AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_PAUTH}),
"8.3-A"),
@@ -1759,31 +1763,31 @@ INSTANTIATE_TEST_SUITE_P(
"thunderx", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_NEON,
- AArch64::AEK_FP}),
+ AArch64::AEK_FPARMV8}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"thunderxt81", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_NEON,
- AArch64::AEK_FP}),
+ AArch64::AEK_FPARMV8}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"thunderxt83", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_NEON,
- AArch64::AEK_FP}),
+ AArch64::AEK_FPARMV8}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"thunderxt88", "armv8-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_NEON,
- AArch64::AEK_FP}),
+ AArch64::AEK_FPARMV8}),
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"tsv110", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_NEON, AArch64::AEK_RAS,
+ AArch64::AEK_FPARMV8, AArch64::AEK_NEON, AArch64::AEK_RAS,
AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_SPE,
AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_DOTPROD}),
@@ -1791,7 +1795,7 @@ INSTANTIATE_TEST_SUITE_P(
ARMCPUTestParams<AArch64::ExtensionBitset>(
"a64fx", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP,
+ AArch64::AEK_SHA2, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON, AArch64::AEK_FP16,
AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_SVE, AArch64::AEK_RDM}),
@@ -1800,7 +1804,7 @@ INSTANTIATE_TEST_SUITE_P(
"carmel", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_NEON, AArch64::AEK_FP16,
+ AArch64::AEK_FPARMV8, AArch64::AEK_NEON, AArch64::AEK_FP16,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_RDM}),
"8.2-A")),
ARMCPUTestParams<AArch64::ExtensionBitset>::PrintToStringParamName);
@@ -1959,7 +1963,7 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
AArch64::AEK_RDM, AArch64::AEK_CRYPTO,
AArch64::AEK_SM4, AArch64::AEK_SHA3,
AArch64::AEK_SHA2, AArch64::AEK_AES,
- AArch64::AEK_DOTPROD, AArch64::AEK_FP,
+ AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8,
AArch64::AEK_NEON, AArch64::AEK_FP16,
AArch64::AEK_FP16FML, AArch64::AEK_SPE,
AArch64::AEK_RAS, AArch64::AEK_SVE,
>From db5fb6062532ce5eeb51e2bb225915c1073d049f Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Sat, 27 Apr 2024 00:36:41 +0100
Subject: [PATCH 11/15] Rename AEK_FP16 to AEK_FULLFP16
---
.../command-disassemble-aarch64-extensions.s | 2 +-
.../llvm/TargetParser/AArch64TargetParser.h | 93 +++---
.../llvm/TargetParser/ARMTargetParser.def | 34 +--
.../llvm/TargetParser/ARMTargetParser.h | 2 +-
.../lib/Target/ARM/AsmParser/ARMAsmParser.cpp | 2 +-
llvm/lib/TargetParser/AArch64TargetParser.cpp | 2 +-
.../TargetParser/TargetParserTest.cpp | 289 +++++++++---------
7 files changed, 217 insertions(+), 207 deletions(-)
diff --git a/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s b/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
index c3c9f49c55887d..fd5ca61e750ba4 100644
--- a/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
+++ b/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
@@ -23,7 +23,7 @@ fn:
fmmla z0.d, z1.d, z2.d // AEK_F64MM
cfinv // AEK_FLAGM
fcvt d0, s0 // AEK_FPARMV8
- fabs h1, h2 // AEK_FP16
+ fabs h1, h2 // AEK_FULLFP16
fmlal v0.2s, v1.2h, v2.2h // AEK_FP16FML
bc.eq lbl // AEK_HBC
smmla v1.4s, v16.16b, v31.16b // AEK_I8MM
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index b5c7de061d70ff..5d2d1bfe992a82 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -111,7 +111,6 @@ enum ArchExtKind : unsigned {
AEK_NUM_EXTENSIONS,
// FIXME temporary fixes for inconsistent naming.
- AEK_FP16 = AEK_FULLFP16,
AEK_RASv2 = AEK_RASV2,
AEK_SME2p1 = AEK_SME2P1,
AEK_SVE2p1 = AEK_SVE2P1,
@@ -164,7 +163,7 @@ inline constexpr ExtensionInfo Extensions[] = {
{"flagm", AArch64::AEK_FLAGM, "+flagm", "-flagm", FEAT_FLAGM, "+flagm", 20},
{"flagm2", AArch64::AEK_NONE, {}, {}, FEAT_FLAGM2, "+flagm,+altnzcv", 30},
{"fp", AArch64::AEK_FPARMV8, "+fp-armv8", "-fp-armv8", FEAT_FP, "+fp-armv8,+neon", 90},
- {"fp16", AArch64::AEK_FP16, "+fullfp16", "-fullfp16", FEAT_FP16, "+fullfp16,+fp-armv8,+neon", 170},
+ {"fp16", AArch64::AEK_FULLFP16, "+fullfp16", "-fullfp16", FEAT_FP16, "+fullfp16,+fp-armv8,+neon", 170},
{"fp16fml", AArch64::AEK_FP16FML, "+fp16fml", "-fp16fml", FEAT_FP16FML, "+fp16fml,+fullfp16,+fp-armv8,+neon", 175},
{"frintts", AArch64::AEK_NONE, {}, {}, FEAT_FRINTTS, "+fptoint", 250},
{"hbc", AArch64::AEK_HBC, "+hbc", "-hbc", FEAT_INIT, "", 0},
@@ -300,7 +299,7 @@ struct ExtensionDependency {
// Each entry here is a link in the dependency chain starting from the
// extension that was added to the architecture first.
inline constexpr ExtensionDependency ExtensionDependencies[] = {
- {AEK_FPARMV8, AEK_FP16},
+ {AEK_FPARMV8, AEK_FULLFP16},
{AEK_FPARMV8, AEK_NEON},
{AEK_FPARMV8, AEK_JSCVT},
{AEK_FPARMV8, AEK_FP8},
@@ -312,8 +311,8 @@ inline constexpr ExtensionDependency ExtensionDependencies[] = {
{AEK_NEON, AEK_RDM},
{AEK_NEON, AEK_DOTPROD},
{AEK_NEON, AEK_FCMA},
- {AEK_FP16, AEK_FP16FML},
- {AEK_FP16, AEK_SVE},
+ {AEK_FULLFP16, AEK_FP16FML},
+ {AEK_FULLFP16, AEK_SVE},
{AEK_BF16, AEK_SME},
{AEK_BF16, AEK_B16B16},
{AEK_SVE, AEK_SVE2},
@@ -422,7 +421,7 @@ inline constexpr ArchInfo ARMV8_8A = { VersionTuple{8, 8}, AProfile, "armv8.8-a
inline constexpr ArchInfo ARMV8_9A = { VersionTuple{8, 9}, AProfile, "armv8.9-a", "+v8.9a", (ARMV8_8A.DefaultExts |
AArch64::ExtensionBitset({AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASv2}))};
inline constexpr ArchInfo ARMV9A = { VersionTuple{9, 0}, AProfile, "armv9-a", "+v9a", (ARMV8_5A.DefaultExts |
- AArch64::ExtensionBitset({AArch64::AEK_FP16, AArch64::AEK_SVE, AArch64::AEK_SVE2}))};
+ AArch64::ExtensionBitset({AArch64::AEK_FULLFP16, AArch64::AEK_SVE, AArch64::AEK_SVE2}))};
inline constexpr ArchInfo ARMV9_1A = { VersionTuple{9, 1}, AProfile, "armv9.1-a", "+v9.1a", (ARMV9A.DefaultExts |
AArch64::ExtensionBitset({AArch64::AEK_BF16, AArch64::AEK_I8MM}))};
inline constexpr ArchInfo ARMV9_2A = { VersionTuple{9, 2}, AProfile, "armv9.2-a", "+v9.2a", (ARMV9_1A.DefaultExts)};
@@ -435,7 +434,7 @@ inline constexpr ArchInfo ARMV9_5A = { VersionTuple{9, 5}, AProfile, "armv9.5-a
// For v8-R, we do not enable crypto and align with GCC that enables a more minimal set of optional architecture extensions.
inline constexpr ArchInfo ARMV8R = { VersionTuple{8, 0}, RProfile, "armv8-r", "+v8r", (ARMV8_5A.DefaultExts |
AArch64::ExtensionBitset({AArch64::AEK_SSBS,
- AArch64::AEK_FP16, AArch64::AEK_FP16FML, AArch64::AEK_SB}).flip(AArch64::AEK_LSE))};
+ AArch64::AEK_FULLFP16, AArch64::AEK_FP16FML, AArch64::AEK_SB}).flip(AArch64::AEK_LSE))};
// clang-format on
// The set of all architectures
@@ -473,7 +472,7 @@ inline constexpr CpuInfo CpuInfos[] = {
{AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_CRC})},
{"cortex-a55", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+ AArch64::AEK_FULLFP16, AArch64::AEK_DOTPROD,
AArch64::AEK_RCPC})},
{"cortex-a510", ARMV9A,
AArch64::ExtensionBitset(
@@ -496,11 +495,11 @@ inline constexpr CpuInfo CpuInfos[] = {
{AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_CRC})},
{"cortex-a65", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
+ AArch64::AEK_DOTPROD, AArch64::AEK_FULLFP16,
AArch64::AEK_RCPC, AArch64::AEK_SSBS})},
{"cortex-a65ae", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
+ AArch64::AEK_DOTPROD, AArch64::AEK_FULLFP16,
AArch64::AEK_RCPC, AArch64::AEK_SSBS})},
{"cortex-a72", ARMV8A,
AArch64::ExtensionBitset(
@@ -510,33 +509,33 @@ inline constexpr CpuInfo CpuInfos[] = {
{AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_CRC})},
{"cortex-a75", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+ AArch64::AEK_FULLFP16, AArch64::AEK_DOTPROD,
AArch64::AEK_RCPC})},
{"cortex-a76", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+ AArch64::AEK_FULLFP16, AArch64::AEK_DOTPROD,
AArch64::AEK_RCPC, AArch64::AEK_SSBS})},
{"cortex-a76ae", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+ AArch64::AEK_FULLFP16, AArch64::AEK_DOTPROD,
AArch64::AEK_RCPC, AArch64::AEK_SSBS})},
{"cortex-a77", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP16, AArch64::AEK_RCPC,
+ AArch64::AEK_FULLFP16, AArch64::AEK_RCPC,
AArch64::AEK_DOTPROD, AArch64::AEK_SSBS})},
{"cortex-a78", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+ AArch64::AEK_FULLFP16, AArch64::AEK_DOTPROD,
AArch64::AEK_RCPC, AArch64::AEK_SSBS,
AArch64::AEK_SPE})},
{"cortex-a78ae", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+ AArch64::AEK_FULLFP16, AArch64::AEK_DOTPROD,
AArch64::AEK_RCPC, AArch64::AEK_SSBS,
AArch64::AEK_SPE})},
{"cortex-a78c", ARMV8_2A,
AArch64::ExtensionBitset(
- {AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_FP16,
+ {AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_FULLFP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
AArch64::AEK_SPE, AArch64::AEK_FLAGM, AArch64::AEK_PAUTH})},
{"cortex-a710", ARMV9A,
@@ -548,7 +547,7 @@ inline constexpr CpuInfo CpuInfos[] = {
{"cortex-a715", ARMV9A,
AArch64::ExtensionBitset(
{AArch64::AEK_SB, AArch64::AEK_SSBS, AArch64::AEK_MTE,
- AArch64::AEK_FP16, AArch64::AEK_FP16FML, AArch64::AEK_PAUTH,
+ AArch64::AEK_FULLFP16, AArch64::AEK_FP16FML, AArch64::AEK_PAUTH,
AArch64::AEK_I8MM, AArch64::AEK_PREDRES, AArch64::AEK_PERFMON,
AArch64::AEK_SPE, AArch64::AEK_SVE, AArch64::AEK_SVE2BITPERM,
AArch64::AEK_BF16, AArch64::AEK_FLAGM})},
@@ -567,12 +566,12 @@ inline constexpr CpuInfo CpuInfos[] = {
{"cortex-r82", ARMV8R, AArch64::ExtensionBitset({AArch64::AEK_LSE})},
{"cortex-x1", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+ AArch64::AEK_FULLFP16, AArch64::AEK_DOTPROD,
AArch64::AEK_RCPC, AArch64::AEK_SSBS,
AArch64::AEK_SPE})},
{"cortex-x1c", ARMV8_2A,
AArch64::ExtensionBitset(
- {AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_FP16,
+ {AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_FULLFP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
AArch64::AEK_PAUTH, AArch64::AEK_SPE, AArch64::AEK_FLAGM})},
{"cortex-x2", ARMV9A,
@@ -586,7 +585,7 @@ inline constexpr CpuInfo CpuInfos[] = {
{AArch64::AEK_SVE, AArch64::AEK_PERFMON, AArch64::AEK_SPE,
AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_MTE,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_SB, AArch64::AEK_PAUTH,
- AArch64::AEK_FP16, AArch64::AEK_FP16FML, AArch64::AEK_PREDRES,
+ AArch64::AEK_FULLFP16, AArch64::AEK_FP16FML, AArch64::AEK_PREDRES,
AArch64::AEK_FLAGM, AArch64::AEK_SSBS})},
{"cortex-x4", ARMV9_2A,
AArch64::ExtensionBitset({AArch64::AEK_SB, AArch64::AEK_SSBS,
@@ -596,16 +595,16 @@ inline constexpr CpuInfo CpuInfos[] = {
AArch64::AEK_PREDRES, AArch64::AEK_SPE})},
{"neoverse-e1", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
+ AArch64::AEK_DOTPROD, AArch64::AEK_FULLFP16,
AArch64::AEK_RCPC, AArch64::AEK_SSBS})},
{"neoverse-n1", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
+ AArch64::AEK_DOTPROD, AArch64::AEK_FULLFP16,
AArch64::AEK_SPE, AArch64::AEK_RCPC,
AArch64::AEK_SSBS})},
{"neoverse-n2", ARMV9A,
AArch64::ExtensionBitset(
- {AArch64::AEK_BF16, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
+ {AArch64::AEK_BF16, AArch64::AEK_DOTPROD, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML, AArch64::AEK_I8MM, AArch64::AEK_MTE,
AArch64::AEK_SB, AArch64::AEK_SSBS, AArch64::AEK_SVE,
AArch64::AEK_SVE2, AArch64::AEK_SVE2BITPERM})},
@@ -619,20 +618,20 @@ inline constexpr CpuInfo CpuInfos[] = {
AArch64::ExtensionBitset(
{AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
AArch64::AEK_SM4, AArch64::AEK_SVE, AArch64::AEK_SSBS,
- AArch64::AEK_FP16, AArch64::AEK_BF16, AArch64::AEK_DOTPROD,
+ AArch64::AEK_FULLFP16, AArch64::AEK_BF16, AArch64::AEK_DOTPROD,
AArch64::AEK_SPE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
AArch64::AEK_I8MM})},
{"neoverse-v1", ARMV8_4A,
AArch64::ExtensionBitset(
{AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
AArch64::AEK_SM4, AArch64::AEK_SVE, AArch64::AEK_SSBS,
- AArch64::AEK_FP16, AArch64::AEK_BF16, AArch64::AEK_DOTPROD,
+ AArch64::AEK_FULLFP16, AArch64::AEK_BF16, AArch64::AEK_DOTPROD,
AArch64::AEK_SPE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
AArch64::AEK_I8MM})},
{"neoverse-v2", ARMV9A,
AArch64::ExtensionBitset(
{AArch64::AEK_SVE, AArch64::AEK_SVE2, AArch64::AEK_SSBS,
- AArch64::AEK_FP16, AArch64::AEK_BF16, AArch64::AEK_RNG,
+ AArch64::AEK_FULLFP16, AArch64::AEK_BF16, AArch64::AEK_RNG,
AArch64::AEK_DOTPROD, AArch64::AEK_SPE, AArch64::AEK_SVE2BITPERM,
AArch64::AEK_FP16FML, AArch64::AEK_I8MM, AArch64::AEK_MTE})},
{"neoverse-v3", ARMV9_2A,
@@ -666,59 +665,59 @@ inline constexpr CpuInfo CpuInfos[] = {
AArch64::AEK_CRC, AArch64::AEK_RDM})},
{"apple-a11", ARMV8_2A,
AArch64::ExtensionBitset(
- {AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_FP16})},
+ {AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_FULLFP16})},
{"apple-a12", ARMV8_3A,
AArch64::ExtensionBitset(
- {AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_FP16})},
+ {AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_FULLFP16})},
{"apple-a13", ARMV8_4A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP16,
+ AArch64::AEK_SHA3, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML})},
{"apple-a14", ARMV8_5A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP16,
+ AArch64::AEK_SHA3, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML})},
{"apple-a15", ARMV8_6A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP16,
+ AArch64::AEK_SHA3, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML})},
{"apple-a16", ARMV8_6A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP16,
+ AArch64::AEK_SHA3, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML})},
{"apple-a17", ARMV8_6A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP16,
+ AArch64::AEK_SHA3, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML})},
{"apple-m1", ARMV8_5A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP16,
+ AArch64::AEK_SHA3, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML})},
{"apple-m2", ARMV8_6A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP16,
+ AArch64::AEK_SHA3, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML})},
{"apple-m3", ARMV8_6A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP16,
+ AArch64::AEK_SHA3, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML})},
{"apple-s4", ARMV8_3A,
AArch64::ExtensionBitset(
- {AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_FP16})},
+ {AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_FULLFP16})},
{"apple-s5", ARMV8_3A,
AArch64::ExtensionBitset(
- {AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_FP16})},
+ {AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_FULLFP16})},
{"exynos-m3", ARMV8A,
AArch64::ExtensionBitset(
{AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_CRC})},
{"exynos-m4", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_DOTPROD, AArch64::AEK_FP16})},
+ AArch64::AEK_DOTPROD, AArch64::AEK_FULLFP16})},
{"exynos-m5", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_DOTPROD, AArch64::AEK_FP16})},
+ AArch64::AEK_DOTPROD, AArch64::AEK_FULLFP16})},
{"falkor", ARMV8A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_CRC, AArch64::AEK_RDM})},
@@ -746,27 +745,27 @@ inline constexpr CpuInfo CpuInfos[] = {
{AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_CRC})},
{"tsv110", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
+ AArch64::AEK_DOTPROD, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML, AArch64::AEK_SPE,
AArch64::AEK_JSCVT, AArch64::AEK_FCMA})},
{"a64fx", ARMV8_2A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP16, AArch64::AEK_SVE})},
+ AArch64::AEK_FULLFP16, AArch64::AEK_SVE})},
{"carmel", ARMV8_2A,
AArch64::ExtensionBitset(
- {AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_FP16})},
+ {AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_FULLFP16})},
{"ampere1", ARMV8_6A,
AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_SHA3, AArch64::AEK_FP16,
+ AArch64::AEK_SHA3, AArch64::AEK_FULLFP16,
AArch64::AEK_SB, AArch64::AEK_SSBS,
AArch64::AEK_RNG})},
{"ampere1a", ARMV8_6A,
AArch64::ExtensionBitset(
- {AArch64::AEK_FP16, AArch64::AEK_RNG, AArch64::AEK_SM4,
+ {AArch64::AEK_FULLFP16, AArch64::AEK_RNG, AArch64::AEK_SM4,
AArch64::AEK_SHA3, AArch64::AEK_SHA2, AArch64::AEK_AES,
AArch64::AEK_MTE, AArch64::AEK_SB, AArch64::AEK_SSBS})},
{"ampere1b", ARMV8_7A,
- AArch64::ExtensionBitset({AArch64::AEK_FP16, AArch64::AEK_RNG,
+ AArch64::ExtensionBitset({AArch64::AEK_FULLFP16, AArch64::AEK_RNG,
AArch64::AEK_SM4, AArch64::AEK_SHA3,
AArch64::AEK_SHA2, AArch64::AEK_AES,
AArch64::AEK_MTE, AArch64::AEK_SB,
diff --git a/llvm/include/llvm/TargetParser/ARMTargetParser.def b/llvm/include/llvm/TargetParser/ARMTargetParser.def
index 8b4e414ccc0926..75fae04e1b0824 100644
--- a/llvm/include/llvm/TargetParser/ARMTargetParser.def
+++ b/llvm/include/llvm/TargetParser/ARMTargetParser.def
@@ -227,7 +227,7 @@ ARM_ARCH_EXT_NAME("mp", ARM::AEK_MP, {}, {})
ARM_ARCH_EXT_NAME("simd", ARM::AEK_NEON, {}, {})
ARM_ARCH_EXT_NAME("sec", ARM::AEK_SEC, {}, {})
ARM_ARCH_EXT_NAME("virt", ARM::AEK_VIRT, {}, {})
-ARM_ARCH_EXT_NAME("fp16", ARM::AEK_FP16, "+fullfp16", "-fullfp16")
+ARM_ARCH_EXT_NAME("fp16", ARM::AEK_FULLFP16, "+fullfp16", "-fullfp16")
ARM_ARCH_EXT_NAME("ras", ARM::AEK_RAS, "+ras", "-ras")
ARM_ARCH_EXT_NAME("os", ARM::AEK_OS, {}, {})
ARM_ARCH_EXT_NAME("iwmmxt", ARM::AEK_IWMMXT, {}, {})
@@ -338,55 +338,55 @@ ARM_CPU_NAME("cortex-m23", ARMV8MBaseline, FK_NONE, false, ARM::AEK_NONE)
ARM_CPU_NAME("cortex-m33", ARMV8MMainline, FK_FPV5_SP_D16, false, ARM::AEK_DSP)
ARM_CPU_NAME("cortex-m35p", ARMV8MMainline, FK_FPV5_SP_D16, false, ARM::AEK_DSP)
ARM_CPU_NAME("cortex-m55", ARMV8_1MMainline, FK_FP_ARMV8_FULLFP16_D16, false,
- (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FPARMV8 | ARM::AEK_FP16))
+ (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FPARMV8 | ARM::AEK_FULLFP16))
ARM_CPU_NAME("cortex-m85", ARMV8_1MMainline, FK_FP_ARMV8_FULLFP16_D16, false,
- (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FPARMV8 | ARM::AEK_FP16 |
+ (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FPARMV8 | ARM::AEK_FULLFP16 |
ARM::AEK_RAS | ARM::AEK_PACBTI))
ARM_CPU_NAME("cortex-m52", ARMV8_1MMainline, FK_FP_ARMV8_FULLFP16_D16, false,
- (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FPARMV8 | ARM::AEK_FP16 |
+ (ARM::AEK_DSP | ARM::AEK_NEON | ARM::AEK_FPARMV8 | ARM::AEK_FULLFP16 |
ARM::AEK_RAS | ARM::AEK_PACBTI))
ARM_CPU_NAME("cortex-a32", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
ARM_CPU_NAME("cortex-a35", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
ARM_CPU_NAME("cortex-a53", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
ARM_CPU_NAME("cortex-a55", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
- (ARM::AEK_FP16 | ARM::AEK_DOTPROD))
+ (ARM::AEK_FULLFP16 | ARM::AEK_DOTPROD))
ARM_CPU_NAME("cortex-a57", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
ARM_CPU_NAME("cortex-a72", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
ARM_CPU_NAME("cortex-a73", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
ARM_CPU_NAME("cortex-a75", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
- (ARM::AEK_FP16 | ARM::AEK_DOTPROD))
+ (ARM::AEK_FULLFP16 | ARM::AEK_DOTPROD))
ARM_CPU_NAME("cortex-a76", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
- (ARM::AEK_FP16 | ARM::AEK_DOTPROD))
+ (ARM::AEK_FULLFP16 | ARM::AEK_DOTPROD))
ARM_CPU_NAME("cortex-a76ae", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
- (ARM::AEK_FP16 | ARM::AEK_DOTPROD))
+ (ARM::AEK_FULLFP16 | ARM::AEK_DOTPROD))
ARM_CPU_NAME("cortex-a77", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
- (ARM::AEK_FP16 | ARM::AEK_DOTPROD))
+ (ARM::AEK_FULLFP16 | ARM::AEK_DOTPROD))
ARM_CPU_NAME("cortex-a78", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
- (ARM::AEK_FP16 | ARM::AEK_DOTPROD))
+ (ARM::AEK_FULLFP16 | ARM::AEK_DOTPROD))
ARM_CPU_NAME("cortex-a78ae", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
(ARM::AEK_RAS | ARM::AEK_DOTPROD))
ARM_CPU_NAME("cortex-a78c", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
- ARM::AEK_FP16 | ARM::AEK_DOTPROD)
+ ARM::AEK_FULLFP16 | ARM::AEK_DOTPROD)
ARM_CPU_NAME("cortex-a710", ARMV9A, FK_NEON_FP_ARMV8, false,
(ARM::AEK_DOTPROD | ARM::AEK_FP16FML | ARM::AEK_BF16 |
ARM::AEK_SB | ARM::AEK_I8MM))
ARM_CPU_NAME("cortex-x1", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
- (ARM::AEK_FP16 | ARM::AEK_DOTPROD))
+ (ARM::AEK_FULLFP16 | ARM::AEK_DOTPROD))
ARM_CPU_NAME("cortex-x1c", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
- (ARM::AEK_FP16 | ARM::AEK_DOTPROD))
+ (ARM::AEK_FULLFP16 | ARM::AEK_DOTPROD))
ARM_CPU_NAME("neoverse-n1", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
- (ARM::AEK_FP16 | ARM::AEK_DOTPROD))
+ (ARM::AEK_FULLFP16 | ARM::AEK_DOTPROD))
ARM_CPU_NAME("neoverse-n2", ARMV9A, FK_NEON_FP_ARMV8, false,
(ARM::AEK_BF16 | ARM::AEK_DOTPROD | ARM::AEK_FP16FML |
ARM::AEK_I8MM | ARM::AEK_RAS | ARM::AEK_SB ))
ARM_CPU_NAME("neoverse-v1", ARMV8_4A, FK_CRYPTO_NEON_FP_ARMV8, false,
- (ARM::AEK_RAS | ARM::AEK_FP16 | ARM::AEK_BF16 | ARM::AEK_DOTPROD))
+ (ARM::AEK_RAS | ARM::AEK_FULLFP16 | ARM::AEK_BF16 | ARM::AEK_DOTPROD))
ARM_CPU_NAME("cyclone", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
ARM_CPU_NAME("exynos-m3", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
ARM_CPU_NAME("exynos-m4", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
- (ARM::AEK_FP16 | ARM::AEK_DOTPROD))
+ (ARM::AEK_FULLFP16 | ARM::AEK_DOTPROD))
ARM_CPU_NAME("exynos-m5", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
- (ARM::AEK_FP16 | ARM::AEK_DOTPROD))
+ (ARM::AEK_FULLFP16 | ARM::AEK_DOTPROD))
ARM_CPU_NAME("kryo", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
// Non-standard Arch names.
ARM_CPU_NAME("iwmmxt", IWMMXT, FK_NONE, true, ARM::AEK_NONE)
diff --git a/llvm/include/llvm/TargetParser/ARMTargetParser.h b/llvm/include/llvm/TargetParser/ARMTargetParser.h
index 3f53285f60e881..9b422afaac631a 100644
--- a/llvm/include/llvm/TargetParser/ARMTargetParser.h
+++ b/llvm/include/llvm/TargetParser/ARMTargetParser.h
@@ -41,7 +41,7 @@ enum ArchExtKind : uint64_t {
AEK_SEC = 1 << 8,
AEK_VIRT = 1 << 9,
AEK_DSP = 1 << 10,
- AEK_FP16 = 1 << 11,
+ AEK_FULLFP16 = 1 << 11,
AEK_RAS = 1 << 12,
AEK_DOTPROD = 1 << 13,
AEK_SHA2 = 1 << 14,
diff --git a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
index dc13b9ece8e81e..fa28377775d404 100644
--- a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
+++ b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
@@ -12934,7 +12934,7 @@ bool ARMAsmParser::enableArchExtFeature(StringRef Name, SMLoc &ExtLoc) {
{ARM::AEK_SEC, {Feature_HasV6KBit}, {ARM::FeatureTrustZone}},
// FIXME: Only available in A-class, isel not predicated
{ARM::AEK_VIRT, {Feature_HasV7Bit}, {ARM::FeatureVirtualization}},
- {ARM::AEK_FP16,
+ {ARM::AEK_FULLFP16,
{Feature_HasV8_2aBit},
{ARM::FeatureFPARMv8, ARM::FeatureFullFP16}},
{ARM::AEK_RAS, {Feature_HasV8Bit}, {ARM::FeatureRAS}},
diff --git a/llvm/lib/TargetParser/AArch64TargetParser.cpp b/llvm/lib/TargetParser/AArch64TargetParser.cpp
index 71099462d5ecff..a44b76b7df5bc4 100644
--- a/llvm/lib/TargetParser/AArch64TargetParser.cpp
+++ b/llvm/lib/TargetParser/AArch64TargetParser.cpp
@@ -187,7 +187,7 @@ void AArch64::ExtensionSet::enable(ArchExtKind E) {
// architecture version.
if (BaseArch) {
// +fp16 implies +fp16fml for v8.4A+, but not v9.0-A+
- if (E == AEK_FP16 && BaseArch->is_superset(ARMV8_4A) &&
+ if (E == AEK_FULLFP16 && BaseArch->is_superset(ARMV8_4A) &&
!BaseArch->is_superset(ARMV9A))
enable(AEK_FP16FML);
diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 86a531367289ea..c7996111d5f828 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -390,7 +390,7 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a55", "armv8.2-a", "crypto-neon-fp-armv8",
ARM::AEK_CRC | ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT |
ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP |
- ARM::AEK_FP16 | ARM::AEK_RAS | ARM::AEK_DOTPROD,
+ ARM::AEK_FULLFP16 | ARM::AEK_RAS | ARM::AEK_DOTPROD,
"8.2-A"),
ARMCPUTestParams<uint64_t>("cortex-a57", "armv8-a",
"crypto-neon-fp-armv8",
@@ -414,25 +414,25 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a75", "armv8.2-a", "crypto-neon-fp-armv8",
ARM::AEK_CRC | ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT |
ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP |
- ARM::AEK_FP16 | ARM::AEK_RAS | ARM::AEK_DOTPROD,
+ ARM::AEK_FULLFP16 | ARM::AEK_RAS | ARM::AEK_DOTPROD,
"8.2-A"),
ARMCPUTestParams<uint64_t>(
"cortex-a76", "armv8.2-a", "crypto-neon-fp-armv8",
ARM::AEK_CRC | ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT |
ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP |
- ARM::AEK_FP16 | ARM::AEK_RAS | ARM::AEK_DOTPROD,
+ ARM::AEK_FULLFP16 | ARM::AEK_RAS | ARM::AEK_DOTPROD,
"8.2-A"),
ARMCPUTestParams<uint64_t>(
"cortex-a76ae", "armv8.2-a", "crypto-neon-fp-armv8",
ARM::AEK_CRC | ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT |
ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP |
- ARM::AEK_FP16 | ARM::AEK_RAS | ARM::AEK_DOTPROD,
+ ARM::AEK_FULLFP16 | ARM::AEK_RAS | ARM::AEK_DOTPROD,
"8.2-A"),
ARMCPUTestParams<uint64_t>(
"cortex-a78c", "armv8.2-a", "crypto-neon-fp-armv8",
ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT | ARM::AEK_HWDIVARM |
ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_CRC |
- ARM::AEK_RAS | ARM::AEK_FP16 | ARM::AEK_DOTPROD,
+ ARM::AEK_RAS | ARM::AEK_FULLFP16 | ARM::AEK_DOTPROD,
"8.2-A"),
ARMCPUTestParams<uint64_t>("cortex-a710", "armv9-a", "neon-fp-armv8",
ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT |
@@ -446,11 +446,11 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a77", "armv8.2-a", "crypto-neon-fp-armv8",
ARM::AEK_CRC | ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT |
ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP |
- ARM::AEK_FP16 | ARM::AEK_RAS | ARM::AEK_DOTPROD,
+ ARM::AEK_FULLFP16 | ARM::AEK_RAS | ARM::AEK_DOTPROD,
"8.2-A"),
ARMCPUTestParams<uint64_t>(
"cortex-a78", "armv8.2-a", "crypto-neon-fp-armv8",
- ARM::AEK_DOTPROD | ARM::AEK_FP16 | ARM::AEK_SEC | ARM::AEK_MP |
+ ARM::AEK_DOTPROD | ARM::AEK_FULLFP16 | ARM::AEK_SEC | ARM::AEK_MP |
ARM::AEK_VIRT | ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB |
ARM::AEK_DSP | ARM::AEK_CRC | ARM::AEK_RAS,
"8.2-A"),
@@ -462,13 +462,13 @@ INSTANTIATE_TEST_SUITE_P(
"8.2-A"),
ARMCPUTestParams<uint64_t>(
"cortex-x1", "armv8.2-a", "crypto-neon-fp-armv8",
- ARM::AEK_RAS | ARM::AEK_FP16 | ARM::AEK_DOTPROD | ARM::AEK_SEC |
+ ARM::AEK_RAS | ARM::AEK_FULLFP16 | ARM::AEK_DOTPROD | ARM::AEK_SEC |
ARM::AEK_MP | ARM::AEK_VIRT | ARM::AEK_HWDIVARM |
ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_CRC,
"8.2-A"),
ARMCPUTestParams<uint64_t>(
"cortex-x1c", "armv8.2-a", "crypto-neon-fp-armv8",
- ARM::AEK_RAS | ARM::AEK_FP16 | ARM::AEK_DOTPROD | ARM::AEK_SEC |
+ ARM::AEK_RAS | ARM::AEK_FULLFP16 | ARM::AEK_DOTPROD | ARM::AEK_SEC |
ARM::AEK_MP | ARM::AEK_VIRT | ARM::AEK_HWDIVARM |
ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_CRC,
"8.2-A"),
@@ -476,7 +476,7 @@ INSTANTIATE_TEST_SUITE_P(
"neoverse-n1", "armv8.2-a", "crypto-neon-fp-armv8",
ARM::AEK_CRC | ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT |
ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP |
- ARM::AEK_FP16 | ARM::AEK_RAS | ARM::AEK_DOTPROD,
+ ARM::AEK_FULLFP16 | ARM::AEK_RAS | ARM::AEK_DOTPROD,
"8.2-A"),
ARMCPUTestParams<uint64_t>(
"neoverse-n2", "armv9-a", "neon-fp-armv8",
@@ -485,12 +485,14 @@ INSTANTIATE_TEST_SUITE_P(
ARM::AEK_BF16 | ARM::AEK_DOTPROD | ARM::AEK_RAS |
ARM::AEK_I8MM | ARM::AEK_FP16FML | ARM::AEK_SB,
"9-A"),
- ARMCPUTestParams<uint64_t>(
- "neoverse-v1", "armv8.4-a", "crypto-neon-fp-armv8",
- ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT | ARM::AEK_HWDIVARM |
- ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_CRC |
- ARM::AEK_RAS | ARM::AEK_FP16 | ARM::AEK_BF16 | ARM::AEK_DOTPROD,
- "8.4-A"),
+ ARMCPUTestParams<uint64_t>("neoverse-v1", "armv8.4-a",
+ "crypto-neon-fp-armv8",
+ ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT |
+ ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB |
+ ARM::AEK_DSP | ARM::AEK_CRC |
+ ARM::AEK_RAS | ARM::AEK_FULLFP16 |
+ ARM::AEK_BF16 | ARM::AEK_DOTPROD,
+ "8.4-A"),
ARMCPUTestParams<uint64_t>("cyclone", "armv8-a", "crypto-neon-fp-armv8",
ARM::AEK_CRC | ARM::AEK_SEC | ARM::AEK_MP |
ARM::AEK_VIRT | ARM::AEK_HWDIVARM |
@@ -506,13 +508,13 @@ INSTANTIATE_TEST_SUITE_P(
"exynos-m4", "armv8.2-a", "crypto-neon-fp-armv8",
ARM::AEK_CRC | ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT |
ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP |
- ARM::AEK_DOTPROD | ARM::AEK_FP16 | ARM::AEK_RAS,
+ ARM::AEK_DOTPROD | ARM::AEK_FULLFP16 | ARM::AEK_RAS,
"8.2-A"),
ARMCPUTestParams<uint64_t>(
"exynos-m5", "armv8.2-a", "crypto-neon-fp-armv8",
ARM::AEK_CRC | ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT |
ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP |
- ARM::AEK_DOTPROD | ARM::AEK_FP16 | ARM::AEK_RAS,
+ ARM::AEK_DOTPROD | ARM::AEK_FULLFP16 | ARM::AEK_RAS,
"8.2-A"),
ARMCPUTestParams<uint64_t>("cortex-m23", "armv8-m.base", "none",
ARM::AEK_NONE | ARM::AEK_HWDIVTHUMB,
@@ -523,24 +525,26 @@ INSTANTIATE_TEST_SUITE_P(
ARMCPUTestParams<uint64_t>("cortex-m35p", "armv8-m.main", "fpv5-sp-d16",
ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP,
"8-M.Mainline"),
- ARMCPUTestParams<uint64_t>(
- "cortex-m55", "armv8.1-m.main", "fp-armv8-fullfp16-d16",
- ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_NEON |
- ARM::AEK_FPARMV8 | ARM::AEK_RAS | ARM::AEK_LOB | ARM::AEK_FP16,
- "8.1-M.Mainline"),
+ ARMCPUTestParams<uint64_t>("cortex-m55", "armv8.1-m.main",
+ "fp-armv8-fullfp16-d16",
+ ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP |
+ ARM::AEK_NEON | ARM::AEK_FPARMV8 |
+ ARM::AEK_RAS | ARM::AEK_LOB |
+ ARM::AEK_FULLFP16,
+ "8.1-M.Mainline"),
ARMCPUTestParams<uint64_t>("cortex-m85", "armv8.1-m.main",
"fp-armv8-fullfp16-d16",
ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP |
ARM::AEK_NEON | ARM::AEK_FPARMV8 |
ARM::AEK_RAS | ARM::AEK_LOB |
- ARM::AEK_FP16 | ARM::AEK_PACBTI,
+ ARM::AEK_FULLFP16 | ARM::AEK_PACBTI,
"8.1-M.Mainline"),
ARMCPUTestParams<uint64_t>("cortex-m52", "armv8.1-m.main",
"fp-armv8-fullfp16-d16",
ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP |
ARM::AEK_NEON | ARM::AEK_FPARMV8 |
ARM::AEK_RAS | ARM::AEK_LOB |
- ARM::AEK_FP16 | ARM::AEK_PACBTI,
+ ARM::AEK_FULLFP16 | ARM::AEK_PACBTI,
"8.1-M.Mainline"),
ARMCPUTestParams<uint64_t>("iwmmxt", "iwmmxt", "none", ARM::AEK_NONE,
"iwmmxt"),
@@ -1110,7 +1114,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FPARMV8, AArch64::AEK_NEON, AArch64::AEK_RAS,
- AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_FP16,
+ AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_FULLFP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1124,7 +1128,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SVE, AArch64::AEK_SVE2,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_PAUTH,
AArch64::AEK_MTE, AArch64::AEK_SSBS,
- AArch64::AEK_FP16, AArch64::AEK_FP16FML,
+ AArch64::AEK_FULLFP16, AArch64::AEK_FP16FML,
AArch64::AEK_SB, AArch64::AEK_JSCVT,
AArch64::AEK_FCMA}),
"9-A"),
@@ -1133,7 +1137,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_BF16, AArch64::AEK_I8MM,
AArch64::AEK_SVE, AArch64::AEK_SVE2,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+ AArch64::AEK_FULLFP16, AArch64::AEK_DOTPROD,
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
@@ -1149,7 +1153,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_BF16, AArch64::AEK_I8MM,
AArch64::AEK_SVE, AArch64::AEK_SVE2,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+ AArch64::AEK_FULLFP16, AArch64::AEK_DOTPROD,
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
@@ -1170,17 +1174,19 @@ INSTANTIATE_TEST_SUITE_P(
"cortex-a65", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
- AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
- AArch64::AEK_RDM, AArch64::AEK_NEON, AArch64::AEK_SSBS}),
+ AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8,
+ AArch64::AEK_FULLFP16, AArch64::AEK_LSE, AArch64::AEK_RAS,
+ AArch64::AEK_RCPC, AArch64::AEK_RDM, AArch64::AEK_NEON,
+ AArch64::AEK_SSBS}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a65ae", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
- AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
- AArch64::AEK_RDM, AArch64::AEK_NEON, AArch64::AEK_SSBS}),
+ AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8,
+ AArch64::AEK_FULLFP16, AArch64::AEK_LSE, AArch64::AEK_RAS,
+ AArch64::AEK_RCPC, AArch64::AEK_RDM, AArch64::AEK_NEON,
+ AArch64::AEK_SSBS}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-a72", "armv8-a", "crypto-neon-fp-armv8",
@@ -1199,7 +1205,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FPARMV8, AArch64::AEK_NEON, AArch64::AEK_RAS,
- AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_FP16,
+ AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_FULLFP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1207,7 +1213,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FPARMV8, AArch64::AEK_RDM, AArch64::AEK_NEON,
- AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
+ AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FULLFP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1215,7 +1221,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FPARMV8, AArch64::AEK_RDM, AArch64::AEK_NEON,
- AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
+ AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FULLFP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1223,7 +1229,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FPARMV8, AArch64::AEK_RDM, AArch64::AEK_NEON,
- AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
+ AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FULLFP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1231,7 +1237,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FPARMV8, AArch64::AEK_RDM, AArch64::AEK_NEON,
- AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
+ AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FULLFP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
AArch64::AEK_SPE}),
"8.2-A"),
@@ -1240,7 +1246,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FPARMV8, AArch64::AEK_RDM, AArch64::AEK_NEON,
- AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
+ AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FULLFP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
AArch64::AEK_SPE}),
"8.2-A"),
@@ -1250,7 +1256,7 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_RAS, AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_RDM,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
+ AArch64::AEK_FULLFP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
AArch64::AEK_SSBS, AArch64::AEK_SPE, AArch64::AEK_FLAGM,
AArch64::AEK_PAUTH}),
"8.2-A"),
@@ -1261,7 +1267,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_NEON, AArch64::AEK_RAS,
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
- AArch64::AEK_MTE, AArch64::AEK_FP16,
+ AArch64::AEK_MTE, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML, AArch64::AEK_SVE,
AArch64::AEK_SVE2, AArch64::AEK_SVE2BITPERM,
AArch64::AEK_PAUTH, AArch64::AEK_FLAGM,
@@ -1282,7 +1288,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SSBS, AArch64::AEK_SB,
AArch64::AEK_I8MM, AArch64::AEK_PERFMON,
AArch64::AEK_PREDRES, AArch64::AEK_SPE,
- AArch64::AEK_FP16FML, AArch64::AEK_FP16,
+ AArch64::AEK_FP16FML, AArch64::AEK_FULLFP16,
AArch64::AEK_FLAGM, AArch64::AEK_JSCVT,
AArch64::AEK_FCMA}),
"9-A"),
@@ -1291,7 +1297,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_BF16, AArch64::AEK_I8MM,
AArch64::AEK_SVE, AArch64::AEK_SVE2,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+ AArch64::AEK_FULLFP16, AArch64::AEK_DOTPROD,
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
@@ -1308,7 +1314,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_BF16, AArch64::AEK_I8MM,
AArch64::AEK_SVE, AArch64::AEK_SVE2,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+ AArch64::AEK_FULLFP16, AArch64::AEK_DOTPROD,
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
@@ -1323,14 +1329,14 @@ INSTANTIATE_TEST_SUITE_P(
ARMCPUTestParams<AArch64::ExtensionBitset>(
"neoverse-v1", "armv8.4-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_RAS, AArch64::AEK_SVE, AArch64::AEK_SSBS,
- AArch64::AEK_RCPC, AArch64::AEK_CRC, AArch64::AEK_FPARMV8,
- AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
- AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
- AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
- AArch64::AEK_SM4, AArch64::AEK_FP16, AArch64::AEK_BF16,
- AArch64::AEK_SPE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
- AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
+ {AArch64::AEK_RAS, AArch64::AEK_SVE, AArch64::AEK_SSBS,
+ AArch64::AEK_RCPC, AArch64::AEK_CRC, AArch64::AEK_FPARMV8,
+ AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
+ AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
+ AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
+ AArch64::AEK_SM4, AArch64::AEK_FULLFP16, AArch64::AEK_BF16,
+ AArch64::AEK_SPE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
+ AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
"8.4-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1342,7 +1348,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_NEON, AArch64::AEK_MTE,
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
- AArch64::AEK_FP16, AArch64::AEK_BF16,
+ AArch64::AEK_FULLFP16, AArch64::AEK_BF16,
AArch64::AEK_SVE2, AArch64::AEK_SPE,
AArch64::AEK_FP16FML, AArch64::AEK_I8MM,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_RNG,
@@ -1354,7 +1360,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_BF16, AArch64::AEK_I8MM,
AArch64::AEK_SVE, AArch64::AEK_SVE2,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+ AArch64::AEK_FULLFP16, AArch64::AEK_DOTPROD,
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
@@ -1373,7 +1379,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_BF16, AArch64::AEK_I8MM,
AArch64::AEK_SVE, AArch64::AEK_SVE2,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+ AArch64::AEK_FULLFP16, AArch64::AEK_DOTPROD,
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
@@ -1392,7 +1398,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_RDM, AArch64::AEK_SSBS,
AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
- AArch64::AEK_FP16, AArch64::AEK_FP16FML, AArch64::AEK_RAS,
+ AArch64::AEK_FULLFP16, AArch64::AEK_FP16FML, AArch64::AEK_RAS,
AArch64::AEK_RCPC, AArch64::AEK_LSE, AArch64::AEK_SB,
AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_PAUTH}),
"8-R"),
@@ -1401,7 +1407,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FPARMV8, AArch64::AEK_RDM, AArch64::AEK_NEON,
- AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
+ AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FULLFP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
AArch64::AEK_SPE}),
"8.2-A"),
@@ -1410,7 +1416,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FPARMV8, AArch64::AEK_RDM, AArch64::AEK_NEON,
- AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
+ AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FULLFP16,
AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
AArch64::AEK_PAUTH, AArch64::AEK_SPE, AArch64::AEK_FLAGM}),
"8.2-A"),
@@ -1425,25 +1431,25 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_I8MM, AArch64::AEK_BF16,
AArch64::AEK_SVE, AArch64::AEK_SVE2,
AArch64::AEK_SVE2BITPERM, AArch64::AEK_SSBS,
- AArch64::AEK_SB, AArch64::AEK_FP16,
+ AArch64::AEK_SB, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML, AArch64::AEK_FLAGM,
AArch64::AEK_JSCVT, AArch64::AEK_FCMA}),
"9-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"cortex-x3", "armv9-a", "neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_CRC, AArch64::AEK_FPARMV8,
- AArch64::AEK_BF16, AArch64::AEK_NEON,
- AArch64::AEK_RAS, AArch64::AEK_LSE,
- AArch64::AEK_RDM, AArch64::AEK_RCPC,
- AArch64::AEK_DOTPROD, AArch64::AEK_MTE,
- AArch64::AEK_PAUTH, AArch64::AEK_SVE,
- AArch64::AEK_SVE2, AArch64::AEK_SVE2BITPERM,
- AArch64::AEK_SB, AArch64::AEK_SPE,
- AArch64::AEK_PERFMON, AArch64::AEK_I8MM,
- AArch64::AEK_FP16, AArch64::AEK_FP16FML,
- AArch64::AEK_PREDRES, AArch64::AEK_FLAGM,
- AArch64::AEK_SSBS, AArch64::AEK_JSCVT,
+ {AArch64::AEK_CRC, AArch64::AEK_FPARMV8,
+ AArch64::AEK_BF16, AArch64::AEK_NEON,
+ AArch64::AEK_RAS, AArch64::AEK_LSE,
+ AArch64::AEK_RDM, AArch64::AEK_RCPC,
+ AArch64::AEK_DOTPROD, AArch64::AEK_MTE,
+ AArch64::AEK_PAUTH, AArch64::AEK_SVE,
+ AArch64::AEK_SVE2, AArch64::AEK_SVE2BITPERM,
+ AArch64::AEK_SB, AArch64::AEK_SPE,
+ AArch64::AEK_PERFMON, AArch64::AEK_I8MM,
+ AArch64::AEK_FULLFP16, AArch64::AEK_FP16FML,
+ AArch64::AEK_PREDRES, AArch64::AEK_FLAGM,
+ AArch64::AEK_SSBS, AArch64::AEK_JSCVT,
AArch64::AEK_FCMA}),
"9-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1451,7 +1457,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_BF16, AArch64::AEK_I8MM,
AArch64::AEK_SVE, AArch64::AEK_SVE2,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+ AArch64::AEK_FULLFP16, AArch64::AEK_DOTPROD,
AArch64::AEK_LSE, AArch64::AEK_RDM,
AArch64::AEK_NEON, AArch64::AEK_RCPC,
AArch64::AEK_RAS, AArch64::AEK_CRC,
@@ -1498,7 +1504,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FPARMV8, AArch64::AEK_LSE, AArch64::AEK_RAS,
- AArch64::AEK_RDM, AArch64::AEK_NEON, AArch64::AEK_FP16}),
+ AArch64::AEK_RDM, AArch64::AEK_NEON, AArch64::AEK_FULLFP16}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"apple-a12", "armv8.3-a", "crypto-neon-fp-armv8",
@@ -1506,7 +1512,7 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FPARMV8, AArch64::AEK_NEON, AArch64::AEK_LSE,
AArch64::AEK_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
- AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
+ AArch64::AEK_FULLFP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
"8.3-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1515,7 +1521,7 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_SHA3, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
- AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
+ AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_JSCVT,
AArch64::AEK_FCMA, AArch64::AEK_PAUTH}),
"8.4-A"),
@@ -1525,7 +1531,7 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_SHA3, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
- AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
+ AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_JSCVT,
AArch64::AEK_FCMA, AArch64::AEK_PAUTH}),
"8.5-A"),
@@ -1535,7 +1541,7 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_SHA3, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
- AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
+ AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
@@ -1546,7 +1552,7 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_SHA3, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
- AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
+ AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
@@ -1557,7 +1563,7 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_SHA3, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
- AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
+ AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
@@ -1568,7 +1574,7 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_SHA3, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
- AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
+ AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_JSCVT,
AArch64::AEK_FCMA, AArch64::AEK_PAUTH}),
"8.5-A"),
@@ -1578,7 +1584,7 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_SHA3, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
- AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
+ AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
@@ -1589,7 +1595,7 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_SHA3, AArch64::AEK_FPARMV8, AArch64::AEK_NEON,
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
- AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
+ AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
@@ -1600,7 +1606,7 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FPARMV8, AArch64::AEK_NEON, AArch64::AEK_LSE,
AArch64::AEK_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
- AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
+ AArch64::AEK_FULLFP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
"8.3-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1609,7 +1615,7 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FPARMV8, AArch64::AEK_NEON, AArch64::AEK_LSE,
AArch64::AEK_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
- AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
+ AArch64::AEK_FULLFP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
"8.3-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1620,19 +1626,19 @@ INSTANTIATE_TEST_SUITE_P(
"8-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"exynos-m4", "armv8.2-a", "crypto-neon-fp-armv8",
- AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_DOTPROD,
- AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
- AArch64::AEK_LSE, AArch64::AEK_RAS,
- AArch64::AEK_RDM, AArch64::AEK_NEON}),
+ AArch64::ExtensionBitset(
+ {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+ AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8,
+ AArch64::AEK_FULLFP16, AArch64::AEK_LSE, AArch64::AEK_RAS,
+ AArch64::AEK_RDM, AArch64::AEK_NEON}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"exynos-m5", "armv8.2-a", "crypto-neon-fp-armv8",
- AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_DOTPROD,
- AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
- AArch64::AEK_LSE, AArch64::AEK_RAS,
- AArch64::AEK_RDM, AArch64::AEK_NEON}),
+ AArch64::ExtensionBitset(
+ {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+ AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8,
+ AArch64::AEK_FULLFP16, AArch64::AEK_LSE, AArch64::AEK_RAS,
+ AArch64::AEK_RDM, AArch64::AEK_NEON}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"falkor", "armv8-a", "crypto-neon-fp-armv8",
@@ -1650,24 +1656,25 @@ INSTANTIATE_TEST_SUITE_P(
"neoverse-e1", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
- AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
- AArch64::AEK_RDM, AArch64::AEK_NEON, AArch64::AEK_SSBS}),
+ AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8,
+ AArch64::AEK_FULLFP16, AArch64::AEK_LSE, AArch64::AEK_RAS,
+ AArch64::AEK_RCPC, AArch64::AEK_RDM, AArch64::AEK_NEON,
+ AArch64::AEK_SSBS}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"neoverse-n1", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
- AArch64::AEK_LSE, AArch64::AEK_SPE, AArch64::AEK_RAS,
- AArch64::AEK_RCPC, AArch64::AEK_RDM, AArch64::AEK_NEON,
- AArch64::AEK_SSBS}),
+ AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8,
+ AArch64::AEK_FULLFP16, AArch64::AEK_LSE, AArch64::AEK_SPE,
+ AArch64::AEK_RAS, AArch64::AEK_RCPC, AArch64::AEK_RDM,
+ AArch64::AEK_NEON, AArch64::AEK_SSBS}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"neoverse-n2", "armv9-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_FPARMV8,
- AArch64::AEK_NEON, AArch64::AEK_FP16,
+ AArch64::AEK_NEON, AArch64::AEK_FULLFP16,
AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_SVE, AArch64::AEK_DOTPROD,
AArch64::AEK_RCPC, AArch64::AEK_RDM,
@@ -1681,25 +1688,25 @@ INSTANTIATE_TEST_SUITE_P(
ARMCPUTestParams<AArch64::ExtensionBitset>(
"neoverse-n3", "armv9.2-a", "neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_BF16, AArch64::AEK_I8MM,
- AArch64::AEK_SVE, AArch64::AEK_SVE2,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
- AArch64::AEK_LSE, AArch64::AEK_RDM,
- AArch64::AEK_NEON, AArch64::AEK_RCPC,
- AArch64::AEK_RAS, AArch64::AEK_CRC,
- AArch64::AEK_FPARMV8, AArch64::AEK_SPE,
- AArch64::AEK_MTE, AArch64::AEK_SSBS,
- AArch64::AEK_SB, AArch64::AEK_PREDRES,
- AArch64::AEK_FCMA, AArch64::AEK_PAUTH,
- AArch64::AEK_FLAGM, AArch64::AEK_PERFMON,
- AArch64::AEK_RNG, AArch64::AEK_SVE2BITPERM,
- AArch64::AEK_FP16FML, AArch64::AEK_SPE,
+ {AArch64::AEK_BF16, AArch64::AEK_I8MM,
+ AArch64::AEK_SVE, AArch64::AEK_SVE2,
+ AArch64::AEK_FULLFP16, AArch64::AEK_DOTPROD,
+ AArch64::AEK_LSE, AArch64::AEK_RDM,
+ AArch64::AEK_NEON, AArch64::AEK_RCPC,
+ AArch64::AEK_RAS, AArch64::AEK_CRC,
+ AArch64::AEK_FPARMV8, AArch64::AEK_SPE,
+ AArch64::AEK_MTE, AArch64::AEK_SSBS,
+ AArch64::AEK_SB, AArch64::AEK_PREDRES,
+ AArch64::AEK_FCMA, AArch64::AEK_PAUTH,
+ AArch64::AEK_FLAGM, AArch64::AEK_PERFMON,
+ AArch64::AEK_RNG, AArch64::AEK_SVE2BITPERM,
+ AArch64::AEK_FP16FML, AArch64::AEK_SPE,
AArch64::AEK_JSCVT}),
"9.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"ampere1", "armv8.6-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_CRC, AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
+ {AArch64::AEK_CRC, AArch64::AEK_FPARMV8, AArch64::AEK_FULLFP16,
AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_SHA3, AArch64::AEK_BF16, AArch64::AEK_SHA2,
@@ -1710,7 +1717,7 @@ INSTANTIATE_TEST_SUITE_P(
ARMCPUTestParams<AArch64::ExtensionBitset>(
"ampere1a", "armv8.6-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_CRC, AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
+ {AArch64::AEK_CRC, AArch64::AEK_FPARMV8, AArch64::AEK_FULLFP16,
AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
AArch64::AEK_SM4, AArch64::AEK_SHA3, AArch64::AEK_BF16,
@@ -1722,26 +1729,30 @@ INSTANTIATE_TEST_SUITE_P(
ARMCPUTestParams<AArch64::ExtensionBitset>(
"ampere1b", "armv8.7-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_CRC, AArch64::AEK_FPARMV8, AArch64::AEK_FP16,
- AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
- AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
- AArch64::AEK_SM4, AArch64::AEK_SHA3, AArch64::AEK_BF16,
- AArch64::AEK_SHA2, AArch64::AEK_AES, AArch64::AEK_I8MM,
- AArch64::AEK_SSBS, AArch64::AEK_SB, AArch64::AEK_RNG,
- AArch64::AEK_MTE, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
- AArch64::AEK_PAUTH, AArch64::AEK_CSSC}),
+ {AArch64::AEK_CRC, AArch64::AEK_FPARMV8,
+ AArch64::AEK_FULLFP16, AArch64::AEK_NEON,
+ AArch64::AEK_RAS, AArch64::AEK_LSE,
+ AArch64::AEK_RDM, AArch64::AEK_RCPC,
+ AArch64::AEK_DOTPROD, AArch64::AEK_SM4,
+ AArch64::AEK_SHA3, AArch64::AEK_BF16,
+ AArch64::AEK_SHA2, AArch64::AEK_AES,
+ AArch64::AEK_I8MM, AArch64::AEK_SSBS,
+ AArch64::AEK_SB, AArch64::AEK_RNG,
+ AArch64::AEK_MTE, AArch64::AEK_JSCVT,
+ AArch64::AEK_FCMA, AArch64::AEK_PAUTH,
+ AArch64::AEK_CSSC}),
"8.7-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"neoverse-512tvb", "armv8.4-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
- {AArch64::AEK_RAS, AArch64::AEK_SVE, AArch64::AEK_SSBS,
- AArch64::AEK_RCPC, AArch64::AEK_CRC, AArch64::AEK_FPARMV8,
- AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
- AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
- AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
- AArch64::AEK_SM4, AArch64::AEK_FP16, AArch64::AEK_BF16,
- AArch64::AEK_SPE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
- AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
+ {AArch64::AEK_RAS, AArch64::AEK_SVE, AArch64::AEK_SSBS,
+ AArch64::AEK_RCPC, AArch64::AEK_CRC, AArch64::AEK_FPARMV8,
+ AArch64::AEK_NEON, AArch64::AEK_RAS, AArch64::AEK_LSE,
+ AArch64::AEK_RDM, AArch64::AEK_RCPC, AArch64::AEK_DOTPROD,
+ AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
+ AArch64::AEK_SM4, AArch64::AEK_FULLFP16, AArch64::AEK_BF16,
+ AArch64::AEK_SPE, AArch64::AEK_RNG, AArch64::AEK_FP16FML,
+ AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH}),
"8.4-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
@@ -1789,14 +1800,14 @@ INSTANTIATE_TEST_SUITE_P(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
AArch64::AEK_FPARMV8, AArch64::AEK_NEON, AArch64::AEK_RAS,
AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_SPE,
- AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_FP16,
+ AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML, AArch64::AEK_DOTPROD}),
"8.2-A"),
ARMCPUTestParams<AArch64::ExtensionBitset>(
"a64fx", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_FPARMV8,
- AArch64::AEK_NEON, AArch64::AEK_FP16,
+ AArch64::AEK_NEON, AArch64::AEK_FULLFP16,
AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_SVE, AArch64::AEK_RDM}),
"8.2-A"),
@@ -1804,7 +1815,7 @@ INSTANTIATE_TEST_SUITE_P(
"carmel", "armv8.2-a", "crypto-neon-fp-armv8",
AArch64::ExtensionBitset(
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FPARMV8, AArch64::AEK_NEON, AArch64::AEK_FP16,
+ AArch64::AEK_FPARMV8, AArch64::AEK_NEON, AArch64::AEK_FULLFP16,
AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_RDM}),
"8.2-A")),
ARMCPUTestParams<AArch64::ExtensionBitset>::PrintToStringParamName);
@@ -1964,7 +1975,7 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
AArch64::AEK_SM4, AArch64::AEK_SHA3,
AArch64::AEK_SHA2, AArch64::AEK_AES,
AArch64::AEK_DOTPROD, AArch64::AEK_FPARMV8,
- AArch64::AEK_NEON, AArch64::AEK_FP16,
+ AArch64::AEK_NEON, AArch64::AEK_FULLFP16,
AArch64::AEK_FP16FML, AArch64::AEK_SPE,
AArch64::AEK_RAS, AArch64::AEK_SVE,
AArch64::AEK_SVE2, AArch64::AEK_SVE2AES,
>From 7b2e80e972fd38a7d71f8e2309575b0e91799564 Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Sat, 27 Apr 2024 00:37:55 +0100
Subject: [PATCH 12/15] Rename AEK_RASv2 to AEK_RASV2
---
llvm/include/llvm/TargetParser/AArch64TargetParser.h | 9 ++++-----
llvm/unittests/TargetParser/TargetParserTest.cpp | 2 +-
2 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index 5d2d1bfe992a82..97b34f98129492 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -111,7 +111,6 @@ enum ArchExtKind : unsigned {
AEK_NUM_EXTENSIONS,
// FIXME temporary fixes for inconsistent naming.
- AEK_RASv2 = AEK_RASV2,
AEK_SME2p1 = AEK_SME2P1,
AEK_SVE2p1 = AEK_SVE2P1,
AEK_SME_LUTv2 = AEK_SME_LUTV2,
@@ -186,7 +185,7 @@ inline constexpr ExtensionInfo Extensions[] = {
{"predres2", AArch64::AEK_SPECRES2, "+specres2", "-specres2", FEAT_INIT, "", 0},
{"profile", AArch64::AEK_SPE, "+spe", "-spe", FEAT_INIT, "", 0},
{"ras", AArch64::AEK_RAS, "+ras", "-ras", FEAT_INIT, "", 0},
- {"rasv2", AArch64::AEK_RASv2, "+rasv2", "-rasv2", FEAT_INIT, "", 0},
+ {"rasv2", AArch64::AEK_RASV2, "+rasv2", "-rasv2", FEAT_INIT, "", 0},
{"rcpc", AArch64::AEK_RCPC, "+rcpc", "-rcpc", FEAT_RCPC, "+rcpc", 230},
{"rcpc2", AArch64::AEK_NONE, {}, {}, FEAT_RCPC2, "+rcpc", 240},
{"rcpc3", AArch64::AEK_RCPC3, "+rcpc3", "-rcpc3", FEAT_RCPC3, "+rcpc,+rcpc3", 241},
@@ -340,7 +339,7 @@ inline constexpr ExtensionDependency ExtensionDependencies[] = {
{AEK_FP8, AEK_SMEF8F32},
{AEK_LSE, AEK_LSE128},
{AEK_PREDRES, AEK_SPECRES2},
- {AEK_RAS, AEK_RASv2},
+ {AEK_RAS, AEK_RASV2},
{AEK_RCPC, AEK_RCPC3},
};
// clang-format on
@@ -419,7 +418,7 @@ inline constexpr ArchInfo ARMV8_7A = { VersionTuple{8, 7}, AProfile, "armv8.7-a
inline constexpr ArchInfo ARMV8_8A = { VersionTuple{8, 8}, AProfile, "armv8.8-a", "+v8.8a", (ARMV8_7A.DefaultExts |
AArch64::ExtensionBitset({AArch64::AEK_MOPS, AArch64::AEK_HBC}))};
inline constexpr ArchInfo ARMV8_9A = { VersionTuple{8, 9}, AProfile, "armv8.9-a", "+v8.9a", (ARMV8_8A.DefaultExts |
- AArch64::ExtensionBitset({AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASv2}))};
+ AArch64::ExtensionBitset({AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASV2}))};
inline constexpr ArchInfo ARMV9A = { VersionTuple{9, 0}, AProfile, "armv9-a", "+v9a", (ARMV8_5A.DefaultExts |
AArch64::ExtensionBitset({AArch64::AEK_FULLFP16, AArch64::AEK_SVE, AArch64::AEK_SVE2}))};
inline constexpr ArchInfo ARMV9_1A = { VersionTuple{9, 1}, AProfile, "armv9.1-a", "+v9.1a", (ARMV9A.DefaultExts |
@@ -428,7 +427,7 @@ inline constexpr ArchInfo ARMV9_2A = { VersionTuple{9, 2}, AProfile, "armv9.2-a
inline constexpr ArchInfo ARMV9_3A = { VersionTuple{9, 3}, AProfile, "armv9.3-a", "+v9.3a", (ARMV9_2A.DefaultExts |
AArch64::ExtensionBitset({AArch64::AEK_MOPS, AArch64::AEK_HBC}))};
inline constexpr ArchInfo ARMV9_4A = { VersionTuple{9, 4}, AProfile, "armv9.4-a", "+v9.4a", (ARMV9_3A.DefaultExts |
- AArch64::ExtensionBitset({AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASv2}))};
+ AArch64::ExtensionBitset({AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASV2}))};
inline constexpr ArchInfo ARMV9_5A = { VersionTuple{9, 5}, AProfile, "armv9.5-a", "+v9.5a", (ARMV9_4A.DefaultExts |
AArch64::ExtensionBitset({AArch64::AEK_CPA}))};
// For v8-R, we do not enable crypto and align with GCC that enables a more minimal set of optional architecture extensions.
diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index c7996111d5f828..ca70287120cad3 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1996,7 +1996,7 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
AArch64::AEK_SMEF16F16, AArch64::AEK_CSSC,
AArch64::AEK_RCPC3, AArch64::AEK_THE,
AArch64::AEK_D128, AArch64::AEK_LSE128,
- AArch64::AEK_SPECRES2, AArch64::AEK_RASv2,
+ AArch64::AEK_SPECRES2, AArch64::AEK_RASV2,
AArch64::AEK_ITE, AArch64::AEK_GCS,
AArch64::AEK_FPMR, AArch64::AEK_FP8,
AArch64::AEK_FAMINMAX, AArch64::AEK_FP8FMA,
>From b36b3a00ef9fd21379576b8cef37387f8d52a12b Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Sat, 27 Apr 2024 00:39:03 +0100
Subject: [PATCH 13/15] Rename AEK_SME2p1 to AEK_SME2P1
---
.../Shell/Commands/command-disassemble-aarch64-extensions.s | 2 +-
llvm/include/llvm/TargetParser/AArch64TargetParser.h | 5 ++---
llvm/unittests/TargetParser/TargetParserTest.cpp | 2 +-
3 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s b/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
index fd5ca61e750ba4..505acff049a731 100644
--- a/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
+++ b/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
@@ -59,7 +59,7 @@ fn:
bdep z0.b, z1.b, z31.b // AEK_SVE2BITPERM
rax1 z0.d, z0.d, z0.d // AEK_SVE2SHA3
sm4e z0.s, z0.s, z0.s // AEK_SVE2SM4
- addqv v0.8h, p0, z0.h // AEK_SVE2p1 / AEK_SME2p1
+ addqv v0.8h, p0, z0.h // AEK_SVE2p1 / AEK_SME2P1
rcwswp x0, x1, [x2] // AEK_THE
tcommit // AEK_TME
lbl:
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index 97b34f98129492..8e3f5633cbf272 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -111,7 +111,6 @@ enum ArchExtKind : unsigned {
AEK_NUM_EXTENSIONS,
// FIXME temporary fixes for inconsistent naming.
- AEK_SME2p1 = AEK_SME2P1,
AEK_SVE2p1 = AEK_SVE2P1,
AEK_SME_LUTv2 = AEK_SME_LUTV2,
@@ -203,7 +202,7 @@ inline constexpr ExtensionInfo Extensions[] = {
{"sme-i16i64", AArch64::AEK_SMEI16I64, "+sme-i16i64", "-sme-i16i64", FEAT_SME_I64, "+sme,+sme-i16i64,+bf16", 570},
{"sme", AArch64::AEK_SME, "+sme", "-sme", FEAT_SME, "+sme,+bf16", 430},
{"sme2", AArch64::AEK_SME2, "+sme2", "-sme2", FEAT_SME2, "+sme2,+sme,+bf16", 580},
- {"sme2p1", AArch64::AEK_SME2p1, "+sme2p1", "-sme2p1", FEAT_INIT, "+sme2p1,+sme2,+sme,+bf16", 0},
+ {"sme2p1", AArch64::AEK_SME2P1, "+sme2p1", "-sme2p1", FEAT_INIT, "+sme2p1,+sme2,+sme,+bf16", 0},
{"ssbs", AArch64::AEK_SSBS, "+ssbs", "-ssbs", FEAT_SSBS, "", 490},
{"ssbs2", AArch64::AEK_NONE, {}, {}, FEAT_SSBS2, "+ssbs", 500},
{"sve-bf16", AArch64::AEK_NONE, {}, {}, FEAT_SVE_BF16, "+sve,+bf16,+fullfp16,+fp-armv8,+neon", 320},
@@ -329,7 +328,7 @@ inline constexpr ExtensionDependency ExtensionDependencies[] = {
{AEK_SME, AEK_SMEF64F64},
{AEK_SME, AEK_SMEI16I64},
{AEK_SME, AEK_SMEFA64},
- {AEK_SME2, AEK_SME2p1},
+ {AEK_SME2, AEK_SME2P1},
{AEK_SME2, AEK_SSVE_FP8FMA},
{AEK_SME2, AEK_SSVE_FP8DOT2},
{AEK_SME2, AEK_SSVE_FP8DOT4},
diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index ca70287120cad3..6c9eb7b0c95c61 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1992,7 +1992,7 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
AArch64::AEK_SMEI16I64, AArch64::AEK_SME2,
AArch64::AEK_HBC, AArch64::AEK_MOPS,
AArch64::AEK_PERFMON, AArch64::AEK_SVE2p1,
- AArch64::AEK_SME2p1, AArch64::AEK_B16B16,
+ AArch64::AEK_SME2P1, AArch64::AEK_B16B16,
AArch64::AEK_SMEF16F16, AArch64::AEK_CSSC,
AArch64::AEK_RCPC3, AArch64::AEK_THE,
AArch64::AEK_D128, AArch64::AEK_LSE128,
>From 4d1f9a3216fcc6759980a4607d84d2aefd980da0 Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Sat, 27 Apr 2024 00:39:46 +0100
Subject: [PATCH 14/15] Rename AEK_SVE2p1 to AEK_SVE2P1
---
.../Shell/Commands/command-disassemble-aarch64-extensions.s | 2 +-
llvm/include/llvm/TargetParser/AArch64TargetParser.h | 5 ++---
llvm/unittests/TargetParser/TargetParserTest.cpp | 2 +-
3 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s b/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
index 505acff049a731..e701c7c2776998 100644
--- a/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
+++ b/lldb/test/Shell/Commands/command-disassemble-aarch64-extensions.s
@@ -59,7 +59,7 @@ fn:
bdep z0.b, z1.b, z31.b // AEK_SVE2BITPERM
rax1 z0.d, z0.d, z0.d // AEK_SVE2SHA3
sm4e z0.s, z0.s, z0.s // AEK_SVE2SM4
- addqv v0.8h, p0, z0.h // AEK_SVE2p1 / AEK_SME2P1
+ addqv v0.8h, p0, z0.h // AEK_SVE2P1 / AEK_SME2P1
rcwswp x0, x1, [x2] // AEK_THE
tcommit // AEK_TME
lbl:
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index 8e3f5633cbf272..d2011d864b0084 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -111,7 +111,6 @@ enum ArchExtKind : unsigned {
AEK_NUM_EXTENSIONS,
// FIXME temporary fixes for inconsistent naming.
- AEK_SVE2p1 = AEK_SVE2P1,
AEK_SME_LUTv2 = AEK_SME_LUTV2,
};
@@ -215,7 +214,7 @@ inline constexpr ExtensionInfo Extensions[] = {
{"sve2-sha3", AArch64::AEK_SVE2SHA3, "+sve2-sha3", "-sve2-sha3", FEAT_SVE_SHA3, "+sve2,+sve,+sve2-sha3,+fullfp16,+fp-armv8,+neon", 410},
{"sve2-sm4", AArch64::AEK_SVE2SM4, "+sve2-sm4", "-sve2-sm4", FEAT_SVE_SM4, "+sve2,+sve,+sve2-sm4,+fullfp16,+fp-armv8,+neon", 420},
{"sve2", AArch64::AEK_SVE2, "+sve2", "-sve2", FEAT_SVE2, "+sve2,+sve,+fullfp16,+fp-armv8,+neon", 370},
- {"sve2p1", AArch64::AEK_SVE2p1, "+sve2p1", "-sve2p1", FEAT_INIT, "+sve2p1,+sve2,+sve,+fullfp16,+fp-armv8,+neon", 0},
+ {"sve2p1", AArch64::AEK_SVE2P1, "+sve2p1", "-sve2p1", FEAT_INIT, "+sve2p1,+sve2,+sve,+fullfp16,+fp-armv8,+neon", 0},
{"the", AArch64::AEK_THE, "+the", "-the", FEAT_INIT, "", 0},
{"tme", AArch64::AEK_TME, "+tme", "-tme", FEAT_INIT, "", 0},
{"wfxt", AArch64::AEK_NONE, {}, {}, FEAT_WFXT, "+wfxt", 550},
@@ -316,7 +315,7 @@ inline constexpr ExtensionDependency ExtensionDependencies[] = {
{AEK_SVE, AEK_SVE2},
{AEK_SVE, AEK_F32MM},
{AEK_SVE, AEK_F64MM},
- {AEK_SVE2, AEK_SVE2p1},
+ {AEK_SVE2, AEK_SVE2P1},
{AEK_SVE2, AEK_SVE2BITPERM},
{AEK_SVE2, AEK_SVE2AES},
{AEK_SVE2, AEK_SVE2SHA3},
diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 6c9eb7b0c95c61..bc81cf68edefc2 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1991,7 +1991,7 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
AArch64::AEK_SME, AArch64::AEK_SMEF64F64,
AArch64::AEK_SMEI16I64, AArch64::AEK_SME2,
AArch64::AEK_HBC, AArch64::AEK_MOPS,
- AArch64::AEK_PERFMON, AArch64::AEK_SVE2p1,
+ AArch64::AEK_PERFMON, AArch64::AEK_SVE2P1,
AArch64::AEK_SME2P1, AArch64::AEK_B16B16,
AArch64::AEK_SMEF16F16, AArch64::AEK_CSSC,
AArch64::AEK_RCPC3, AArch64::AEK_THE,
>From 1c97789b8d5cf424fd80410d7485be91e7bde5bc Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Sat, 27 Apr 2024 00:40:52 +0100
Subject: [PATCH 15/15] Rename AEK_SME_LUTv2 to AEK_SME_LUTV2
---
llvm/include/llvm/TargetParser/AArch64TargetParser.h | 8 ++------
llvm/unittests/TargetParser/TargetParserTest.cpp | 2 +-
2 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index d2011d864b0084..ca0c6e919cd41b 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -108,11 +108,7 @@ enum ArchExtKind : unsigned {
AEK_NONE = 1,
#define ARM_SUBTARGET_FEATURE(NAME, ENUM) ENUM,
#include "llvm/TargetParser/AArch64TargetParserDef.inc"
- AEK_NUM_EXTENSIONS,
-
- // FIXME temporary fixes for inconsistent naming.
- AEK_SME_LUTv2 = AEK_SME_LUTV2,
-
+ AEK_NUM_EXTENSIONS
};
using ExtensionBitset = Bitset<AEK_NUM_EXTENSIONS>;
@@ -229,7 +225,7 @@ inline constexpr ExtensionInfo Extensions[] = {
{"fp8dot4", AArch64::AEK_FP8DOT4, "+fp8dot4", "-fp8dot4", FEAT_INIT, "", 0},
{"ssve-fp8dot4", AArch64::AEK_SSVE_FP8DOT4, "+ssve-fp8dot4", "-ssve-fp8dot4", FEAT_INIT, "+sme2", 0},
{"lut", AArch64::AEK_LUT, "+lut", "-lut", FEAT_INIT, "", 0},
- {"sme-lutv2", AArch64::AEK_SME_LUTv2, "+sme-lutv2", "-sme-lutv2", FEAT_INIT, "", 0},
+ {"sme-lutv2", AArch64::AEK_SME_LUTV2, "+sme-lutv2", "-sme-lutv2", FEAT_INIT, "", 0},
{"sme-f8f16", AArch64::AEK_SMEF8F16, "+sme-f8f16", "-sme-f8f16", FEAT_INIT, "+fp8,+sme2", 0},
{"sme-f8f32", AArch64::AEK_SMEF8F32, "+sme-f8f32", "-sme-f8f32", FEAT_INIT, "+sme2,+fp8", 0},
{"sme-fa64", AArch64::AEK_SMEFA64, "+sme-fa64", "-sme-fa64", FEAT_INIT, "", 0},
diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index bc81cf68edefc2..4a3135b92777f2 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -2003,7 +2003,7 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
AArch64::AEK_SSVE_FP8FMA, AArch64::AEK_FP8DOT2,
AArch64::AEK_SSVE_FP8DOT2, AArch64::AEK_FP8DOT4,
AArch64::AEK_SSVE_FP8DOT4, AArch64::AEK_LUT,
- AArch64::AEK_SME_LUTv2, AArch64::AEK_SMEF8F16,
+ AArch64::AEK_SME_LUTV2, AArch64::AEK_SMEF8F16,
AArch64::AEK_SMEF8F32, AArch64::AEK_SMEFA64,
AArch64::AEK_CPA, AArch64::AEK_PAUTHLR,
AArch64::AEK_TLBIW, AArch64::AEK_JSCVT,
More information about the cfe-commits
mailing list