diff options
| author | Tomas Matheson <tomas.matheson@arm.com> | 2022-10-23 21:44:21 +0100 |
|---|---|---|
| committer | Tomas Matheson <tomas.matheson@arm.com> | 2022-11-09 11:52:35 +0000 |
| commit | 103bbddde66f4157b52c2b6d7532c1dd0dfcaf94 (patch) | |
| tree | 821eda50319d157a5f8c52c34fe7e23470b70521 /llvm/unittests/Support/TargetParserTest.cpp | |
| parent | 23bb4735cad4027c55ca45f2fc8a06fd4341065f (diff) | |
| download | llvm-103bbddde66f4157b52c2b6d7532c1dd0dfcaf94.zip llvm-103bbddde66f4157b52c2b6d7532c1dd0dfcaf94.tar.gz llvm-103bbddde66f4157b52c2b6d7532c1dd0dfcaf94.tar.bz2 | |
[ARM] Move Triple::getARMCPUForArch into ARMTargetParser
This is very backend specific so either belongs in Toolchains/ARM or in
ARMTargetParser. Since it is used in lldb, ARMTargetParser made more sense.
This is part of an effort to move information about ARM/AArch64 architecture
versions, extensions and CPUs into their respective TargetParsers.
Differential Revision: https://reviews.llvm.org/D137564
Diffstat (limited to 'llvm/unittests/Support/TargetParserTest.cpp')
| -rw-r--r-- | llvm/unittests/Support/TargetParserTest.cpp | 67 |
1 files changed, 66 insertions, 1 deletions
diff --git a/llvm/unittests/Support/TargetParserTest.cpp b/llvm/unittests/Support/TargetParserTest.cpp index 1e0dc33..d94005e 100644 --- a/llvm/unittests/Support/TargetParserTest.cpp +++ b/llvm/unittests/Support/TargetParserTest.cpp @@ -6,12 +6,13 @@ // //===----------------------------------------------------------------------===// +#include "llvm/Support/TargetParser.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/StringExtras.h" +#include "llvm/ADT/Triple.h" #include "llvm/Support/AArch64TargetParser.h" #include "llvm/Support/ARMBuildAttributes.h" #include "llvm/Support/FormatVariadic.h" -#include "llvm/Support/TargetParser.h" #include "gmock/gmock.h" #include "gtest/gtest.h" #include <string> @@ -871,6 +872,70 @@ TEST(TargetParserTest, ARMparseArchVersion) { EXPECT_EQ(5u, ARM::parseArchVersion(ARMArch[i])); } +TEST(TargetParserTest, getARMCPUForArch) { + // Platform specific defaults. + { + llvm::Triple Triple("arm--nacl"); + EXPECT_EQ("cortex-a8", ARM::getARMCPUForArch(Triple)); + } + { + llvm::Triple Triple("arm--openbsd"); + EXPECT_EQ("cortex-a8", ARM::getARMCPUForArch(Triple)); + } + { + llvm::Triple Triple("armv6-unknown-freebsd"); + EXPECT_EQ("arm1176jzf-s", ARM::getARMCPUForArch(Triple)); + } + { + llvm::Triple Triple("thumbv6-unknown-freebsd"); + EXPECT_EQ("arm1176jzf-s", ARM::getARMCPUForArch(Triple)); + } + { + llvm::Triple Triple("armebv6-unknown-freebsd"); + EXPECT_EQ("arm1176jzf-s", ARM::getARMCPUForArch(Triple)); + } + { + llvm::Triple Triple("arm--win32"); + EXPECT_EQ("cortex-a9", ARM::getARMCPUForArch(Triple)); + EXPECT_EQ("generic", ARM::getARMCPUForArch(Triple, "armv8-a")); + } + // Some alternative architectures + { + llvm::Triple Triple("armv7k-apple-ios9"); + EXPECT_EQ("cortex-a7", ARM::getARMCPUForArch(Triple)); + } + { + llvm::Triple Triple("armv7k-apple-watchos3"); + EXPECT_EQ("cortex-a7", ARM::getARMCPUForArch(Triple)); + } + { + llvm::Triple Triple("armv7k-apple-tvos9"); + EXPECT_EQ("cortex-a7", ARM::getARMCPUForArch(Triple)); + } + // armeb is permitted, but armebeb is not + { + llvm::Triple Triple("armeb-none-eabi"); + EXPECT_EQ("arm7tdmi", ARM::getARMCPUForArch(Triple)); + } + { + llvm::Triple Triple("armebeb-none-eabi"); + EXPECT_EQ("", ARM::getARMCPUForArch(Triple)); + } + { + llvm::Triple Triple("armebv6eb-none-eabi"); + EXPECT_EQ("", ARM::getARMCPUForArch(Triple)); + } + // xscaleeb is permitted, but armebxscale is not + { + llvm::Triple Triple("xscaleeb-none-eabi"); + EXPECT_EQ("xscale", ARM::getARMCPUForArch(Triple)); + } + { + llvm::Triple Triple("armebxscale-none-eabi"); + EXPECT_EQ("", ARM::getARMCPUForArch(Triple)); + } +} + class AArch64CPUTestFixture : public ::testing::TestWithParam<ARMCPUTestParams> {}; |
