[llvm-bugs] [Bug 33093] New: [ppc] Slow code for reverse bits
via llvm-bugs
llvm-bugs at lists.llvm.org
Thu May 18 13:32:58 PDT 2017
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: unassignedbugs at nondot.org
Reporter: carrot at google.com
CC: llvm-bugs at 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20170518/1c1115bc/attachment.html>
More information about the llvm-bugs
mailing list