[PATCH] D124503: [InstCombine] sub(add(X,Y),umin(Y,Z)) --> add(X,usub.sat(Y,Z))
Sanjay Patel via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri May 6 05:18:34 PDT 2022
- Previous message: [PATCH] D124503: [InstCombine] sub(add(X,Y),umin(Y,Z)) --> add(X,usub.sat(Y,Z))
- Next message: [PATCH] D124503: [InstCombine] sub(add(X,Y),umin(Y,Z)) --> add(X,usub.sat(Y,Z))
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
spatel added inline comments.
================
Comment at: llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp:2042
+ if (match(Op1, m_UMin(m_Specific(Y), m_Value(Z))) ||
+ match(Op1, m_UMin(m_Value(Z), m_Specific(Y)))) {
+ Value *USub =
----------------
RKSimon wrote:
> Do we have a m_c_UMin that we can use instead?
We do have that matcher, but this would be easier if we match the umin first and then find the common operand in the add?
// sub(add(X,Y),umin(Y,Z)) --> add(X,usub.sat(Y,Z))
// sub(add(X,Z),umin(Y,Z)) --> add(X,usub.sat(Y,Z))
Value *X, *Y, *Z;
if (match(Op1, m_OneUse(m_UMin(m_Value(Y), m_Value(Z)))) &&
(match(Op0, m_OneUse(m_c_Add(m_Specific(Y), m_Value(X)))) ||
match(Op0, m_OneUse(m_c_Add(m_Specific(Z), m_Value(X)))))) {
Value *USub =
Builder.CreateIntrinsic(Intrinsic::usub_sat, I.getType(), {Y, Z});
return BinaryOperator::CreateAdd(X, USub);
}
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D124503/new/
https://reviews.llvm.org/D124503
- Previous message: [PATCH] D124503: [InstCombine] sub(add(X,Y),umin(Y,Z)) --> add(X,usub.sat(Y,Z))
- Next message: [PATCH] D124503: [InstCombine] sub(add(X,Y),umin(Y,Z)) --> add(X,usub.sat(Y,Z))
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the llvm-commits
mailing list