forked from OSchip/llvm-project
LangRef: Clarify expected sNaN behavior for minnum/maxnum
This matches the de-facto behavior based on constant folding and the default lowering to fmin/fmax. llvm-svn: 340762
This commit is contained in:
parent
a2f095f1a3
commit
937003cf22
|
@ -11472,13 +11472,22 @@ type.
|
|||
Semantics:
|
||||
""""""""""
|
||||
|
||||
Follows the IEEE-754 semantics for minNum, which also match for libm's
|
||||
fmin.
|
||||
Follows the IEEE-754 semantics for minNum, except for handling of
|
||||
signaling NaNs. This match's the behavior of libm's fmin.
|
||||
|
||||
If either operand is a NaN, returns the other non-NaN operand. Returns
|
||||
NaN only if both operands are NaN. If the operands compare equal,
|
||||
returns a value that compares equal to both operands. This means that
|
||||
fmin(+/-0.0, +/-0.0) could return either -0.0 or 0.0.
|
||||
NaN only if both operands are NaN. The returned NaN is always
|
||||
quiet. If the operands compare equal, returns a value that compares
|
||||
equal to both operands. This means that fmin(+/-0.0, +/-0.0) could
|
||||
return either -0.0 or 0.0.
|
||||
|
||||
Unlike the IEEE-754 2008 behavior, this does not distinguish between
|
||||
signaling and quiet NaN inputs. If a target's implementation follows
|
||||
the standard and returns a quiet NaN if either input is a signaling
|
||||
NaN, the intrinsic lowering is responsible for quieting the inputs to
|
||||
correctly return the non-NaN input (e.g. by using the equivalent of
|
||||
``llvm.canonicalize``).
|
||||
|
||||
|
||||
'``llvm.maxnum.*``' Intrinsic
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
@ -11513,13 +11522,21 @@ type.
|
|||
|
||||
Semantics:
|
||||
""""""""""
|
||||
Follows the IEEE-754 semantics for maxNum, which also match for libm's
|
||||
fmax.
|
||||
Follows the IEEE-754 semantics for maxNum except for the handling of
|
||||
signaling NaNs. This matches the behavior of libm's fmax.
|
||||
|
||||
If either operand is a NaN, returns the other non-NaN operand. Returns
|
||||
NaN only if both operands are NaN. If the operands compare equal,
|
||||
returns a value that compares equal to both operands. This means that
|
||||
fmax(+/-0.0, +/-0.0) could return either -0.0 or 0.0.
|
||||
NaN only if both operands are NaN. The returned NaN is always
|
||||
quiet. If the operands compare equal, returns a value that compares
|
||||
equal to both operands. This means that fmax(+/-0.0, +/-0.0) could
|
||||
return either -0.0 or 0.0.
|
||||
|
||||
Unlike the IEEE-754 2008 behavior, this does not distinguish between
|
||||
signaling and quiet NaN inputs. If a target's implementation follows
|
||||
the standard and returns a quiet NaN if either input is a signaling
|
||||
NaN, the intrinsic lowering is responsible for quieting the inputs to
|
||||
correctly return the non-NaN input (e.g. by using the equivalent of
|
||||
``llvm.canonicalize``).
|
||||
|
||||
'``llvm.copysign.*``' Intrinsic
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
Loading…
Reference in New Issue