[llvm] [llvm][AArch64] Drop unused&redundant field in the TargetParserTest. NFC (PR #97367)

Jon Roelofs via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 3 08:47:56 PDT 2024


https://github.com/jroelofs updated https://github.com/llvm/llvm-project/pull/97367

>From 5de3af68b72a483b139d801ed16b6486af8444d6 Mon Sep 17 00:00:00 2001
From: Jon Roelofs <jonathan_roelofs at apple.com>
Date: Mon, 1 Jul 2024 14:30:10 -0700
Subject: [PATCH 1/6] enforce checking of CPUAttr, and fix the cases it found

---
 llvm/unittests/TargetParser/TargetParserTest.cpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index fe20099382859..ee71e0f223be6 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1085,6 +1085,8 @@ TEST_P(AArch64CPUTestFixture, testAArch64CPU) {
   EXPECT_PRED_FORMAT2(
       AssertSameExtensionFlags<ARM::ISAKind::AARCH64>(params.CPUName),
       params.ExpectedFlags, Cpu->getImpliedExtensions());
+
+  EXPECT_EQ(llvm::StringRef(("armv" + params.CPUAttr).str()).lower(), Cpu->Arch.Name.lower());
 }
 
 INSTANTIATE_TEST_SUITE_P(
@@ -1657,7 +1659,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_SSBS,    AArch64::AEK_CCDP,
                  AArch64::AEK_FRINT3264, AArch64::AEK_SPECRESTRICT,
                  AArch64::AEK_ALTERNATIVENZCV}),
-            "8.6-A"),
+            "8.4-A"),
         ARMCPUTestParams<AArch64::ExtensionBitset>(
             "apple-a15", "armv8.6-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
@@ -1690,7 +1692,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_FP16FML, AArch64::AEK_SHA3,    AArch64::AEK_BF16,
                  AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
                  AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON, AArch64::AEK_HCX}),
-            "8.4-A"),
+            "8.6-A"),
         ARMCPUTestParams<AArch64::ExtensionBitset>(
             "apple-m3", "armv8.6-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
@@ -1728,7 +1730,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_SME,       AArch64::AEK_SME2,
                  AArch64::AEK_SMEF64F64, AArch64::AEK_SMEI16I64,
                  AArch64::AEK_PERFMON}),
-            "8.3-A"),
+            "8.7-A"),
         ARMCPUTestParams<AArch64::ExtensionBitset>(
             "exynos-m3", "armv8-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,

>From 67ae15ba52c70002a9be83befea964ce703329b1 Mon Sep 17 00:00:00 2001
From: Jon Roelofs <jonathan_roelofs at apple.com>
Date: Mon, 1 Jul 2024 16:54:19 -0700
Subject: [PATCH 2/6] [llvm][AArch64] Drop unused&redundant field in the
 TargetParserTest. NFC

There were a couple of cases where this field was just plain wrong because we
weren't actually testing against it.  Instead, drop the CPUAttr field on
AArch64 tests.
---
 .../TargetParser/TargetParserTest.cpp         | 409 ++++++++----------
 1 file changed, 174 insertions(+), 235 deletions(-)

diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index ee71e0f223be6..097d62cb46479 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1071,8 +1071,26 @@ TEST(TargetParserTest, ARMPrintSupportedExtensions) {
   EXPECT_EQ(std::string::npos, captured.find("xscale"));
 }
 
+template <typename T> struct AArch64CPUTestParams : public ARMCPUTestParams<T> {
+  AArch64CPUTestParams(StringRef CPUName, StringRef ExpectedArch,
+                       StringRef ExpectedFPU, T ExpectedFlags)
+      : ARMCPUTestParams<T>(CPUName, ExpectedArch, ExpectedFPU, ExpectedFlags, /*ignored*/"") {}
+  /// Print a gtest-compatible facsimile of the CPUName, to make the test's name
+  /// human-readable.
+  ///
+  /// https://github.com/google/googletest/blob/main/docs/advanced.md#specifying-names-for-value-parameterized-test-parameters
+  static std::string PrintToStringParamName(
+      const testing::TestParamInfo<AArch64CPUTestParams<T>> &Info) {
+    std::string Name = Info.param.CPUName.str();
+    for (char &C : Name)
+      if (!std::isalnum(C))
+        C = '_';
+    return Name;
+  }
+};
+
 class AArch64CPUTestFixture : public ::testing::TestWithParam<
-                                  ARMCPUTestParams<AArch64::ExtensionBitset>> {
+                                  AArch64CPUTestParams<AArch64::ExtensionBitset>> {
 };
 
 TEST_P(AArch64CPUTestFixture, testAArch64CPU) {
@@ -1085,41 +1103,35 @@ TEST_P(AArch64CPUTestFixture, testAArch64CPU) {
   EXPECT_PRED_FORMAT2(
       AssertSameExtensionFlags<ARM::ISAKind::AARCH64>(params.CPUName),
       params.ExpectedFlags, Cpu->getImpliedExtensions());
-
-  EXPECT_EQ(llvm::StringRef(("armv" + params.CPUAttr).str()).lower(), Cpu->Arch.Name.lower());
 }
 
 INSTANTIATE_TEST_SUITE_P(
     AArch64CPUTests, AArch64CPUTestFixture,
     ::testing::Values(
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams<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_SIMD, AArch64::AEK_PERFMON}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_PERFMON}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_PERFMON}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_LSE, AArch64::AEK_RDM,
                                       AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
-                                      AArch64::AEK_RCPC, AArch64::AEK_PERFMON}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_RCPC, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-a510", "armv9-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,         AArch64::AEK_FP,
@@ -1133,9 +1145,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_FP16,        AArch64::AEK_FP16FML,
                  AArch64::AEK_SB,          AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE,         AArch64::AEK_AM}),
-            "9-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_ETE,         AArch64::AEK_AM})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-a520", "armv9.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
@@ -1151,9 +1162,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_PERFMON,     AArch64::AEK_PREDRES,
                  AArch64::AEK_JSCVT,       AArch64::AEK_FCMA,
                  AArch64::AEK_PERFMON,     AArch64::AEK_AM,
-                 AArch64::AEK_ETE}),
-            "9.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_ETE})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-a520ae", "armv9.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
@@ -1169,99 +1179,87 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_PERFMON,     AArch64::AEK_PREDRES,
                  AArch64::AEK_JSCVT,       AArch64::AEK_FCMA,
                  AArch64::AEK_PERFMON,     AArch64::AEK_AM,
-                 AArch64::AEK_ETE}),
-            "9.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_ETE})),
+        AArch64CPUTestParams<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_SIMD, AArch64::AEK_PERFMON}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
                  AArch64::AEK_RDM, AArch64::AEK_SIMD, AArch64::AEK_SSBS,
-                 AArch64::AEK_PERFMON}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_FP, AArch64::AEK_FP16,
                  AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
                  AArch64::AEK_RDM, AArch64::AEK_SIMD, AArch64::AEK_SSBS,
-                 AArch64::AEK_PERFMON}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_PERFMON}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_PERFMON}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_LSE, AArch64::AEK_RDM,
                                       AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
-                                      AArch64::AEK_RCPC, AArch64::AEK_PERFMON}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_RCPC, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "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_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
                  AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
-                 AArch64::AEK_PERFMON}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "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_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
                  AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
-                 AArch64::AEK_PERFMON}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "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_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
                  AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
-                 AArch64::AEK_PERFMON}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "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_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
                  AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
-                 AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "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_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
                  AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
-                 AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-a78c", "armv8.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_RAS, AArch64::AEK_CRC, AArch64::AEK_AES,
@@ -1269,9 +1267,8 @@ INSTANTIATE_TEST_SUITE_P(
                  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_PAUTH, AArch64::AEK_PERFMON}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-a710", "armv9-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,     AArch64::AEK_FP,
@@ -1285,9 +1282,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_SB,      AArch64::AEK_I8MM,
                  AArch64::AEK_BF16,    AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,    AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE}),
-            "9-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_ETE})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-a715", "armv9-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,     AArch64::AEK_FP,
@@ -1303,9 +1299,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_FP16FML, AArch64::AEK_FP16,
                  AArch64::AEK_FLAGM,   AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,    AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE,     AArch64::AEK_TRBE}),
-            "9-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_ETE,     AArch64::AEK_TRBE})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-a720", "armv9.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
@@ -1322,9 +1317,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_PROFILE,     AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
                  AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF,
-                 AArch64::AEK_TRBE}),
-            "9.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_TRBE})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-a720ae", "armv9.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
@@ -1341,9 +1335,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_PROFILE,     AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
                  AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF,
-                 AArch64::AEK_TRBE}),
-            "9.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_TRBE})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-a725", "armv9.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
@@ -1359,9 +1352,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_PERFMON,     AArch64::AEK_PREDRES,
                  AArch64::AEK_PROFILE,     AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,        AArch64::AEK_ETE,
-                 AArch64::AEK_SPE_EEF,     AArch64::AEK_TRBE}),
-            "9.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_SPE_EEF,     AArch64::AEK_TRBE})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "neoverse-v1", "armv8.4-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_RAS,     AArch64::AEK_SVE,
@@ -1377,9 +1369,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_FP16FML, AArch64::AEK_I8MM,
                  AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
                  AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
-                 AArch64::AEK_CCDP}),
-            "8.4-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_CCDP})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "neoverse-v2", "armv9-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_RAS,         AArch64::AEK_SVE,
@@ -1394,9 +1385,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_SVE2BITPERM, AArch64::AEK_RAND,
                  AArch64::AEK_JSCVT,       AArch64::AEK_FCMA,
                  AArch64::AEK_PAUTH,       AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE}),
-            "9-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_ETE})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "neoverse-v3", "armv9.2-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
@@ -1414,9 +1404,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_SVE2BITPERM, AArch64::AEK_FP16FML,
                  AArch64::AEK_PROFILE,     AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF}),
-            "9.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "neoverse-v3ae", "armv9.2-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
@@ -1434,9 +1423,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_SVE2BITPERM, AArch64::AEK_FP16FML,
                  AArch64::AEK_PROFILE,     AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF}),
-            "9.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-r82", "armv8-r", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC, AArch64::AEK_RDM, AArch64::AEK_SSBS,
@@ -1445,9 +1433,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_RCPC, AArch64::AEK_LSE, AArch64::AEK_SB,
                  AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_PAUTH,
                  AArch64::AEK_FLAGM, AArch64::AEK_PERFMON,
-                 AArch64::AEK_PREDRES, AArch64::AEK_CCDP}),
-            "8-R"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PREDRES, AArch64::AEK_CCDP})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-r82ae", "armv8-r", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC, AArch64::AEK_RDM, AArch64::AEK_SSBS,
@@ -1456,18 +1443,16 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_RCPC, AArch64::AEK_LSE, AArch64::AEK_SB,
                  AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_PAUTH,
                  AArch64::AEK_FLAGM, AArch64::AEK_PERFMON,
-                 AArch64::AEK_PREDRES, AArch64::AEK_CCDP}),
-            "8-R"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PREDRES, AArch64::AEK_CCDP})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "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_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
                  AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
-                 AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-x1c", "armv8.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
@@ -1475,9 +1460,8 @@ INSTANTIATE_TEST_SUITE_P(
                  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_PERFMON, AArch64::AEK_LSE2, AArch64::AEK_RCPC_IMMO}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PERFMON, AArch64::AEK_LSE2, AArch64::AEK_RCPC_IMMO})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-x2", "armv9-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,         AArch64::AEK_FP,
@@ -1492,9 +1476,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_FP16FML,     AArch64::AEK_FLAGM,
                  AArch64::AEK_JSCVT,       AArch64::AEK_FCMA,
                  AArch64::AEK_PERFMON,     AArch64::AEK_AM,
-                 AArch64::AEK_ETE}),
-            "9-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_ETE})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-x3", "armv9-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,     AArch64::AEK_FP,
@@ -1510,9 +1493,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_PREDRES, AArch64::AEK_FLAGM,
                  AArch64::AEK_SSBS,    AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,    AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE,     AArch64::AEK_TRBE}),
-            "9-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_ETE,     AArch64::AEK_TRBE})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-x4", "armv9.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
@@ -1529,9 +1511,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_PROFILE,     AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
                  AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF,
