[llvm] [InstCombine] Remove the canonicalization of `trunc` to `i1` (PR #84628)

via llvm-commits llvm-commits at lists.llvm.org
Sun Mar 10 10:25:52 PDT 2024


YanWQ-monad wrote:

After examining the code, I found that those folds are not the key problem.
In fact, the removal of canonicalization affects two folds in that regression:
```
((C1 << X) & C2) != 0   ->  X < (Log2(C2+C1) - Log2(C1))           (foldICmpUsingKnownBits)
((C1 << X) >> C2) & C3  ->  X == (cttz(C3)+C2-cttz(C1)) ? C3 : 0   (visitAnd)
```
Making those folds inside `foldAndOrOfICmps` accept `trunc` seems provide no help to these two folds, unless a more thorough decomposition is performed. So I just copied two folds to `visitTrunc`.

https://github.com/llvm/llvm-project/pull/84628


More information about the llvm-commits mailing list