diff options
author | CarolineConcatto <caroline.concatto@arm.com> | 2025-01-14 14:26:08 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-01-14 14:26:08 +0000 |
commit | 5ec7ecd2f2d213f1777af3ff3a2e7910d00ea774 (patch) | |
tree | 3b97c55af82ea008994813a26e9a9425d1147c4e /llvm/unittests/TargetParser/TargetParserTest.cpp | |
parent | da9df6c52a81a29302e45fd77b8dec6b4ae3b5b7 (diff) | |
download | llvm-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.cpp | 17 |
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, |