aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Support/KnownBitsTest.cpp
diff options
context:
space:
mode:
authorJay Foad <jay.foad@amd.com>2023-01-26 11:34:50 -0600
committerNoah Goldstein <goldstein.w.n@gmail.com>2023-02-18 13:31:07 -0600
commit6749d187c6dfd1b126698e44276bbf1f9050beb8 (patch)
treef337d0670c9562b993d2b273a40ecf4b7ff0e532 /llvm/unittests/Support/KnownBitsTest.cpp
parent4384127549e2ddcc5a11fa96885760363d102682 (diff)
downloadllvm-6749d187c6dfd1b126698e44276bbf1f9050beb8.zip
llvm-6749d187c6dfd1b126698e44276bbf1f9050beb8.tar.gz
llvm-6749d187c6dfd1b126698e44276bbf1f9050beb8.tar.bz2
[KnownBits] Add blsi and blsmsk
Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D142519
Diffstat (limited to 'llvm/unittests/Support/KnownBitsTest.cpp')
-rw-r--r--llvm/unittests/Support/KnownBitsTest.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/unittests/Support/KnownBitsTest.cpp b/llvm/unittests/Support/KnownBitsTest.cpp
index 2f5d2e8..da1f6b5 100644
--- a/llvm/unittests/Support/KnownBitsTest.cpp
+++ b/llvm/unittests/Support/KnownBitsTest.cpp
@@ -284,6 +284,12 @@ TEST(KnownBitsTest, UnaryExhaustive) {
KnownAbs.Zero.setAllBits();
KnownAbs.One.setAllBits();
KnownBits KnownAbsPoison(KnownAbs);
+ KnownBits KnownBlsi(Bits);
+ KnownBlsi.Zero.setAllBits();
+ KnownBlsi.One.setAllBits();
+ KnownBits KnownBlsmsk(Bits);
+ KnownBlsmsk.Zero.setAllBits();
+ KnownBlsmsk.One.setAllBits();
ForeachNumInKnownBits(Known, [&](const APInt &N) {
APInt Res = N.abs();
@@ -294,6 +300,14 @@ TEST(KnownBitsTest, UnaryExhaustive) {
KnownAbsPoison.One &= Res;
KnownAbsPoison.Zero &= ~Res;
}
+
+ Res = N & -N;
+ KnownBlsi.One &= Res;
+ KnownBlsi.Zero &= ~Res;
+
+ Res = N ^ (N - 1);
+ KnownBlsmsk.One &= Res;
+ KnownBlsmsk.Zero &= ~Res;
});
// abs() is conservatively correct, but not guaranteed to be precise.
@@ -304,6 +318,12 @@ TEST(KnownBitsTest, UnaryExhaustive) {
KnownBits ComputedAbsPoison = Known.abs(true);
EXPECT_TRUE(ComputedAbsPoison.Zero.isSubsetOf(KnownAbsPoison.Zero));
EXPECT_TRUE(ComputedAbsPoison.One.isSubsetOf(KnownAbsPoison.One));
+
+ KnownBits ComputedBlsi = Known.blsi();
+ EXPECT_EQ(KnownBlsi, ComputedBlsi);
+
+ KnownBits ComputedBlsmsk = Known.blsmsk();
+ EXPECT_EQ(KnownBlsmsk, ComputedBlsmsk);
});
}