<html>
<head>
<base href="https://bugs.llvm.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - Missed optimization in math expression: squashing sqrt functions"
href="https://bugs.llvm.org/show_bug.cgi?id=35592">35592</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>Missed optimization in math expression: squashing sqrt functions
</td>
</tr>
<tr>
<th>Product</th>
<td>clang
</td>
</tr>
<tr>
<th>Version</th>
<td>trunk
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>All
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>enhancement
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>LLVM Codegen
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedclangbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>zamazan4ik@tut.by
</td>
</tr>
<tr>
<th>CC</th>
<td>llvm-bugs@lists.llvm.org
</td>
</tr></table>
<p>
<div>
<pre>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, double d)
{
return sqrt(a)*sqrt(b)*sqrt(c)*sqrt(d);
}
generates this assembly:
f(double, double, double, double): # @f(double, double, double, double)
vsqrtsd xmm0, xmm0, xmm0
vsqrtsd xmm1, xmm1, xmm1
vmulsd xmm0, xmm1, xmm0
vsqrtsd xmm1, xmm2, xmm2
vsqrtsd xmm2, xmm3, xmm3
vmulsd xmm1, xmm1, xmm2
vmulsd xmm0, xmm0, xmm1
ret
GCC (trunk) with '--std=c++17 -O3 -march=native -ffast-math' flags generates
more optimal code:
f(double, double, double, double):
vmulsd xmm0, xmm0, xmm1
vmulsd xmm2, xmm2, xmm3
vmulsd xmm2, xmm2, xmm0
vsqrtsd xmm0, xmm0, xmm2
ret</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>