diff options
author | Chuanqi Xu <yedeng.yd@linux.alibaba.com> | 2022-02-14 14:09:26 +0800 |
---|---|---|
committer | Chuanqi Xu <yedeng.yd@linux.alibaba.com> | 2022-02-14 14:10:30 +0800 |
commit | 4ee240b86085ef90d20ce731a434287805d119ea (patch) | |
tree | 5b6c6e5173b85af82ab8ba8212d79c1ad6e01d00 /llvm/unittests/Analysis/ValueTrackingTest.cpp | |
parent | 3e19ba36fca9fa0b6aba0de2767f26dfd463cb5a (diff) | |
download | llvm-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.cpp | 22 |
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 *>> { |