mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-03 17:32:59 +00:00
[LangRef] fptosi and fptoui return poison on overflow.
I think we assume poison, not undef, for certain transforms we currently do. In any case, we should clarify the language here. (This sort of conversion is undefined behavior according to the C and C++ standards. And in practice, hardware implementations handle overflow inconsistently, so it would be difficult to define the result here.) Differential Revision: https://reviews.llvm.org/D47851 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@334326 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0d3cb776cc
commit
c035816d76
@ -3275,13 +3275,15 @@ The following is the syntax for constant expressions:
|
|||||||
integer constant. TYPE must be a scalar or vector integer type. CST
|
integer constant. TYPE must be a scalar or vector integer type. CST
|
||||||
must be of scalar or vector floating-point type. Both CST and TYPE
|
must be of scalar or vector floating-point type. Both CST and TYPE
|
||||||
must be scalars, or vectors of the same number of elements. If the
|
must be scalars, or vectors of the same number of elements. If the
|
||||||
value won't fit in the integer type, the results are undefined.
|
value won't fit in the integer type, the result is a
|
||||||
|
:ref:`poison value <poisonvalues>`.
|
||||||
``fptosi (CST to TYPE)``
|
``fptosi (CST to TYPE)``
|
||||||
Convert a floating-point constant to the corresponding signed
|
Convert a floating-point constant to the corresponding signed
|
||||||
integer constant. TYPE must be a scalar or vector integer type. CST
|
integer constant. TYPE must be a scalar or vector integer type. CST
|
||||||
must be of scalar or vector floating-point type. Both CST and TYPE
|
must be of scalar or vector floating-point type. Both CST and TYPE
|
||||||
must be scalars, or vectors of the same number of elements. If the
|
must be scalars, or vectors of the same number of elements. If the
|
||||||
value won't fit in the integer type, the results are undefined.
|
value won't fit in the integer type, the result is a
|
||||||
|
:ref:`poison value <poisonvalues>`.
|
||||||
``uitofp (CST to TYPE)``
|
``uitofp (CST to TYPE)``
|
||||||
Convert an unsigned integer constant to the corresponding
|
Convert an unsigned integer constant to the corresponding
|
||||||
floating-point constant. TYPE must be a scalar or vector floating-point
|
floating-point constant. TYPE must be a scalar or vector floating-point
|
||||||
@ -8765,8 +8767,8 @@ Semantics:
|
|||||||
|
|
||||||
The '``fptoui``' instruction converts its :ref:`floating-point
|
The '``fptoui``' instruction converts its :ref:`floating-point
|
||||||
<t_floating>` operand into the nearest (rounding towards zero)
|
<t_floating>` operand into the nearest (rounding towards zero)
|
||||||
unsigned integer value. If the value cannot fit in ``ty2``, the results
|
unsigned integer value. If the value cannot fit in ``ty2``, the result
|
||||||
are undefined.
|
is a :ref:`poison value <poisonvalues>`.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
""""""""
|
""""""""
|
||||||
@ -8807,8 +8809,8 @@ Semantics:
|
|||||||
|
|
||||||
The '``fptosi``' instruction converts its :ref:`floating-point
|
The '``fptosi``' instruction converts its :ref:`floating-point
|
||||||
<t_floating>` operand into the nearest (rounding towards zero)
|
<t_floating>` operand into the nearest (rounding towards zero)
|
||||||
signed integer value. If the value cannot fit in ``ty2``, the results
|
signed integer value. If the value cannot fit in ``ty2``, the result
|
||||||
are undefined.
|
is a :ref:`poison value <poisonvalues>`.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
""""""""
|
""""""""
|
||||||
|
Loading…
Reference in New Issue
Block a user