[PATCH] D89214: [X86] Add basic computeKnownBits support for X86ISD::BSR
Simon Pilgrim via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sat Jul 24 07:04:09 PDT 2021
RKSimon added inline comments.
Herald added a subscriber: pengfei.
================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:34045
+ // TODO: Bound with input known bits?
+ Known.Zero.setBitsFrom(Log2_32(BitWidth));
+ break;
----------------
craig.topper wrote:
> RKSimon wrote:
> > I'm a bit worried about not handling the src==0 undef case - how well does this work if we guarded it with a KnownNeverZero check?
> The case I was trying to fix was this cross basic block case from the OPTIMIZE version of https://skanthak.homepage.t-online.de/llvm.html#case21
>
> I doubt KnownNeverZero would work since its control flow dependent and it looks like the SelectionDAG implementation is only handles non-zero constants or an OR involving a non-zero constant.
Sorry - I forgot about this! I think you're right in that in all the cases where X86ISD::BSR is generated, we have suitable zero-input handling in place - either we already treat this as CTLZ_ZERO_UNDEF (which computeknownbits already reports the same result for) or its part of an CTLZ and LowerCTLZ added zero-input wrapping already.
I'd feel better with a bit more of an explanation comment about our assumptions, but otherwise looks ok.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D89214/new/
https://reviews.llvm.org/D89214
More information about the llvm-commits
mailing list