[PATCH] D143074: [LangRef] improve documentation of SNaN in the default FP environment

Sanjay Patel via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 10 08:52:50 PST 2023


spatel updated this revision to Diff 496500.
spatel added a comment.

Patch updated:

1. Specify the SNaN behavior more exactly and use examples.
2. Adjusted wording about the status flags.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D143074/new/

https://reviews.llvm.org/D143074

Files:
  llvm/docs/LangRef.rst


Index: llvm/docs/LangRef.rst
===================================================================
--- llvm/docs/LangRef.rst
+++ llvm/docs/LangRef.rst
@@ -3282,15 +3282,17 @@
 Floating-Point Environment
 --------------------------
 
-The default LLVM floating-point environment assumes that floating-point
-instructions do not have side effects. Results assume the round-to-nearest
-rounding mode. No floating-point exception state is maintained in this
-environment. Therefore, there is no attempt to create or preserve invalid
-operation (SNaN) or division-by-zero exceptions.
-
-The benefit of this exception-free assumption is that floating-point
-operations may be speculated freely without any other fast-math relaxations
-to the floating-point model.
+The default LLVM floating-point environment assumes that traps are disabled and
+status flags are not observable. Therefore, floating-point math operations do
+not have side effects and may be speculated freely. Results assume the
+round-to-nearest rounding mode.
+
+Floating-point math operations treat all NaNs as quiet NaNs. For example,
+"pow(1.0, SNaN)" may be simplified to 1.0. This also means that SNaN may be
+passed through a math operation without quieting. For example, "fmul SNaN, 1.0"
+may be simplified to SNaN rather than QNaN. However, SNaN values are never
+created by math operations. They may only occur when provided as a program
+input value.
 
 Code that requires different behavior than this should use the
 :ref:`Constrained Floating-Point Intrinsics <constrainedfp>`.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D143074.496500.patch
Type: text/x-patch
Size: 1551 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230210/c34b9c98/attachment-0001.bin>


More information about the llvm-commits mailing list