-                 AArch64::AEK_TRBE}),
-            "9.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_TRBE})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-x925", "armv9.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
@@ -1547,76 +1528,66 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_PERFMON,     AArch64::AEK_PREDRES,
                  AArch64::AEK_PROFILE,     AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,        AArch64::AEK_ETE,
-                 AArch64::AEK_SPE_EEF,     AArch64::AEK_TRBE}),
-            "9.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_SPE_EEF,     AArch64::AEK_TRBE})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cyclone", "armv8-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
                                       AArch64::AEK_FP, AArch64::AEK_SIMD,
-                                      AArch64::AEK_PERFMON}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "apple-a7", "armv8-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
                                       AArch64::AEK_FP, AArch64::AEK_SIMD,
-                                      AArch64::AEK_PERFMON}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "apple-a8", "armv8-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
                                       AArch64::AEK_FP, AArch64::AEK_SIMD,
-                                      AArch64::AEK_PERFMON}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "apple-a9", "armv8-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
                                       AArch64::AEK_FP, AArch64::AEK_SIMD,
-                                      AArch64::AEK_PERFMON}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_PERFMON, AArch64::AEK_PAN,
-                                      AArch64::AEK_LOR, AArch64::AEK_VH}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_LOR, AArch64::AEK_VH})),
+        AArch64CPUTestParams<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_PERFMON}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_FP16, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
                  AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH, AArch64::AEK_PERFMON}),
-            "8.3-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "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_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
                  AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH, AArch64::AEK_PERFMON}),
-            "8.3-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "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_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
                  AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH, AArch64::AEK_PERFMON}),
-            "8.3-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "apple-a13", "armv8.4-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
@@ -1624,9 +1595,8 @@ INSTANTIATE_TEST_SUITE_P(
                  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,
-                 AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON}),
-            "8.4-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "apple-a14", "armv8.4-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,     AArch64::AEK_AES,
@@ -1641,9 +1611,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_PREDRES, AArch64::AEK_SB,
                  AArch64::AEK_SSBS,    AArch64::AEK_CCDP,
                  AArch64::AEK_FRINT3264, AArch64::AEK_SPECRESTRICT,
-                 AArch64::AEK_ALTERNATIVENZCV}),
-            "8.4-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_ALTERNATIVENZCV})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "apple-m1", "armv8.4-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,     AArch64::AEK_AES,
@@ -1658,9 +1627,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_PREDRES, AArch64::AEK_SB,
                  AArch64::AEK_SSBS,    AArch64::AEK_CCDP,
                  AArch64::AEK_FRINT3264, AArch64::AEK_SPECRESTRICT,
-                 AArch64::AEK_ALTERNATIVENZCV}),
-            "8.4-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_ALTERNATIVENZCV})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "apple-a15", "armv8.6-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,     AArch64::AEK_AES,     AArch64::AEK_SHA2,
@@ -1669,9 +1637,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_RCPC,    AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
                  AArch64::AEK_FP16FML, AArch64::AEK_SHA3,    AArch64::AEK_BF16,
                  AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON}),
-            "8.6-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "apple-m2", "armv8.6-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,     AArch64::AEK_AES,     AArch64::AEK_SHA2,
@@ -1680,9 +1647,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_RCPC,    AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
                  AArch64::AEK_FP16FML, AArch64::AEK_SHA3,    AArch64::AEK_BF16,
                  AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON}),
-            "8.6-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "apple-a16", "armv8.6-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,     AArch64::AEK_AES,     AArch64::AEK_SHA2,
@@ -1691,9 +1657,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_RCPC,    AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
                  AArch64::AEK_FP16FML, AArch64::AEK_SHA3,    AArch64::AEK_BF16,
                  AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON, AArch64::AEK_HCX}),
-            "8.6-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON, AArch64::AEK_HCX})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "apple-m3", "armv8.6-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,     AArch64::AEK_AES,     AArch64::AEK_SHA2,
@@ -1702,9 +1667,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_RCPC,    AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
                  AArch64::AEK_FP16FML, AArch64::AEK_SHA3,    AArch64::AEK_BF16,
                  AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON, AArch64::AEK_HCX}),
-            "8.6-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON, AArch64::AEK_HCX})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "apple-a17", "armv8.6-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,     AArch64::AEK_AES,     AArch64::AEK_SHA2,
@@ -1713,9 +1677,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_RCPC,    AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
                  AArch64::AEK_FP16FML, AArch64::AEK_SHA3,    AArch64::AEK_BF16,
                  AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON, AArch64::AEK_HCX}),
-            "8.6-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON, AArch64::AEK_HCX})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "apple-m4", "armv8.7-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,       AArch64::AEK_AES,
@@ -1729,62 +1692,54 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_FCMA,      AArch64::AEK_PAUTH,
                  AArch64::AEK_SME,       AArch64::AEK_SME2,
                  AArch64::AEK_SMEF64F64, AArch64::AEK_SMEI16I64,
-                 AArch64::AEK_PERFMON}),
-            "8.7-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_SIMD, AArch64::AEK_PERFMON}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
-                 AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_FP, AArch64::AEK_FP16,
                  AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
-                 AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_PERFMON}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_PERFMON}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
                  AArch64::AEK_RDM, AArch64::AEK_SIMD, AArch64::AEK_SSBS,
-                 AArch64::AEK_PERFMON}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_FP, AArch64::AEK_FP16,
                  AArch64::AEK_LSE, AArch64::AEK_PROFILE, AArch64::AEK_RAS,
                  AArch64::AEK_RCPC, AArch64::AEK_RDM, AArch64::AEK_SIMD,
-                 AArch64::AEK_SSBS, AArch64::AEK_PERFMON}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_SSBS, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "neoverse-n2", "armv9-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,         AArch64::AEK_FP,
@@ -1798,9 +1753,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_I8MM,        AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,        AArch64::AEK_PAUTH,
                  AArch64::AEK_FP16FML,     AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE,         AArch64::AEK_TRBE}),
-            "9-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_ETE,         AArch64::AEK_TRBE})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "neoverse-n3", "armv9.2-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,    AArch64::AEK_I8MM,
@@ -1817,9 +1771,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_RAND,    AArch64::AEK_SVE2BITPERM,
                  AArch64::AEK_FP16FML, AArch64::AEK_PROFILE,
                  AArch64::AEK_JSCVT,   AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE,     AArch64::AEK_SPE_EEF}),
-            "9.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_ETE,     AArch64::AEK_SPE_EEF})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "ampere1", "armv8.6-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,  AArch64::AEK_FP,    AArch64::AEK_FP16,
@@ -1828,9 +1781,8 @@ INSTANTIATE_TEST_SUITE_P(
                  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_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON}),
-            "8.6-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "ampere1a", "armv8.6-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,   AArch64::AEK_FP,     AArch64::AEK_FP16,
@@ -1840,9 +1792,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_SHA2,  AArch64::AEK_AES,    AArch64::AEK_I8MM,
                  AArch64::AEK_SSBS,  AArch64::AEK_SB,     AArch64::AEK_RAND,
                  AArch64::AEK_MTE,   AArch64::AEK_JSCVT,  AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH, AArch64::AEK_PERFMON}),
-            "8.6-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "ampere1b", "armv8.7-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,   AArch64::AEK_FP,    AArch64::AEK_FP16,
@@ -1853,9 +1804,8 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_SSBS,  AArch64::AEK_SB,    AArch64::AEK_RAND,
                  AArch64::AEK_MTE,   AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
                  AArch64::AEK_PAUTH, AArch64::AEK_CSSC,  AArch64::AEK_PERFMON,
-                 AArch64::AEK_WFXT}),
-            "8.7-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_WFXT})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "neoverse-512tvb", "armv8.4-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_RAS,     AArch64::AEK_SVE,
@@ -1871,49 +1821,42 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_FP16FML, AArch64::AEK_I8MM,
                  AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
                  AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
-                 AArch64::AEK_CCDP}),
-            "8.4-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_CCDP})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "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_SIMD}),
-            "8.1-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_SIMD})),
+        AArch64CPUTestParams<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_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_PAUTH,
-                 AArch64::AEK_PERFMON}),
-            "8.3-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_FP, AArch64::AEK_PERFMON}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_FP, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_FP, AArch64::AEK_PERFMON}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_FP, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_FP, AArch64::AEK_PERFMON}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_FP, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_FP, AArch64::AEK_PERFMON}),
-            "8-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                                      AArch64::AEK_FP, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "tsv110", "armv8.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
@@ -1921,24 +1864,21 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_PROFILE,
                  AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_FP16,
                  AArch64::AEK_FP16FML, AArch64::AEK_DOTPROD,
-                 AArch64::AEK_PERFMON}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams<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_SIMD, AArch64::AEK_FP16,
                  AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_SVE,
-                 AArch64::AEK_RDM, AArch64::AEK_PERFMON, AArch64::AEK_FCMA}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_RDM, AArch64::AEK_PERFMON, AArch64::AEK_FCMA})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "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_RAS, AArch64::AEK_LSE, AArch64::AEK_RDM}),
-            "8.2-A"),
-        ARMCPUTestParams<AArch64::ExtensionBitset>(
+                 AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_RDM})),
+        AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "oryon-1", "armv8.6-a", "crypto-neon-fp-armv8",
             (AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,     AArch64::AEK_FP,      AArch64::AEK_PAUTH,
@@ -1947,10 +1887,9 @@ INSTANTIATE_TEST_SUITE_P(
                  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_RAND,
-                 AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})),
-            "8.6-A")),
+                 AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})))),
 
-    ARMCPUTestParams<AArch64::ExtensionBitset>::PrintToStringParamName);
+    AArch64CPUTestParams<AArch64::ExtensionBitset>::PrintToStringParamName);
 
 // Note: number of CPUs includes aliases.
 static constexpr unsigned NumAArch64CPUArchs = 81;

>From 954641676a0698c650973c8c727eaee32fe4e8e6 Mon Sep 17 00:00:00 2001
From: Jon Roelofs <jonathan_roelofs at apple.com>
Date: Mon, 1 Jul 2024 16:58:27 -0700
Subject: [PATCH 3/6] clang-format

---
 .../TargetParser/TargetParserTest.cpp         | 234 ++++++++++--------
 1 file changed, 135 insertions(+), 99 deletions(-)

diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 097d62cb46479..17fc2536076b3 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1074,7 +1074,8 @@ TEST(TargetParserTest, ARMPrintSupportedExtensions) {
 template <typename T> struct AArch64CPUTestParams : public ARMCPUTestParams<T> {
   AArch64CPUTestParams(StringRef CPUName, StringRef ExpectedArch,
                        StringRef ExpectedFPU, T ExpectedFlags)
-      : ARMCPUTestParams<T>(CPUName, ExpectedArch, ExpectedFPU, ExpectedFlags, /*ignored*/"") {}
+      : ARMCPUTestParams<T>(CPUName, ExpectedArch, ExpectedFPU, ExpectedFlags,
+                            /*ignored*/ "") {}
   /// Print a gtest-compatible facsimile of the CPUName, to make the test's name
   /// human-readable.
   ///
@@ -1089,9 +1090,9 @@ template <typename T> struct AArch64CPUTestParams : public ARMCPUTestParams<T> {
   }
 };
 
-class AArch64CPUTestFixture : public ::testing::TestWithParam<
-                                  AArch64CPUTestParams<AArch64::ExtensionBitset>> {
-};
+class AArch64CPUTestFixture
+    : public ::testing::TestWithParam<
+          AArch64CPUTestParams<AArch64::ExtensionBitset>> {};
 
 TEST_P(AArch64CPUTestFixture, testAArch64CPU) {
   auto params = GetParam();
@@ -1110,27 +1111,27 @@ INSTANTIATE_TEST_SUITE_P(
     ::testing::Values(
         AArch64CPUTestParams<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_SIMD, AArch64::AEK_PERFMON})),
+            AArch64::ExtensionBitset(
+                {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+                 AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
         AArch64CPUTestParams<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_PERFMON})),
+            AArch64::ExtensionBitset(
+                {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+                 AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
         AArch64CPUTestParams<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_PERFMON})),
