aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Analysis/ValueTrackingTest.cpp
diff options
context:
space:
mode:
authorChuanqi Xu <yedeng.yd@linux.alibaba.com>2022-02-14 14:09:26 +0800
committerChuanqi Xu <yedeng.yd@linux.alibaba.com>2022-02-14 14:10:30 +0800
commit4ee240b86085ef90d20ce731a434287805d119ea (patch)
tree5b6c6e5173b85af82ab8ba8212d79c1ad6e01d00 /llvm/unittests/Analysis/ValueTrackingTest.cpp
parent3e19ba36fca9fa0b6aba0de2767f26dfd463cb5a (diff)
downloadllvm-4ee240b86085ef90d20ce731a434287805d119ea.zip
llvm-4ee240b86085ef90d20ce731a434287805d119ea.tar.gz
llvm-4ee240b86085ef90d20ce731a434287805d119ea.tar.bz2
[NFC] [ValueTracking] Add unittest for haveNoCommonBitsSet
Diffstat (limited to 'llvm/unittests/Analysis/ValueTrackingTest.cpp')
-rw-r--r--llvm/unittests/Analysis/ValueTrackingTest.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/llvm/unittests/Analysis/ValueTrackingTest.cpp b/llvm/unittests/Analysis/ValueTrackingTest.cpp
index f4b4d34..9fb4a7e 100644
--- a/llvm/unittests/Analysis/ValueTrackingTest.cpp
+++ b/llvm/unittests/Analysis/ValueTrackingTest.cpp
@@ -1725,6 +1725,28 @@ TEST_F(ComputeKnownBitsTest, ComputeKnownBitsCrash) {
A, M->getDataLayout(), /* Depth */ 0, &AC, F->front().getTerminator());
}
+TEST_F(ValueTrackingTest, HaveNoCommonBitsSet) {
+ {
+ // Check for an inverted mask: (X & ~M) op (Y & M).
+ auto M = parseModule(R"(
+ define i32 @test(i32 %X, i32 %Y, i32 %M) {
+ %1 = xor i32 %M, -1
+ %LHS = and i32 %1, %X
+ %RHS = and i32 %Y, %M
+ %Ret = add i32 %LHS, %RHS
+ ret i32 %Ret
+ })");
+
+ F = M->getFunction("test");
+ auto *LHS = findInstructionByNameOrNull(F, "LHS");
+ auto *RHS = findInstructionByNameOrNull(F, "RHS");
+
+ const DataLayout &DL = M->getDataLayout();
+ EXPECT_TRUE(haveNoCommonBitsSet(LHS, RHS, DL));
+ EXPECT_TRUE(haveNoCommonBitsSet(RHS, LHS, DL));
+ }
+}
+
class IsBytewiseValueTest : public ValueTrackingTest,
public ::testing::WithParamInterface<
std::pair<const char *, const char *>> {