aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/i386
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/i386')
-rw-r--r--sysdeps/i386/fpu/e_ilogb.S (renamed from sysdeps/i386/fpu/s_ilogb.S)11
-rw-r--r--sysdeps/i386/fpu/e_ilogbf.S (renamed from sysdeps/i386/fpu/s_ilogbf.S)11
-rw-r--r--sysdeps/i386/fpu/e_ilogbl.S (renamed from sysdeps/i386/fpu/s_ilogbl.S)11
3 files changed, 24 insertions, 9 deletions
diff --git a/sysdeps/i386/fpu/s_ilogb.S b/sysdeps/i386/fpu/e_ilogb.S
index 0cf1ad7419..4fb635041f 100644
--- a/sysdeps/i386/fpu/s_ilogb.S
+++ b/sysdeps/i386/fpu/e_ilogb.S
@@ -7,7 +7,7 @@
RCSID("$NetBSD: s_ilogb.S,v 1.5 1995/10/12 15:53:09 jtc Exp $")
-ENTRY(__ilogb)
+ENTRY(__ieee754_ilogb)
fldl 4(%esp)
/* I added the following ugly construct because ilogb(+-Inf) is
required to return INT_MAX in ISO C99.
@@ -18,6 +18,8 @@ ENTRY(__ilogb)
andb %ah, %dh
cmpb $0x05, %dh
je 1f /* Is +-Inf, jump. */
+ cmpb $0x40, %dh
+ je 2f /* Is +-0, jump. */
fxtract
pushl %eax
@@ -34,5 +36,8 @@ ENTRY(__ilogb)
1: fstp %st
movl $0x7fffffff, %eax
ret
-END (__ilogb)
-weak_alias (__ilogb, ilogb)
+2: fstp %st
+ movl $0x80000000, %eax /* FP_ILOGB0 */
+ ret
+END (__ieee754_ilogb)
+weak_alias (__ieee754_ilogb, __ilogb_finite)
diff --git a/sysdeps/i386/fpu/s_ilogbf.S b/sysdeps/i386/fpu/e_ilogbf.S
index 99e53edd75..fbb50be07f 100644
--- a/sysdeps/i386/fpu/s_ilogbf.S
+++ b/sysdeps/i386/fpu/e_ilogbf.S
@@ -7,7 +7,7 @@
RCSID("$NetBSD: s_ilogbf.S,v 1.4 1995/10/22 20:32:43 pk Exp $")
-ENTRY(__ilogbf)
+ENTRY(__ieee754_ilogbf)
flds 4(%esp)
/* I added the following ugly construct because ilogb(+-Inf) is
required to return INT_MAX in ISO C99.
@@ -18,6 +18,8 @@ ENTRY(__ilogbf)
andb %ah, %dh
cmpb $0x05, %dh
je 1f /* Is +-Inf, jump. */
+ cmpb $0x40, %dh
+ je 2f /* Is +-0, jump. */
fxtract
pushl %eax
@@ -34,5 +36,8 @@ ENTRY(__ilogbf)
1: fstp %st
movl $0x7fffffff, %eax
ret
-END (__ilogbf)
-weak_alias (__ilogbf, ilogbf)
+2: fstp %st
+ movl $0x80000000, %eax /* FP_ILOGB0 */
+ ret
+END (__ieee754_ilogbf)
+weak_alias (__ieee754_ilogbf, __ilogbf_finite)
diff --git a/sysdeps/i386/fpu/s_ilogbl.S b/sysdeps/i386/fpu/e_ilogbl.S
index 1f559b311e..6e2be9a300 100644
--- a/sysdeps/i386/fpu/s_ilogbl.S
+++ b/sysdeps/i386/fpu/e_ilogbl.S
@@ -8,7 +8,7 @@
RCSID("$NetBSD: $")
-ENTRY(__ilogbl)
+ENTRY(__ieee754_ilogbl)
fldt 4(%esp)
/* I added the following ugly construct because ilogb(+-Inf) is
required to return INT_MAX in ISO C99.
@@ -19,6 +19,8 @@ ENTRY(__ilogbl)
andb %ah, %dh
cmpb $0x05, %dh
je 1f /* Is +-Inf, jump. */
+ cmpb $0x40, %dh
+ je 2f /* Is +-0, jump. */
fxtract
pushl %eax
@@ -35,5 +37,8 @@ ENTRY(__ilogbl)
1: fstp %st
movl $0x7fffffff, %eax
ret
-END (__ilogbl)
-weak_alias (__ilogbl, ilogbl)
+2: fstp %st
+ movl $0x80000000, %eax /* FP_ILOGB0 */
+ ret
+END (__ieee754_ilogbl)
+weak_alias (__ieee754_ilogbl, __ilogbl_finite)