[llvm] 4ee240b - [NFC] [ValueTracking] Add unittest for haveNoCommonBitsSet

Chuanqi Xu via llvm-commits llvm-commits at lists.llvm.org
Sun Feb 13 22:10:57 PST 2022


Author: Chuanqi Xu
Date: 2022-02-14T14:10:30+08:00
New Revision: 4ee240b86085ef90d20ce731a434287805d119ea

URL: https://github.com/llvm/llvm-project/commit/4ee240b86085ef90d20ce731a434287805d119ea
DIFF: https://github.com/llvm/llvm-project/commit/4ee240b86085ef90d20ce731a434287805d119ea.diff

LOG: [NFC] [ValueTracking] Add unittest for haveNoCommonBitsSet

Added: 
    

Modified: 
    llvm/unittests/Analysis/ValueTrackingTest.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/unittests/Analysis/ValueTrackingTest.cpp b/llvm/unittests/Analysis/ValueTrackingTest.cpp
index f4b4d345a054..9fb4a7ee7734 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 *>> {


        


More information about the llvm-commits mailing list