From fceb7193ea538827ce7cfdf43bb972d88df53878 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Thu, 26 Oct 2023 20:09:38 +0200 Subject: [PATCH] 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. --- llvm/docs/LangRef.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst index cabb5cd1bed6..c97a7ae372bc 100644 --- a/llvm/docs/LangRef.rst +++ b/llvm/docs/LangRef.rst @@ -11332,7 +11332,10 @@ environment `. NaN values follow the usual :ref:`NaN behaviors `, 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: """"""""