<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p><br>
</p>
<div class="moz-cite-prefix">On 08/31/2017 04:17 PM, Richard Smith
via cfe-dev wrote:<br>
</div>
<blockquote
cite="mid:CAOfiQqk6j-yBSd9gA+wwyXg95i4vLfkhiXVri5D2MjGs4bun+g@mail.gmail.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On 31 August 2017 at 14:14, Kaylor,
Andrew via cfe-dev <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div link="blue" vlink="purple" lang="EN-US">
<div class="m_2724022782041152477WordSection1">
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">I
believe that we will rely on fedisableexcept()
being marked as having unmodeled side-effects to
prevent a hoist like that.</span></p>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>fadd can be hoisted past *anything*, can't it?</div>
</div>
</div>
</div>
</blockquote>
<br>
Yes, that's correct.<br>
<br>
-Hal<br>
<br>
<blockquote
cite="mid:CAOfiQqk6j-yBSd9gA+wwyXg95i4vLfkhiXVri5D2MjGs4bun+g@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div><a moz-do-not-send="true"
name="m_2724022782041152477__MailEndCompose"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></a></div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div link="blue" vlink="purple" lang="EN-US">
<div class="m_2724022782041152477WordSection1">
<p class="MsoNormal"><b><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif">
Richard Smith [mailto:<a moz-do-not-send="true"
href="mailto:richard@metafoo.co.uk"
target="_blank">richard@metafoo.co.uk</a>]
<br>
<b>Sent:</b> Thursday, August 31, 2017 2:09 PM<br>
<b>To:</b> Kaylor, Andrew <<a
moz-do-not-send="true"
href="mailto:andrew.kaylor@intel.com"
target="_blank">andrew.kaylor@intel.com</a>><br>
<b>Cc:</b> Marcus Johnson <<a
moz-do-not-send="true"
href="mailto:bumblebritches57@gmail.com"
target="_blank">bumblebritches57@gmail.com</a>>;
Clang Dev <<a moz-do-not-send="true"
href="mailto:cfe-dev@lists.llvm.org"
target="_blank">cfe-dev@lists.llvm.org</a>>;
<a moz-do-not-send="true"
href="mailto:wei.ding2@amd.com" target="_blank">wei.ding2@amd.com</a></span></p>
<div>
<div class="h5"><br>
<b>Subject:</b> Re: [cfe-dev] Why is #pragma STDC
FENV_ACCESS not supported?</div>
</div>
<div>
<div class="h5">
<p class="MsoNormal"> </p>
<div>
<div>
<div>
<p class="MsoNormal">On 31 August 2017 at
11:09, Kaylor, Andrew via cfe-dev <<a
moz-do-not-send="true"
href="mailto:cfe-dev@lists.llvm.org"
target="_blank">cfe-dev@lists.llvm.org</a>>
wrote:</p>
<blockquote
style="border:none;border-left:solid
#cccccc 1.0pt;padding:0in 0in 0in
6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">There
are still a few things missing
from the optimizer to get it
completely robust, but I think
there is enough in place for front
end work to begin. As I think
I’ve demonstrated in my recent
attempt to contribute a clang
patch I’m not skilled enough with
the front end to be the person to
pull this off without an excessive
amount of oversight, but as Erich
indicated we do have some good
front end people here who have
this on their TODO list. It’s
just not at the top of the TODO
list yet.</span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">If
anyone is interested in the
details of the LLVM side of
things, there are constrained FP
intrinisics (still marked as
experimental at this point)
documented in the language
reference. The initial patch can
be seen here:</span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><a
moz-do-not-send="true"
href="https://reviews.llvm.org/D27028"
target="_blank">https://reviews.llvm.org/<wbr>D27028</a></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">I’ve
since added another group of
intrinsics to handle the
libm-equivalent intrinsics, and
more recently Wei Ding contributed
an fma intrinsic.</span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">The
idea is that the front end will
emit the constrained intrinsics in
place of equivalent general FP
operations or intrinsics in scopes
where FENV_ACCESS is enabled.
This will prevent the optimizer
from making optimizations that
assume default fenv settings
(which is what we want the
optimizer to do in all other
cases). Eventually, we’ll want to
go back and teach specific
optimizations to understand the
intrinsics so that where possible
optimizations can be performed in
a manner consistent with dynamic
rounding modes and strict
exception handling.</span></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<div>
<p class="MsoNormal"><span
style="font-size:9.5pt">How do you
deal with the hoisting-into-<span
class="m_2724022782041152477gmail-il">fenv_access</span> <wbr>problem?
Eg:</span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:9.5pt"> </span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:9.5pt">double
f(double a, double b, double c) {</span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:9.5pt"> {</span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:9.5pt">#pragma
STDC <span
class="m_2724022782041152477gmail-il">FENV_ACCESS</span> ON</span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:9.5pt">
feenableexcept(FE_OVERFLOW);</span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:9.5pt"> double d
= a * b;</span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:9.5pt">
fedisableexcept(FE_OVERFLOW);</span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:9.5pt"> }</span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:9.5pt"> return c *
d;</span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:9.5pt">}</span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:9.5pt"> </span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:9.5pt">What stops
llvm from hoisting the second fmul
up to before the fedisableexcept?</span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></p>
</div>
<blockquote
style="border:none;border-left:solid
#cccccc 1.0pt;padding:0in 0in 0in
6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">-Andy</span></p>
<p class="MsoNormal"><a
moz-do-not-send="true"
name="m_2724022782041152477_m_1667421056975128580__MailEndCompose"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></a></p>
<div>
<div
style="border:none;border-top:solid
#e1e1e1 1.0pt;padding:3.0pt 0in
0in 0in">
<p class="MsoNormal"><b><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Hal
Finkel [mailto:<a
moz-do-not-send="true"
href="mailto:hfinkel@anl.gov"
target="_blank">hfinkel@anl.gov</a>]
<br>
<b>Sent:</b> Thursday, August
31, 2017 10:45 AM<br>
<b>To:</b> Richard Smith <<a
moz-do-not-send="true"
href="mailto:richard@metafoo.co.uk"
target="_blank">richard@metafoo.co.uk</a>>;
Marcus Johnson <<a
moz-do-not-send="true"
href="mailto:bumblebritches57@gmail.com"
target="_blank">bumblebritches57@gmail.com</a>><br>
<b>Cc:</b> Clang Dev <<a
moz-do-not-send="true"
href="mailto:cfe-dev@lists.llvm.org"
target="_blank">cfe-dev@lists.llvm.org</a>>;
Kaylor, Andrew <<a
moz-do-not-send="true"
href="mailto:andrew.kaylor@intel.com"
target="_blank">andrew.kaylor@intel.com</a>><br>
<b>Subject:</b> Re: [cfe-dev]
Why is #pragma STDC
FENV_ACCESS not supported?</span></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"> </p>
<p> </p>
<div>
<p class="MsoNormal">On
08/31/2017 12:10 PM, Richard
Smith via cfe-dev wrote:</p>
</div>
<blockquote
style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">Because
no-one has implemented it.
Patches would be welcome,
but will need to start with
a design and implementation
of the requisite llvm
extensions.</p>
</div>
</blockquote>
<p class="MsoNormal"
style="margin-bottom:12.0pt"><br>
Yes. This is what Andrew Kaylor
has been working on (cc'd).<br>
<br>
-Hal<br>
<br>
</p>
<blockquote
style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal"> </p>
<div>
<p class="MsoNormal">On 31
Aug 2017 10:06, "Marcus
Johnson via cfe-dev" <<a
moz-do-not-send="true"
href="mailto:cfe-dev@lists.llvm.org"
target="_blank">cfe-dev@lists.llvm.org</a>>
wrote:</p>
<blockquote
style="border:none;border-left:solid
#cccccc 1.0pt;padding:0in
0in 0in
6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal"><span
style="font-size:18.0pt">^^^^^^</span></p>
</div>
</div>
<p class="MsoNormal"
style="margin-bottom:12.0pt"><br>
______________________________<wbr>_________________<br>
cfe-dev mailing list<br>
<a
moz-do-not-send="true"
href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a
moz-do-not-send="true"
href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev"
target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a></p>
</blockquote>
</div>
</div>
<p class="MsoNormal"
style="margin-bottom:12.0pt"><br>
<br>
</p>
<pre>______________________________<wbr>_________________</pre>
<pre>cfe-dev mailing list</pre>
<pre><a moz-do-not-send="true" href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a></pre>
<pre><a moz-do-not-send="true" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a></pre>
</blockquote>
<p class="MsoNormal" style="margin-bottom:12.0pt"> </p>
<pre>-- </pre>
<pre>Hal Finkel</pre>
<pre>Lead, Compiler Technology and Programming Languages</pre>
<pre>Leadership Computing Facility</pre>
<pre>Argonne National Laboratory</pre>
</div>
</div>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt">
______________________________<wbr>_________________
cfe-dev mailing list
<a moz-do-not-send="true" href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>
<a moz-do-not-send="true" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a></p>
</blockquote>
</div>
<p class="MsoNormal"> </p>
</div>
</div>
</div></div></div>
</div>
______________________________<wbr>_________________
cfe-dev mailing list
<a moz-do-not-send="true" href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>
<a moz-do-not-send="true" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a>
</blockquote></div>
</div></div>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre wrap="">_______________________________________________
cfe-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a>
</pre>
</blockquote>
<pre class="moz-signature" cols="72">--
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory</pre></body></html>