diff options
author | Sanjay Patel <spatel@rotateright.com> | 2022-03-03 08:48:25 -0500 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2022-03-03 09:25:46 -0500 |
commit | e9302bf7efc70a26cfa620ffaa614dc70cdb0259 (patch) | |
tree | 576bac2ab730de2a2fe90b0af004c9fc20c0b34b /llvm/lib/Analysis/ModuleSummaryAnalysis.cpp | |
parent | d3c16be9845410666bea479f8989414e40e44bfa (diff) | |
download | llvm-e9302bf7efc70a26cfa620ffaa614dc70cdb0259.zip llvm-e9302bf7efc70a26cfa620ffaa614dc70cdb0259.tar.gz llvm-e9302bf7efc70a26cfa620ffaa614dc70cdb0259.tar.bz2 |
[SDAG] try harder to remove a rotate from X == 0
https://alive2.llvm.org/ce/z/mJP7XP
This can be viewed as expanding the compare into and/or-of-compares:
https://alive2.llvm.org/ce/z/bkZYWE
followed by reduction of each compare.
This could be extended in several ways:
1. There's a (X & Y) == -1 sibling.
2. We can recurse through more than 1 'or'.
3. The fold could be generalized beyond rotates - any operation that
only changes the order of bits (bswap, bitreverse).
This is a transform noted in D111530.
Diffstat (limited to 'llvm/lib/Analysis/ModuleSummaryAnalysis.cpp')
0 files changed, 0 insertions, 0 deletions