[llvm] r246792 - Try to clarify the semantics of fptrunc
Dan Liew via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 3 11:43:57 PDT 2015
Author: delcypher
Date: Thu Sep 3 13:43:56 2015
New Revision: 246792
URL: http://llvm.org/viewvc/llvm-project?rev=246792&view=rev
Log:
Try to clarify the semantics of fptrunc
* ``the value cannot fit within the destination type`` is ambiguous.
It could mean overflow, underflow (not in the IEEE-754 sense) or a
result that cannot be exactly represented and requires rounding or it
could mean some combination of these. The semantics now state it means
overflow **only**.
* Using "truncation" in the semantics is very misleading given that it
doesn't necessarily truncate (i.e. round to zero). For example on
x86_64 with SSE2 this is currently mapped to cvtsd2ss instruction
who's rounding behaviour is dependent on the MXCSR register which
is usually set to round to nearest even by default. The semantics
now state that the rounding mode is undefined.
Modified:
llvm/trunk/docs/LangRef.rst
Modified: llvm/trunk/docs/LangRef.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/LangRef.rst?rev=246792&r1=246791&r2=246792&view=diff
==============================================================================
--- llvm/trunk/docs/LangRef.rst (original)
+++ llvm/trunk/docs/LangRef.rst Thu Sep 3 13:43:56 2015
@@ -7524,10 +7524,12 @@ implies that ``fptrunc`` cannot be used
Semantics:
""""""""""
-The '``fptrunc``' instruction truncates a ``value`` from a larger
+The '``fptrunc``' instruction casts a ``value`` from a larger
:ref:`floating point <t_floating>` type to a smaller :ref:`floating
-point <t_floating>` type. If the value cannot fit within the
-destination type, ``ty2``, then the results are undefined.
+point <t_floating>` type. If the value cannot fit (i.e. overflows) within the
+destination type, ``ty2``, then the results are undefined. If the cast produces
+an inexact result, how rounding is performed (e.g. truncation, also known as
+round to zero) is undefined.
Example:
""""""""
More information about the llvm-commits
mailing list