[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