//===----------- TargetParser.cpp - Target Parser -------------------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "gtest/gtest.h" #include "llvm/Support/TargetParser.h" 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 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(0); AK <= ARM::ArchKind::AK_LAST; AK = static_cast(static_cast(AK) + 1)) EXPECT_TRUE(AK == ARM::AK_LAST ? ARM::getArchName(AK).empty() : !ARM::getArchName(AK).empty()); } TEST(TargetParserTest, ARMCPUAttr) { for (ARM::ArchKind AK = static_cast(0); AK <= ARM::ArchKind::AK_LAST; AK = static_cast(static_cast(AK) + 1)) EXPECT_TRUE((AK == ARM::AK_INVALID || AK == ARM::AK_LAST) ? ARM::getCPUAttr(AK).empty() : !ARM::getCPUAttr(AK).empty()); } TEST(TargetParserTest, ARMSubArch) { for (ARM::ArchKind AK = static_cast(0); AK <= ARM::ArchKind::AK_LAST; AK = static_cast(static_cast(AK) + 1)) EXPECT_TRUE((AK == ARM::AK_INVALID || AK == ARM::AK_IWMMXT || AK == ARM::AK_IWMMXT2 || AK == ARM::AK_LAST) ? ARM::getSubArch(AK).empty() : !ARM::getSubArch(AK).empty()); } TEST(TargetParserTest, ARMFPUName) { for (ARM::FPUKind FK = static_cast(0); FK <= ARM::FPUKind::FK_LAST; FK = static_cast(static_cast(FK) + 1)) EXPECT_TRUE(FK == ARM::FK_LAST ? ARM::getFPUName(FK).empty() : !ARM::getFPUName(FK).empty()); } TEST(TargetParserTest, AArch64ArchName) { for (ARM::ArchKind AK = static_cast(0); AK <= ARM::ArchKind::AK_LAST; AK = static_cast(static_cast(AK) + 1)) EXPECT_TRUE(contains(kAArch64ArchKinds, static_cast(AK)) ? !AArch64::getArchName(AK).empty() : AArch64::getArchName(AK).empty()); } TEST(TargetParserTest, AArch64CPUAttr) { for (ARM::ArchKind AK = static_cast(0); AK <= ARM::ArchKind::AK_LAST; AK = static_cast(static_cast(AK) + 1)) EXPECT_TRUE(contains(kAArch64ArchKinds, static_cast(AK)) ? !AArch64::getCPUAttr(AK).empty() : AArch64::getCPUAttr(AK).empty()); } TEST(TargetParserTest, AArch64SubArch) { for (ARM::ArchKind AK = static_cast(0); AK <= ARM::ArchKind::AK_LAST; AK = static_cast(static_cast(AK) + 1)) EXPECT_TRUE(contains(kAArch64ArchKinds, static_cast(AK)) ? !AArch64::getSubArch(AK).empty() : AArch64::getSubArch(AK).empty()); } }