aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/powerpc/powerpc64/fpu/s_ceil.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/powerpc/powerpc64/fpu/s_ceil.S')
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_ceil.S13
1 files changed, 6 insertions, 7 deletions
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_ceil.S b/sysdeps/powerpc/powerpc64/fpu/s_ceil.S
index a1bfaa70c2..9809e24d26 100644
--- a/sysdeps/powerpc/powerpc64/fpu/s_ceil.S
+++ b/sysdeps/powerpc/powerpc64/fpu/s_ceil.S
@@ -22,11 +22,9 @@
.section ".toc","aw"
.LC0: /* 2**52 */
.tc FD_43300000_0[TC],0x4330000000000000
-.LC1: /* -0.0 */
- .tc FD_80000000_0[TC],0x8000000000000000
.section ".text"
-ENTRY (__ceil)
+EALIGN (__ceil, 4, 0)
CALL_MCOUNT 0
mffs fp11 /* Save current FPU rounding mode. */
lfd fp13,.LC0@toc(2)
@@ -39,17 +37,18 @@ ENTRY (__ceil)
ble- cr6,.L4
fadd fp1,fp1,fp13 /* x+= TWO52; */
fsub fp1,fp1,fp13 /* x-= TWO52; */
-.L9:
+ fabs fp1,fp1 /* if (x == 0.0) */
+ /* x = 0.0; */
mtfsf 0x01,fp11 /* restore previous rounding mode. */
blr
.L4:
bge- cr6,.L9 /* if (x < 0.0) */
fsub fp1,fp1,fp13 /* x-= TWO52; */
fadd fp1,fp1,fp13 /* x+= TWO52; */
- fcmpu cr5,fp1,fp12 /* if (x > 0.0) */
+ fnabs fp1,fp1 /* if (x == 0.0) */
+ /* x = -0.0; */
+.L9:
mtfsf 0x01,fp11 /* restore previous rounding mode. */
- bnelr+ cr5
- lfd fp1,.LC1@toc(2) /* x must be -0.0 for the 0.0 case. */
blr
END (__ceil)