[llvm-commits] [llvm] r57185 - /llvm/trunk/lib/Support/APFloat.cpp
Dale Johannesen
dalej at apple.com
Mon Oct 6 13:30:25 PDT 2008
On Oct 6, 2008, at 1:20 PMPDT, Dan Gohman wrote:
> 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?
OK.
>
> 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
>
> _______________________________________________
> 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