<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 10/03/2017 05:02 AM, Ristow, Warren
wrote:<br>
</div>
<blockquote
cite="mid:1B965C6BCD3780449482E91EE11D7638C4716DC9@USCULXMSG05.am.sony.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 12 (filtered
medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p
{mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
span.EmailStyle18
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#44546A;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A">>>>
I'd like to emphasise in the latter one: "This option also
relaxes the precision of<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A">>>>
commonly used math functions."<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A">>><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A">>>
Isn't this the "libm" flag that is proposed in this thread?<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A">>
<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A">>
I don't know. I didn't see any definition of it.<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A">><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A">>
In my case I'm talking about allowing the use of lower
precision but very fast machine<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A">>
instructions instead of a slow sequence of inline
instructions. But I guess instruction<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A">>
vs library is equivalent.<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A">I
haven't defined "libm" explicitly. The concept of "reassoc"
and "libm" are a result of the discussion last November.
The "libm" aspect in particular, came from:<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A"><a class="moz-txt-link-freetext" href="http://lists.llvm.org/pipermail/llvm-dev/2016-November/107114.html">http://lists.llvm.org/pipermail/llvm-dev/2016-November/107114.html</a><o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A">It
was intended to mean actual library functions, which is what
I thought you were referring to when you said "This option
also relaxes the precision of commonly used math
functions." From your elaboration describing it as a
sequence of inline instructions, I think whether "libm" is
the right flag to control it would depend on what that
sequence of instructions were doing. If they were
implementing 'pow()' or 'sqrt()' or 'sin()' etc., then yes,
I think "libm" would be the right flag. If something else
(unrelated to functions generally in libm), then probably
some other flag (or set of flags) would control whether a
transformation was done.<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A">More
generally, my intended approach of doing this change (of
removing the "fast" umbrella flag, and adding the two new
flags "reassoc" and "libm"), is to audit all the places that
currently enable an optimization based on whether
‘hasUnsafeAlgebra()’ is true (which essentially is asking
whether _all_ the existing FastMathFlags are enabled), and
see which of them can/should be controlled by one (or a
subset of) the full set. So it's possible that a particular
slow sequence of inline instructions you are transforming
would be controlled by "libm", and a different slow sequence
of inline instructions would be controlled by some other
flag (or flags).</span></p>
</div>
</blockquote>
<br>
I agree. We should give the flags semantic meanings. Whether or not
something is generally a function call is irrelevant. libm, if we
use that name, refers to the functions in libm, and perhaps close
extensions, regardless of how the target generally generates code
for them.<br>
<br>
It might be clearer, instead of using 'libm', to use something like
'trans' (for transcendental functions).<br>
<br>
-Hal<br>
<br>
<blockquote
cite="mid:1B965C6BCD3780449482E91EE11D7638C4716DC9@USCULXMSG05.am.sony.com"
type="cite">
<div class="WordSection1">
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A"><o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A">-Warren</span><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A"><o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#44546A"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #B5C4DF
1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">
<a class="moz-txt-link-abbreviated" href="mailto:bruce.hoult@gmail.com">bruce.hoult@gmail.com</a> [<a class="moz-txt-link-freetext" href="mailto:bruce.hoult@gmail.com">mailto:bruce.hoult@gmail.com</a>]
<b>On Behalf Of </b>Bruce Hoult<br>
<b>Sent:</b> Tuesday, October 3, 2017 10:05 AM<br>
<b>To:</b> Hal Finkel<br>
<b>Cc:</b> Ristow, Warren; <a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<b>Subject:</b> Re: [llvm-dev] Trouble when suppressing a
portion of fast-math-transformations<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<p class="MsoNormal">On Tue, Oct 3, 2017 at 4:03 AM, Hal
Finkel via llvm-dev <<a moz-do-not-send="true"
href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>>
wrote:<o:p></o:p></p>
<div>
<p>On 10/02/2017 11:10 AM, Bruce Hoult via llvm-dev
wrote:<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">-cl-fast-relaxed-math<o:p></o:p></p>
</div>
</blockquote>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div>
<div>
<p class="MsoNormal">Sets the optimization
options -cl-finite-math-only and
-cl-unsafe-math-optimizations. This allows
optimizations for floating-point arithmetic
that may violate the IEEE 754 standard and the
OpenCL numerical compliance requirements for
single precision and double precision
floating-point, as well as floating point edge
case behavior. This option also relaxes the
precision of commonly used math functions.
This option causes the preprocessor macro
__FAST_RELAXED_MATH__ to be defined in the
OpenCL program. The original and modified
values are defined in the SPIR-V OpenCL
environment specification<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I'd like to emphasise in the
latter one: "This option also relaxes the
precision of commonly used math functions."<o:p></o:p></p>
</div>
</div>
</blockquote>
<p class="MsoNormal">Isn't this the "libm" flag that is
proposed in this thread?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">I don't know. I didn't see any
definition of it.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">In my case I'm talking about
allowing the use of lower precision but very fast
machine instructions instead of a slow sequence of
inline instructions. But I guess instruction vs
library is equivalent.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory</pre>
</body>
</html>