+            AArch64::ExtensionBitset(
+                {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+                 AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
         AArch64CPUTestParams<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_LSE, AArch64::AEK_RDM,
-                                      AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
-                                      AArch64::AEK_RCPC, AArch64::AEK_PERFMON})),
+            AArch64::ExtensionBitset(
+                {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+                 AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_RAS,
+                 AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_FP16,
+                 AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
+                 AArch64::AEK_PERFMON})),
         AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-a510", "armv9-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
@@ -1182,9 +1183,9 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_ETE})),
         AArch64CPUTestParams<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_SIMD, AArch64::AEK_PERFMON})),
+            AArch64::ExtensionBitset(
+                {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+                 AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
         AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-a65", "armv8.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
@@ -1203,22 +1204,22 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_PERFMON})),
         AArch64CPUTestParams<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_PERFMON})),
+            AArch64::ExtensionBitset(
+                {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+                 AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
         AArch64CPUTestParams<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_PERFMON})),
+            AArch64::ExtensionBitset(
+                {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+                 AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
         AArch64CPUTestParams<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_LSE, AArch64::AEK_RDM,
-                                      AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
-                                      AArch64::AEK_RCPC, AArch64::AEK_PERFMON})),
+            AArch64::ExtensionBitset(
+                {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+                 AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_RAS,
+                 AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_FP16,
+                 AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
+                 AArch64::AEK_PERFMON})),
         AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-a76", "armv8.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
@@ -1432,8 +1433,8 @@ INSTANTIATE_TEST_SUITE_P(
                  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,
-                 AArch64::AEK_FLAGM, AArch64::AEK_PERFMON,
-                 AArch64::AEK_PREDRES, AArch64::AEK_CCDP})),
+                 AArch64::AEK_FLAGM, AArch64::AEK_PERFMON, AArch64::AEK_PREDRES,
+                 AArch64::AEK_CCDP})),
         AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-r82ae", "armv8-r", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
@@ -1442,8 +1443,8 @@ INSTANTIATE_TEST_SUITE_P(
                  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,
-                 AArch64::AEK_FLAGM, AArch64::AEK_PERFMON,
-                 AArch64::AEK_PREDRES, AArch64::AEK_CCDP})),
+                 AArch64::AEK_FLAGM, AArch64::AEK_PERFMON, AArch64::AEK_PREDRES,
+                 AArch64::AEK_CCDP})),
         AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-x1", "armv8.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
@@ -1460,7 +1461,8 @@ INSTANTIATE_TEST_SUITE_P(
                  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_PERFMON, AArch64::AEK_LSE2, AArch64::AEK_RCPC_IMMO})),
+                 AArch64::AEK_PERFMON, AArch64::AEK_LSE2,
+                 AArch64::AEK_RCPC_IMMO})),
         AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "cortex-x2", "armv9-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
@@ -1558,11 +1560,11 @@ INSTANTIATE_TEST_SUITE_P(
                                       AArch64::AEK_LOR, AArch64::AEK_VH})),
         AArch64CPUTestParams<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_PERFMON})),
+            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_PERFMON})),
         AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "apple-a12", "armv8.3-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
@@ -1598,36 +1600,58 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
         AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "apple-a14", "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_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,   AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
-                 AArch64::AEK_PREDRES, AArch64::AEK_SB,
-                 AArch64::AEK_SSBS,    AArch64::AEK_CCDP,
-                 AArch64::AEK_FRINT3264, AArch64::AEK_SPECRESTRICT,
-                 AArch64::AEK_ALTERNATIVENZCV})),
+            AArch64::ExtensionBitset({AArch64::AEK_CRC,
+                                      AArch64::AEK_AES,
+                                      AArch64::AEK_SHA2,
+                                      AArch64::AEK_SHA3,
+                                      AArch64::AEK_FP,
+                                      AArch64::AEK_SIMD,
+                                      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,
+                                      AArch64::AEK_FCMA,
+                                      AArch64::AEK_PAUTH,
+                                      AArch64::AEK_PERFMON,
+                                      AArch64::AEK_PREDRES,
+                                      AArch64::AEK_SB,
+                                      AArch64::AEK_SSBS,
+                                      AArch64::AEK_CCDP,
+                                      AArch64::AEK_FRINT3264,
+                                      AArch64::AEK_SPECRESTRICT,
+                                      AArch64::AEK_ALTERNATIVENZCV})),
         AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "apple-m1", "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_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,   AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
-                 AArch64::AEK_PREDRES, AArch64::AEK_SB,
-                 AArch64::AEK_SSBS,    AArch64::AEK_CCDP,
-                 AArch64::AEK_FRINT3264, AArch64::AEK_SPECRESTRICT,
-                 AArch64::AEK_ALTERNATIVENZCV})),
+            AArch64::ExtensionBitset({AArch64::AEK_CRC,
+                                      AArch64::AEK_AES,
+                                      AArch64::AEK_SHA2,
+                                      AArch64::AEK_SHA3,
+                                      AArch64::AEK_FP,
+                                      AArch64::AEK_SIMD,
+                                      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,
+                                      AArch64::AEK_FCMA,
+                                      AArch64::AEK_PAUTH,
+                                      AArch64::AEK_PERFMON,
+                                      AArch64::AEK_PREDRES,
+                                      AArch64::AEK_SB,
+                                      AArch64::AEK_SSBS,
+                                      AArch64::AEK_CCDP,
+                                      AArch64::AEK_FRINT3264,
+                                      AArch64::AEK_SPECRESTRICT,
+                                      AArch64::AEK_ALTERNATIVENZCV})),
         AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "apple-a15", "armv8.6-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
@@ -1651,33 +1675,45 @@ INSTANTIATE_TEST_SUITE_P(
         AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "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_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,
-                 AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON, AArch64::AEK_HCX})),
+                {AArch64::AEK_CRC,     AArch64::AEK_AES,
+                 AArch64::AEK_SHA2,    AArch64::AEK_SHA3,
+                 AArch64::AEK_FP,      AArch64::AEK_SIMD,
+                 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,    AArch64::AEK_I8MM,
+                 AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
+                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
+                 AArch64::AEK_HCX})),
         AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "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_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,
-                 AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON, AArch64::AEK_HCX})),
+                {AArch64::AEK_CRC,     AArch64::AEK_AES,
+                 AArch64::AEK_SHA2,    AArch64::AEK_SHA3,
+                 AArch64::AEK_FP,      AArch64::AEK_SIMD,
+                 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,    AArch64::AEK_I8MM,
+                 AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
+                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
+                 AArch64::AEK_HCX})),
         AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "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_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,
-                 AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON, AArch64::AEK_HCX})),
+                {AArch64::AEK_CRC,     AArch64::AEK_AES,
+                 AArch64::AEK_SHA2,    AArch64::AEK_SHA3,
+                 AArch64::AEK_FP,      AArch64::AEK_SIMD,
+                 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,    AArch64::AEK_I8MM,
+                 AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
+                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
+                 AArch64::AEK_HCX})),
         AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "apple-m4", "armv8.7-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
@@ -1695,9 +1731,9 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_PERFMON})),
         AArch64CPUTestParams<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_SIMD, AArch64::AEK_PERFMON})),
+            AArch64::ExtensionBitset(
+                {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+                 AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
         AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "exynos-m4", "armv8.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
@@ -1720,9 +1756,9 @@ INSTANTIATE_TEST_SUITE_P(
                                       AArch64::AEK_PERFMON})),
         AArch64CPUTestParams<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_PERFMON})),
+            AArch64::ExtensionBitset(
+                {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+                 AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
         AArch64CPUTestParams<AArch64::ExtensionBitset>(
             "neoverse-e1", "armv8.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(

>From 4452accdcee10e0eee53326b0a1e2414f7b83422 Mon Sep 17 00:00:00 2001
From: Jon Roelofs <jonathan_roelofs at apple.com>
Date: Tue, 2 Jul 2024 10:10:39 -0700
Subject: [PATCH 4/6] drop the template param, clang-format again

---
 .../TargetParser/TargetParserTest.cpp         | 547 +++++++++---------
 1 file changed, 276 insertions(+), 271 deletions(-)

diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 17fc2536076b3..2f984de427ba8 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1071,17 +1071,20 @@ TEST(TargetParserTest, ARMPrintSupportedExtensions) {
   EXPECT_EQ(std::string::npos, captured.find("xscale"));
 }
 
-template <typename T> struct AArch64CPUTestParams : public ARMCPUTestParams<T> {
+struct AArch64CPUTestParams
+    : public ARMCPUTestParams<AArch64::ExtensionBitset> {
   AArch64CPUTestParams(StringRef CPUName, StringRef ExpectedArch,
-                       StringRef ExpectedFPU, T ExpectedFlags)
-      : ARMCPUTestParams<T>(CPUName, ExpectedArch, ExpectedFPU, ExpectedFlags,
-                            /*ignored*/ "") {}
+                       StringRef ExpectedFPU,
+                       AArch64::ExtensionBitset ExpectedFlags)
+      : ARMCPUTestParams<AArch64::ExtensionBitset>(CPUName, ExpectedArch,
+                                                   ExpectedFPU, ExpectedFlags,
+                                                   /*ignored*/ "") {}
   /// Print a gtest-compatible facsimile of the CPUName, to make the test's name
   /// human-readable.
   ///
   /// https://github.com/google/googletest/blob/main/docs/advanced.md#specifying-names-for-value-parameterized-test-parameters
   static std::string PrintToStringParamName(
-      const testing::TestParamInfo<AArch64CPUTestParams<T>> &Info) {
+      const testing::TestParamInfo<AArch64CPUTestParams> &Info) {
     std::string Name = Info.param.CPUName.str();
     for (char &C : Name)
       if (!std::isalnum(C))
@@ -1091,8 +1094,7 @@ template <typename T> struct AArch64CPUTestParams : public ARMCPUTestParams<T> {
 };
 
 class AArch64CPUTestFixture
-    : public ::testing::TestWithParam<
-          AArch64CPUTestParams<AArch64::ExtensionBitset>> {};
+    : public ::testing::TestWithParam<AArch64CPUTestParams> {};
 
 TEST_P(AArch64CPUTestFixture, testAArch64CPU) {
   auto params = GetParam();
@@ -1109,30 +1111,30 @@ TEST_P(AArch64CPUTestFixture, testAArch64CPU) {
 INSTANTIATE_TEST_SUITE_P(
     AArch64CPUTests, AArch64CPUTestFixture,
     ::testing::Values(
-        AArch64CPUTestParams<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_SIMD, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<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_PERFMON})),
-        AArch64CPUTestParams<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_PERFMON})),
-        AArch64CPUTestParams<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_LSE, AArch64::AEK_RDM, AArch64::AEK_FP16,
-                 AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
-                 AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams("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_PERFMON})),
+        AArch64CPUTestParams("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_PERFMON})),
+        AArch64CPUTestParams("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_PERFMON})),
+        AArch64CPUTestParams("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_LSE, AArch64::AEK_RDM,
+                                  AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+                                  AArch64::AEK_RCPC, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams(
             "cortex-a510", "armv9-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,         AArch64::AEK_FP,
@@ -1147,7 +1149,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_SB,          AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
                  AArch64::AEK_ETE,         AArch64::AEK_AM})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "cortex-a520", "armv9.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
@@ -1164,7 +1166,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_JSCVT,       AArch64::AEK_FCMA,
                  AArch64::AEK_PERFMON,     AArch64::AEK_AM,
                  AArch64::AEK_ETE})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "cortex-a520ae", "armv9.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
@@ -1181,12 +1183,12 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_JSCVT,       AArch64::AEK_FCMA,
                  AArch64::AEK_PERFMON,     AArch64::AEK_AM,
                  AArch64::AEK_ETE})),
-        AArch64CPUTestParams<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_SIMD, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams("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_PERFMON})),
+        AArch64CPUTestParams(
             "cortex-a65", "armv8.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
@@ -1194,7 +1196,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
                  AArch64::AEK_RDM, AArch64::AEK_SIMD, AArch64::AEK_SSBS,
                  AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "cortex-a65ae", "armv8.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
@@ -1202,33 +1204,33 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
                  AArch64::AEK_RDM, AArch64::AEK_SIMD, AArch64::AEK_SSBS,
                  AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<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_PERFMON})),
