[llvm] [ValueTracking] Refine known bits for linear interpolation patterns (PR #166378)

Valeriy Savchenko via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 5 08:22:20 PST 2025


================
@@ -369,6 +503,15 @@ static void computeKnownBitsAddSub(bool Add, const Value *Op0, const Value *Op1,
       isImpliedByDomCondition(ICmpInst::ICMP_SLE, Op1, Op0, Q.CxtI, Q.DL)
           .value_or(false))
     KnownOut.makeNonNegative();
+
+  if (Add) {
+    // Try to match lerp pattern and combine results
+    const KnownBits LerpKnown =
+        computeKnownBitsFromLerpPattern(Op0, Op1, DemandedElts, Q, Depth);
----------------
SavchenkoValeriy wrote:

Is that for performance reasons? Because architecturally I personally like having `KnownBits` returned as a result. We can join however many "known bits" to obtain the best conservative estimate. Can you please expand why you think that passing `KnownOut` as an out parameter is a better choice here? Thanks!

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


More information about the llvm-commits mailing list