[llvm] [AArch64] Remove TargetParser CPU/Arch feature tests (PR #104587)

Tomas Matheson via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 20 02:50:22 PDT 2024


https://github.com/tmatheson-arm updated https://github.com/llvm/llvm-project/pull/104587

>From 95e6162a0cd756b26c5e5ecca330ce7b6a9ecd57 Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Fri, 16 Aug 2024 13:46:56 +0100
Subject: [PATCH 1/6] [AArch64] Remove TargetParser CPU/Arch feature tests

These are annoying to update, and are redundant since the tests in
clang/test/Driver/print-enabled-extensions/ were added.
---
 .../TargetParser/TargetParserTest.cpp         | 727 ------------------
 1 file changed, 727 deletions(-)

diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 960a9892202b35..2a55e8e80fa17c 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1093,733 +1093,6 @@ struct AArch64CPUTestParams
   }
 };
 
-class AArch64CPUTestFixture
-    : public ::testing::TestWithParam<AArch64CPUTestParams> {};
-
-TEST_P(AArch64CPUTestFixture, testAArch64CPU) {
-  auto params = GetParam();
-
-  const std::optional<AArch64::CpuInfo> Cpu = AArch64::parseCpu(params.CPUName);
-  EXPECT_TRUE(Cpu);
-  EXPECT_EQ(params.ExpectedArch, Cpu->Arch.Name);
-
-  EXPECT_PRED_FORMAT2(
-      AssertSameExtensionFlags<ARM::ISAKind::AARCH64>(params.CPUName),
-      params.ExpectedFlags, Cpu->getImpliedExtensions());
-}
-
-INSTANTIATE_TEST_SUITE_P(
-    AArch64CPUTests, AArch64CPUTestFixture,
-    ::testing::Values(
-        AArch64CPUTestParams("cortex-a34", "armv8-a",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_FP,
-                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("cortex-a35", "armv8-a",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_FP,
-                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("cortex-a53", "armv8-a",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_FP,
-                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams(
-            "cortex-a55", "armv8.2-a",
-            {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",
-                             {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",
-                             {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",
-                             {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",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_FP,
-                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams(
-            "cortex-a65", "armv8.2-a",
-            {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",
-            {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",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_FP,
-                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("cortex-a73", "armv8-a",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_FP,
-                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams(
-            "cortex-a75", "armv8.2-a",
-            {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",
-            {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",
-            {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",
-            {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",
-            {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",
-            {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",
-            {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",
-            {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",
-                             {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",
-                             {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",
-                             {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",
-                             {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",
-            {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",
-                             {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",
-                             {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_RME}),
-        AArch64CPUTestParams("neoverse-v3ae", "armv9.2-a",
-                             {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_RME}),
-        AArch64CPUTestParams(
-            "cortex-r82", "armv8-r",
-            {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",
-            {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",
-            {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",
-            {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",
-                             {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",
-                             {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",
-                             {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",
-                             {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",
-                             {AArch64::AEK_AES, AArch64::AEK_SHA2,
-                              AArch64::AEK_FP, AArch64::AEK_SIMD,
-                              AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("apple-a7", "armv8-a",
-                             {AArch64::AEK_AES, AArch64::AEK_SHA2,
-                              AArch64::AEK_FP, AArch64::AEK_SIMD,
-                              AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("apple-a8", "armv8-a",
-                             {AArch64::AEK_AES, AArch64::AEK_SHA2,
-                              AArch64::AEK_FP, AArch64::AEK_SIMD,
-                              AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("apple-a9", "armv8-a",
-                             {AArch64::AEK_AES, AArch64::AEK_SHA2,
-                              AArch64::AEK_FP, AArch64::AEK_SIMD,
-                              AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("apple-a10", "armv8-a",
-                             {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",
-                             {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",
-            {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",
-            {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",
-            {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",
-            {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",
-                             {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",
-                             {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",
-            {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_FPAC,    AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams(
-            "apple-m2", "armv8.6-a",
-            {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_FPAC,    AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams(
-            "apple-a16", "armv8.6-a",
-            {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_FPAC,    AArch64::AEK_PERFMON,
-             AArch64::AEK_HCX}),
-        AArch64CPUTestParams(
-            "apple-m3", "armv8.6-a",
-            {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_FPAC,    AArch64::AEK_PERFMON,
-             AArch64::AEK_HCX}),
-        AArch64CPUTestParams(
-            "apple-a17", "armv8.6-a",
-            {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_FPAC,    AArch64::AEK_PERFMON,
-             AArch64::AEK_HCX}),
-        AArch64CPUTestParams("apple-m4", "armv9.2-a",
-                             {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_PAUTH,     AArch64::AEK_FPAC,
-                              AArch64::AEK_FCMA,      AArch64::AEK_PERFMON,
-                              AArch64::AEK_SME,       AArch64::AEK_SME2,
-                              AArch64::AEK_SMEF64F64, AArch64::AEK_SMEI16I64}),
-        AArch64CPUTestParams("exynos-m3", "armv8-a",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_FP,
-                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams(
-            "exynos-m4", "armv8.2-a",
-            {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",
-            {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",
-                             {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",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_FP,
-                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams(
-            "neoverse-e1", "armv8.2-a",
-            {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",
-            {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",
-                             {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",
-                             {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",
-            {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",
-            {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",
-            {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",
-            {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",
-                             {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",
-                             {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",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_SIMD,
-                              AArch64::AEK_FP, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("thunderxt81", "armv8-a",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_SIMD,
-                              AArch64::AEK_FP, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("thunderxt83", "armv8-a",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_SIMD,
-                              AArch64::AEK_FP, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("thunderxt88", "armv8-a",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_SIMD,
-                              AArch64::AEK_FP, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams(
-            "tsv110", "armv8.2-a",
-            {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",
-                             {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",
-                             {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(
-            "saphira", "armv8.4-a",
-            {AArch64::AEK_AES, AArch64::AEK_FP, AArch64::AEK_SIMD,
-             AArch64::AEK_PERFMON, AArch64::AEK_SHA2, AArch64::AEK_PROFILE,
-             AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM,
-             AArch64::AEK_RAS, AArch64::AEK_RCPC}),
-        AArch64CPUTestParams(
-            "oryon-1", "armv8.6-a",
-            {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);
 
 // Note: number of CPUs includes aliases.
 static constexpr unsigned NumAArch64CPUArchs = 81;

>From 56624a5d02ff2ebd927dbff6a173cc641814a069 Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Fri, 16 Aug 2024 14:41:43 +0100
Subject: [PATCH 2/6] clang-format

---
 llvm/unittests/TargetParser/TargetParserTest.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 2a55e8e80fa17c..afde543afa1508 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1093,7 +1093,6 @@ struct AArch64CPUTestParams
   }
 };
 
-
 // Note: number of CPUs includes aliases.
 static constexpr unsigned NumAArch64CPUArchs = 81;
 

>From a1d0374f2c914e77a53c9ca108c188caf236a0bd Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Mon, 19 Aug 2024 13:57:08 +0100
Subject: [PATCH 3/6] Revert "clang-format"

This reverts commit 56624a5d02ff2ebd927dbff6a173cc641814a069.
---
 llvm/unittests/TargetParser/TargetParserTest.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index afde543afa1508..2a55e8e80fa17c 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1093,6 +1093,7 @@ struct AArch64CPUTestParams
   }
 };
 
+
 // Note: number of CPUs includes aliases.
 static constexpr unsigned NumAArch64CPUArchs = 81;
 

>From b0de715ca9e3f26d330d07b4c5b2596fa20668a7 Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Mon, 19 Aug 2024 13:57:15 +0100
Subject: [PATCH 4/6] Revert "[AArch64] Remove TargetParser CPU/Arch feature
 tests"

This reverts commit 95e6162a0cd756b26c5e5ecca330ce7b6a9ecd57.
---
 .../TargetParser/TargetParserTest.cpp         | 727 ++++++++++++++++++
 1 file changed, 727 insertions(+)

diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 2a55e8e80fa17c..960a9892202b35 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1093,6 +1093,733 @@ struct AArch64CPUTestParams
   }
 };
 
+class AArch64CPUTestFixture
+    : public ::testing::TestWithParam<AArch64CPUTestParams> {};
+
+TEST_P(AArch64CPUTestFixture, testAArch64CPU) {
+  auto params = GetParam();
+
+  const std::optional<AArch64::CpuInfo> Cpu = AArch64::parseCpu(params.CPUName);
+  EXPECT_TRUE(Cpu);
+  EXPECT_EQ(params.ExpectedArch, Cpu->Arch.Name);
+
+  EXPECT_PRED_FORMAT2(
+      AssertSameExtensionFlags<ARM::ISAKind::AARCH64>(params.CPUName),
+      params.ExpectedFlags, Cpu->getImpliedExtensions());
+}
+
+INSTANTIATE_TEST_SUITE_P(
+    AArch64CPUTests, AArch64CPUTestFixture,
+    ::testing::Values(
+        AArch64CPUTestParams("cortex-a34", "armv8-a",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("cortex-a35", "armv8-a",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("cortex-a53", "armv8-a",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams(
+            "cortex-a55", "armv8.2-a",
+            {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",
+                             {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",
+                             {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",
+                             {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",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams(
+            "cortex-a65", "armv8.2-a",
+            {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",
+            {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",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("cortex-a73", "armv8-a",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams(
+            "cortex-a75", "armv8.2-a",
+            {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",
+            {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",
+            {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",
+            {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",
+            {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",
+            {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",
+            {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",
+            {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",
+                             {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",
+                             {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",
+                             {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",
+                             {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",
+            {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",
+                             {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",
+                             {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_RME}),
+        AArch64CPUTestParams("neoverse-v3ae", "armv9.2-a",
+                             {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_RME}),
+        AArch64CPUTestParams(
+            "cortex-r82", "armv8-r",
+            {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",
+            {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",
+            {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",
+            {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",
+                             {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",
+                             {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",
+                             {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",
+                             {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",
+                             {AArch64::AEK_AES, AArch64::AEK_SHA2,
+                              AArch64::AEK_FP, AArch64::AEK_SIMD,
+                              AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("apple-a7", "armv8-a",
+                             {AArch64::AEK_AES, AArch64::AEK_SHA2,
+                              AArch64::AEK_FP, AArch64::AEK_SIMD,
+                              AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("apple-a8", "armv8-a",
+                             {AArch64::AEK_AES, AArch64::AEK_SHA2,
+                              AArch64::AEK_FP, AArch64::AEK_SIMD,
+                              AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("apple-a9", "armv8-a",
+                             {AArch64::AEK_AES, AArch64::AEK_SHA2,
+                              AArch64::AEK_FP, AArch64::AEK_SIMD,
+                              AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("apple-a10", "armv8-a",
+                             {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",
+                             {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",
+            {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",
+            {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",
+            {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",
+            {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",
+                             {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",
+                             {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",
+            {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_FPAC,    AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams(
+            "apple-m2", "armv8.6-a",
+            {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_FPAC,    AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams(
+            "apple-a16", "armv8.6-a",
+            {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_FPAC,    AArch64::AEK_PERFMON,
+             AArch64::AEK_HCX}),
+        AArch64CPUTestParams(
+            "apple-m3", "armv8.6-a",
+            {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_FPAC,    AArch64::AEK_PERFMON,
+             AArch64::AEK_HCX}),
+        AArch64CPUTestParams(
+            "apple-a17", "armv8.6-a",
+            {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_FPAC,    AArch64::AEK_PERFMON,
+             AArch64::AEK_HCX}),
+        AArch64CPUTestParams("apple-m4", "armv9.2-a",
+                             {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_PAUTH,     AArch64::AEK_FPAC,
+                              AArch64::AEK_FCMA,      AArch64::AEK_PERFMON,
+                              AArch64::AEK_SME,       AArch64::AEK_SME2,
+                              AArch64::AEK_SMEF64F64, AArch64::AEK_SMEI16I64}),
+        AArch64CPUTestParams("exynos-m3", "armv8-a",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams(
+            "exynos-m4", "armv8.2-a",
+            {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",
+            {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",
+                             {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",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_FP,
+                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams(
+            "neoverse-e1", "armv8.2-a",
+            {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",
+            {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",
+                             {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",
+                             {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",
+            {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",
+            {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",
+            {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",
+            {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",
+                             {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",
+                             {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",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_SIMD,
+                              AArch64::AEK_FP, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("thunderxt81", "armv8-a",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_SIMD,
+                              AArch64::AEK_FP, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("thunderxt83", "armv8-a",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_SIMD,
+                              AArch64::AEK_FP, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams("thunderxt88", "armv8-a",
+                             {AArch64::AEK_CRC, AArch64::AEK_AES,
+                              AArch64::AEK_SHA2, AArch64::AEK_SIMD,
+                              AArch64::AEK_FP, AArch64::AEK_PERFMON}),
+        AArch64CPUTestParams(
+            "tsv110", "armv8.2-a",
+            {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",
+                             {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",
+                             {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(
+            "saphira", "armv8.4-a",
+            {AArch64::AEK_AES, AArch64::AEK_FP, AArch64::AEK_SIMD,
+             AArch64::AEK_PERFMON, AArch64::AEK_SHA2, AArch64::AEK_PROFILE,
+             AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM,
+             AArch64::AEK_RAS, AArch64::AEK_RCPC}),
+        AArch64CPUTestParams(
+            "oryon-1", "armv8.6-a",
+            {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);
 
 // Note: number of CPUs includes aliases.
 static constexpr unsigned NumAArch64CPUArchs = 81;

>From 581871fb952d8bb76c23fa9a31117f18900b0261 Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Mon, 19 Aug 2024 14:19:07 +0100
Subject: [PATCH 5/6] remove cpu features tests from AArch64CPUTestParams

---
 .../TargetParser/TargetParserTest.cpp         | 797 ++----------------
 1 file changed, 80 insertions(+), 717 deletions(-)

diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 960a9892202b35..7a9fd13e518f61 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1073,11 +1073,9 @@ TEST(TargetParserTest, ARMPrintSupportedExtensions) {
 
 struct AArch64CPUTestParams
     : public ARMCPUTestParams<AArch64::ExtensionBitset> {
-  AArch64CPUTestParams(StringRef CPUName, StringRef ExpectedArch,
-                       AArch64::ExtensionBitset ExpectedFlags)
+  AArch64CPUTestParams(StringRef CPUName, StringRef ExpectedArch)
       : ARMCPUTestParams<AArch64::ExtensionBitset>(CPUName, ExpectedArch,
-                                                   /*ignored*/ "",
-                                                   ExpectedFlags,
+                                                   /*ignored*/ "", {},
                                                    /*ignored*/ "") {}
   /// Print a gtest-compatible facsimile of the CPUName, to make the test's name
   /// human-readable.
@@ -1102,723 +1100,88 @@ TEST_P(AArch64CPUTestFixture, testAArch64CPU) {
   const std::optional<AArch64::CpuInfo> Cpu = AArch64::parseCpu(params.CPUName);
   EXPECT_TRUE(Cpu);
   EXPECT_EQ(params.ExpectedArch, Cpu->Arch.Name);
-
-  EXPECT_PRED_FORMAT2(
-      AssertSameExtensionFlags<ARM::ISAKind::AARCH64>(params.CPUName),
-      params.ExpectedFlags, Cpu->getImpliedExtensions());
 }
 
 INSTANTIATE_TEST_SUITE_P(
     AArch64CPUTests, AArch64CPUTestFixture,
-    ::testing::Values(
-        AArch64CPUTestParams("cortex-a34", "armv8-a",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_FP,
-                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("cortex-a35", "armv8-a",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_FP,
-                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("cortex-a53", "armv8-a",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_FP,
-                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams(
-            "cortex-a55", "armv8.2-a",
-            {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",
-                             {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",
-                             {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",
-                             {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",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_FP,
-                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams(
-            "cortex-a65", "armv8.2-a",
-            {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",
-            {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",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_FP,
-                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("cortex-a73", "armv8-a",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_FP,
-                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams(
-            "cortex-a75", "armv8.2-a",
-            {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",
-            {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",
-            {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",
-            {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",
-            {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",
-            {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",
-            {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",
-            {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",
-                             {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",
-                             {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",
-                             {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",
-                             {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",
-            {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",
-                             {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",
-                             {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_RME}),
-        AArch64CPUTestParams("neoverse-v3ae", "armv9.2-a",
-                             {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_RME}),
-        AArch64CPUTestParams(
-            "cortex-r82", "armv8-r",
-            {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",
-            {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",
-            {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",
-            {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",
-                             {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",
-                             {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",
-                             {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",
-                             {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",
-                             {AArch64::AEK_AES, AArch64::AEK_SHA2,
-                              AArch64::AEK_FP, AArch64::AEK_SIMD,
-                              AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("apple-a7", "armv8-a",
-                             {AArch64::AEK_AES, AArch64::AEK_SHA2,
-                              AArch64::AEK_FP, AArch64::AEK_SIMD,
-                              AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("apple-a8", "armv8-a",
-                             {AArch64::AEK_AES, AArch64::AEK_SHA2,
-                              AArch64::AEK_FP, AArch64::AEK_SIMD,
-                              AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("apple-a9", "armv8-a",
-                             {AArch64::AEK_AES, AArch64::AEK_SHA2,
-                              AArch64::AEK_FP, AArch64::AEK_SIMD,
-                              AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("apple-a10", "armv8-a",
-                             {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",
-                             {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",
-            {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",
-            {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",
-            {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",
-            {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",
-                             {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",
-                             {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",
-            {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_FPAC,    AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams(
-            "apple-m2", "armv8.6-a",
-            {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_FPAC,    AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams(
-            "apple-a16", "armv8.6-a",
-            {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_FPAC,    AArch64::AEK_PERFMON,
-             AArch64::AEK_HCX}),
-        AArch64CPUTestParams(
-            "apple-m3", "armv8.6-a",
-            {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_FPAC,    AArch64::AEK_PERFMON,
-             AArch64::AEK_HCX}),
-        AArch64CPUTestParams(
-            "apple-a17", "armv8.6-a",
-            {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_FPAC,    AArch64::AEK_PERFMON,
-             AArch64::AEK_HCX}),
-        AArch64CPUTestParams("apple-m4", "armv9.2-a",
-                             {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_PAUTH,     AArch64::AEK_FPAC,
-                              AArch64::AEK_FCMA,      AArch64::AEK_PERFMON,
-                              AArch64::AEK_SME,       AArch64::AEK_SME2,
-                              AArch64::AEK_SMEF64F64, AArch64::AEK_SMEI16I64}),
-        AArch64CPUTestParams("exynos-m3", "armv8-a",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_FP,
-                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams(
-            "exynos-m4", "armv8.2-a",
-            {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",
-            {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",
-                             {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",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_FP,
-                              AArch64::AEK_SIMD, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams(
-            "neoverse-e1", "armv8.2-a",
-            {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",
-            {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",
-                             {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",
-                             {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",
-            {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",
-            {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",
-            {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",
-            {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",
-                             {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",
-                             {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",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_SIMD,
-                              AArch64::AEK_FP, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("thunderxt81", "armv8-a",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_SIMD,
-                              AArch64::AEK_FP, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("thunderxt83", "armv8-a",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_SIMD,
-                              AArch64::AEK_FP, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams("thunderxt88", "armv8-a",
-                             {AArch64::AEK_CRC, AArch64::AEK_AES,
-                              AArch64::AEK_SHA2, AArch64::AEK_SIMD,
-                              AArch64::AEK_FP, AArch64::AEK_PERFMON}),
-        AArch64CPUTestParams(
-            "tsv110", "armv8.2-a",
-            {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",
-                             {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",
-                             {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(
-            "saphira", "armv8.4-a",
-            {AArch64::AEK_AES, AArch64::AEK_FP, AArch64::AEK_SIMD,
-             AArch64::AEK_PERFMON, AArch64::AEK_SHA2, AArch64::AEK_PROFILE,
-             AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM,
-             AArch64::AEK_RAS, AArch64::AEK_RCPC}),
-        AArch64CPUTestParams(
-            "oryon-1", "armv8.6-a",
-            {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})),
-
+    ::testing::Values(AArch64CPUTestParams("cortex-a34", "armv8-a"),
+                      AArch64CPUTestParams("cortex-a35", "armv8-a"),
+                      AArch64CPUTestParams("cortex-a53", "armv8-a"),
+                      AArch64CPUTestParams("cortex-a55", "armv8.2-a"),
+                      AArch64CPUTestParams("cortex-a510", "armv9-a"),
+                      AArch64CPUTestParams("cortex-a520", "armv9.2-a"),
+                      AArch64CPUTestParams("cortex-a520ae", "armv9.2-a"),
+                      AArch64CPUTestParams("cortex-a57", "armv8-a"),
+                      AArch64CPUTestParams("cortex-a65", "armv8.2-a"),
+                      AArch64CPUTestParams("cortex-a65ae", "armv8.2-a"),
+                      AArch64CPUTestParams("cortex-a72", "armv8-a"),
+                      AArch64CPUTestParams("cortex-a73", "armv8-a"),
+                      AArch64CPUTestParams("cortex-a75", "armv8.2-a"),
+                      AArch64CPUTestParams("cortex-a76", "armv8.2-a"),
+                      AArch64CPUTestParams("cortex-a76ae", "armv8.2-a"),
+                      AArch64CPUTestParams("cortex-a77", "armv8.2-a"),
+                      AArch64CPUTestParams("cortex-a78", "armv8.2-a"),
+                      AArch64CPUTestParams("cortex-a78ae", "armv8.2-a"),
+                      AArch64CPUTestParams("cortex-a78c", "armv8.2-a"),
+                      AArch64CPUTestParams("cortex-a710", "armv9-a"),
+                      AArch64CPUTestParams("cortex-a715", "armv9-a"),
+                      AArch64CPUTestParams("cortex-a720", "armv9.2-a"),
+                      AArch64CPUTestParams("cortex-a720ae", "armv9.2-a"),
+                      AArch64CPUTestParams("cortex-a725", "armv9.2-a"),
+                      AArch64CPUTestParams("neoverse-v1", "armv8.4-a"),
+                      AArch64CPUTestParams("neoverse-v2", "armv9-a"),
+                      AArch64CPUTestParams("neoverse-v3", "armv9.2-a"),
+                      AArch64CPUTestParams("neoverse-v3ae", "armv9.2-a"),
+                      AArch64CPUTestParams("cortex-r82", "armv8-r"),
+                      AArch64CPUTestParams("cortex-r82ae", "armv8-r"),
+                      AArch64CPUTestParams("cortex-x1", "armv8.2-a"),
+                      AArch64CPUTestParams("cortex-x1c", "armv8.2-a"),
+                      AArch64CPUTestParams("cortex-x2", "armv9-a"),
+                      AArch64CPUTestParams("cortex-x3", "armv9-a"),
+                      AArch64CPUTestParams("cortex-x4", "armv9.2-a"),
+                      AArch64CPUTestParams("cortex-x925", "armv9.2-a"),
+                      AArch64CPUTestParams("cyclone", "armv8-a"),
+                      AArch64CPUTestParams("apple-a7", "armv8-a"),
+                      AArch64CPUTestParams("apple-a8", "armv8-a"),
+                      AArch64CPUTestParams("apple-a9", "armv8-a"),
+                      AArch64CPUTestParams("apple-a10", "armv8-a"),
+                      AArch64CPUTestParams("apple-a11", "armv8.2-a"),
+                      AArch64CPUTestParams("apple-a12", "armv8.3-a"),
+                      AArch64CPUTestParams("apple-s4", "armv8.3-a"),
+                      AArch64CPUTestParams("apple-s5", "armv8.3-a"),
+                      AArch64CPUTestParams("apple-a13", "armv8.4-a"),
+                      AArch64CPUTestParams("apple-a14", "armv8.4-a"),
+                      AArch64CPUTestParams("apple-m1", "armv8.4-a"),
+                      AArch64CPUTestParams("apple-a15", "armv8.6-a"),
+                      AArch64CPUTestParams("apple-m2", "armv8.6-a"),
+                      AArch64CPUTestParams("apple-a16", "armv8.6-a"),
+                      AArch64CPUTestParams("apple-m3", "armv8.6-a"),
+                      AArch64CPUTestParams("apple-a17", "armv8.6-a"),
+                      AArch64CPUTestParams("apple-m4", "armv9.2-a"),
+                      AArch64CPUTestParams("exynos-m3", "armv8-a"),
+                      AArch64CPUTestParams("exynos-m4", "armv8.2-a"),
+                      AArch64CPUTestParams("exynos-m5", "armv8.2-a"),
+                      AArch64CPUTestParams("falkor", "armv8-a"),
+                      AArch64CPUTestParams("kryo", "armv8-a"),
+                      AArch64CPUTestParams("neoverse-e1", "armv8.2-a"),
+                      AArch64CPUTestParams("neoverse-n1", "armv8.2-a"),
+                      AArch64CPUTestParams("neoverse-n2", "armv9-a"),
+                      AArch64CPUTestParams("neoverse-n3", "armv9.2-a"),
+                      AArch64CPUTestParams("ampere1", "armv8.6-a"),
+                      AArch64CPUTestParams("ampere1a", "armv8.6-a"),
+                      AArch64CPUTestParams("ampere1b", "armv8.7-a"),
+                      AArch64CPUTestParams("neoverse-512tvb", "armv8.4-a"),
+                      AArch64CPUTestParams("thunderx2t99", "armv8.1-a"),
+                      AArch64CPUTestParams("thunderx3t110", "armv8.3-a"),
+                      AArch64CPUTestParams("thunderx", "armv8-a"),
+                      AArch64CPUTestParams("thunderxt81", "armv8-a"),
+                      AArch64CPUTestParams("thunderxt83", "armv8-a"),
+                      AArch64CPUTestParams("thunderxt88", "armv8-a"),
+                      AArch64CPUTestParams("tsv110", "armv8.2-a"),
+                      AArch64CPUTestParams("a64fx", "armv8.2-a"),
+                      AArch64CPUTestParams("carmel", "armv8.2-a"),
+                      AArch64CPUTestParams("saphira", "armv8.4-a"),
+                      AArch64CPUTestParams("oryon-1", "armv8.6-a")),
     AArch64CPUTestParams::PrintToStringParamName);
 
 // Note: number of CPUs includes aliases.

>From ba049b8b822ed9ae67284ace4fe051558d39bfeb Mon Sep 17 00:00:00 2001
From: Tomas Matheson <tomas.matheson at arm.com>
Date: Mon, 19 Aug 2024 14:19:37 +0100
Subject: [PATCH 6/6] Remove unused parameters from testAArch64Arch

---
 .../TargetParser/TargetParserTest.cpp         | 51 +++++++------------
 1 file changed, 17 insertions(+), 34 deletions(-)

diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 7a9fd13e518f61..8460a6b9e330f7 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1199,45 +1199,28 @@ TEST(TargetParserTest, testAArch64CPUArchList) {
   }
 }
 
-bool testAArch64Arch(StringRef Arch, StringRef DefaultCPU, StringRef SubArch,
-                     unsigned ArchAttr) {
+bool testAArch64Arch(StringRef Arch) {
   const AArch64::ArchInfo *AI = AArch64::parseArch(Arch);
   return AI != nullptr;
 }
 
 TEST(TargetParserTest, testAArch64Arch) {
-  EXPECT_TRUE(testAArch64Arch("armv8-a", "cortex-a53", "v8a",
-                              ARMBuildAttrs::CPUArch::v8_A));
-  EXPECT_TRUE(testAArch64Arch("armv8.1-a", "generic", "v8.1a",
-                              ARMBuildAttrs::CPUArch::v8_A));
-  EXPECT_TRUE(testAArch64Arch("armv8.2-a", "generic", "v8.2a",
-                              ARMBuildAttrs::CPUArch::v8_A));
-  EXPECT_TRUE(testAArch64Arch("armv8.3-a", "generic", "v8.3a",
-                              ARMBuildAttrs::CPUArch::v8_A));
-  EXPECT_TRUE(testAArch64Arch("armv8.4-a", "generic", "v8.4a",
-                              ARMBuildAttrs::CPUArch::v8_A));
-  EXPECT_TRUE(testAArch64Arch("armv8.5-a", "generic", "v8.5a",
-                              ARMBuildAttrs::CPUArch::v8_A));
-  EXPECT_TRUE(testAArch64Arch("armv8.6-a", "generic", "v8.6a",
-                              ARMBuildAttrs::CPUArch::v8_A));
-  EXPECT_TRUE(testAArch64Arch("armv8.7-a", "generic", "v8.7a",
-                              ARMBuildAttrs::CPUArch::v8_A));
-  EXPECT_TRUE(testAArch64Arch("armv8.8-a", "generic", "v8.8a",
-                              ARMBuildAttrs::CPUArch::v8_A));
-  EXPECT_TRUE(testAArch64Arch("armv8.9-a", "generic", "v8.9a",
-                              ARMBuildAttrs::CPUArch::v8_A));
-  EXPECT_TRUE(testAArch64Arch("armv9-a", "generic", "v9a",
-                              ARMBuildAttrs::CPUArch::v8_A));
-  EXPECT_TRUE(testAArch64Arch("armv9.1-a", "generic", "v9.1a",
-                              ARMBuildAttrs::CPUArch::v8_A));
-  EXPECT_TRUE(testAArch64Arch("armv9.2-a", "generic", "v9.2a",
-                              ARMBuildAttrs::CPUArch::v8_A));
-  EXPECT_TRUE(testAArch64Arch("armv9.3-a", "generic", "v9.3a",
-                              ARMBuildAttrs::CPUArch::v8_A));
-  EXPECT_TRUE(testAArch64Arch("armv9.4-a", "generic", "v9.4a",
-                              ARMBuildAttrs::CPUArch::v8_A));
-  EXPECT_TRUE(testAArch64Arch("armv9.5-a", "generic", "v9.5a",
-                              ARMBuildAttrs::CPUArch::v8_A));
+  EXPECT_TRUE(testAArch64Arch("armv8-a"));
+  EXPECT_TRUE(testAArch64Arch("armv8.1-a"));
+  EXPECT_TRUE(testAArch64Arch("armv8.2-a"));
+  EXPECT_TRUE(testAArch64Arch("armv8.3-a"));
+  EXPECT_TRUE(testAArch64Arch("armv8.4-a"));
+  EXPECT_TRUE(testAArch64Arch("armv8.5-a"));
+  EXPECT_TRUE(testAArch64Arch("armv8.6-a"));
+  EXPECT_TRUE(testAArch64Arch("armv8.7-a"));
+  EXPECT_TRUE(testAArch64Arch("armv8.8-a"));
+  EXPECT_TRUE(testAArch64Arch("armv8.9-a"));
+  EXPECT_TRUE(testAArch64Arch("armv9-a"));
+  EXPECT_TRUE(testAArch64Arch("armv9.1-a"));
+  EXPECT_TRUE(testAArch64Arch("armv9.2-a"));
+  EXPECT_TRUE(testAArch64Arch("armv9.3-a"));
+  EXPECT_TRUE(testAArch64Arch("armv9.4-a"));
+  EXPECT_TRUE(testAArch64Arch("armv9.5-a"));
 }
 
 bool testAArch64Extension(StringRef CPUName, StringRef ArchExt) {



More information about the llvm-commits mailing list