[clang] [lldb] [llvm] Targetparser from tablegen full (PR #90320)

Tomas Matheson via llvm-commits llvm-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 llvm-commits mailing list