[clang-tools-extra] [llvm] [clang] [PowerPC] Check value uses in ValueBit tracking (PR #66040)
Qiu Chaofan via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 29 01:37:50 PST 2024
ecnelises wrote:
The motivating case:
```llvm
define i64 @splatByte(i64 %a) {
entry:
%x0 = shl i64 %a, 8
%x1 = and i64 %a, 255
%x2 = or i64 %x0, %x1
%x3 = shl i64 %x2, 16
%x4 = and i64 %x2, 65535
%x5 = or i64 %x3, %x4
%x6 = shl i64 %x5, 32
%x7 = and i64 %x5, 4294967295
%x8 = or i64 %x6, %x7
ret i64 %x8
}
```
```
; before patch
rotldi 4, 3, 32
rlwimi 4, 3, 0, 24, 31
rlwimi 4, 3, 8, 16, 23
rlwimi 4, 3, 16, 8, 15
rlwimi 4, 3, 24, 0, 7
rldimi 4, 3, 40, 16
rldimi 4, 3, 48, 8
rldimi 4, 3, 56, 0
mr 3, 4
; after patch
rldimi 3, 3, 8, 0
rldimi 3, 3, 16, 0
rlwinm 3, 3, 0, 1, 0
```
Bit permutation is not good at selecting globally optimized result. This is the limitation until a better selector respecting rotate operations is introduced.
https://github.com/llvm/llvm-project/pull/66040
More information about the cfe-commits
mailing list