-        AArch64CPUTestParams<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_PERFMON})),
-        AArch64CPUTestParams<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_LSE, AArch64::AEK_RDM, AArch64::AEK_FP16,
-                 AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
-                 AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams("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_PERFMON})),
+        AArch64CPUTestParams("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_PERFMON})),
+        AArch64CPUTestParams("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_LSE, AArch64::AEK_RDM,
+                                  AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+                                  AArch64::AEK_RCPC, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams(
             "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_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
-                 AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
-                 AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+                {AArch64::AEK_CRC, AArch64::AEK_AES,
+                 AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_RDM,
+                 AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_LSE,
+                 AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
+                 AArch64::AEK_SSBS, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams(
             "cortex-a76ae", "armv8.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
@@ -1236,23 +1238,24 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
                  AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
                  AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "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_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
-                 AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
-                 AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
-            "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_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
-                 AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
-                 AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+                {AArch64::AEK_CRC, AArch64::AEK_AES,
+                 AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_RDM,
+                 AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_LSE,
+                 AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
+                 AArch64::AEK_SSBS, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams("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_RAS, AArch64::AEK_LSE,
+                                  AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+                                  AArch64::AEK_RCPC, AArch64::AEK_SSBS,
+                                  AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams(
             "cortex-a78ae", "armv8.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
@@ -1260,7 +1263,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
                  AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
                  AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "cortex-a78c", "armv8.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_RAS, AArch64::AEK_CRC, AArch64::AEK_AES,
@@ -1269,7 +1272,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
                  AArch64::AEK_SSBS, AArch64::AEK_PROFILE, AArch64::AEK_FLAGM,
                  AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "cortex-a710", "armv9-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,     AArch64::AEK_FP,
@@ -1284,7 +1287,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_BF16,    AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,    AArch64::AEK_PERFMON,
                  AArch64::AEK_ETE})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "cortex-a715", "armv9-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,     AArch64::AEK_FP,
@@ -1301,7 +1304,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_FLAGM,   AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,    AArch64::AEK_PERFMON,
                  AArch64::AEK_ETE,     AArch64::AEK_TRBE})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "cortex-a720", "armv9.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
@@ -1319,8 +1322,9 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
                  AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF,
                  AArch64::AEK_TRBE})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
-            "cortex-a720ae", "armv9.2-a", "crypto-neon-fp-armv8",
+        AArch64CPUTestParams(
+            "cortex-a720ae",
+            "armv9.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
                  AArch64::AEK_SVE,         AArch64::AEK_SVE2,
@@ -1337,7 +1341,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
                  AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF,
                  AArch64::AEK_TRBE})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "cortex-a725", "armv9.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
@@ -1354,24 +1358,23 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_PROFILE,     AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,        AArch64::AEK_ETE,
                  AArch64::AEK_SPE_EEF,     AArch64::AEK_TRBE})),
-        AArch64CPUTestParams<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_SIMD,    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_RAND,
-                 AArch64::AEK_FP16FML, AArch64::AEK_I8MM,
-                 AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
-                 AArch64::AEK_CCDP})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams("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_SIMD,    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_RAND,
+                                  AArch64::AEK_FP16FML, AArch64::AEK_I8MM,
+                                  AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
+                                  AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
+                                  AArch64::AEK_CCDP})),
+        AArch64CPUTestParams(
             "neoverse-v2", "armv9-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_RAS,         AArch64::AEK_SVE,
@@ -1387,7 +1390,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_JSCVT,       AArch64::AEK_FCMA,
                  AArch64::AEK_PAUTH,       AArch64::AEK_PERFMON,
                  AArch64::AEK_ETE})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "neoverse-v3", "armv9.2-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
@@ -1406,8 +1409,9 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_PROFILE,     AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
                  AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
-            "neoverse-v3ae", "armv9.2-a", "neon-fp-armv8",
+        AArch64CPUTestParams(
+            "neoverse-v3ae",
+            "armv9.2-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
                  AArch64::AEK_SVE,         AArch64::AEK_SVE2,
@@ -1425,7 +1429,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_PROFILE,     AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
                  AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "cortex-r82", "armv8-r", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC, AArch64::AEK_RDM, AArch64::AEK_SSBS,
@@ -1435,7 +1439,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_PAUTH,
                  AArch64::AEK_FLAGM, AArch64::AEK_PERFMON, AArch64::AEK_PREDRES,
                  AArch64::AEK_CCDP})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "cortex-r82ae", "armv8-r", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC, AArch64::AEK_RDM, AArch64::AEK_SSBS,
@@ -1445,25 +1449,26 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_PAUTH,
                  AArch64::AEK_FLAGM, AArch64::AEK_PERFMON, AArch64::AEK_PREDRES,
                  AArch64::AEK_CCDP})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
-            "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_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
-                 AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
-                 AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams("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_RAS, AArch64::AEK_LSE,
+                                  AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
+                                  AArch64::AEK_RCPC, AArch64::AEK_SSBS,
+                                  AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams(
             "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_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_PERFMON, AArch64::AEK_LSE2,
+                {AArch64::AEK_CRC, AArch64::AEK_AES,
+                 AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_RDM,
+                 AArch64::AEK_SIMD, 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_PERFMON, AArch64::AEK_LSE2,
                  AArch64::AEK_RCPC_IMMO})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "cortex-x2", "armv9-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,         AArch64::AEK_FP,
@@ -1479,7 +1484,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_JSCVT,       AArch64::AEK_FCMA,
                  AArch64::AEK_PERFMON,     AArch64::AEK_AM,
                  AArch64::AEK_ETE})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "cortex-x3", "armv9-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,     AArch64::AEK_FP,
@@ -1496,7 +1501,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_SSBS,    AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,    AArch64::AEK_PERFMON,
                  AArch64::AEK_ETE,     AArch64::AEK_TRBE})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "cortex-x4", "armv9.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
@@ -1514,7 +1519,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
                  AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF,
                  AArch64::AEK_TRBE})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "cortex-x925", "armv9.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,        AArch64::AEK_I8MM,
@@ -1531,65 +1536,65 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_PROFILE,     AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA,        AArch64::AEK_ETE,
                  AArch64::AEK_SPE_EEF,     AArch64::AEK_TRBE})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "cyclone", "armv8-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
                                       AArch64::AEK_FP, AArch64::AEK_SIMD,
                                       AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "apple-a7", "armv8-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
                                       AArch64::AEK_FP, AArch64::AEK_SIMD,
                                       AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "apple-a8", "armv8-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
                                       AArch64::AEK_FP, AArch64::AEK_SIMD,
                                       AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "apple-a9", "armv8-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
                                       AArch64::AEK_FP, AArch64::AEK_SIMD,
                                       AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "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_PERFMON, AArch64::AEK_PAN,
                                       AArch64::AEK_LOR, AArch64::AEK_VH})),
-        AArch64CPUTestParams<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_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams("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_PERFMON})),
+        AArch64CPUTestParams(
             "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_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
-                 AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+                {AArch64::AEK_CRC, AArch64::AEK_AES,
+                 AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_SIMD,
+                 AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
+                 AArch64::AEK_RCPC, AArch64::AEK_FP16, AArch64::AEK_JSCVT,
+                 AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams(
             "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_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
-                 AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+                {AArch64::AEK_CRC, AArch64::AEK_AES,
+                 AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_SIMD,
+                 AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
+                 AArch64::AEK_RCPC, AArch64::AEK_FP16, AArch64::AEK_JSCVT,
+                 AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams(
             "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_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
-                 AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+                {AArch64::AEK_CRC, AArch64::AEK_AES,
+                 AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_SIMD,
+                 AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
+                 AArch64::AEK_RCPC, AArch64::AEK_FP16, AArch64::AEK_JSCVT,
+                 AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
+        AArch64CPUTestParams(
             "apple-a13", "armv8.4-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
@@ -1598,7 +1603,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
                  AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "apple-a14", "armv8.4-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset({AArch64::AEK_CRC,
                                       AArch64::AEK_AES,
@@ -1625,7 +1630,7 @@ INSTANTIATE_TEST_SUITE_P(
                                       AArch64::AEK_FRINT3264,
                                       AArch64::AEK_SPECRESTRICT,
                                       AArch64::AEK_ALTERNATIVENZCV})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "apple-m1", "armv8.4-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset({AArch64::AEK_CRC,
                                       AArch64::AEK_AES,
@@ -1652,7 +1657,7 @@ INSTANTIATE_TEST_SUITE_P(
                                       AArch64::AEK_FRINT3264,
                                       AArch64::AEK_SPECRESTRICT,
                                       AArch64::AEK_ALTERNATIVENZCV})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "apple-a15", "armv8.6-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,     AArch64::AEK_AES,     AArch64::AEK_SHA2,
@@ -1662,7 +1667,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_FP16FML, AArch64::AEK_SHA3,    AArch64::AEK_BF16,
                  AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
                  AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "apple-m2", "armv8.6-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,     AArch64::AEK_AES,     AArch64::AEK_SHA2,
@@ -1672,49 +1677,46 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_FP16FML, AArch64::AEK_SHA3,    AArch64::AEK_BF16,
                  AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
                  AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
-            "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_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,    AArch64::AEK_I8MM,
-                 AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
-                 AArch64::AEK_HCX})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
-            "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_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,    AArch64::AEK_I8MM,
-                 AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
-                 AArch64::AEK_HCX})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
-            "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_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,    AArch64::AEK_I8MM,
-                 AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
-                 AArch64::AEK_HCX})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams("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_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,    AArch64::AEK_I8MM,
+                                  AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
+                                  AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
+                                  AArch64::AEK_HCX})),
+        AArch64CPUTestParams("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_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,    AArch64::AEK_I8MM,
+                                  AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
+                                  AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
+                                  AArch64::AEK_HCX})),
+        AArch64CPUTestParams("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_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,    AArch64::AEK_I8MM,
+                                  AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
+                                  AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
+                                  AArch64::AEK_HCX})),
+        AArch64CPUTestParams(
             "apple-m4", "armv8.7-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,       AArch64::AEK_AES,
@@ -1729,37 +1731,37 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_SME,       AArch64::AEK_SME2,
                  AArch64::AEK_SMEF64F64, AArch64::AEK_SMEI16I64,
                  AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<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_SIMD, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams("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_PERFMON})),
+        AArch64CPUTestParams(
             "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_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
                  AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "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_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
                  AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "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_PERFMON})),
-        AArch64CPUTestParams<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_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams("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_PERFMON})),
+        AArch64CPUTestParams(
             "neoverse-e1", "armv8.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
@@ -1767,7 +1769,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
                  AArch64::AEK_RDM, AArch64::AEK_SIMD, AArch64::AEK_SSBS,
                  AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "neoverse-n1", "armv8.2-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
@@ -1775,7 +1777,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_LSE, AArch64::AEK_PROFILE, AArch64::AEK_RAS,
                  AArch64::AEK_RCPC, AArch64::AEK_RDM, AArch64::AEK_SIMD,
                  AArch64::AEK_SSBS, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "neoverse-n2", "armv9-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,         AArch64::AEK_FP,
@@ -1790,7 +1792,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_FCMA,        AArch64::AEK_PAUTH,
                  AArch64::AEK_FP16FML,     AArch64::AEK_PERFMON,
                  AArch64::AEK_ETE,         AArch64::AEK_TRBE})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "neoverse-n3", "armv9.2-a", "neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_BF16,    AArch64::AEK_I8MM,
@@ -1808,7 +1810,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_FP16FML, AArch64::AEK_PROFILE,
                  AArch64::AEK_JSCVT,   AArch64::AEK_PERFMON,
                  AArch64::AEK_ETE,     AArch64::AEK_SPE_EEF})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "ampere1", "armv8.6-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,  AArch64::AEK_FP,    AArch64::AEK_FP16,
@@ -1818,7 +1820,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_AES,  AArch64::AEK_I8MM,  AArch64::AEK_SSBS,
                  AArch64::AEK_SB,   AArch64::AEK_RAND,  AArch64::AEK_JSCVT,
                  AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "ampere1a", "armv8.6-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,   AArch64::AEK_FP,     AArch64::AEK_FP16,
@@ -1829,7 +1831,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_SSBS,  AArch64::AEK_SB,     AArch64::AEK_RAND,
                  AArch64::AEK_MTE,   AArch64::AEK_JSCVT,  AArch64::AEK_FCMA,
                  AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "ampere1b", "armv8.7-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,   AArch64::AEK_FP,    AArch64::AEK_FP16,
@@ -1841,80 +1843,83 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_MTE,   AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
                  AArch64::AEK_PAUTH, AArch64::AEK_CSSC,  AArch64::AEK_PERFMON,
                  AArch64::AEK_WFXT})),
