[llvm-commits] [llvm] r57185 - /llvm/trunk/lib/Support/APFloat.cpp
Dan Gohman
gohman at apple.com
Mon Oct 6 13:20:23 PDT 2008
Hi Dale,
This is causing these tests:
CodeGen/X86/all-ones-vector.ll
CodeGen/CBackend/2003-10-12-NANGlobalInits.ll
to fail with error message "Floating point constant invalid for type"
from llvm-as. Can you investigate?
Thanks,
Dan
On Oct 6, 2008, at 11:22 AM, Dale Johannesen wrote:
> Author: johannes
> Date: Mon Oct 6 13:22:29 2008
> New Revision: 57185
>
> URL: http://llvm.org/viewvc/llvm-project?rev=57185&view=rev
> Log:
> Mark shortening NaN conversions as Inexact. PR 2856.
> Improve description of unsupported formats.
>
>
> Modified:
> llvm/trunk/lib/Support/APFloat.cpp
>
> Modified: llvm/trunk/lib/Support/APFloat.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/APFloat.cpp?rev=57185&r1=57184&r2=57185&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Support/APFloat.cpp (original)
> +++ llvm/trunk/lib/Support/APFloat.cpp Mon Oct 6 13:22:29 2008
> @@ -1727,11 +1727,12 @@
> APInt::tcShiftLeft(significandParts(), newPartCount, shift);
> else if (shift < 0)
> APInt::tcShiftRight(significandParts(), newPartCount, -shift);
> + // If the new size is shorter, we lost information.
> + fs = (shift < 0) ? opInexact : opOK;
> // gcc forces the Quiet bit on, which means (float)(double)
> (float_sNan)
> // does not give you back the same bits. This is dubious, and we
> // don't currently do it. You're really supposed to get
> // an invalid operation signal at runtime, but nobody does that.
> - fs = opOK;
> } else {
> semantics = &toSemantics;
> fs = opOK;
> @@ -2633,11 +2634,13 @@
> return api.bitsToDouble();
> }
>
> -/// Integer bit is explicit in this format. Current Intel book
> does not
> -/// define meaning of:
> -/// exponent = all 1's, integer bit not set.
> -/// exponent = 0, integer bit set. (formerly "psuedodenormals")
> -/// exponent!=0 nor all 1's, integer bit not set. (formerly
> "unnormals")
> +/// Integer bit is explicit in this format. Intel hardware (387
> and later)
> +/// does not support these bit patterns:
> +/// exponent = all 1's, integer bit 0, significand 0
> ("pseudoinfinity")
> +/// exponent = all 1's, integer bit 0, significand nonzero
> ("pseudoNaN")
> +/// exponent = 0, integer bit 1 ("pseudodenormal")
> +/// exponent!=0 nor all 1's, integer bit 0 ("unnormal")
> +/// At the moment, the first two are treated as NaNs, the second
> two as Normal.
> void
> APFloat::initFromF80LongDoubleAPInt(const APInt &api)
> {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list