[llvm-bugs] [Bug 33249] New: LLVM generates far less than ideal code for cold functions (when optimizing for size)
via llvm-bugs
llvm-bugs at lists.llvm.org
Wed May 31 15:32:26 PDT 2017
https://bugs.llvm.org/show_bug.cgi?id=33249
Bug ID: 33249
Summary: LLVM generates far less than ideal code for cold
functions (when optimizing for size)
Product: libraries
Version: trunk
Hardware: PC
OS: All
Status: NEW
Severity: enhancement
Priority: P
Component: Scalar Optimizations
Assignee: unassignedbugs at nondot.org
Reporter: davide at freebsd.org
CC: davidxl at google.com, filcab at gmail.com,
llvm-bugs at lists.llvm.org, llvm-dev at redking.me.uk,
rafael.espindola at gmail.com,
simon.f.whittaker at gmail.com, wmi at google.com,
xinliangli at gmail.com
https://godbolt.org/g/kgGJxw
This function is cold, we should optimize for size (also at -O3), as GCC does:
winky(int): # @winky(int)
mov eax, 1
movd xmm2, eax
movd xmm0, edi
pshufd xmm1, xmm0, 0 # xmm1 = xmm0[0,0,0,0]
punpckldq xmm0, xmm2 # xmm0 =
xmm0[0],xmm2[0],xmm0[1],xmm2[1]
pshufd xmm2, xmm2, 80 # xmm2 = xmm2[0,0,1,1]
punpckldq xmm0, xmm2 # xmm0 =
xmm0[0],xmm2[0],xmm0[1],xmm2[1]
mov eax, 36
pshufd xmm2, xmm1, 245 # xmm2 = xmm1[1,1,3,3]
.LBB1_1: # =>This Inner Loop Header: Depth=1
pshufd xmm3, xmm0, 245 # xmm3 = xmm0[1,1,3,3]
pmuludq xmm0, xmm1
pshufd xmm0, xmm0, 232 # xmm0 = xmm0[0,2,2,3]
pmuludq xmm3, xmm2
pshufd xmm3, xmm3, 232 # xmm3 = xmm3[0,2,2,3]
punpckldq xmm0, xmm3 # xmm0 =
xmm0[0],xmm3[0],xmm0[1],xmm3[1]
add eax, -4
jne .LBB1_1
pshufd xmm1, xmm0, 78 # xmm1 = xmm0[2,3,0,1]
pshufd xmm2, xmm0, 245 # xmm2 = xmm0[1,1,3,3]
pmuludq xmm0, xmm1
pshufd xmm0, xmm0, 232 # xmm0 = xmm0[0,2,2,3]
pshufd xmm1, xmm1, 245 # xmm1 = xmm1[1,1,3,3]
pmuludq xmm1, xmm2
pshufd xmm1, xmm1, 232 # xmm1 = xmm1[0,2,2,3]
punpckldq xmm0, xmm1 # xmm0 =
xmm0[0],xmm1[0],xmm0[1],xmm1[1]
pshufd xmm1, xmm0, 229 # xmm1 = xmm0[1,1,2,3]
pmuludq xmm1, xmm0
pshufd xmm1, xmm1, 232 # xmm1 = xmm1[0,2,2,3]
pshufd xmm0, xmm0, 245 # xmm0 = xmm0[1,1,3,3]
pmuludq xmm0, xmm0
pshufd xmm0, xmm0, 232 # xmm0 = xmm0[0,2,2,3]
punpckldq xmm1, xmm0 # xmm1 =
xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movd eax, xmm1
ret
vs
winky(int):
mov eax, edi
mov edx, 36
.L6:
imul eax, edi
dec edx
jne .L6
ret
--
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/20170531/720df973/attachment.html>
More information about the llvm-bugs
mailing list