[llvm] [InstCombine] Missing optimization: fold mul (select a, b), (select b, a) to mul a, b (PR #74953)
Sizov Nikita via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 11 12:02:57 PST 2023
================
@@ -1132,6 +1132,15 @@ Value *InstCombinerImpl::SimplifySelectsFeedingBinaryOp(BinaryOperator &I,
};
if (LHSIsSelect && RHSIsSelect && A == D) {
+ // op(select(%v, %x, %y), select(%v, %y, %x)) --> op(%x, %y)
+ if (I.isCommutative() && B == F && C == E) {
+ Value *BI = Builder.CreateBinOp(I.getOpcode(), B, E);
+ if (auto *BO = dyn_cast<BinaryOperator>(BI))
+ BO->copyIRFlags(BI);
+ BI->takeName(&I);
----------------
snikitav wrote:
Done
https://github.com/llvm/llvm-project/pull/74953
More information about the llvm-commits
mailing list