[LLVMbugs] [Bug 13574] New: Lack of math lib call conversion
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Fri Aug 10 12:09:26 PDT 2012
http://llvm.org/bugs/show_bug.cgi?id=13574
Bug #: 13574
Summary: Lack of math lib call conversion
Product: new-bugs
Version: trunk
Platform: PC
OS/Version: Windows NT
Status: NEW
Severity: enhancement
Priority: P
Component: new bugs
AssignedTo: unassignedbugs at nondot.org
ReportedBy: weimingz at codeaurora.org
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
GCC can convert the double version of some math function to float version if
both the argument and return value are float type.
For example:
float test(float x)
{
float a,b,c,d,ret;
a = sin(x);
b = cos(x);
c = tan(x);
d = log2(x);
ret = a+c-b-d;
return ret;
Using GCC -O1, it will emit calls to tanf, log2f, sinf and cosf (the last two
are further folded into sincosf).
But LLVM lacks such optimization. I can see there is significant performance
difference on ARM: , "float sinf(float)" is 1.87 times faster than "double
sin(double)".
I have a patch on Transforms/Scalar/SimplifyLibCalls.cpp to perform such
conversion, but I'm not sure if the community will have concerns about
precision lose.
--
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