[llvm] [SelectionDAG] Add computeKnownBits support for ISD::STEP_VECTOR (PR #80452)

Philip Reames via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 7 13:15:16 PST 2024


================
@@ -3110,6 +3110,33 @@ KnownBits SelectionDAG::computeKnownBits(SDValue Op, const APInt &DemandedElts,
     }
     break;
   }
+  case ISD::STEP_VECTOR: {
+    const APInt &Step = Op.getConstantOperandAPInt(0);
+
+    if (Step.isPowerOf2())
+      Known.Zero.setLowBits(Step.logBase2());
+
+    const Function &F = getMachineFunction().getFunction();
+
+    if (!isUIntN(BitWidth, Op.getValueType().getVectorMinNumElements()))
+      break;
+    const APInt MinNumElts =
+        APInt(BitWidth, Op.getValueType().getVectorMinNumElements());
+
+    bool Overflow;
+    const APInt MaxNumElts = getVScaleRange(&F, BitWidth)
----------------
preames wrote:

I don't believe we construct them.  SDAGBuilder doesn't, so unless we have something somewhere which combines to them, no.

However, good point.  Unless we have an assert to that effect somewhere, we should handle them (via a bail out) here.

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


More information about the llvm-commits mailing list