-        AArch64CPUTestParams<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_SIMD,    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_RAND,
-                 AArch64::AEK_FP16FML, AArch64::AEK_I8MM,
-                 AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
-                 AArch64::AEK_CCDP})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams("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_SIMD,    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_RAND,
+                                  AArch64::AEK_FP16FML, AArch64::AEK_I8MM,
+                                  AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
+                                  AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
+                                  AArch64::AEK_CCDP})),
+        AArch64CPUTestParams(
             "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_SIMD})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
-            "thunderx3t110", "armv8.3-a", "crypto-neon-fp-armv8",
+        AArch64CPUTestParams(
+            "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_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_PAUTH,
                  AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "thunderx", "armv8-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
                                       AArch64::AEK_SHA2, AArch64::AEK_SIMD,
                                       AArch64::AEK_FP, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "thunderxt81", "armv8-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
                                       AArch64::AEK_SHA2, AArch64::AEK_SIMD,
                                       AArch64::AEK_FP, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "thunderxt83", "armv8-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
                                       AArch64::AEK_SHA2, AArch64::AEK_SIMD,
                                       AArch64::AEK_FP, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "thunderxt88", "armv8-a", "crypto-neon-fp-armv8",
             AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
                                       AArch64::AEK_SHA2, AArch64::AEK_SIMD,
                                       AArch64::AEK_FP, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams(
             "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_LSE, AArch64::AEK_RDM, AArch64::AEK_PROFILE,
-                 AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_FP16,
-                 AArch64::AEK_FP16FML, AArch64::AEK_DOTPROD,
+                {AArch64::AEK_CRC, AArch64::AEK_AES,
+                 AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_SIMD,
+                 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,
                  AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams<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_SIMD, AArch64::AEK_FP16,
-                 AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_SVE,
-                 AArch64::AEK_RDM, AArch64::AEK_PERFMON, AArch64::AEK_FCMA})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+        AArch64CPUTestParams("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_RAS, AArch64::AEK_LSE,
+                                  AArch64::AEK_SVE, AArch64::AEK_RDM,
+                                  AArch64::AEK_PERFMON, AArch64::AEK_FCMA})),
+        AArch64CPUTestParams(
             "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_RAS, AArch64::AEK_LSE, AArch64::AEK_RDM})),
-        AArch64CPUTestParams<AArch64::ExtensionBitset>(
+            AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
+                                      AArch64::AEK_SHA2, AArch64::AEK_FP,
+                                      AArch64::AEK_SIMD, AArch64::AEK_FP16,
+                                      AArch64::AEK_RAS, AArch64::AEK_LSE,
+                                      AArch64::AEK_RDM})),
+        AArch64CPUTestParams(
             "oryon-1", "armv8.6-a", "crypto-neon-fp-armv8",
             (AArch64::ExtensionBitset(
                 {AArch64::AEK_CRC,     AArch64::AEK_FP,      AArch64::AEK_PAUTH,
@@ -1925,7 +1930,7 @@ INSTANTIATE_TEST_SUITE_P(
                  AArch64::AEK_AES,     AArch64::AEK_I8MM,    AArch64::AEK_RAND,
                  AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})))),
 
-    AArch64CPUTestParams<AArch64::ExtensionBitset>::PrintToStringParamName);
+    AArch64CPUTestParams::PrintToStringParamName);
 
 // Note: number of CPUs includes aliases.
 static constexpr unsigned NumAArch64CPUArchs = 81;

>From db1aac98a3edf70309a0f28c254d3ed13adb8066 Mon Sep 17 00:00:00 2001
From: Jon Roelofs <jonathan_roelofs at apple.com>
Date: Tue, 2 Jul 2024 10:40:53 -0700
Subject: [PATCH 5/6] don't mention AArch64::ExtensionBitset everywhere

---
 .../TargetParser/TargetParserTest.cpp         | 1382 ++++++++---------
 1 file changed, 631 insertions(+), 751 deletions(-)

diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 2f984de427ba8..8d682d5014ad1 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1112,823 +1112,704 @@ INSTANTIATE_TEST_SUITE_P(
     AArch64CPUTests, AArch64CPUTestFixture,
     ::testing::Values(
         AArch64CPUTestParams("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_PERFMON})),
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams("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_PERFMON})),
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams("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_PERFMON})),
-        AArch64CPUTestParams("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_LSE, AArch64::AEK_RDM,
-                                  AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
-                                  AArch64::AEK_RCPC, AArch64::AEK_PERFMON})),
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
-            "cortex-a510", "armv9-a", "neon-fp-armv8",
-            AArch64::ExtensionBitset(
-                {AArch64::AEK_CRC,         AArch64::AEK_FP,
-                 AArch64::AEK_SIMD,        AArch64::AEK_RAS,
-                 AArch64::AEK_LSE,         AArch64::AEK_RDM,
-                 AArch64::AEK_RCPC,        AArch64::AEK_DOTPROD,
-                 AArch64::AEK_BF16,        AArch64::AEK_I8MM,
-                 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_SB,          AArch64::AEK_JSCVT,
-                 AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE,         AArch64::AEK_AM})),
-        AArch64CPUTestParams(
-            "cortex-a520", "armv9.2-a", "crypto-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_SIMD,        AArch64::AEK_RCPC,
-                 AArch64::AEK_RAS,         AArch64::AEK_CRC,
-                 AArch64::AEK_FP,          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_JSCVT,       AArch64::AEK_FCMA,
-                 AArch64::AEK_PERFMON,     AArch64::AEK_AM,
-                 AArch64::AEK_ETE})),
-        AArch64CPUTestParams(
-            "cortex-a520ae", "armv9.2-a", "crypto-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_SIMD,        AArch64::AEK_RCPC,
-                 AArch64::AEK_RAS,         AArch64::AEK_CRC,
-                 AArch64::AEK_FP,          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_JSCVT,       AArch64::AEK_FCMA,
-                 AArch64::AEK_PERFMON,     AArch64::AEK_AM,
-                 AArch64::AEK_ETE})),
+            "cortex-a55", "armv8.2-a", "crypto-neon-fp-armv8",
+            {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+             AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_RAS,
+             AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_FP16,
+             AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("cortex-a510", "armv9-a", "neon-fp-armv8",
+                             {AArch64::AEK_CRC,         AArch64::AEK_FP,
+                              AArch64::AEK_SIMD,        AArch64::AEK_RAS,
+                              AArch64::AEK_LSE,         AArch64::AEK_RDM,
+                              AArch64::AEK_RCPC,        AArch64::AEK_DOTPROD,
+                              AArch64::AEK_BF16,        AArch64::AEK_I8MM,
+                              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_SB,          AArch64::AEK_JSCVT,
+                              AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
+                              AArch64::AEK_ETE,         AArch64::AEK_AM}),
+        AArch64CPUTestParams("cortex-a520", "armv9.2-a", "crypto-neon-fp-armv8",
+                             {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_SIMD,        AArch64::AEK_RCPC,
+                              AArch64::AEK_RAS,         AArch64::AEK_CRC,
+                              AArch64::AEK_FP,          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_JSCVT,       AArch64::AEK_FCMA,
+                              AArch64::AEK_PERFMON,     AArch64::AEK_AM,
+                              AArch64::AEK_ETE}),
+        AArch64CPUTestParams("cortex-a520ae", "armv9.2-a",
+                             "crypto-neon-fp-armv8",
+                             {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_SIMD,        AArch64::AEK_RCPC,
+                              AArch64::AEK_RAS,         AArch64::AEK_CRC,
+                              AArch64::AEK_FP,          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_JSCVT,       AArch64::AEK_FCMA,
+                              AArch64::AEK_PERFMON,     AArch64::AEK_AM,
+                              AArch64::AEK_ETE}),
         AArch64CPUTestParams("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_PERFMON})),
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "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_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
-                 AArch64::AEK_RDM, AArch64::AEK_SIMD, AArch64::AEK_SSBS,
-                 AArch64::AEK_PERFMON})),
+            {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_PERFMON}),
         AArch64CPUTestParams(
             "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_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
-                 AArch64::AEK_RDM, AArch64::AEK_SIMD, AArch64::AEK_SSBS,
-                 AArch64::AEK_PERFMON})),
+            {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_PERFMON}),
         AArch64CPUTestParams("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_PERFMON})),
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams("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_PERFMON})),
-        AArch64CPUTestParams("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_LSE, AArch64::AEK_RDM,
-                                  AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
-                                  AArch64::AEK_RCPC, AArch64::AEK_PERFMON})),
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams(
+            "cortex-a75", "armv8.2-a", "crypto-neon-fp-armv8",
+            {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+             AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_RAS,
+             AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_FP16,
+             AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "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_RAS, AArch64::AEK_LSE,
-                 AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
-                 AArch64::AEK_SSBS, AArch64::AEK_PERFMON})),
+            {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+             AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_SIMD,
+             AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
+             AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
+             AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "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_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
-                 AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
-                 AArch64::AEK_PERFMON})),
+            {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+             AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_SIMD,
+             AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
+             AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
+             AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "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_RAS, AArch64::AEK_LSE,
-                 AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
-                 AArch64::AEK_SSBS, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams("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_RAS, AArch64::AEK_LSE,
-                                  AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
-                                  AArch64::AEK_RCPC, AArch64::AEK_SSBS,
-                                  AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})),
+            {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+             AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_SIMD,
+             AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
+             AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
+             AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams(
+            "cortex-a78", "armv8.2-a", "crypto-neon-fp-armv8",
+            {AArch64::AEK_CRC, AArch64::AEK_AES,
+             AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_RDM,
+             AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_LSE,
+             AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
+             AArch64::AEK_SSBS, AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "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_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
-                 AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
-                 AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})),
+            {AArch64::AEK_CRC, AArch64::AEK_AES,
+             AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_RDM,
+             AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_LSE,
+             AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
+             AArch64::AEK_SSBS, AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "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_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_PAUTH, AArch64::AEK_PERFMON})),
+            {AArch64::AEK_RAS, AArch64::AEK_CRC, AArch64::AEK_AES,
+             AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_SIMD,
+             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_PAUTH, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "cortex-a710", "armv9-a", "neon-fp-armv8",
-            AArch64::ExtensionBitset(
-                {AArch64::AEK_CRC,     AArch64::AEK_FP,
-                 AArch64::AEK_SIMD,    AArch64::AEK_RAS,
-                 AArch64::AEK_LSE,     AArch64::AEK_RDM,
-                 AArch64::AEK_RCPC,    AArch64::AEK_DOTPROD,
-                 AArch64::AEK_MTE,     AArch64::AEK_FP16,
-                 AArch64::AEK_FP16FML, AArch64::AEK_SVE,
-                 AArch64::AEK_SVE2,    AArch64::AEK_SVE2BITPERM,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_FLAGM,
-                 AArch64::AEK_SB,      AArch64::AEK_I8MM,
-                 AArch64::AEK_BF16,    AArch64::AEK_JSCVT,
-                 AArch64::AEK_FCMA,    AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE})),
-        AArch64CPUTestParams(
-            "cortex-a715", "armv9-a", "neon-fp-armv8",
-            AArch64::ExtensionBitset(
-                {AArch64::AEK_CRC,     AArch64::AEK_FP,
-                 AArch64::AEK_BF16,    AArch64::AEK_SIMD,
-                 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_SSBS,    AArch64::AEK_SB,
-                 AArch64::AEK_I8MM,    AArch64::AEK_PERFMON,
-                 AArch64::AEK_PREDRES, AArch64::AEK_PROFILE,
-                 AArch64::AEK_FP16FML, AArch64::AEK_FP16,
-                 AArch64::AEK_FLAGM,   AArch64::AEK_JSCVT,
-                 AArch64::AEK_FCMA,    AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE,     AArch64::AEK_TRBE})),
-        AArch64CPUTestParams(
-            "cortex-a720", "armv9.2-a", "crypto-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_SIMD,        AArch64::AEK_RCPC,
-                 AArch64::AEK_RAS,         AArch64::AEK_CRC,
-                 AArch64::AEK_FP,          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_JSCVT,
-                 AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF,
-                 AArch64::AEK_TRBE})),
-        AArch64CPUTestParams(
-            "cortex-a720ae",
-            "armv9.2-a", "crypto-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_SIMD,        AArch64::AEK_RCPC,
-                 AArch64::AEK_RAS,         AArch64::AEK_CRC,
-                 AArch64::AEK_FP,          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_JSCVT,
-                 AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF,
-                 AArch64::AEK_TRBE})),
-        AArch64CPUTestParams(
-            "cortex-a725", "armv9.2-a", "crypto-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_SIMD,        AArch64::AEK_RCPC,
-                 AArch64::AEK_RAS,         AArch64::AEK_CRC,
-                 AArch64::AEK_FP,          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_JSCVT,
-                 AArch64::AEK_FCMA,        AArch64::AEK_ETE,
-                 AArch64::AEK_SPE_EEF,     AArch64::AEK_TRBE})),
-        AArch64CPUTestParams("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_SIMD,    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_RAND,
-                                  AArch64::AEK_FP16FML, AArch64::AEK_I8MM,
-                                  AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                                  AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
-                                  AArch64::AEK_CCDP})),
-        AArch64CPUTestParams(
-            "neoverse-v2", "armv9-a", "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_SIMD,        AArch64::AEK_MTE,
-                 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_FP16FML,     AArch64::AEK_I8MM,
-                 AArch64::AEK_SVE2BITPERM, AArch64::AEK_RAND,
-                 AArch64::AEK_JSCVT,       AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,       AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE})),
-        AArch64CPUTestParams(
-            "neoverse-v3", "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_SIMD,        AArch64::AEK_RCPC,
-                 AArch64::AEK_RAS,         AArch64::AEK_CRC,
-                 AArch64::AEK_FP,          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_FP16FML,
-                 AArch64::AEK_PROFILE,     AArch64::AEK_JSCVT,
-                 AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF})),
+            {AArch64::AEK_CRC,     AArch64::AEK_FP,          AArch64::AEK_SIMD,
+             AArch64::AEK_RAS,     AArch64::AEK_LSE,         AArch64::AEK_RDM,
+             AArch64::AEK_RCPC,    AArch64::AEK_DOTPROD,     AArch64::AEK_MTE,
+             AArch64::AEK_FP16,    AArch64::AEK_FP16FML,     AArch64::AEK_SVE,
+             AArch64::AEK_SVE2,    AArch64::AEK_SVE2BITPERM, AArch64::AEK_PAUTH,
+             AArch64::AEK_FLAGM,   AArch64::AEK_SB,          AArch64::AEK_I8MM,
+             AArch64::AEK_BF16,    AArch64::AEK_JSCVT,       AArch64::AEK_FCMA,
+             AArch64::AEK_PERFMON, AArch64::AEK_ETE}),
+        AArch64CPUTestParams("cortex-a715", "armv9-a", "neon-fp-armv8",
+                             {AArch64::AEK_CRC,     AArch64::AEK_FP,
+                              AArch64::AEK_BF16,    AArch64::AEK_SIMD,
+                              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_SSBS,    AArch64::AEK_SB,
+                              AArch64::AEK_I8MM,    AArch64::AEK_PERFMON,
+                              AArch64::AEK_PREDRES, AArch64::AEK_PROFILE,
+                              AArch64::AEK_FP16FML, AArch64::AEK_FP16,
+                              AArch64::AEK_FLAGM,   AArch64::AEK_JSCVT,
+                              AArch64::AEK_FCMA,    AArch64::AEK_PERFMON,
+                              AArch64::AEK_ETE,     AArch64::AEK_TRBE}),
+        AArch64CPUTestParams("cortex-a720", "armv9.2-a", "crypto-neon-fp-armv8",
+                             {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_SIMD,        AArch64::AEK_RCPC,
+                              AArch64::AEK_RAS,         AArch64::AEK_CRC,
+                              AArch64::AEK_FP,          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_JSCVT,
+                              AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
+                              AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF,
+                              AArch64::AEK_TRBE}),
+        AArch64CPUTestParams("cortex-a720ae", "armv9.2-a",
+                             "crypto-neon-fp-armv8",
+                             {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_SIMD,        AArch64::AEK_RCPC,
+                              AArch64::AEK_RAS,         AArch64::AEK_CRC,
+                              AArch64::AEK_FP,          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_JSCVT,
+                              AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
+                              AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF,
+                              AArch64::AEK_TRBE}),
+        AArch64CPUTestParams("cortex-a725", "armv9.2-a", "crypto-neon-fp-armv8",
+                             {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_SIMD,        AArch64::AEK_RCPC,
+                              AArch64::AEK_RAS,         AArch64::AEK_CRC,
+                              AArch64::AEK_FP,          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_JSCVT,
+                              AArch64::AEK_FCMA,        AArch64::AEK_ETE,
+                              AArch64::AEK_SPE_EEF,     AArch64::AEK_TRBE}),
         AArch64CPUTestParams(
-            "neoverse-v3ae",
-            "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_SIMD,        AArch64::AEK_RCPC,
-                 AArch64::AEK_RAS,         AArch64::AEK_CRC,
-                 AArch64::AEK_FP,          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_FP16FML,
-                 AArch64::AEK_PROFILE,     AArch64::AEK_JSCVT,
-                 AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF})),
+            "neoverse-v1", "armv8.4-a", "crypto-neon-fp-armv8",
+            {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_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_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
+             AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON, AArch64::AEK_CCDP}),
+        AArch64CPUTestParams("neoverse-v2", "armv9-a", "neon-fp-armv8",
+                             {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_LSE,         AArch64::AEK_RDM,
+                              AArch64::AEK_RCPC,        AArch64::AEK_DOTPROD,
+                              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_JSCVT,       AArch64::AEK_FCMA,
+                              AArch64::AEK_PAUTH,       AArch64::AEK_PERFMON,
+                              AArch64::AEK_ETE}),
+        AArch64CPUTestParams("neoverse-v3", "armv9.2-a", "neon-fp-armv8",
+                             {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_SIMD,        AArch64::AEK_RCPC,
+                              AArch64::AEK_RAS,         AArch64::AEK_CRC,
+                              AArch64::AEK_FP,          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_FP16FML,
+                              AArch64::AEK_PROFILE,     AArch64::AEK_JSCVT,
+                              AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
+                              AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF}),
+        AArch64CPUTestParams("neoverse-v3ae", "armv9.2-a", "neon-fp-armv8",
+                             {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_SIMD,        AArch64::AEK_RCPC,
+                              AArch64::AEK_RAS,         AArch64::AEK_CRC,
+                              AArch64::AEK_FP,          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_FP16FML,
+                              AArch64::AEK_PROFILE,     AArch64::AEK_JSCVT,
+                              AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
+                              AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF}),
         AArch64CPUTestParams(
             "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_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,
-                 AArch64::AEK_FLAGM, AArch64::AEK_PERFMON, AArch64::AEK_PREDRES,
-                 AArch64::AEK_CCDP})),
+            {AArch64::AEK_CRC, AArch64::AEK_RDM, AArch64::AEK_SSBS,
+             AArch64::AEK_DOTPROD, AArch64::AEK_FP, AArch64::AEK_SIMD,
+             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,
+             AArch64::AEK_FLAGM, AArch64::AEK_PERFMON, AArch64::AEK_PREDRES,
+             AArch64::AEK_CCDP}),
         AArch64CPUTestParams(
             "cortex-r82ae", "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_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,
-                 AArch64::AEK_FLAGM, AArch64::AEK_PERFMON, AArch64::AEK_PREDRES,
-                 AArch64::AEK_CCDP})),
-        AArch64CPUTestParams("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_RAS, AArch64::AEK_LSE,
-                                  AArch64::AEK_FP16, AArch64::AEK_DOTPROD,
-                                  AArch64::AEK_RCPC, AArch64::AEK_SSBS,
-                                  AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams(
-            "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_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_PERFMON, AArch64::AEK_LSE2,
-                 AArch64::AEK_RCPC_IMMO})),
-        AArch64CPUTestParams(
-            "cortex-x2", "armv9-a", "neon-fp-armv8",
-            AArch64::ExtensionBitset(
-                {AArch64::AEK_CRC,         AArch64::AEK_FP,
-                 AArch64::AEK_SIMD,        AArch64::AEK_RAS,
-                 AArch64::AEK_LSE,         AArch64::AEK_RDM,
-                 AArch64::AEK_RCPC,        AArch64::AEK_DOTPROD,
-                 AArch64::AEK_MTE,         AArch64::AEK_PAUTH,
-                 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_FP16FML,     AArch64::AEK_FLAGM,
-                 AArch64::AEK_JSCVT,       AArch64::AEK_FCMA,
-                 AArch64::AEK_PERFMON,     AArch64::AEK_AM,
-                 AArch64::AEK_ETE})),
-        AArch64CPUTestParams(
-            "cortex-x3", "armv9-a", "neon-fp-armv8",
-            AArch64::ExtensionBitset(
-                {AArch64::AEK_CRC,     AArch64::AEK_FP,
-                 AArch64::AEK_BF16,    AArch64::AEK_SIMD,
-                 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_PROFILE,
-                 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_FCMA,    AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE,     AArch64::AEK_TRBE})),
-        AArch64CPUTestParams(
-            "cortex-x4", "armv9.2-a", "crypto-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_SIMD,        AArch64::AEK_RCPC,
-                 AArch64::AEK_RAS,         AArch64::AEK_CRC,
-                 AArch64::AEK_FP,          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_JSCVT,
-                 AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF,
-                 AArch64::AEK_TRBE})),
+            {AArch64::AEK_CRC, AArch64::AEK_RDM, AArch64::AEK_SSBS,
+             AArch64::AEK_DOTPROD, AArch64::AEK_FP, AArch64::AEK_SIMD,
+             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,
+             AArch64::AEK_FLAGM, AArch64::AEK_PERFMON, AArch64::AEK_PREDRES,
+             AArch64::AEK_CCDP}),
         AArch64CPUTestParams(
-            "cortex-x925", "armv9.2-a", "crypto-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_SIMD,        AArch64::AEK_RCPC,
-                 AArch64::AEK_RAS,         AArch64::AEK_CRC,
-                 AArch64::AEK_FP,          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_JSCVT,
-                 AArch64::AEK_FCMA,        AArch64::AEK_ETE,
-                 AArch64::AEK_SPE_EEF,     AArch64::AEK_TRBE})),
-        AArch64CPUTestParams(
-            "cyclone", "armv8-a", "crypto-neon-fp-armv8",
-            AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
-                                      AArch64::AEK_FP, AArch64::AEK_SIMD,
-                                      AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams(
-            "apple-a7", "armv8-a", "crypto-neon-fp-armv8",
-            AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
-                                      AArch64::AEK_FP, AArch64::AEK_SIMD,
-                                      AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams(
-            "apple-a8", "armv8-a", "crypto-neon-fp-armv8",
-            AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
-                                      AArch64::AEK_FP, AArch64::AEK_SIMD,
-                                      AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams(
-            "apple-a9", "armv8-a", "crypto-neon-fp-armv8",
-            AArch64::ExtensionBitset({AArch64::AEK_AES, AArch64::AEK_SHA2,
-                                      AArch64::AEK_FP, AArch64::AEK_SIMD,
-                                      AArch64::AEK_PERFMON})),
+            "cortex-x1", "armv8.2-a", "crypto-neon-fp-armv8",
+            {AArch64::AEK_CRC, AArch64::AEK_AES,
+             AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_RDM,
+             AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_LSE,
+             AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
+             AArch64::AEK_SSBS, AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
-            "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_PERFMON, AArch64::AEK_PAN,
-                                      AArch64::AEK_LOR, AArch64::AEK_VH})),
+            "cortex-x1c", "armv8.2-a", "crypto-neon-fp-armv8",
+            {AArch64::AEK_CRC, AArch64::AEK_AES,
+             AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_RDM,
+             AArch64::AEK_SIMD, 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_PERFMON, AArch64::AEK_LSE2,
+             AArch64::AEK_RCPC_IMMO}),
+        AArch64CPUTestParams("cortex-x2", "armv9-a", "neon-fp-armv8",
+                             {AArch64::AEK_CRC,         AArch64::AEK_FP,
+                              AArch64::AEK_SIMD,        AArch64::AEK_RAS,
+                              AArch64::AEK_LSE,         AArch64::AEK_RDM,
+                              AArch64::AEK_RCPC,        AArch64::AEK_DOTPROD,
+                              AArch64::AEK_MTE,         AArch64::AEK_PAUTH,
+                              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_FP16FML,     AArch64::AEK_FLAGM,
+                              AArch64::AEK_JSCVT,       AArch64::AEK_FCMA,
+                              AArch64::AEK_PERFMON,     AArch64::AEK_AM,
+                              AArch64::AEK_ETE}),
+        AArch64CPUTestParams("cortex-x3", "armv9-a", "neon-fp-armv8",
+                             {AArch64::AEK_CRC,     AArch64::AEK_FP,
+                              AArch64::AEK_BF16,    AArch64::AEK_SIMD,
+                              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_PROFILE,
+                              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_FCMA,    AArch64::AEK_PERFMON,
+                              AArch64::AEK_ETE,     AArch64::AEK_TRBE}),
+        AArch64CPUTestParams("cortex-x4", "armv9.2-a", "crypto-neon-fp-armv8",
+                             {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_SIMD,        AArch64::AEK_RCPC,
+                              AArch64::AEK_RAS,         AArch64::AEK_CRC,
+                              AArch64::AEK_FP,          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_JSCVT,
+                              AArch64::AEK_FCMA,        AArch64::AEK_PERFMON,
+                              AArch64::AEK_ETE,         AArch64::AEK_SPE_EEF,
+                              AArch64::AEK_TRBE}),
+        AArch64CPUTestParams("cortex-x925", "armv9.2-a", "crypto-neon-fp-armv8",
+                             {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_SIMD,        AArch64::AEK_RCPC,
+                              AArch64::AEK_RAS,         AArch64::AEK_CRC,
+                              AArch64::AEK_FP,          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_JSCVT,
+                              AArch64::AEK_FCMA,        AArch64::AEK_ETE,
+                              AArch64::AEK_SPE_EEF,     AArch64::AEK_TRBE}),
+        AArch64CPUTestParams("cyclone", "armv8-a", "crypto-neon-fp-armv8",
+                             {AArch64::AEK_AES, AArch64::AEK_SHA2,
+                              AArch64::AEK_FP, AArch64::AEK_SIMD,
+                              AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("apple-a7", "armv8-a", "crypto-neon-fp-armv8",
+                             {AArch64::AEK_AES, AArch64::AEK_SHA2,
+                              AArch64::AEK_FP, AArch64::AEK_SIMD,
+                              AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("apple-a8", "armv8-a", "crypto-neon-fp-armv8",
+                             {AArch64::AEK_AES, AArch64::AEK_SHA2,
+                              AArch64::AEK_FP, AArch64::AEK_SIMD,
+                              AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("apple-a9", "armv8-a", "crypto-neon-fp-armv8",
+                             {AArch64::AEK_AES, AArch64::AEK_SHA2,
+                              AArch64::AEK_FP, AArch64::AEK_SIMD,
+                              AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("apple-a10", "armv8-a", "crypto-neon-fp-armv8",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_RDM, AArch64::AEK_SIMD,
+                              AArch64::AEK_PERFMON, AArch64::AEK_PAN,
+                              AArch64::AEK_LOR, AArch64::AEK_VH}),
         AArch64CPUTestParams("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_PERFMON})),
+                             {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_PERFMON}),
         AArch64CPUTestParams(
             "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_RAS, AArch64::AEK_RDM,
-                 AArch64::AEK_RCPC, AArch64::AEK_FP16, AArch64::AEK_JSCVT,
-                 AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
+            {AArch64::AEK_CRC, AArch64::AEK_AES,
+             AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_SIMD,
+             AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
+             AArch64::AEK_RCPC, AArch64::AEK_FP16, AArch64::AEK_JSCVT,
+             AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "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_RAS, AArch64::AEK_RDM,
-                 AArch64::AEK_RCPC, AArch64::AEK_FP16, AArch64::AEK_JSCVT,
-                 AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
+            {AArch64::AEK_CRC, AArch64::AEK_AES,
+             AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_SIMD,
+             AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
+             AArch64::AEK_RCPC, AArch64::AEK_FP16, AArch64::AEK_JSCVT,
+             AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "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_RAS, AArch64::AEK_RDM,
-                 AArch64::AEK_RCPC, AArch64::AEK_FP16, AArch64::AEK_JSCVT,
-                 AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
+            {AArch64::AEK_CRC, AArch64::AEK_AES,
+             AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_SIMD,
+             AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
+             AArch64::AEK_RCPC, AArch64::AEK_FP16, AArch64::AEK_JSCVT,
+             AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "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_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,
-                 AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams(
-            "apple-a14", "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_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,
-                                      AArch64::AEK_FCMA,
-                                      AArch64::AEK_PAUTH,
-                                      AArch64::AEK_PERFMON,
-                                      AArch64::AEK_PREDRES,
-                                      AArch64::AEK_SB,
-                                      AArch64::AEK_SSBS,
-                                      AArch64::AEK_CCDP,
-                                      AArch64::AEK_FRINT3264,
-                                      AArch64::AEK_SPECRESTRICT,
-                                      AArch64::AEK_ALTERNATIVENZCV})),
-        AArch64CPUTestParams(
-            "apple-m1", "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_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,
-                                      AArch64::AEK_FCMA,
-                                      AArch64::AEK_PAUTH,
-                                      AArch64::AEK_PERFMON,
-                                      AArch64::AEK_PREDRES,
-                                      AArch64::AEK_SB,
-                                      AArch64::AEK_SSBS,
-                                      AArch64::AEK_CCDP,
-                                      AArch64::AEK_FRINT3264,
-                                      AArch64::AEK_SPECRESTRICT,
-                                      AArch64::AEK_ALTERNATIVENZCV})),
+            {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+             AArch64::AEK_SHA3, AArch64::AEK_FP, AArch64::AEK_SIMD,
+             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,
+             AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("apple-a14", "armv8.4-a", "crypto-neon-fp-armv8",
+                             {AArch64::AEK_CRC,
+                              AArch64::AEK_AES,
+                              AArch64::AEK_SHA2,
+                              AArch64::AEK_SHA3,
+                              AArch64::AEK_FP,
+                              AArch64::AEK_SIMD,
+                              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,
+                              AArch64::AEK_FCMA,
+                              AArch64::AEK_PAUTH,
+                              AArch64::AEK_PERFMON,
+                              AArch64::AEK_PREDRES,
+                              AArch64::AEK_SB,
+                              AArch64::AEK_SSBS,
+                              AArch64::AEK_CCDP,
+                              AArch64::AEK_FRINT3264,
+                              AArch64::AEK_SPECRESTRICT,
+                              AArch64::AEK_ALTERNATIVENZCV}),
+        AArch64CPUTestParams("apple-m1", "armv8.4-a", "crypto-neon-fp-armv8",
+                             {AArch64::AEK_CRC,
+                              AArch64::AEK_AES,
+                              AArch64::AEK_SHA2,
+                              AArch64::AEK_SHA3,
+                              AArch64::AEK_FP,
+                              AArch64::AEK_SIMD,
+                              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,
+                              AArch64::AEK_FCMA,
+                              AArch64::AEK_PAUTH,
+                              AArch64::AEK_PERFMON,
+                              AArch64::AEK_PREDRES,
+                              AArch64::AEK_SB,
+                              AArch64::AEK_SSBS,
+                              AArch64::AEK_CCDP,
+                              AArch64::AEK_FRINT3264,
+                              AArch64::AEK_SPECRESTRICT,
+                              AArch64::AEK_ALTERNATIVENZCV}),
         AArch64CPUTestParams(
             "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_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,
-                 AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON})),
+            {AArch64::AEK_CRC,     AArch64::AEK_AES,     AArch64::AEK_SHA2,
+             AArch64::AEK_SHA3,    AArch64::AEK_FP,      AArch64::AEK_SIMD,
+             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,
+             AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
+             AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "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_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,
-                 AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams("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_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,    AArch64::AEK_I8MM,
-                                  AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                                  AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
-                                  AArch64::AEK_HCX})),
-        AArch64CPUTestParams("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_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,    AArch64::AEK_I8MM,
-                                  AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                                  AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
-                                  AArch64::AEK_HCX})),
-        AArch64CPUTestParams("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_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,    AArch64::AEK_I8MM,
-                                  AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                                  AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
-                                  AArch64::AEK_HCX})),
+            {AArch64::AEK_CRC,     AArch64::AEK_AES,     AArch64::AEK_SHA2,
+             AArch64::AEK_SHA3,    AArch64::AEK_FP,      AArch64::AEK_SIMD,
+             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,
+             AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
+             AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams(
+            "apple-a16", "armv8.6-a", "crypto-neon-fp-armv8",
+            {AArch64::AEK_CRC,     AArch64::AEK_AES,     AArch64::AEK_SHA2,
+             AArch64::AEK_SHA3,    AArch64::AEK_FP,      AArch64::AEK_SIMD,
+             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,
+             AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
+             AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON, AArch64::AEK_HCX}),
+        AArch64CPUTestParams(
+            "apple-m3", "armv8.6-a", "crypto-neon-fp-armv8",
+            {AArch64::AEK_CRC,     AArch64::AEK_AES,     AArch64::AEK_SHA2,
+             AArch64::AEK_SHA3,    AArch64::AEK_FP,      AArch64::AEK_SIMD,
+             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,
+             AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
+             AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON, AArch64::AEK_HCX}),
         AArch64CPUTestParams(
-            "apple-m4", "armv8.7-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_LSE,       AArch64::AEK_RAS,
-                 AArch64::AEK_RDM,       AArch64::AEK_RCPC,
-                 AArch64::AEK_DOTPROD,   AArch64::AEK_FP16,
-                 AArch64::AEK_FP16FML,   AArch64::AEK_BF16,
-                 AArch64::AEK_I8MM,      AArch64::AEK_JSCVT,
-                 AArch64::AEK_FCMA,      AArch64::AEK_PAUTH,
-                 AArch64::AEK_SME,       AArch64::AEK_SME2,
-                 AArch64::AEK_SMEF64F64, AArch64::AEK_SMEI16I64,
-                 AArch64::AEK_PERFMON})),
+            "apple-a17", "armv8.6-a", "crypto-neon-fp-armv8",
+            {AArch64::AEK_CRC,     AArch64::AEK_AES,     AArch64::AEK_SHA2,
+             AArch64::AEK_SHA3,    AArch64::AEK_FP,      AArch64::AEK_SIMD,
+             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,
+             AArch64::AEK_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
+             AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON, AArch64::AEK_HCX}),
+        AArch64CPUTestParams("apple-m4", "armv8.7-a", "crypto-neon-fp-armv8",
+                             {AArch64::AEK_CRC,       AArch64::AEK_AES,
+                              AArch64::AEK_SHA2,      AArch64::AEK_SHA3,
+                              AArch64::AEK_FP,        AArch64::AEK_SIMD,
+                              AArch64::AEK_LSE,       AArch64::AEK_RAS,
+                              AArch64::AEK_RDM,       AArch64::AEK_RCPC,
+                              AArch64::AEK_DOTPROD,   AArch64::AEK_FP16,
+                              AArch64::AEK_FP16FML,   AArch64::AEK_BF16,
+                              AArch64::AEK_I8MM,      AArch64::AEK_JSCVT,
+                              AArch64::AEK_FCMA,      AArch64::AEK_PAUTH,
+                              AArch64::AEK_SME,       AArch64::AEK_SME2,
+                              AArch64::AEK_SMEF64F64, AArch64::AEK_SMEI16I64,
+                              AArch64::AEK_PERFMON}),
         AArch64CPUTestParams("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_PERFMON})),
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "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_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
-                 AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
+            {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_RDM,
+             AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "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_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
-                 AArch64::AEK_SIMD, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams(
-            "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_PERFMON})),
+            {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_RDM,
+             AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("falkor", "armv8-a", "crypto-neon-fp-armv8",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_RDM,
+                              AArch64::AEK_PERFMON}),
         AArch64CPUTestParams("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_PERFMON})),
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "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_LSE, AArch64::AEK_RAS, AArch64::AEK_RCPC,
-                 AArch64::AEK_RDM, AArch64::AEK_SIMD, AArch64::AEK_SSBS,
-                 AArch64::AEK_PERFMON})),
+            {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_PERFMON}),
         AArch64CPUTestParams(
             "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_LSE, AArch64::AEK_PROFILE, AArch64::AEK_RAS,
-                 AArch64::AEK_RCPC, AArch64::AEK_RDM, AArch64::AEK_SIMD,
-                 AArch64::AEK_SSBS, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams(
-            "neoverse-n2", "armv9-a", "crypto-neon-fp-armv8",
-            AArch64::ExtensionBitset(
-                {AArch64::AEK_CRC,         AArch64::AEK_FP,
-                 AArch64::AEK_SIMD,        AArch64::AEK_FP16,
-                 AArch64::AEK_RAS,         AArch64::AEK_LSE,
-                 AArch64::AEK_SVE,         AArch64::AEK_DOTPROD,
-                 AArch64::AEK_RCPC,        AArch64::AEK_RDM,
-                 AArch64::AEK_MTE,         AArch64::AEK_SSBS,
-                 AArch64::AEK_SB,          AArch64::AEK_SVE2,
-                 AArch64::AEK_SVE2BITPERM, AArch64::AEK_BF16,
-                 AArch64::AEK_I8MM,        AArch64::AEK_JSCVT,
-                 AArch64::AEK_FCMA,        AArch64::AEK_PAUTH,
-                 AArch64::AEK_FP16FML,     AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE,         AArch64::AEK_TRBE})),
-        AArch64CPUTestParams(
-            "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_SIMD,    AArch64::AEK_RCPC,
-                 AArch64::AEK_RAS,     AArch64::AEK_CRC,
-                 AArch64::AEK_FP,      AArch64::AEK_PROFILE,
-                 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_RAND,    AArch64::AEK_SVE2BITPERM,
-                 AArch64::AEK_FP16FML, AArch64::AEK_PROFILE,
-                 AArch64::AEK_JSCVT,   AArch64::AEK_PERFMON,
-                 AArch64::AEK_ETE,     AArch64::AEK_SPE_EEF})),
+            {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_SSBS, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("neoverse-n2", "armv9-a", "crypto-neon-fp-armv8",
+                             {AArch64::AEK_CRC,         AArch64::AEK_FP,
+                              AArch64::AEK_SIMD,        AArch64::AEK_FP16,
+                              AArch64::AEK_RAS,         AArch64::AEK_LSE,
+                              AArch64::AEK_SVE,         AArch64::AEK_DOTPROD,
+                              AArch64::AEK_RCPC,        AArch64::AEK_RDM,
+                              AArch64::AEK_MTE,         AArch64::AEK_SSBS,
+                              AArch64::AEK_SB,          AArch64::AEK_SVE2,
+                              AArch64::AEK_SVE2BITPERM, AArch64::AEK_BF16,
+                              AArch64::AEK_I8MM,        AArch64::AEK_JSCVT,
+                              AArch64::AEK_FCMA,        AArch64::AEK_PAUTH,
+                              AArch64::AEK_FP16FML,     AArch64::AEK_PERFMON,
+                              AArch64::AEK_ETE,         AArch64::AEK_TRBE}),
+        AArch64CPUTestParams("neoverse-n3", "armv9.2-a", "neon-fp-armv8",
+                             {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_SIMD,    AArch64::AEK_RCPC,
+                              AArch64::AEK_RAS,     AArch64::AEK_CRC,
+                              AArch64::AEK_FP,      AArch64::AEK_PROFILE,
+                              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_RAND,    AArch64::AEK_SVE2BITPERM,
+                              AArch64::AEK_FP16FML, AArch64::AEK_PROFILE,
+                              AArch64::AEK_JSCVT,   AArch64::AEK_PERFMON,
+                              AArch64::AEK_ETE,     AArch64::AEK_SPE_EEF}),
         AArch64CPUTestParams(
             "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_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_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
+            {AArch64::AEK_CRC,  AArch64::AEK_FP,    AArch64::AEK_FP16,
+             AArch64::AEK_SIMD, 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_RAND,  AArch64::AEK_JSCVT,
+             AArch64::AEK_FCMA, AArch64::AEK_PAUTH, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "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_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_MTE,   AArch64::AEK_JSCVT,  AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH, AArch64::AEK_PERFMON})),
+            {AArch64::AEK_CRC,   AArch64::AEK_FP,     AArch64::AEK_FP16,
+             AArch64::AEK_SIMD,  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_RAND,
+             AArch64::AEK_MTE,   AArch64::AEK_JSCVT,  AArch64::AEK_FCMA,
+             AArch64::AEK_PAUTH, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "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_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_MTE,   AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
-                 AArch64::AEK_PAUTH, AArch64::AEK_CSSC,  AArch64::AEK_PERFMON,
-                 AArch64::AEK_WFXT})),
-        AArch64CPUTestParams("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_SIMD,    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_RAND,
-                                  AArch64::AEK_FP16FML, AArch64::AEK_I8MM,
-                                  AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
-                                  AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON,
-                                  AArch64::AEK_CCDP})),
+            {AArch64::AEK_CRC,   AArch64::AEK_FP,    AArch64::AEK_FP16,
+             AArch64::AEK_SIMD,  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_RAND,
+             AArch64::AEK_MTE,   AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
+             AArch64::AEK_PAUTH, AArch64::AEK_CSSC,  AArch64::AEK_PERFMON,
+             AArch64::AEK_WFXT}),
         AArch64CPUTestParams(
-            "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_SIMD})),
+            "neoverse-512tvb", "armv8.4-a", "crypto-neon-fp-armv8",
+            {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_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_I8MM,    AArch64::AEK_JSCVT,   AArch64::AEK_FCMA,
+             AArch64::AEK_PAUTH,   AArch64::AEK_PERFMON, AArch64::AEK_CCDP}),
+        AArch64CPUTestParams("thunderx2t99", "armv8.1-a",
+                             "crypto-neon-fp-armv8",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_LSE,
+                              AArch64::AEK_RDM, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD}),
         AArch64CPUTestParams(
             "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_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_PAUTH,
-                 AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams(
-            "thunderx", "armv8-a", "crypto-neon-fp-armv8",
-            AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
-                                      AArch64::AEK_SHA2, AArch64::AEK_SIMD,
-                                      AArch64::AEK_FP, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams(
-            "thunderxt81", "armv8-a", "crypto-neon-fp-armv8",
-            AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
-                                      AArch64::AEK_SHA2, AArch64::AEK_SIMD,
-                                      AArch64::AEK_FP, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams(
-            "thunderxt83", "armv8-a", "crypto-neon-fp-armv8",
-            AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
-                                      AArch64::AEK_SHA2, AArch64::AEK_SIMD,
-                                      AArch64::AEK_FP, AArch64::AEK_PERFMON})),
-        AArch64CPUTestParams(
-            "thunderxt88", "armv8-a", "crypto-neon-fp-armv8",
-            AArch64::ExtensionBitset({AArch64::AEK_CRC, AArch64::AEK_AES,
-                                      AArch64::AEK_SHA2, AArch64::AEK_SIMD,
-                                      AArch64::AEK_FP, AArch64::AEK_PERFMON})),
+            {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_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_PAUTH,
+             AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("thunderx", "armv8-a", "crypto-neon-fp-armv8",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_SIMD,
+                              AArch64::AEK_FP, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("thunderxt81", "armv8-a", "crypto-neon-fp-armv8",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_SIMD,
+                              AArch64::AEK_FP, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("thunderxt83", "armv8-a", "crypto-neon-fp-armv8",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_SIMD,
+                              AArch64::AEK_FP, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("thunderxt88", "armv8-a", "crypto-neon-fp-armv8",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_SIMD,
+                              AArch64::AEK_FP, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "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_LSE, AArch64::AEK_RDM,
-                 AArch64::AEK_PROFILE, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
-                 AArch64::AEK_FP16, AArch64::AEK_FP16FML, AArch64::AEK_DOTPROD,
-                 AArch64::AEK_PERFMON})),
+            {AArch64::AEK_CRC, AArch64::AEK_AES,
+             AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_SIMD,
+             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,
+             AArch64::AEK_PERFMON}),
         AArch64CPUTestParams("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_RAS, AArch64::AEK_LSE,
-                                  AArch64::AEK_SVE, AArch64::AEK_RDM,
-                                  AArch64::AEK_PERFMON, AArch64::AEK_FCMA})),
-        AArch64CPUTestParams(
-            "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_RAS, AArch64::AEK_LSE,
-                                      AArch64::AEK_RDM})),
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_FP16,
+                              AArch64::AEK_RAS, AArch64::AEK_LSE,
+                              AArch64::AEK_SVE, AArch64::AEK_RDM,
+                              AArch64::AEK_PERFMON, AArch64::AEK_FCMA}),
+        AArch64CPUTestParams("carmel", "armv8.2-a", "crypto-neon-fp-armv8",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_FP16,
+                              AArch64::AEK_RAS, AArch64::AEK_LSE,
+                              AArch64::AEK_RDM}),
         AArch64CPUTestParams(
             "oryon-1", "armv8.6-a", "crypto-neon-fp-armv8",
-            (AArch64::ExtensionBitset(
-                {AArch64::AEK_CRC,     AArch64::AEK_FP,      AArch64::AEK_PAUTH,
-                 AArch64::AEK_FCMA,    AArch64::AEK_JSCVT,   AArch64::AEK_SIMD,
-                 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_RAND,
-                 AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})))),
+            {AArch64::AEK_CRC,     AArch64::AEK_FP,      AArch64::AEK_PAUTH,
+             AArch64::AEK_FCMA,    AArch64::AEK_JSCVT,   AArch64::AEK_SIMD,
+             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_RAND,
+             AArch64::AEK_PROFILE, AArch64::AEK_PERFMON})),
 
     AArch64CPUTestParams::PrintToStringParamName);
 
