[PATCH] D151816: [ValueTracking] Directly use KnownBits shift functions
Nikita Popov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed May 31 13:59:03 PDT 2023
nikic added inline comments.
================
Comment at: llvm/lib/Analysis/ValueTracking.cpp:994
+ Known.isNonZero() ||
+ (Known.getMaxValue().ult(Known.getBitWidth()) &&
+ isKnownNonZero(I->getOperand(1), DemandedElts, Depth + 1, Q));
----------------
goldstein.w.n wrote:
> nikic wrote:
> > goldstein.w.n wrote:
> > > what is the `Known.getMaxValue().ult(Known.getBitWidth())` is doing here?
> > Nothing semantically meaningful. It only avoids calling isKnownNonZero() in substantially more cases than the old code.
> How does Known.getMaxValue() u< Known.getBitWidth() prevent Known from being 0?
It doesn't. Note the `&&` rather than `||`. It's a heuristic on when it is profitable to call isKnownNonZero() that matches what the old code did. It doesn't make a whole lot of sense, but I'd like to retain the behavior for the purposes of this patch.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D151816/new/
https://reviews.llvm.org/D151816
More information about the llvm-commits
mailing list