[PATCH] Fix rounding bug in emulation for double floatoperating
Liu Yu
B13201 at freescale.com
Mon Dec 10 16:25:34 EST 2007
> -----Original Message-----
> From: David Gibson [mailto:david at gibson.dropbear.id.au]
> Sent: Monday, December 10, 2007 12:56 PM
> To: Liu Yu
> Cc: linuxppc-dev at ozlabs.org
> Subject: Re: [PATCH] Fix rounding bug in emulation for double
> floatoperating
>
>
> On Mon, Dec 10, 2007 at 01:00:52PM +0800, Liu Yu wrote:
> >
> > This patch fixes rounding bug in emulation for double float
> operating on PowerPC platform.
> >
> > When pack double float operand, it need to truncate the
> tail due to the limited precision.
> > If the truncated part is not zero, the last bit of work bit
> (totally 3 bits) need to '|' 1.
> >
> > This patch is completed in _FP_FRAC_SRS_2(X,N,sz)
> (arch/powerpc/math-emu/op-2.h).
> > Originally the code leftwards rotates the operand to just keep the
> > truncated part, then check whether it is zero. However, the
> number it
> > rotates is not correct when N is not smaller than
> _FP_W_TYPE_SIZE, and it will cause the work bit '|' 1 in the
> improper case.
> >
> > This patch fixes this issue.
> >
> > Signed-off-by: Liu Yu <b13201 at freescale.com>
>
> Wow someone deciphered the hideous macro hell of the math
> emulation code enough to fix a bug. I don't suppose you'd
> care to fix the millions of warnings that the math-emu code
> generates...?
Oh, I don't like macro define either. But it's really a bug...
More information about the Linuxppc-dev
mailing list