aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/TargetParser/TargetParserTest.cpp
diff options
context:
space:
mode:
authorCarolineConcatto <caroline.concatto@arm.com>2025-01-14 14:26:08 +0000
committerGitHub <noreply@github.com>2025-01-14 14:26:08 +0000
commit5ec7ecd2f2d213f1777af3ff3a2e7910d00ea774 (patch)
tree3b97c55af82ea008994813a26e9a9425d1147c4e /llvm/unittests/TargetParser/TargetParserTest.cpp
parentda9df6c52a81a29302e45fd77b8dec6b4ae3b5b7 (diff)
downloadllvm-5ec7ecd2f2d213f1777af3ff3a2e7910d00ea774.zip
llvm-5ec7ecd2f2d213f1777af3ff3a2e7910d00ea774.tar.gz
llvm-5ec7ecd2f2d213f1777af3ff3a2e7910d00ea774.tar.bz2
[LLVM][AArch64] Add new feature +sme-mop4 and +sme-tmop (#121935)
The 2024-12 ISA spec release[1] add these features: FEAT_SME_MOP4(sme-mop4) to enable SME Quarter-tile outer product instructions and FEAT_SME_TMOP(sme-tmop) to enable SME Structured sparsity outer product instructions to allow these instructions to be available outside Armv9.6/sme2p2 [1] https://developer.arm.com/Architectures/A-Profile%20Architecture#Downloads
Diffstat (limited to 'llvm/unittests/TargetParser/TargetParserTest.cpp')
-rw-r--r--llvm/unittests/TargetParser/TargetParserTest.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 84d9af0..c594d38 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1343,7 +1343,8 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
AArch64::AEK_FPRCVT, AArch64::AEK_CMPBR,
AArch64::AEK_LSUI, AArch64::AEK_OCCMO,
AArch64::AEK_PCDPHINT, AArch64::AEK_POPS,
- AArch64::AEK_SVEAES, AArch64::AEK_SVEBITPERM,
+ AArch64::AEK_SVEAES, AArch64::AEK_SME_MOP4,
+ AArch64::AEK_SME_TMOP, AArch64::AEK_SVEBITPERM,
AArch64::AEK_SSVE_BITPERM,
};
@@ -1452,6 +1453,8 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
EXPECT_TRUE(llvm::is_contained(Features, "+occmo"));
EXPECT_TRUE(llvm::is_contained(Features, "+pcdphint"));
EXPECT_TRUE(llvm::is_contained(Features, "+pops"));
+ EXPECT_TRUE(llvm::is_contained(Features, "+sme-mop4"));
+ EXPECT_TRUE(llvm::is_contained(Features, "+sme-tmop"));
// Assuming we listed every extension above, this should produce the same
// result.
@@ -1611,6 +1614,8 @@ TEST(TargetParserTest, AArch64ArchExtFeature) {
{"occmo", "nooccmo", "+occmo", "-occmo"},
{"pcdphint", "nopcdphint", "+pcdphint", "-pcdphint"},
{"pops", "nopops", "+pops", "-pops"},
+ {"sme-mop4", "nosme-mop4", "+sme-mop4", "-sme-mop4"},
+ {"sme-tmop", "nosme-tmop", "+sme-tmop", "-sme-tmop"},
};
for (unsigned i = 0; i < std::size(ArchExt); i++) {
@@ -2033,7 +2038,15 @@ AArch64ExtensionDependenciesBaseArchTestParams
{AArch64::ARMV9_6A,
{"sve2", "sve-aes", "nosve2-aes"},
{"sve2"},
- {"sve2-aes", "sve-aes"}}};
+ {"sve2-aes", "sve-aes"}},
+
+ // sme-tmop -> sme
+ {AArch64::ARMV8A, {"nosme2", "sme-tmop"}, {"sme2", "sme-tmop"}, {}},
+ {AArch64::ARMV8A, {"sme-tmop", "nosme2"}, {}, {"sme2", "sme-tmop"}},
+
+ // sme-mop4 -> sme
+ {AArch64::ARMV8A, {"nosme", "sme-mop4"}, {"sme", "sme-mop4"}, {}},
+ {AArch64::ARMV8A, {"sme-mop4", "nosme"}, {}, {"sme", "sme-mop4"}}};
INSTANTIATE_TEST_SUITE_P(
AArch64ExtensionDependenciesBaseArch,