[llvm-bugs] [Bug 27555] New: [ppc] slow code for complex boolean expression
via llvm-bugs
llvm-bugs at lists.llvm.org
Thu Apr 28 09:23:08 PDT 2016
https://llvm.org/bugs/show_bug.cgi?id=27555
Bug ID: 27555
Summary: [ppc] slow code for complex boolean expression
Product: libraries
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: Backend: PowerPC
Assignee: unassignedbugs at nondot.org
Reporter: carrot at google.com
CC: llvm-bugs at lists.llvm.org
Classification: Unclassified
Compile following function with options -mvsx -mcpu=power8 -g0 -O2
int foo(int i)
{
return
(i==5548 || i==6374 || i==5595 || i==8625 || i==8621 || i==8622 || i==6373
|| i==6073 || i==5568 || i==5549 || i==8623 || i==8624 || i==5569 || i==5544
|| i==7727 || i==7746 || i==5570 || i==5543 || i==7728 || i==7747 || i==6026
|| i==6027 || i==374 || i==5333 || i==5332 || i==1027 || i==5337 || i==5336
|| i==8781 || i==8783 || i==8782 || i==8784 || i==2347 || i==5339 || i==5338
|| i==3856 || i==5335 || i==5334 || i==5343 || i==5342 || i==4775);
}
LLVM generates following code:
cmpwi 3, 5548
cmpwi 1, 3, 6374
addi 4, 3, -8621
addi 10, 3, -8623
ori 11, 3, 1
ori 5, 3, 2
cror 20, 2, 6
cmpwi 3, 5595
ori 12, 3, 9
cror 20, 2, 20
cmpwi 3, 8625
cror 20, 2, 20
cmplwi 4, 2
cror 20, 0, 20
...
cmpwi 0, 3, 4775
li 3, 1
crnor 20, 2, 20
isel 3, 0, 3, 20
blr
GCC generates following code:
rldicl 10,3,0,32
addi 9,10,-5548
cmplwi 7,9,1
ble 7,.L19
cmpwi 7,3,5595
beq 7,.L19
...
addi 10,10,-5342
cmplwi 7,10,1
ble 7,.L19
xori 3,3,4775
cntlzw 3,3
srwi 3,3,5
extsw 3,3
blr
.p2align 4,,15
.L19:
li 3,1
blr
There are two problems in llvm generated code:
1. llvm generates 31 cmp instructions, gcc generates 17 cmp instructions.
2. gcc generates conditional branch instructions, it can shortcut the boolean
expression computation, llvm generates conditional register manipulate
instruction cror, it needs to complete all of the boolean expression
computation.
For an internal application, it causes 3x slow down.
--
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/20160428/ab4c5261/attachment.html>
More information about the llvm-bugs
mailing list