[llvm] [InstCombine] Fold comparison of adding two z/sext booleans (PR #67895)

via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 2 02:25:22 PDT 2023


github-actions[bot] wrote:


<!--LLVM CODE FORMAT COMMENT: {clang-format}-->

:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff efb46515ce9bfcc1c51d935bfbf1c5680980b275 b0db0ba941e07225d89884a85d76a074b7068fd9 -- llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
index 464ea2175132..fa2871f424c9 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
@@ -2899,38 +2899,38 @@ Instruction *InstCombinerImpl::foldICmpSubConstant(ICmpInst &Cmp,
 static Value *createLogicFromTable(const std::bitset<4> &Table, Value *Op0,
                                    Value *Op1, IRBuilderBase &Builder) {
   switch (Table.to_ulong()) {
-    case 0: // 0 0 0 0
-      return Builder.getFalse();
-    case 1: // 0 0 0 1
-      return Builder.CreateNot(Builder.CreateOr(Op0, Op1));
-    case 2: // 0 0 1 0
-      return Builder.CreateAnd(Builder.CreateNot(Op0), Op1);
-    case 3: // 0 0 1 1
-      return Op1;
-    case 4: // 0 1 0 0
-      return Builder.CreateAnd(Op0, Builder.CreateNot(Op1));
-    case 5: // 0 1 0 1
-      return Op0;
-    case 6: // 0 1 1 0
-      return Builder.CreateXor(Op0, Op1);
-    case 7: // 0 1 1 1
-      return Builder.CreateNot(Builder.CreateAnd(Op0, Op1));
-    case 8: // 1 0 0 0
-      return Builder.CreateAnd(Op0, Op1);
-    case 9: // 1 0 0 1
-      return Builder.CreateNot(Builder.CreateXor(Op0, Op1));
-    case 10: // 1 0 1 0
-      return Builder.CreateNot(Op1);
-    case 11: // 1 0 1 1
-      return Builder.CreateOr(Builder.CreateNot(Op0), Op1);
-    case 12: // 1 1 0 0
-      return Builder.CreateNot(Op1);
-    case 13: // 1 1 0 1
-      return Builder.CreateOr(Op0, Builder.CreateNot(Op1));
-    case 14: // 1 1 1 0
-      return Builder.CreateOr(Op0, Op1);
-    case 15: // 1 1 1 1
-      return Builder.getTrue();
+  case 0: // 0 0 0 0
+    return Builder.getFalse();
+  case 1: // 0 0 0 1
+    return Builder.CreateNot(Builder.CreateOr(Op0, Op1));
+  case 2: // 0 0 1 0
+    return Builder.CreateAnd(Builder.CreateNot(Op0), Op1);
+  case 3: // 0 0 1 1
+    return Op1;
+  case 4: // 0 1 0 0
+    return Builder.CreateAnd(Op0, Builder.CreateNot(Op1));
+  case 5: // 0 1 0 1
+    return Op0;
+  case 6: // 0 1 1 0
+    return Builder.CreateXor(Op0, Op1);
+  case 7: // 0 1 1 1
+    return Builder.CreateNot(Builder.CreateAnd(Op0, Op1));
+  case 8: // 1 0 0 0
+    return Builder.CreateAnd(Op0, Op1);
+  case 9: // 1 0 0 1
+    return Builder.CreateNot(Builder.CreateXor(Op0, Op1));
+  case 10: // 1 0 1 0
+    return Builder.CreateNot(Op1);
+  case 11: // 1 0 1 1
+    return Builder.CreateOr(Builder.CreateNot(Op0), Op1);
+  case 12: // 1 1 0 0
+    return Builder.CreateNot(Op1);
+  case 13: // 1 1 0 1
+    return Builder.CreateOr(Op0, Builder.CreateNot(Op1));
+  case 14: // 1 1 1 0
+    return Builder.CreateOr(Op0, Op1);
+  case 15: // 1 1 1 1
+    return Builder.getTrue();
   }
   return nullptr;
 }
@@ -2949,9 +2949,8 @@ Instruction *InstCombinerImpl::foldICmpAddConstant(ICmpInst &Cmp,
                                       m_OneUse(m_ZExtOrSExt(m_Value(Op0)))),
                          m_CombineAnd(m_Instruction(Ext1),
                                       m_OneUse(m_ZExtOrSExt(m_Value(Op1)))))) &&
-    Op0->getType()->isIntOrIntVectorTy(1) &&
-    Op1->getType()->isIntOrIntVectorTy(1) &&
-    C.sge(-2) && C.sle(2)) {
+      Op0->getType()->isIntOrIntVectorTy(1) &&
+      Op1->getType()->isIntOrIntVectorTy(1) && C.sge(-2) && C.sle(2)) {
     unsigned BW = C.getBitWidth();
     std::bitset<4> Table;
     auto ComputeTable = [&](bool Op0Val, bool Op1Val) {

``````````

</details>


https://github.com/llvm/llvm-project/pull/67895


More information about the llvm-commits mailing list