[PATCH] D67360: [FPEnv] Document that constrained FP intrinsics cannot be mixed with non-constrained
Kevin P. Neal via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 13 12:34:59 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL371888: [FPEnv] Document that constrained FP intrinsics cannot be mixed with non… (authored by kpn, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D67360?vs=220095&id=220154#toc
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D67360/new/
https://reviews.llvm.org/D67360
Files:
llvm/trunk/docs/LangRef.rst
Index: llvm/trunk/docs/LangRef.rst
===================================================================
--- llvm/trunk/docs/LangRef.rst
+++ llvm/trunk/docs/LangRef.rst
@@ -15064,12 +15064,21 @@
accurately preserve exception behavior without compromising LLVM's ability to
optimize FP code when the default behavior is used.
-Each of these intrinsics corresponds to a normal floating-point operation. The
-first two arguments and the return value are the same as the corresponding FP
+If any FP operation in a function is constrained then they all must be
+constrained. This is required for correct LLVM IR. Optimizations that
+move code around can create miscompiles if mixing of constrained and normal
+operations is done. The correct way to mix constrained and less constrained
+operations is to use the rounding mode and exception handling metadata to
+mark constrained intrinsics as having LLVM's default behavior.
+
+Each of these intrinsics corresponds to a normal floating-point operation. The
+data arguments and the return value are the same as the corresponding FP
operation.
-The third argument is a metadata argument specifying the rounding mode to be
-assumed. This argument must be one of the following strings:
+The rounding mode argument is a metadata string specifying what
+assumptions, if any, the optimizer can make when transforming constant
+values. Some constrained FP intrinsics omit this argument. If required
+by the intrinsic, this argument must be one of the following strings:
::
@@ -15099,9 +15108,9 @@
non-dynamic rounding mode which does not match the actual rounding mode at
runtime results in undefined behavior.
-The fourth argument to the constrained floating-point intrinsics specifies the
-required exception behavior. This argument must be one of the following
-strings:
+The exception behavior argument is a metadata string describing the floating
+point exception semantics that required for the intrinsic. This argument
+must be one of the following strings:
::
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D67360.220154.patch
Type: text/x-patch
Size: 2029 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190913/9c26c64f/attachment.bin>
More information about the llvm-commits
mailing list