[llvm] [GlobalISel] Add iterative known-bits evaluation to GISelValueTracking (PR #221755)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 17 17:46:56 PDT 2026
================
@@ -1138,6 +1138,77 @@ void GISelValueTracking::computeKnownBitsImpl(Register R, KnownBits &Known,
LLVM_DEBUG(dumpResult(MI, Known, Depth));
}
+static void genUnknown(MachineRegisterInfo &MRI, const Register &Reg,
+ KnownBits &Known) {
+ LLT Ty = MRI.getType(Reg);
+ if (!Ty.isValid()) {
+ Known = KnownBits();
+ return;
+ }
+ unsigned BitWidth = Ty.getScalarSizeInBits();
+ Known = KnownBits(BitWidth);
+}
+
+/// Evaluate a known-bits query with an explicit worklist instead of recursive
+/// descent.
+void GISelValueTracking::computeKnownBitsImpl(Register R, KnownBits &Known,
+ const APInt &DemandedElts,
+ unsigned Depth) {
+ const bool TopLevel = Stack.empty();
+
+ // Nested queries only consult the per-query cache. If the result is not
+ // available yet, enqueue the request and return an unknown placeholder.
+ if (!TopLevel) {
----------------
daemonpilot wrote:
Done. Removed `TopLevel` and replaced `!Stack.empty()` directly.
https://github.com/llvm/llvm-project/pull/221755
More information about the llvm-commits
mailing list