aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2016-08-02 21:00:21 -0700
committerDavid S. Miller <davem@davemloft.net>2016-08-02 21:00:21 -0700
commit3ef3f1b93fdf20143865cc16dd75f39a7f0fac2f (patch)
tree13fd94627cbe59b2b245de7f87108b5ac4ebe663 /sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S
parent5a0b6138d8325d6aabd504bcccd7ee5fba07bb25 (diff)
downloadglibc-3ef3f1b93fdf20143865cc16dd75f39a7f0fac2f.tar
glibc-3ef3f1b93fdf20143865cc16dd75f39a7f0fac2f.tar.gz
glibc-3ef3f1b93fdf20143865cc16dd75f39a7f0fac2f.tar.bz2
glibc-3ef3f1b93fdf20143865cc16dd75f39a7f0fac2f.zip
Fix sNaN handling in nearbyint on 32-bit sparc.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint-vis3.S (__nearbyint_vis3): Don't check for sNaN before float register is loaded with the incoming argument. * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf-vis3.S (__nearbyintf_vis3): Likewise. * sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyint.S (__nearbyint): Likewise. * sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S (__nearbyintf): Likewise.
Diffstat (limited to 'sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S')
-rw-r--r--sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S4
1 files changed, 2 insertions, 2 deletions
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S b/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S
index d5cf5ce815..9be41f6c22 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S
@@ -35,9 +35,10 @@
#define SIGN_BIT %f12 /* -0.0 */
ENTRY (__nearbyintf)
+ st %o0, [%sp + 68]
+ ld [%sp + 68], %f1
fcmps %fcc3, %f1, %f1 /* Check for sNaN */
st %fsr, [%sp + 88]
- st %o0, [%sp + 68]
sethi %hi(TWO_TWENTYTHREE), %o2
sethi %hi(0xf8003e0), %o5
ld [%sp + 88], %o4
@@ -46,7 +47,6 @@ ENTRY (__nearbyintf)
fnegs ZERO, SIGN_BIT
andn %o4, %o5, %o4
st %o4, [%sp + 80]
- ld [%sp + 68], %f1
ld [%sp + 80], %fsr
st %o2, [%sp + 68]
fabss %f1, %f14