[LLVMbugs] [Bug 3457] New: scheduling (?) severely pessimizing scimark2 montecarlo loop
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Sun Feb 1 22:16:17 PST 2009
http://llvm.org/bugs/show_bug.cgi?id=3457
Summary: scheduling (?) severely pessimizing scimark2 montecarlo
loop
Product: libraries
Version: 1.0
Platform: PC
OS/Version: All
Status: NEW
Keywords: code-quality
Severity: normal
Priority: P2
Component: Common Code Generator Code
AssignedTo: unassignedbugs at nondot.org
ReportedBy: clattner at apple.com
CC: llvmbugs at cs.uiuc.edu
Created an attachment (id=2486)
--> (http://llvm.org/bugs/attachment.cgi?id=2486)
testcase
The main loop in MonteCarlo_integrate is:
%2 = tail call double @Random_nextDouble(%struct.anon* %0) nounwind
; <double> [#uses=2]
%3 = tail call double @Random_nextDouble(%struct.anon* %0) nounwind
; <double> [#uses=2]
%4 = mul double %2, %2 ; <double> [#uses=1]
%5 = mul double %3, %3 ; <double> [#uses=1]
%6 = add double %4, %5 ; <double> [#uses=1]
...
We compile this to:
movl %esi, (%esp)
call L_Random_nextDouble$stub
fstpt -56(%ebp)
movl %esi, (%esp)
call L_Random_nextDouble$stub
fstpl -32(%ebp)
fldt -56(%ebp)
fstpl -24(%ebp)
movsd -24(%ebp), %xmm0
mulsd %xmm0, %xmm0
...
This is horrible because the conversion from long double to double got
scheduled after the second call, so we now get fstpt/fldt instructions (80-bit
fp load/stores), which are really really really slow (10x slower than fstpl. I
really want to see something like:
movl %esi, (%esp)
call L_Random_nextDouble$stub
fstpl -24(%ebp)
movl %esi, (%esp)
call L_Random_nextDouble$stub
fstpl -32(%ebp)
movsd -24(%ebp), %xmm0
mulsd %xmm0, %xmm0
...
One less spill, and no crazy 80-bit fp load and stores!
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list