<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<font face="Courier New" size="2"><span style="font-size:11pt;">
<div>I’m looking at lib/Analysis/InstructionSimplify.cpp where the function propagateNaN() has a comment asking if it should quiet a signaling NaN.</div>
<div><font face="Calibri"> </font></div>
<div>If I understand the IEEE 754-2019 standard correctly: an SNaN shall be converted to a QNaN whenever an “operation” is done. The standard doesn’t say, or I couldn’t find it, exactly _<i>when</i>_ that operation must be done. Which implies that the floating-point
operation could be done by the compiler. In which case folding an instruction that has an SNaN operand should result in a QNaN.</div>
<div> </div>
<div>Is my reading of the standard correct? And should we make this change to InstructionSimplify.cpp:propagateNaN() and perhaps more generally in LLVM?</div>
<div><font face="Calibri" size="2"><span style="font-size:10pt;">--<font size="2"><span style="font-size:11pt;">
<br>
</span></font><font face="Courier New">Kevin P. Neal<br>
</font><font face="Courier New">SAS/C and SAS/C++ Compiler</font></span></font></div>
<div><font size="2"><span style="font-size:10pt;">Compute Services</span></font></div>
<div><font size="2"><span style="font-size:10pt;">SAS Institute, Inc.</span></font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri"> </font></div>
</span></font>
</body>
</html>