aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Support/TargetParserTest.cpp
diff options
context:
space:
mode:
authorTomas Matheson <tomas.matheson@arm.com>2022-10-23 21:44:21 +0100
committerTomas Matheson <tomas.matheson@arm.com>2022-11-09 11:52:35 +0000
commit103bbddde66f4157b52c2b6d7532c1dd0dfcaf94 (patch)
tree821eda50319d157a5f8c52c34fe7e23470b70521 /llvm/unittests/Support/TargetParserTest.cpp
parent23bb4735cad4027c55ca45f2fc8a06fd4341065f (diff)
downloadllvm-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.cpp67
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> {};