<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Courier;
        panose-1:2 7 4 9 2 2 5 2 4 4;}
@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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
tt
        {mso-style-priority:99;
        font-family:"Courier New";}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Courier New";
        color:#44546A;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@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]-->
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-family:"Courier New";color:#44546A">I’d use the clang -ffp-exception-behavior=strict or =maytrap options instead of the #pragma. I’m not convinced the #pragma always works correctly and emits the correct metadata for constrained
 intrinsics. It’s OK for now, but I’m working on optimizations for LLVM that rely on correct metadata. You’ll get correct metadata with the command line option.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:#44546A"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:#44546A">The first phab ticket for optimizations is
<a href="https://reviews.llvm.org/D99962">https://reviews.llvm.org/D99962</a> with more on the way. It’s an EarlyCSE change. If anyone wants to jump in as a reviewer I won’t mind at all.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#44546A">--</span><span style="color:#44546A">
<br>
</span><span style="font-size:10.0pt;font-family:"Courier New";color:#44546A">Kevin P. Neal</span><span style="color:#44546A"><br>
</span><span style="font-size:10.0pt;font-family:"Courier New";color:#44546A">SAS/C and SAS/C++ Compiler<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#44546A">Compute Services<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#44546A">SAS Institute, Inc.</span><span style="color:#44546A"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:#44546A"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:#44546A"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";color:#44546A"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> llvm-dev <llvm-dev-bounces@lists.llvm.org> <b>On Behalf Of
</b>Craig Topper via llvm-dev<br>
<b>Sent:</b> Thursday, May 06, 2021 12:21 PM<br>
<b>To:</b> raghesh <raghesh.a@gmail.com><br>
<b>Cc:</b> LLVM Developers Mailing List <llvm-dev@lists.llvm.org><br>
<b>Subject:</b> Re: [llvm-dev] Reading FP Environment status from IR<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p><b><i><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:red">EXTERNAL</span></i></b><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:red">
</span><o:p></o:p></p>
<div>
<div>
<p class="MsoNormal">We have intrinsic versions of the floating point instructions to suppress optimizations that are unsafe when exceptions are enabled. <a href="https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fllvm.org%2Fdocs%2FLangRef.html%23constrained-floating-point-intrinsics&data=04%7C01%7Ckevin.neal%40sas.com%7Cd622922160e84ec9c41008d910aafdc9%7Cb1c14d5c362545b3a4309552373a0c2f%7C0%7C0%7C637559148851625050%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=b60qxgBEfIpp62incxubaK1xEs6cWeWgpKkmisjMGTk%3D&reserved=0">https://llvm.org/docs/LangRef.html#constrained-floating-point-intrinsics</a>
 Currently I think it prevents nearly all optimizations. <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Clang should emit these for some targets like X86 when it sees #pragma STDC FENV_ACCESS. Clang can only do this for targets that have implemented proper support for the constrained intrinsics in the backend.<o:p></o:p></p>
<div>
<p class="MsoNormal"><br clear="all">
<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal">~Craig<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Thu, May 6, 2021 at 2:26 AM raghesh via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<o:p></o:p></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>
<p class="MsoNormal">Hi All, <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">We would like to prevent certain optimizations (like hoisting an fdiv instruction) when the application has set the floating point environment flags using APIs like<br>
<a href="https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.cppreference.com%2Fw%2Fcpp%2Fnumeric%2Ffenv%2Fferaiseexcept&data=04%7C01%7Ckevin.neal%40sas.com%7Cd622922160e84ec9c41008d910aafdc9%7Cb1c14d5c362545b3a4309552373a0c2f%7C0%7C0%7C637559148851635040%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=N8Sz1j3JxqmKxr4xKnuO8MMIKWJBYNI8e%2BXDVte6qE4%3D&reserved=0" target="_blank" title="cpp/numeric/fenv/feraiseexcept"><b><span style="font-size:9.5pt;font-family:Courier;color:#FAA700">feraiseexcept</span></b></a>  or
 if it uses <span style="font-size:9.5pt;font-family:"Arial",sans-serif;color:black"> </span><a href="https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.cppreference.com%2Fw%2Fcpp%2Fpreprocessor%2Fimpl&data=04%7C01%7Ckevin.neal%40sas.com%7Cd622922160e84ec9c41008d910aafdc9%7Cb1c14d5c362545b3a4309552373a0c2f%7C0%7C0%7C637559148851635040%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=84tVDGwyemDXatkCuZPfDn8%2B1ltRnEVr5uk%2Bh%2Fcu9%2FI%3D&reserved=0" target="_blank" title="cpp/preprocessor/impl"><tt><span style="font-size:10.0pt;font-family:Courier;color:#FAA700">#pragma
 STDC FENV_ACCESS</span></tt></a>.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Is there any way to know this at LLVM-IR level?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Regards,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Raghesh<o:p></o:p></p>
</div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal">------------------------------<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Raghesh Aloor<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">AMD India Pvt. Ltd.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Bengaluru.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">------------------------------<o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal">_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.llvm.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fllvm-dev&data=04%7C01%7Ckevin.neal%40sas.com%7Cd622922160e84ec9c41008d910aafdc9%7Cb1c14d5c362545b3a4309552373a0c2f%7C0%7C0%7C637559148851645051%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=8NMTYgvFNS9%2FlNTiAXcMfm%2BvEf7McmR%2BOoJa8T7%2BQnw%3D&reserved=0" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><o:p></o:p></p>
</blockquote>
</div>
</div>
</div>
</body>
</html>