diff options
| author | Ties Stuij <ties.stuij@arm.com> | 2022-11-16 09:47:55 +0000 |
|---|---|---|
| committer | Ties Stuij <ties@stuij.se> | 2022-11-16 10:20:14 +0000 |
| commit | 983f63f7f0d1643eb138db004351a18d1b3e91a3 (patch) | |
| tree | f3fd2026728809714de69e3a524a811d7904f6e1 /llvm/unittests/Support/TargetParserTest.cpp | |
| parent | a1ac6efcb01ab8840d269056f01fb564b44c7ddc (diff) | |
| download | llvm-983f63f7f0d1643eb138db004351a18d1b3e91a3.zip llvm-983f63f7f0d1643eb138db004351a18d1b3e91a3.tar.gz llvm-983f63f7f0d1643eb138db004351a18d1b3e91a3.tar.bz2 | |
[AArch64][ARM] add Armv8.9-a/Armv9.4-a identifier support
For both ARM and AArch64 add support for specifying -march=armv8.9a/armv9.4a to
clang. Add backend plumbing like target parser and predicate support.
For a summary of Amv8.9/Armv9.4 features, see:
https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/arm-a-profile-architecture-2022
For detailed information, consult the Arm Architecture Reference Manual for
A-profile architecture:
https://developer.arm.com/documentation/ddi0487/latest/
People who contributed to this patch:
- Keith Walker
- Ties Stuij
Reviewed By: tmatheson
Differential Revision: https://reviews.llvm.org/D138010
Diffstat (limited to 'llvm/unittests/Support/TargetParserTest.cpp')
| -rw-r--r-- | llvm/unittests/Support/TargetParserTest.cpp | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/llvm/unittests/Support/TargetParserTest.cpp b/llvm/unittests/Support/TargetParserTest.cpp index 9ec20ef..8f48c63 100644 --- a/llvm/unittests/Support/TargetParserTest.cpp +++ b/llvm/unittests/Support/TargetParserTest.cpp @@ -32,10 +32,12 @@ const char *ARMArch[] = { "armv8a", "armv8l", "armv8.1-a", "armv8.1a", "armv8.2-a", "armv8.2a", "armv8.3-a", "armv8.3a", "armv8.4-a", "armv8.4a", "armv8.5-a", "armv8.5a", "armv8.6-a", "armv8.6a", "armv8.7-a", - "armv8.7a", "armv8.8-a", "armv8.8a", "armv8-r", "armv8r", - "armv8-m.base", "armv8m.base", "armv8-m.main", "armv8m.main", "iwmmxt", - "iwmmxt2", "xscale", "armv8.1-m.main", "armv9-a", "armv9", - "armv9a", "armv9.1-a", "armv9.1a", "armv9.2-a", "armv9.2a", + "armv8.7a", "armv8.8-a", "armv8.8a", "armv8.9-a", "armv8.9a", + "armv8-r", "armv8r", "armv8-m.base", "armv8m.base", "armv8-m.main", + "armv8m.main", "iwmmxt", "iwmmxt2", "xscale", "armv8.1-m.main", + "armv9-a", "armv9", "armv9a", "armv9.1-a", "armv9.1a", + "armv9.2-a", "armv9.2a", "armv9.3-a", "armv9.3a", "armv9.4-a", + "armv9.4a", }; template <ARM::ISAKind ISAKind> @@ -511,6 +513,9 @@ TEST(TargetParserTest, testARMArch) { EXPECT_TRUE(testARMArch("armv8.8-a", "generic", "v8.8a", ARMBuildAttrs::CPUArch::v8_A)); EXPECT_TRUE( + testARMArch("armv8.9-a", "generic", "v8.9a", + ARMBuildAttrs::CPUArch::v8_A)); + EXPECT_TRUE( testARMArch("armv9-a", "generic", "v9a", ARMBuildAttrs::CPUArch::v9_A)); EXPECT_TRUE( @@ -523,6 +528,9 @@ TEST(TargetParserTest, testARMArch) { testARMArch("armv9.3-a", "generic", "v9.3a", ARMBuildAttrs::CPUArch::v9_A)); EXPECT_TRUE( + testARMArch("armv9.4-a", "generic", "v9.4a", + ARMBuildAttrs::CPUArch::v9_A)); + EXPECT_TRUE( testARMArch("armv8-r", "cortex-r52", "v8r", ARMBuildAttrs::CPUArch::v8_R)); EXPECT_TRUE( @@ -852,10 +860,12 @@ TEST(TargetParserTest, ARMparseArchProfile) { case ARM::ArchKind::ARMV8_6A: case ARM::ArchKind::ARMV8_7A: case ARM::ArchKind::ARMV8_8A: + case ARM::ArchKind::ARMV8_9A: case ARM::ArchKind::ARMV9A: case ARM::ArchKind::ARMV9_1A: case ARM::ArchKind::ARMV9_2A: case ARM::ArchKind::ARMV9_3A: + case ARM::ArchKind::ARMV9_4A: EXPECT_EQ(ARM::ProfileKind::A, ARM::parseArchProfile(ARMArch[i])); break; default: @@ -1422,12 +1432,18 @@ TEST(TargetParserTest, testAArch64Arch) { ARMBuildAttrs::CPUArch::v8_A)); EXPECT_TRUE(testAArch64Arch("armv8.8-a", "generic", "v8.8a", ARMBuildAttrs::CPUArch::v8_A)); + EXPECT_TRUE(testAArch64Arch("armv8.9-a", "generic", "v8.9a", + ARMBuildAttrs::CPUArch::v8_A)); EXPECT_TRUE(testAArch64Arch("armv9-a", "generic", "v9a", ARMBuildAttrs::CPUArch::v8_A)); EXPECT_TRUE(testAArch64Arch("armv9.1-a", "generic", "v9.1a", ARMBuildAttrs::CPUArch::v8_A)); EXPECT_TRUE(testAArch64Arch("armv9.2-a", "generic", "v9.2a", ARMBuildAttrs::CPUArch::v8_A)); + EXPECT_TRUE(testAArch64Arch("armv9.3-a", "generic", "v9.3a", + ARMBuildAttrs::CPUArch::v8_A)); + EXPECT_TRUE(testAArch64Arch("armv9.4-a", "generic", "v9.4a", + ARMBuildAttrs::CPUArch::v8_A)); } bool testAArch64Extension(StringRef CPUName, AArch64::ArchKind AK, |
