[llvm-dev] Misleading documentation on FP to integer conversion instructions?

Owen Anderson via llvm-dev llvm-dev at lists.llvm.org
Fri Sep 4 10:51:49 PDT 2020



> On Sep 4, 2020, at 6:26 AM, David Jones via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
> The LLVM IR reference manual states, for fptosi:
> 
> "The ‘fptosi’ instruction converts its floating-point <http://llvm.org/docs/LangRef.html#t-floating> operand into the nearest (rounding towards zero) signed integer value."
> 
> I interpreted this to mean that it rounds:
> 
> The nearest integer to 0.3 is 0.
> 
> The nearest integer to 0.9 is 1.
> 
> The nearest integer to 0.5 is either 0 or 1. And this is where the "rounding towards zero" applies - the result is prescribed to be 0.
> 
> In actuality, the instruction truncates, returning 0 for all cases.
> 
> Should this be reworded, perhaps to use the word "truncate”?

“Rounding towards zero” is a term of art from IEEE 754.  See https://en.wikipedia.org/wiki/IEEE_754#Directed_roundings <https://en.wikipedia.org/wiki/IEEE_754#Directed_roundings>

I agree that the documentation could be made more accessible by *also* using the colloquial term “truncation”, but round-towards-zero is the correct name for this behavior and should be retained.

—Owen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200904/046374a0/attachment.html>


More information about the llvm-dev mailing list