From bd5e5a86697eb50cf9687a773cc55d9f021c624a Mon Sep 17 00:00:00 2001 From: Dale Johannesen Date: Wed, 11 Feb 2009 22:14:51 +0000 Subject: [PATCH] Edit description of floating point constants to reflect reality. Acknowledgements to John Clements for prodding me into this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64332 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/LangRef.html | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/docs/LangRef.html b/docs/LangRef.html index ff71e3706f7..1fbd32b9b30 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -1760,16 +1760,31 @@ them all and their syntax.

-

The one non-intuitive notation for constants is the optional hexadecimal form +

The one non-intuitive notation for constants is the hexadecimal form of floating point constants. For example, the form 'double 0x432ff973cafa8000' is equivalent to (but harder to read than) 'double 4.5e+15'. The only time hexadecimal floating point constants are required (and the only time that they are generated by the disassembler) is when a floating point constant must be emitted but it cannot be represented as a -decimal floating point number. For example, NaN's, infinities, and other +decimal floating point number in a reasonable number of digits. For example, +NaN's, infinities, and other special values are represented in their IEEE hexadecimal format so that assembly and disassembly do not cause any bits to change in the constants.

- +

When using the hexadecimal form, constants of types float and double are +represented using the 16-digit form shown above (which matches the IEEE754 +representation for double); float values must, however, be exactly representable +as IEE754 single precision. +Hexadecimal format is always used for long +double, and there are three forms of long double. The 80-bit +format used by x86 is represented as 0xK +followed by 20 hexadecimal digits. +The 128-bit format used by PowerPC (two adjacent doubles) is represented +by 0xM followed by 32 hexadecimal digits. The IEEE 128-bit +format is represented +by 0xL followed by 32 hexadecimal digits; no currently supported +target uses this format. Long doubles will only work if they match +the long double format on your target. All hexadecimal formats are big-endian +(sign bit at the left).

-- 2.34.1