[llvm] [InstCombine] Fold `switch(rol(x, C1)) case C2:` to `switch(x) case rol(C2, -C1):` (PR #86307)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 10 05:28:49 PDT 2024
YanWQ-monad wrote:
> I don't really like the idea of SimplifyCFG and InstCombine changing the code back and forth. Maybe we should limit the fold to the case where it will not make the switch less dense?
It's rare that the fold will make the switch dense, at least as the issue shows, and in dtcxzyw's benchmark. So a more reasonable solution should be limit the fold so that it won't affect `ReduceSwitchRange`?
If so, `isSwitchDense` may be needed to check the preconditions, but it's only visible inside SimplifyCFG. Should I place `isSwitchDense` to somewhere else to make it shared between SimplifyCFG and InstCombine?
https://github.com/llvm/llvm-project/pull/86307
More information about the llvm-commits
mailing list