diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2018-12-27 15:19:34 +0000 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2018-12-27 15:20:08 +0000 |
commit | 72b2e72dc0f0bcc64f3a91f1e1d5986c186b7880 (patch) | |
tree | f9e635b447789995362b8aca162ad6d855bb28c2 /sysdeps/powerpc/powerpc64/fpu/s_roundf.S | |
parent | 2838aa1289bec5055c33d2c00bfe6e3ed3d52e0f (diff) | |
parent | 9f9bd6ac848e9acee2c1072cdb14955c1abb8725 (diff) |
Merge commit 'refs/top-bases/t/UTIME' into t/UTIME
Diffstat (limited to 'sysdeps/powerpc/powerpc64/fpu/s_roundf.S')
-rw-r--r-- | sysdeps/powerpc/powerpc64/fpu/s_roundf.S | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_roundf.S b/sysdeps/powerpc/powerpc64/fpu/s_roundf.S index 8841d83497..a8db632db6 100644 --- a/sysdeps/powerpc/powerpc64/fpu/s_roundf.S +++ b/sysdeps/powerpc/powerpc64/fpu/s_roundf.S @@ -1,5 +1,5 @@ /* roundf function. PowerPC64 version. - Copyright (C) 2004-2016 Free Software Foundation, Inc. + Copyright (C) 2004-2018 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -17,6 +17,7 @@ <http://www.gnu.org/licenses/>. */ #include <sysdep.h> +#include <libm-alias-float.h> .section ".toc","aw" .p2align 3 @@ -37,7 +38,7 @@ "Round toward Zero" mode and round by adding +-0.5 before rounding to the integer value. */ -EALIGN (__roundf, 4, 0) +ENTRY (__roundf, 4) CALL_MCOUNT 0 lfs fp13,.LC0@toc(2) fabs fp0,fp1 @@ -46,7 +47,7 @@ EALIGN (__roundf, 4, 0) mffs fp11 /* Save current FPU rounding mode and "inexact" state. */ fcmpu cr6,fp1,fp12 /* if (x > 0.0) */ - bnllr- cr7 + bnl- cr7,.L10 mtfsfi 7,1 /* Set rounding mode toward 0. */ lfs fp10,.LC1@toc(2) ble- cr6,.L4 @@ -69,7 +70,13 @@ EALIGN (__roundf, 4, 0) mtfsf 0xff,fp11 /* Restore previous rounding mode and "inexact" state. */ blr +.L10: + /* Ensure sNaN input is converted to qNaN. */ + fcmpu cr7,fp1,fp1 + beqlr cr7 + fadds fp1,fp1,fp1 + blr END (__roundf) -weak_alias (__roundf, roundf) +libm_alias_float (__round, round) |