[llvm-bugs] [Bug 35593] New: Missed optimization in math expression: simplify calls std::pow functions
via llvm-bugs
llvm-bugs at lists.llvm.org
Sun Dec 10 04:14:28 PST 2017
https://bugs.llvm.org/show_bug.cgi?id=35593
Bug ID: 35593
Summary: Missed optimization in math expression: simplify calls
std::pow functions
Product: clang
Version: trunk
Hardware: PC
OS: All
Status: NEW
Severity: enhancement
Priority: P
Component: LLVM Codegen
Assignee: unassignedclangbugs at nondot.org
Reporter: zamazan4ik at tut.by
CC: llvm-bugs at lists.llvm.org
clang(trunk) with '--std=c++17 -O3 -march=native -ffast-math' flags for this
code:
#include <cmath>
double f(double a, double b, double c)
{
return std::pow(a, b) * std::pow(a, c);
}
generates this assembly:
f(double, double, double): # @f(double, double, double)
sub rsp, 24
vmovsd qword ptr [rsp + 16], xmm2 # 8-byte Spill
vmovsd qword ptr [rsp], xmm0 # 8-byte Spill
call pow
vmovsd qword ptr [rsp + 8], xmm0 # 8-byte Spill
vmovsd xmm0, qword ptr [rsp] # 8-byte Reload
vmovsd xmm1, qword ptr [rsp + 16] # 8-byte Reload
call pow
vmulsd xmm0, xmm0, qword ptr [rsp + 8] # 8-byte Folded Reload
add rsp, 24
ret
GCC (trunk) with '--std=c++17 -O3 -march=native -ffast-math' flags generates
more optimal code:
f(double, double, double):
vaddsd xmm1, xmm1, xmm2
jmp __pow_finite
--
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/20171210/797eb5d2/attachment.html>
More information about the llvm-bugs
mailing list