[PATCH] D148413: [InstCombine] Remove requirement on `trunc` in `slt/sgt` case in `foldSelectICmpAndOr`
Noah Goldstein via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 19 13:25:21 PDT 2023
goldstein.w.n added inline comments.
================
Comment at: llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp:676
C1Log = CmpLHS->getType()->getScalarSizeInBits() - 1;
NeedAnd = true;
}
----------------
nikic wrote:
> Unless I'm missing something, we're missing an assignment to the `V` variable in this branch now? Also, do we still need the `NeedAnd`?
>
> We should really just be using decomposeBitTestICmp() and a pow2 check I think, but this code is doing some very weird things I don't fully get.
> Unless I'm missing something, we're missing an assignment to the `V` variable in this branch now?
Good catch not sure how that didn't get caught in the tests.
>Also, do we still need the `NeedAnd`?
Yes. `x >= 0` == `x & SignBit == 0` but we don't have the actual `x & SignBit` expression.
>
> We should really just be using decomposeBitTestICmp() and a pow2 check I think, but this code is doing some very weird things I don't fully get.
I think that works. Will make it a follow up patch to this.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D148413/new/
https://reviews.llvm.org/D148413
More information about the llvm-commits
mailing list