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:
parent
8fa4ef5e9b
commit
c5f29e2f14
@ -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:
|
||||
|
||||
::
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user