[PATCH] D63569: Make TargetParserTest.ARMExtensionFeatures not run out of memory on 32-bit (PR42316)
Sjoerd Meijer via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 19 12:51:44 PDT 2019
SjoerdMeijer created this revision.
SjoerdMeijer added reviewers: hans, dmgreen, ostannard.
Herald added a subscriber: kristof.beyls.
Nothing of these tests made much sense. Loops were iterating too much, and I also don't think it was actually testing anything. I think we simply want to check that AEK_SOME_EXT returns "+some_ext".
https://reviews.llvm.org/D63569
Files:
unittests/Support/TargetParserTest.cpp
Index: unittests/Support/TargetParserTest.cpp
===================================================================
--- unittests/Support/TargetParserTest.cpp
+++ unittests/Support/TargetParserTest.cpp
@@ -569,15 +569,31 @@
}
TEST(TargetParserTest, ARMExtensionFeatures) {
- unsigned Extensions = ARM::AEK_CRC | ARM::AEK_CRYPTO | ARM::AEK_DSP |
- ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB | ARM::AEK_MP |
- ARM::AEK_SEC | ARM::AEK_VIRT | ARM::AEK_RAS | ARM::AEK_FP16 |
- ARM::AEK_FP16FML | ARM::AEK_FP_DP;
+ std::map<unsigned, std::vector<StringRef>> Extensions;
- for (unsigned i = 0; i <= Extensions; i++) {
- std::vector<StringRef> Features;
- EXPECT_TRUE(i == 0 ? !ARM::getExtensionFeatures(i, Features)
- : ARM::getExtensionFeatures(i, Features));
+ Extensions[ARM::AEK_CRC] = { "+crc", "-crc" };
+ Extensions[ARM::AEK_DSP] = { "+dsp", "-dsp" };
+ Extensions[ARM::AEK_HWDIVARM] = { "+hwdiv-arm", "-hwdiv-arm" };
+ Extensions[ARM::AEK_HWDIVTHUMB] = { "+hwdiv", "-hwdiv" };
+ Extensions[ARM::AEK_RAS] = { "+ras", "-ras" };
+ Extensions[ARM::AEK_FP16FML] = { "+fp16fml", "-fp16fml" };
+ Extensions[ARM::AEK_DOTPROD] = { "+dotprod", "-dotprod" };
+
+ std::vector<StringRef> Features;
+
+ for (auto &E : Extensions) {
+ Features.clear();
+
+ // test +extension
+ ARM::getExtensionFeatures(E.first, Features);
+ auto Found =
+ std::find(std::begin(Features), std::end(Features), E.second.at(0));
+ EXPECT_TRUE(Found != std::end(Features));
+
+ // test -extension
+ ARM::getExtensionFeatures(~E.first, Features);
+ Found = std::find(std::begin(Features), std::end(Features), E.second.at(1));
+ EXPECT_TRUE(Found != std::end(Features));
}
}
@@ -1019,7 +1035,6 @@
}
TEST(TargetParserTest, AArch64ExtensionFeatures) {
- std::vector<StringRef> Features;
unsigned Extensions = AArch64::AEK_CRC | AArch64::AEK_CRYPTO |
AArch64::AEK_FP | AArch64::AEK_SIMD |
AArch64::AEK_FP16 | AArch64::AEK_PROFILE |
@@ -1028,9 +1043,26 @@
AArch64::AEK_SVE2 | AArch64::AEK_DOTPROD |
AArch64::AEK_RCPC | AArch64::AEK_FP16FML;
- for (unsigned i = 0; i <= Extensions; i++)
- EXPECT_TRUE(i == 0 ? !AArch64::getExtensionFeatures(i, Features)
- : AArch64::getExtensionFeatures(i, Features));
+ std::vector<StringRef> Features;
+ AArch64::getExtensionFeatures(Extensions, Features);
+
+ auto B = std::begin(Features);
+ auto E = std::end(Features);
+
+ EXPECT_TRUE(std::find(B, E, "+crc") != E);
+ EXPECT_TRUE(std::find(B, E, "+crypto") != E);
+ EXPECT_TRUE(std::find(B, E, "+fp-armv8") != E);
+ EXPECT_TRUE(std::find(B, E, "+neon") != E);
+ EXPECT_TRUE(std::find(B, E, "+fullfp16") != E);
+ EXPECT_TRUE(std::find(B, E, "+spe") != E);
+ EXPECT_TRUE(std::find(B, E, "+ras") != E);
+ EXPECT_TRUE(std::find(B, E, "+lse") != E);
+ EXPECT_TRUE(std::find(B, E, "+rdm") != E);
+ EXPECT_TRUE(std::find(B, E, "+sve") != E);
+ EXPECT_TRUE(std::find(B, E, "+sve2") != E);
+ EXPECT_TRUE(std::find(B, E, "+dotprod") != E);
+ EXPECT_TRUE(std::find(B, E, "+rcpc") != E);
+ EXPECT_TRUE(std::find(B, E, "+fp16fml") != E);
}
TEST(TargetParserTest, AArch64ArchFeatures) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D63569.205660.patch
Type: text/x-patch
Size: 3385 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190619/2640097a/attachment.bin>
More information about the llvm-commits
mailing list