powerpc: Fix llround spurious inexact on 32-bit POWER4 [BZ #22697]
This issue is similar to BZ #19235, where spurious exceptions are created from adding 0.5 then converting to an integer. The solution is based on Joseph's fix for BZ #19235. [BZ #22697] * sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S (__llround): Do not add 0.5 to integer or out-of-range arguments.
This commit is contained in:
parent
98d13ce07a
commit
af1e6be4ba
@ -1,3 +1,9 @@
|
||||
2018-01-12 Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
|
||||
|
||||
[BZ #22697]
|
||||
* sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S (__llround):
|
||||
Do not add 0.5 to integer or out-of-range arguments.
|
||||
|
||||
2018-01-12 Dmitry V. Levin <ldv@altlinux.org>
|
||||
|
||||
* po/bg.po: Update translations.
|
||||
|
@ -71,6 +71,11 @@ ENTRY (__llround)
|
||||
fcmpu cr1,fp1,fp12 /* x is negative? x < 0.0 */
|
||||
blt- cr6,.Lretzero /* 0.5 > x < -0.5 so just return 0. */
|
||||
bge- cr7,.Lnobias /* 2^52 > x < -2^52 just convert with no bias. */
|
||||
/* Test whether an integer to avoid spurious "inexact". */
|
||||
fadd fp3,fp2,fp9
|
||||
fsub fp3,fp3,fp9
|
||||
fcmpu cr5,fp2,fp3
|
||||
beq cr5,.Lnobias
|
||||
fadd fp3,fp2,fp10 /* |x|+=0.5 bias to prepare to round. */
|
||||
bge cr1,.Lconvert /* x is positive so don't negate x. */
|
||||
fnabs fp3,fp3 /* -(|x|+=0.5) */
|
||||
|
Loading…
x
Reference in New Issue
Block a user