https://bugs.llvm.org/show_bug.cgi?id=33093
Bug ID: 33093
Summary: [ppc] Slow code for reverse bits
Product: libraries
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: Backend: PowerPC
Assignee: unassignedb...@nondot.org
Reporter: car...@google.com
CC: llvm-bugs@lists.llvm.org
The reverse bits source code is:
unsigned int ReverseBits(unsigned int n) {
n = ((n >> 1) & 0x55555555) | ((n & 0x55555555) << 1);
n = ((n >> 2) & 0x33333333) | ((n & 0x33333333) << 2);
n = ((n >> 4) & 0x0F0F0F0F) | ((n & 0x0F0F0F0F) << 4);
return ((n & 0xff000000u) >> 24) | ((n & 0x00ff0000u) >> 8) | ((n &
0x0000ff00u) << 8) | ((n & 0x000000ffu) << 24);
}
LLVM generates:
# BB#0: # %entry
rlwinm 4, 3, 1, 0, 31
rlwimi 4, 3, 3, 30, 30
rlwimi 4, 3, 5, 29, 29
rlwimi 4, 3, 7, 28, 28
rlwimi 4, 3, 9, 27, 27
rlwimi 4, 3, 11, 26, 26
rlwimi 4, 3, 13, 25, 25
rlwimi 4, 3, 15, 24, 24
rlwimi 4, 3, 17, 23, 23
rlwimi 4, 3, 19, 22, 22
rlwimi 4, 3, 21, 21, 21
rlwimi 4, 3, 23, 20, 20
rlwimi 4, 3, 25, 19, 19
rlwimi 4, 3, 27, 18, 18
rlwimi 4, 3, 29, 17, 17
rlwimi 4, 3, 31, 16, 16
rlwimi 4, 3, 3, 14, 14
rlwimi 4, 3, 5, 13, 13
rlwimi 4, 3, 7, 12, 12
rlwimi 4, 3, 9, 11, 11
rlwimi 4, 3, 11, 10, 10
rlwimi 4, 3, 13, 9, 9
rlwimi 4, 3, 15, 8, 8
rlwimi 4, 3, 17, 7, 7
rlwimi 4, 3, 19, 6, 6
rlwimi 4, 3, 21, 5, 5
rlwimi 4, 3, 23, 4, 4
rlwimi 4, 3, 25, 3, 3
rlwimi 4, 3, 27, 2, 2
rlwimi 4, 3, 29, 1, 1
rlwimi 4, 3, 31, 0, 0
mr 3, 4
blr
All of the instructions are in a dependence chain. It is much slower than the
algorithm shown in the source code.
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs