diff options
| author | Tomas Matheson <tomas.matheson@arm.com> | 2022-12-01 13:06:54 +0000 |
|---|---|---|
| committer | Tomas Matheson <tomas.matheson@arm.com> | 2022-12-01 13:06:54 +0000 |
| commit | d1ef4b0a8da152fe4282f97c7c49f4930a3c66a2 (patch) | |
| tree | 4fe37fcacca29874c3d8610b07c22d70d3906db7 /llvm/unittests/Support/TargetParserTest.cpp | |
| parent | 450de8008bb0ccb5dfc9dd69b6f5b434158772bd (diff) | |
| download | llvm-d1ef4b0a8da152fe4282f97c7c49f4930a3c66a2.zip llvm-d1ef4b0a8da152fe4282f97c7c49f4930a3c66a2.tar.gz llvm-d1ef4b0a8da152fe4282f97c7c49f4930a3c66a2.tar.bz2 | |
Revert "[AArch64] Improve TargetParser API"
Buildbots unhappy about constexpr function.
This reverts commit 450de8008bb0ccb5dfc9dd69b6f5b434158772bd.
Diffstat (limited to 'llvm/unittests/Support/TargetParserTest.cpp')
| -rw-r--r-- | llvm/unittests/Support/TargetParserTest.cpp | 292 |
1 files changed, 161 insertions, 131 deletions
diff --git a/llvm/unittests/Support/TargetParserTest.cpp b/llvm/unittests/Support/TargetParserTest.cpp index a99df08..5bcb131 100644 --- a/llvm/unittests/Support/TargetParserTest.cpp +++ b/llvm/unittests/Support/TargetParserTest.cpp @@ -952,11 +952,11 @@ class AArch64CPUTestFixture TEST_P(AArch64CPUTestFixture, testAArch64CPU) { ARMCPUTestParams params = GetParam(); - const AArch64::ArchInfo &AI = AArch64::parseCpu(params.CPUName).Arch; - EXPECT_EQ(params.ExpectedArch, AI.Name); + AArch64::ArchKind AK = AArch64::parseCPUArch(params.CPUName); + EXPECT_EQ(params.ExpectedArch, AArch64::getArchName(AK)); uint64_t default_extensions = - AArch64::getDefaultExtensions(params.CPUName, AI); + AArch64::getDefaultExtensions(params.CPUName, AK); EXPECT_PRED_FORMAT2(AssertSameExtensionFlags<ARM::ISAKind::AARCH64>, params.ExpectedFlags, default_extensions); } @@ -1402,14 +1402,14 @@ TEST(TargetParserTest, testAArch64CPUArchList) { // valid, and match the expected 'magic' count. EXPECT_EQ(List.size(), NumAArch64CPUArchs); for(StringRef CPU : List) { - EXPECT_NE(AArch64::parseCpu(CPU).Arch, AArch64::INVALID); + EXPECT_NE(AArch64::parseCPUArch(CPU), AArch64::ArchKind::INVALID); } } bool testAArch64Arch(StringRef Arch, StringRef DefaultCPU, StringRef SubArch, unsigned ArchAttr) { - const AArch64::ArchInfo &AI = AArch64::parseArch(Arch); - return AI != AArch64::INVALID; + AArch64::ArchKind AK = AArch64::parseArch(Arch); + return AK != AArch64::ArchKind::INVALID; } TEST(TargetParserTest, testAArch64Arch) { @@ -1445,81 +1445,148 @@ TEST(TargetParserTest, testAArch64Arch) { ARMBuildAttrs::CPUArch::v8_A)); } -bool testAArch64Extension(StringRef CPUName, const AArch64::ArchInfo &AI, +bool testAArch64Extension(StringRef CPUName, AArch64::ArchKind AK, StringRef ArchExt) { - return AArch64::getDefaultExtensions(CPUName, AI) & + return AArch64::getDefaultExtensions(CPUName, AK) & AArch64::parseArchExt(ArchExt); } TEST(TargetParserTest, testAArch64Extension) { - EXPECT_FALSE(testAArch64Extension("cortex-a34", AArch64::INVALID, "ras")); - EXPECT_FALSE(testAArch64Extension("cortex-a35", AArch64::INVALID, "ras")); - EXPECT_FALSE(testAArch64Extension("cortex-a53", AArch64::INVALID, "ras")); - EXPECT_TRUE(testAArch64Extension("cortex-a55", AArch64::INVALID, "ras")); - EXPECT_TRUE(testAArch64Extension("cortex-a55", AArch64::INVALID, "fp16")); - EXPECT_FALSE(testAArch64Extension("cortex-a55", AArch64::INVALID, "fp16fml")); - EXPECT_TRUE(testAArch64Extension("cortex-a55", AArch64::INVALID, "dotprod")); - EXPECT_FALSE(testAArch64Extension("cortex-a57", AArch64::INVALID, "ras")); - EXPECT_FALSE(testAArch64Extension("cortex-a72", AArch64::INVALID, "ras")); - EXPECT_FALSE(testAArch64Extension("cortex-a73", AArch64::INVALID, "ras")); - EXPECT_TRUE(testAArch64Extension("cortex-a75", AArch64::INVALID, "ras")); - EXPECT_TRUE(testAArch64Extension("cortex-a75", AArch64::INVALID, "fp16")); - EXPECT_FALSE(testAArch64Extension("cortex-a75", AArch64::INVALID, "fp16fml")); - EXPECT_TRUE(testAArch64Extension("cortex-a75", AArch64::INVALID, "dotprod")); - EXPECT_TRUE(testAArch64Extension("cortex-r82", AArch64::INVALID, "ras")); - EXPECT_TRUE(testAArch64Extension("cortex-r82", AArch64::INVALID, "fp16")); - EXPECT_TRUE(testAArch64Extension("cortex-r82", AArch64::INVALID, "fp16fml")); - EXPECT_TRUE(testAArch64Extension("cortex-r82", AArch64::INVALID, "dotprod")); - EXPECT_TRUE(testAArch64Extension("cortex-r82", AArch64::INVALID, "lse")); - EXPECT_FALSE(testAArch64Extension("cyclone", AArch64::INVALID, "ras")); - EXPECT_FALSE(testAArch64Extension("exynos-m3", AArch64::INVALID, "ras")); - EXPECT_TRUE(testAArch64Extension("exynos-m4", AArch64::INVALID, "dotprod")); - EXPECT_TRUE(testAArch64Extension("exynos-m4", AArch64::INVALID, "fp16")); - EXPECT_TRUE(testAArch64Extension("exynos-m4", AArch64::INVALID, "lse")); - EXPECT_TRUE(testAArch64Extension("exynos-m4", AArch64::INVALID, "ras")); - EXPECT_TRUE(testAArch64Extension("exynos-m4", AArch64::INVALID, "rdm")); - EXPECT_TRUE(testAArch64Extension("exynos-m5", AArch64::INVALID, "dotprod")); - EXPECT_TRUE(testAArch64Extension("exynos-m5", AArch64::INVALID, "fp16")); - EXPECT_TRUE(testAArch64Extension("exynos-m5", AArch64::INVALID, "lse")); - EXPECT_TRUE(testAArch64Extension("exynos-m5", AArch64::INVALID, "ras")); - EXPECT_TRUE(testAArch64Extension("exynos-m5", AArch64::INVALID, "rdm")); - EXPECT_TRUE(testAArch64Extension("falkor", AArch64::INVALID, "rdm")); - EXPECT_FALSE(testAArch64Extension("kryo", AArch64::INVALID, "ras")); - EXPECT_TRUE(testAArch64Extension("saphira", AArch64::INVALID, "crc")); - EXPECT_TRUE(testAArch64Extension("saphira", AArch64::INVALID, "lse")); - EXPECT_TRUE(testAArch64Extension("saphira", AArch64::INVALID, "rdm")); - EXPECT_TRUE(testAArch64Extension("saphira", AArch64::INVALID, "ras")); - EXPECT_TRUE(testAArch64Extension("saphira", AArch64::INVALID, "rcpc")); - EXPECT_TRUE(testAArch64Extension("saphira", AArch64::INVALID, "profile")); - EXPECT_FALSE(testAArch64Extension("saphira", AArch64::INVALID, "fp16")); - EXPECT_FALSE(testAArch64Extension("thunderx2t99", AArch64::INVALID, "ras")); - EXPECT_FALSE(testAArch64Extension("thunderx", AArch64::INVALID, "lse")); - EXPECT_FALSE(testAArch64Extension("thunderxt81", AArch64::INVALID, "lse")); - EXPECT_FALSE(testAArch64Extension("thunderxt83", AArch64::INVALID, "lse")); - EXPECT_FALSE(testAArch64Extension("thunderxt88", AArch64::INVALID, "lse")); - EXPECT_TRUE(testAArch64Extension("tsv110", AArch64::INVALID, "crypto")); - EXPECT_FALSE(testAArch64Extension("tsv110", AArch64::INVALID, "sha3")); - EXPECT_FALSE(testAArch64Extension("tsv110", AArch64::INVALID, "sm4")); - EXPECT_TRUE(testAArch64Extension("tsv110", AArch64::INVALID, "ras")); - EXPECT_TRUE(testAArch64Extension("tsv110", AArch64::INVALID, "profile")); - EXPECT_TRUE(testAArch64Extension("tsv110", AArch64::INVALID, "fp16")); - EXPECT_TRUE(testAArch64Extension("tsv110", AArch64::INVALID, "fp16fml")); - EXPECT_TRUE(testAArch64Extension("tsv110", AArch64::INVALID, "dotprod")); - EXPECT_TRUE(testAArch64Extension("a64fx", AArch64::INVALID, "fp16")); - EXPECT_TRUE(testAArch64Extension("a64fx", AArch64::INVALID, "sve")); - EXPECT_FALSE(testAArch64Extension("a64fx", AArch64::INVALID, "sve2")); - EXPECT_TRUE(testAArch64Extension("carmel", AArch64::INVALID, "crypto")); - EXPECT_TRUE(testAArch64Extension("carmel", AArch64::INVALID, "fp16")); - - EXPECT_FALSE(testAArch64Extension("generic", AArch64::ARMV8A, "ras")); - EXPECT_FALSE(testAArch64Extension("generic", AArch64::ARMV8_1A, "ras")); - EXPECT_FALSE(testAArch64Extension("generic", AArch64::ARMV8_2A, "profile")); - EXPECT_FALSE(testAArch64Extension("generic", AArch64::ARMV8_2A, "fp16")); - EXPECT_FALSE(testAArch64Extension("generic", AArch64::ARMV8_2A, "fp16fml")); - EXPECT_FALSE(testAArch64Extension("generic", AArch64::ARMV8_3A, "fp16")); - EXPECT_FALSE(testAArch64Extension("generic", AArch64::ARMV8_3A, "fp16fml")); - EXPECT_FALSE(testAArch64Extension("generic", AArch64::ARMV8_4A, "fp16")); - EXPECT_FALSE(testAArch64Extension("generic", AArch64::ARMV8_4A, "fp16fml")); + EXPECT_FALSE(testAArch64Extension("cortex-a34", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_FALSE(testAArch64Extension("cortex-a35", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_FALSE(testAArch64Extension("cortex-a53", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_TRUE(testAArch64Extension("cortex-a55", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_TRUE(testAArch64Extension("cortex-a55", + AArch64::ArchKind::INVALID, "fp16")); + EXPECT_FALSE(testAArch64Extension("cortex-a55", + AArch64::ArchKind::INVALID, "fp16fml")); + EXPECT_TRUE(testAArch64Extension("cortex-a55", + AArch64::ArchKind::INVALID, "dotprod")); + EXPECT_FALSE(testAArch64Extension("cortex-a57", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_FALSE(testAArch64Extension("cortex-a72", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_FALSE(testAArch64Extension("cortex-a73", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_TRUE(testAArch64Extension("cortex-a75", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_TRUE(testAArch64Extension("cortex-a75", + AArch64::ArchKind::INVALID, "fp16")); + EXPECT_FALSE(testAArch64Extension("cortex-a75", + AArch64::ArchKind::INVALID, "fp16fml")); + EXPECT_TRUE(testAArch64Extension("cortex-a75", + AArch64::ArchKind::INVALID, "dotprod")); + EXPECT_TRUE(testAArch64Extension("cortex-r82", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_TRUE(testAArch64Extension("cortex-r82", + AArch64::ArchKind::INVALID, "fp16")); + EXPECT_TRUE(testAArch64Extension("cortex-r82", + AArch64::ArchKind::INVALID, "fp16fml")); + EXPECT_TRUE(testAArch64Extension("cortex-r82", + AArch64::ArchKind::INVALID, "dotprod")); + EXPECT_TRUE(testAArch64Extension("cortex-r82", + AArch64::ArchKind::INVALID, "lse")); + EXPECT_FALSE(testAArch64Extension("cyclone", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_FALSE(testAArch64Extension("exynos-m3", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_TRUE(testAArch64Extension("exynos-m4", + AArch64::ArchKind::INVALID, "dotprod")); + EXPECT_TRUE(testAArch64Extension("exynos-m4", + AArch64::ArchKind::INVALID, "fp16")); + EXPECT_TRUE(testAArch64Extension("exynos-m4", + AArch64::ArchKind::INVALID, "lse")); + EXPECT_TRUE(testAArch64Extension("exynos-m4", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_TRUE(testAArch64Extension("exynos-m4", + AArch64::ArchKind::INVALID, "rdm")); + EXPECT_TRUE(testAArch64Extension("exynos-m5", + AArch64::ArchKind::INVALID, "dotprod")); + EXPECT_TRUE(testAArch64Extension("exynos-m5", + AArch64::ArchKind::INVALID, "fp16")); + EXPECT_TRUE(testAArch64Extension("exynos-m5", + AArch64::ArchKind::INVALID, "lse")); + EXPECT_TRUE(testAArch64Extension("exynos-m5", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_TRUE(testAArch64Extension("exynos-m5", + AArch64::ArchKind::INVALID, "rdm")); + EXPECT_TRUE(testAArch64Extension("falkor", + AArch64::ArchKind::INVALID, "rdm")); + EXPECT_FALSE(testAArch64Extension("kryo", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_TRUE(testAArch64Extension("saphira", + AArch64::ArchKind::INVALID, "crc")); + EXPECT_TRUE(testAArch64Extension("saphira", + AArch64::ArchKind::INVALID, "lse")); + EXPECT_TRUE(testAArch64Extension("saphira", + AArch64::ArchKind::INVALID, "rdm")); + EXPECT_TRUE(testAArch64Extension("saphira", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_TRUE(testAArch64Extension("saphira", + AArch64::ArchKind::INVALID, "rcpc")); + EXPECT_TRUE(testAArch64Extension("saphira", + AArch64::ArchKind::INVALID, "profile")); + EXPECT_FALSE(testAArch64Extension("saphira", + AArch64::ArchKind::INVALID, "fp16")); + EXPECT_FALSE(testAArch64Extension("thunderx2t99", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_FALSE(testAArch64Extension("thunderx", + AArch64::ArchKind::INVALID, "lse")); + EXPECT_FALSE(testAArch64Extension("thunderxt81", + AArch64::ArchKind::INVALID, "lse")); + EXPECT_FALSE(testAArch64Extension("thunderxt83", + AArch64::ArchKind::INVALID, "lse")); + EXPECT_FALSE(testAArch64Extension("thunderxt88", + AArch64::ArchKind::INVALID, "lse")); + EXPECT_TRUE(testAArch64Extension("tsv110", + AArch64::ArchKind::INVALID, "crypto")); + EXPECT_FALSE(testAArch64Extension("tsv110", + AArch64::ArchKind::INVALID, "sha3")); + EXPECT_FALSE(testAArch64Extension("tsv110", + AArch64::ArchKind::INVALID, "sm4")); + EXPECT_TRUE(testAArch64Extension("tsv110", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_TRUE(testAArch64Extension("tsv110", + AArch64::ArchKind::INVALID, "profile")); + EXPECT_TRUE(testAArch64Extension("tsv110", + AArch64::ArchKind::INVALID, "fp16")); + EXPECT_TRUE(testAArch64Extension("tsv110", + AArch64::ArchKind::INVALID, "fp16fml")); + EXPECT_TRUE(testAArch64Extension("tsv110", + AArch64::ArchKind::INVALID, "dotprod")); + EXPECT_TRUE(testAArch64Extension("a64fx", + AArch64::ArchKind::INVALID, "fp16")); + EXPECT_TRUE(testAArch64Extension("a64fx", + AArch64::ArchKind::INVALID, "sve")); + EXPECT_FALSE(testAArch64Extension("a64fx", + AArch64::ArchKind::INVALID, "sve2")); + EXPECT_TRUE( + testAArch64Extension("carmel", AArch64::ArchKind::INVALID, "crypto")); + EXPECT_TRUE( + testAArch64Extension("carmel", AArch64::ArchKind::INVALID, "fp16")); + + EXPECT_FALSE(testAArch64Extension( + "generic", AArch64::ArchKind::ARMV8A, "ras")); + EXPECT_FALSE(testAArch64Extension( + "generic", AArch64::ArchKind::ARMV8_1A, "ras")); + EXPECT_FALSE(testAArch64Extension( + "generic", AArch64::ArchKind::ARMV8_2A, "profile")); + EXPECT_FALSE(testAArch64Extension( + "generic", AArch64::ArchKind::ARMV8_2A, "fp16")); + EXPECT_FALSE(testAArch64Extension( + "generic", AArch64::ArchKind::ARMV8_2A, "fp16fml")); + EXPECT_FALSE(testAArch64Extension( + "generic", AArch64::ArchKind::ARMV8_3A, "fp16")); + EXPECT_FALSE(testAArch64Extension( + "generic", AArch64::ArchKind::ARMV8_3A, "fp16fml")); + EXPECT_FALSE(testAArch64Extension( + "generic", AArch64::ArchKind::ARMV8_4A, "fp16")); + EXPECT_FALSE(testAArch64Extension( + "generic", AArch64::ArchKind::ARMV8_4A, "fp16fml")); } TEST(TargetParserTest, AArch64ExtensionFeatures) { @@ -1641,62 +1708,25 @@ TEST(TargetParserTest, AArch64ArchFeatures) { EXPECT_EQ(AArch64::getArchFeature(AArch64::ArchKind::ARMV8R), "+v8r"); } -TEST(TargetParserTest, AArch64ArchPartialOrder) { - EXPECT_FALSE(AArch64::INVALID.implies(AArch64::INVALID)); - - for (const auto *A : AArch64::ArchInfos) { - EXPECT_EQ(*A, *A); - if (!(*A == *A)) { - EXPECT_NE(*A, *A); - } - // Comparison with invalid is always false - EXPECT_FALSE(A->implies(AArch64::INVALID)); - EXPECT_FALSE(AArch64::INVALID.implies(*A)); - - // v8r has no relation to other valid architectures - if (*A != AArch64::ARMV8R) { - EXPECT_FALSE(A->implies(AArch64::ARMV8R)); - EXPECT_FALSE(AArch64::ARMV8R.implies(*A)); - } +TEST(TargetParserTest, AArch64ArchV9toV8Conversion) { + for (auto AK : AArch64::ArchKinds) { + if (AK == AArch64::ArchKind::INVALID) + EXPECT_EQ(AK, AArch64::convertV9toV8(AK)); + else if (AK < AArch64::ArchKind::ARMV9A) + EXPECT_EQ(AK, AArch64::convertV9toV8(AK)); + else if (AK >= AArch64::ArchKind::ARMV8R) + EXPECT_EQ(AArch64::ArchKind::INVALID, AArch64::convertV9toV8(AK)); + else + EXPECT_TRUE(AArch64::convertV9toV8(AK) < AArch64::ArchKind::ARMV9A); } - - for (const auto *A : { - &AArch64::ARMV8_1A, - &AArch64::ARMV8_2A, - &AArch64::ARMV8_3A, - &AArch64::ARMV8_4A, - &AArch64::ARMV8_5A, - &AArch64::ARMV8_6A, - &AArch64::ARMV8_7A, - &AArch64::ARMV8_8A, - &AArch64::ARMV8_9A, - }) - EXPECT_TRUE(A->implies(AArch64::ARMV8A)); - - for (const auto *A : {&AArch64::ARMV9_1A, &AArch64::ARMV9_2A, - &AArch64::ARMV9_3A, &AArch64::ARMV9_4A}) - EXPECT_TRUE(A->implies(AArch64::ARMV9A)); - - EXPECT_TRUE(AArch64::ARMV8_1A.implies(AArch64::ARMV8A)); - EXPECT_TRUE(AArch64::ARMV8_2A.implies(AArch64::ARMV8_1A)); - EXPECT_TRUE(AArch64::ARMV8_3A.implies(AArch64::ARMV8_2A)); - EXPECT_TRUE(AArch64::ARMV8_4A.implies(AArch64::ARMV8_3A)); - EXPECT_TRUE(AArch64::ARMV8_5A.implies(AArch64::ARMV8_4A)); - EXPECT_TRUE(AArch64::ARMV8_6A.implies(AArch64::ARMV8_5A)); - EXPECT_TRUE(AArch64::ARMV8_7A.implies(AArch64::ARMV8_6A)); - EXPECT_TRUE(AArch64::ARMV8_8A.implies(AArch64::ARMV8_7A)); - EXPECT_TRUE(AArch64::ARMV8_9A.implies(AArch64::ARMV8_8A)); - - EXPECT_TRUE(AArch64::ARMV9_1A.implies(AArch64::ARMV9A)); - EXPECT_TRUE(AArch64::ARMV9_2A.implies(AArch64::ARMV9_1A)); - EXPECT_TRUE(AArch64::ARMV9_3A.implies(AArch64::ARMV9_2A)); - EXPECT_TRUE(AArch64::ARMV9_4A.implies(AArch64::ARMV9_3A)); - - EXPECT_TRUE(AArch64::ARMV9A.implies(AArch64::ARMV8_5A)); - EXPECT_TRUE(AArch64::ARMV9_1A.implies(AArch64::ARMV8_6A)); - EXPECT_TRUE(AArch64::ARMV9_2A.implies(AArch64::ARMV8_7A)); - EXPECT_TRUE(AArch64::ARMV9_3A.implies(AArch64::ARMV8_8A)); - EXPECT_TRUE(AArch64::ARMV9_4A.implies(AArch64::ARMV8_9A)); + EXPECT_EQ(AArch64::ArchKind::ARMV8_5A, + AArch64::convertV9toV8(AArch64::ArchKind::ARMV9A)); + EXPECT_EQ(AArch64::ArchKind::ARMV8_6A, + AArch64::convertV9toV8(AArch64::ArchKind::ARMV9_1A)); + EXPECT_EQ(AArch64::ArchKind::ARMV8_7A, + AArch64::convertV9toV8(AArch64::ArchKind::ARMV9_2A)); + EXPECT_EQ(AArch64::ArchKind::ARMV8_8A, + AArch64::convertV9toV8(AArch64::ArchKind::ARMV9_3A)); } TEST(TargetParserTest, AArch64ArchExtFeature) { |
