clarify NaN propagation in fptrunc (#68554)

Follow-up to #66579: while
implementing those semantics in Miri I realized there's a special case
to be considered in truncating float casts.
This commit is contained in:
Ralf Jung
2023-10-26 20:09:38 +02:00
committed by GitHub
parent 645b7795d4
commit fceb7193ea

View File

@@ -11332,7 +11332,10 @@ environment <floatenv>`.
NaN values follow the usual :ref:`NaN behaviors <floatnan>`, except that _if_ a
NaN payload is propagated from the input ("Quieting NaN propagation" or
"Unchanged NaN propagation" cases), then the low order bits of the NaN payload
which cannot fit in the resulting type are discarded.
which cannot fit in the resulting type are discarded. Note that if discarding
the low order bits leads to an all-0 payload, this cannot be represented as a
signaling NaN (it would represent an infinity instead), so in that case
"Unchanged NaN propagation" is not possible.
Example:
""""""""