diff options
Diffstat (limited to 'llvm/unittests/Support/TargetParserTest.cpp')
-rw-r--r-- | llvm/unittests/Support/TargetParserTest.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/llvm/unittests/Support/TargetParserTest.cpp b/llvm/unittests/Support/TargetParserTest.cpp index 4bdf03aa861..21994f27b73 100644 --- a/llvm/unittests/Support/TargetParserTest.cpp +++ b/llvm/unittests/Support/TargetParserTest.cpp @@ -13,6 +13,20 @@ using namespace llvm; namespace { +static const unsigned kAArch64ArchKinds[] = { +#define AARCH64_ARCH(NAME, ID, CPU_ATTR, SUB_ARCH, ARCH_ATTR, ARCH_FPU, \ + ARCH_BASE_EXT) \ + llvm::ARM::ID, +#include "llvm/Support/AArch64TargetParser.def" +#undef AARCH64_ARCH +}; + +template <typename T, size_t N> +bool contains(const T (&array)[N], const T element) { + return std::find(std::begin(array), std::end(array), element) != + std::end(array); +} + TEST(TargetParserTest, ARMArchName) { for (ARM::ArchKind AK = static_cast<ARM::ArchKind>(0); AK <= ARM::ArchKind::AK_LAST; @@ -47,5 +61,32 @@ TEST(TargetParserTest, ARMFPUName) { EXPECT_TRUE(FK == ARM::FK_LAST ? ARM::getFPUName(FK).empty() : !ARM::getFPUName(FK).empty()); } + +TEST(TargetParserTest, AArch64ArchName) { + for (ARM::ArchKind AK = static_cast<ARM::ArchKind>(0); + AK <= ARM::ArchKind::AK_LAST; + AK = static_cast<ARM::ArchKind>(static_cast<unsigned>(AK) + 1)) + EXPECT_TRUE(contains(kAArch64ArchKinds, static_cast<unsigned>(AK)) + ? !AArch64::getArchName(AK).empty() + : AArch64::getArchName(AK).empty()); +} + +TEST(TargetParserTest, AArch64CPUAttr) { + for (ARM::ArchKind AK = static_cast<ARM::ArchKind>(0); + AK <= ARM::ArchKind::AK_LAST; + AK = static_cast<ARM::ArchKind>(static_cast<unsigned>(AK) + 1)) + EXPECT_TRUE(contains(kAArch64ArchKinds, static_cast<unsigned>(AK)) + ? !AArch64::getCPUAttr(AK).empty() + : AArch64::getCPUAttr(AK).empty()); +} + +TEST(TargetParserTest, AArch64SubArch) { + for (ARM::ArchKind AK = static_cast<ARM::ArchKind>(0); + AK <= ARM::ArchKind::AK_LAST; + AK = static_cast<ARM::ArchKind>(static_cast<unsigned>(AK) + 1)) + EXPECT_TRUE(contains(kAArch64ArchKinds, static_cast<unsigned>(AK)) + ? !AArch64::getSubArch(AK).empty() + : AArch64::getSubArch(AK).empty()); +} } |