[llvm-dev] [754] Fold FP "Op SNaN" to QNaN?

Jacob Lifshay via llvm-dev llvm-dev at lists.llvm.org
Fri Jul 9 11:31:51 PDT 2021


On Fri, Jul 9, 2021, 08:41 Kevin Neal via llvm-dev <llvm-dev at lists.llvm.org>
wrote:

> I’m looking at lib/Analysis/InstructionSimplify.cpp where the function
> propagateNaN() has a comment asking if it should quiet a signaling NaN.
>
> 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 _*when*_ 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.
>

That should work just fine, but only when you know that FP exceptions flags
are ignored, since the signalling NaN causes the operation to generate the
Invalid exception, and a quiet NaN doesn't generally cause exceptions.

Jacob Lifshay

>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210709/f995aeb6/attachment.html>


More information about the llvm-dev mailing list