1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 12:41:49 +01:00

[FPEnv] Document that constrained FP intrinsics cannot be mixed with non-constrained

Reviewed by:	andrew.w.kaylor, cameron.mcinally, uweigand
Approved by:	andrew.w.kaylor
Differential Revision:	https://reviews.llvm.org/D67360

llvm-svn: 371888
This commit is contained in:
Kevin P. Neal 2019-09-13 19:36:19 +00:00
parent 8fa4ef5e9b
commit c5f29e2f14

View File

@ -15064,12 +15064,21 @@ Constrained FP intrinsics are used to support non-default rounding modes and
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 @@ the specified rounding mode, but this is not guaranteed. Using a specific
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:
::