[llvm] [GlobalISel] Add `isKnownNeverZero` to `GISelValueTracking` (PR #198438)

Alan Li via llvm-commits llvm-commits at lists.llvm.org
Tue May 19 08:19:13 PDT 2026


================
@@ -105,6 +105,202 @@ bool GISelValueTracking::signBitIsZero(Register R) {
   return maskedValueIsZero(R, APInt::getSignMask(BitWidth));
 }
 
+bool GISelValueTracking::isKnownNeverZero(Register R, unsigned Depth) {
+  LLT Ty = MRI.getType(R);
+  APInt DemandedElts =
+      Ty.isFixedVector() ? APInt::getAllOnes(Ty.getNumElements()) : APInt(1, 1);
+  return isKnownNeverZero(R, DemandedElts, Depth);
+}
+
+bool GISelValueTracking::isKnownNeverZero(Register R, const APInt &DemandedElts,
+                                          unsigned Depth) {
+  if (Depth >= getMaxDepth())
+    return false;
+
+  MachineInstr *MI = MRI.getVRegDef(R);
+  if (!MI)
+    return false;
+
+  auto Recurse = [&](Register Reg, const APInt &Elts) {
----------------
lialan wrote:

inlined

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


More information about the llvm-commits mailing list