[PATCH] Fix rounding bug in emulation for double float operating

David Gibson david at gibson.dropbear.id.au
Mon Dec 10 15:56:16 EST 2007


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...?

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson



More information about the Linuxppc-dev mailing list