[llvm] [InstCombine] Support reassoc for foldLogicOfFCmps (PR #116065)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 13 07:26:47 PST 2024
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 9c928d0308eb75f52e570d61330975a67e0be71c c23092a7ce4ddcdb808b139f91ef71bfddc1257a --extensions cpp -- llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
index 882604e79a..0e2bd19f13 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
@@ -2739,29 +2739,25 @@ Instruction *InstCombinerImpl::visitAnd(BinaryOperator &I) {
bool IsLogical = isa<SelectInst>(Op1);
// Op0 & (X && Y) --> (Op0 && X) && Y
if (Value *Res = foldBooleanAndOr(Op0, X, I, /* IsAnd */ true, IsLogical))
- return replaceInstUsesWith(I, IsLogical
- ? Builder.CreateLogicalAnd(Res, Y)
- : Builder.CreateAnd(Res, Y));
+ return replaceInstUsesWith(I, IsLogical ? Builder.CreateLogicalAnd(Res, Y)
+ : Builder.CreateAnd(Res, Y));
// Op0 & (X && Y) --> X && (Op0 & Y)
if (Value *Res = foldBooleanAndOr(Op0, Y, I, /* IsAnd */ true,
/* IsLogical */ false))
- return replaceInstUsesWith(I, IsLogical
- ? Builder.CreateLogicalAnd(X, Res)
- : Builder.CreateAnd(X, Res));
+ return replaceInstUsesWith(I, IsLogical ? Builder.CreateLogicalAnd(X, Res)
+ : Builder.CreateAnd(X, Res));
}
if (match(Op0, m_OneUse(m_LogicalAnd(m_Value(X), m_Value(Y))))) {
bool IsLogical = isa<SelectInst>(Op0);
// (X && Y) & Op1 --> (X && Op1) && Y
if (Value *Res = foldBooleanAndOr(X, Op1, I, /* IsAnd */ true, IsLogical))
- return replaceInstUsesWith(I, IsLogical
- ? Builder.CreateLogicalAnd(Res, Y)
- : Builder.CreateAnd(Res, Y));
+ return replaceInstUsesWith(I, IsLogical ? Builder.CreateLogicalAnd(Res, Y)
+ : Builder.CreateAnd(Res, Y));
// (X && Y) & Op1 --> X && (Y & Op1)
if (Value *Res = foldBooleanAndOr(Y, Op1, I, /* IsAnd */ true,
/* IsLogical */ false))
- return replaceInstUsesWith(I, IsLogical
- ? Builder.CreateLogicalAnd(X, Res)
- : Builder.CreateAnd(X, Res));
+ return replaceInstUsesWith(I, IsLogical ? Builder.CreateLogicalAnd(X, Res)
+ : Builder.CreateAnd(X, Res));
}
if (Instruction *FoldedFCmps = reassociateFCmps(I, Builder))
``````````
</details>
https://github.com/llvm/llvm-project/pull/116065
More information about the llvm-commits
mailing list