@@ -2130,8 +2011,7 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
 
   // NONE has no feature names.
   // We return True here because NONE is a valid choice.
-  EXPECT_TRUE(AArch64::getExtensionFeatures(
-      AArch64::ExtensionBitset({AArch64::AEK_NONE}), Features));
+  EXPECT_TRUE(AArch64::getExtensionFeatures({AArch64::AEK_NONE}, Features));
   EXPECT_TRUE(!Features.size());
 
   AArch64::getExtensionFeatures(ExtVal, Features);

>From 432b9da86601ae0a78a02495dc91ec29459813c5 Mon Sep 17 00:00:00 2001
From: Jon Roelofs <jonathan_roelofs at apple.com>
Date: Wed, 3 Jul 2024 08:46:17 -0700
Subject: [PATCH 6/6] clang-format

---
 .../TargetParser/TargetParserTest.cpp         | 20 +++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 8d682d5014ad1..97d09d677fbdd 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1228,18 +1228,18 @@ INSTANTIATE_TEST_SUITE_P(
              AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "cortex-a78", "armv8.2-a", "crypto-neon-fp-armv8",
-            {AArch64::AEK_CRC, AArch64::AEK_AES,
-             AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_RDM,
-             AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_LSE,
-             AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
-             AArch64::AEK_SSBS, AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
+            {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+             AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_SIMD,
+             AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
+             AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
+             AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "cortex-a78ae", "armv8.2-a", "crypto-neon-fp-armv8",
-            {AArch64::AEK_CRC, AArch64::AEK_AES,
-             AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_RDM,
-             AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_LSE,
-             AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
-             AArch64::AEK_SSBS, AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
+            {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+             AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_SIMD,
+             AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
+             AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
+             AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
         AArch64CPUTestParams(
             "cortex-a78c", "armv8.2-a", "crypto-neon-fp-armv8",
             {AArch64::AEK_RAS, AArch64::AEK_CRC, AArch64::AEK_AES,



More information about the llvm-commits mailing list