[llvm] [InstSimplify] Generalize simplification of icmps with monotonic operands (PR #69471)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 18 09:01:56 PDT 2023
================
@@ -3103,6 +3103,54 @@ static Value *simplifyICmpWithConstant(CmpInst::Predicate Pred, Value *LHS,
return nullptr;
}
+/// Get values V_i such that V uge V_i (Greater) or V ule V_i (!Greater).
+static void getUnsignedMonotonicValues(SmallPtrSetImpl<Value *> &Res, Value *V,
+ bool Greater, unsigned Depth = 0) {
+ if (!Res.insert(V).second)
+ return;
+
+ // Can be increased if useful.
+ if (++Depth > 1)
+ return;
+
+ Value *X, *Y;
+ if (Greater) {
+ if (match(V, m_Or(m_Value(X), m_Value(Y))) ||
+ match(V, m_Intrinsic<Intrinsic::uadd_sat>(m_Value(X), m_Value(Y)))) {
----------------
goldsteinn wrote:
You can imagine a lot more cases for this. Imo should just be a switch from the start.
https://github.com/llvm/llvm-project/pull/69471
More information about the llvm-commits
mailing list