qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] softfloat: Only raise Invalid when conversions


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH] softfloat: Only raise Invalid when conversions to int are out of range
Date: Thu, 19 Dec 2013 22:11:53 +0000

On 19 December 2013 22:00, Peter Maydell <address@hidden> wrote:
> We implement a number of float-to-integer conversions using conversion
> to an integer type with a wider range and then a check against the
> narrower range we are actually converting to. If we find the result to
> be out of range we correctly raise the Invalid exception, but we must
> also suppress other exceptions which might have been raised by the
> conversion function we called.
>
> This won't throw away exceptions we should have preserved, because for
> the 'core' exception flags the IEEE spec mandates that the only valid
> combinations of exception that can be raised by a single operation are
> Inexact + Overflow and Inexact + Underflow. For the non-IEEE softfloat
> flag for input denormals, we can guarantee that that flag won't have
> been set for out of range float-to-int conversions because a squashed
> denormal by definition goes to plus or minus zero, which is always in
> range after conversion to integer zero.
>
> This bug has been fixed for some of the float-to-int conversion routines
> by previous patches; fix it for the remaining functions as well, so
> that they all restore the pre-conversion status flags prior to raising
> Invalid.
>
> Signed-off-by: Peter Maydell <address@hidden>
> ---
> NB that I've worded the commit message on the assumption that the
> patches Tom Musta has written for PPC bugs go in first; as it happens
> the patches don't actually conflict, though.
>
> Some of these fix wrong-exception-flags bugs in 32 bit ARM VCVT.

Forgot it for this one, so:
This patch is licensed under softfloat-2a or -2b, at your option.

thanks
-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]