[llvm] [DAG] isKnownNeverZero - add ISD::SHL DemandedElts handling and tests (PR #183772)

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 6 03:18:55 PST 2026


================
@@ -6256,13 +6256,13 @@ bool SelectionDAG::isKnownNeverZero(SDValue Op, const APInt &DemandedElts,
 
   case ISD::SHL: {
     if (Op->getFlags().hasNoSignedWrap() || Op->getFlags().hasNoUnsignedWrap())
-      return isKnownNeverZero(Op.getOperand(0), Depth + 1);
-    KnownBits ValKnown = computeKnownBits(Op.getOperand(0), Depth + 1);
+      return isKnownNeverZero(Op.getOperand(0),DemandedElts, Depth + 1);
+    KnownBits ValKnown = computeKnownBits(Op.getOperand(0), DemandedElts, Depth + 1);
     // 1 << X is never zero.
     if (ValKnown.One[0])
       return true;
     // If max shift cnt of known ones is non-zero, result is non-zero.
-    APInt MaxCnt = computeKnownBits(Op.getOperand(1), Depth + 1).getMaxValue();
+    APInt MaxCnt = computeKnownBits(Op.getOperand(1),DemandedElts ,Depth + 1).getMaxValue();
----------------
RKSimon wrote:

clang-format?
```suggestion
    APInt MaxCnt = computeKnownBits(Op.getOperand(1), DemandedElts,Depth + 1).getMaxValue();
```

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


More information about the llvm-commits mailing list