about summary refs log tree commit diff
path: root/sysdeps/i386/fpu/s_log1p.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/i386/fpu/s_log1p.S')
-rw-r--r--sysdeps/i386/fpu/s_log1p.S45
1 files changed, 11 insertions, 34 deletions
diff --git a/sysdeps/i386/fpu/s_log1p.S b/sysdeps/i386/fpu/s_log1p.S
index c2559a3f18..7978e76095 100644
--- a/sysdeps/i386/fpu/s_log1p.S
+++ b/sysdeps/i386/fpu/s_log1p.S
@@ -4,6 +4,7 @@
  */
 
 #include <machine/asm.h>
+#include <i386-math-asm.h>
 
 RCSID("$NetBSD: s_log1p.S,v 1.7 1995/05/09 00:10:58 jtc Exp $")
 
@@ -17,12 +18,13 @@ RCSID("$NetBSD: s_log1p.S,v 1.7 1995/05/09 00:10:58 jtc Exp $")
 limit:	.double 0.29
 one:	.double 1.0
 
-	.section .rodata.cst8,"aM",@progbits,8
+DEFINE_DBL_MIN
 
-	.p2align 3
-	.type dbl_min,@object
-dbl_min:	.byte 0, 0, 0, 0, 0, 0, 0x10, 0
-	ASM_SIZE_DIRECTIVE(dbl_min)
+#ifdef PIC
+# define MO(op) op##@GOTOFF(%edx)
+#else
+# define MO(op) op
+#endif
 
 /*
  * Use the fyl2xp1 function when the argument is in the range -0.29 to 0.29,
@@ -44,43 +46,18 @@ ENTRY(__log1p)
 	sahf
 	jc	3f		// in case x is NaN or ħInf
 4:	fabs
-#ifdef PIC
-	fcompl	limit@GOTOFF(%edx)
-#else
-	fcompl	limit
-#endif
+	fcompl	MO(limit)
 	fnstsw
 	sahf
 	jc	2f
 
-#ifdef PIC
-	faddl	one@GOTOFF(%edx)
-#else
-	faddl	one
-#endif
+	faddl	MO(one)
 	fyl2x
 	ret
 
 2:	fyl2xp1
-#ifdef PIC
-	fldl	dbl_min@GOTOFF(%edx)
-#else
-	fldl	dbl_min
-#endif
-	fld	%st(1)
-	fabs
-	fucompp
-	fnstsw
-	sahf
-	jnc	1f
-	subl	$8, %esp
-	cfi_adjust_cfa_offset (8)
-	fld	%st(0)
-	fmul	%st(0)
-	fstpl	(%esp)
-	addl	$8, %esp
-	cfi_adjust_cfa_offset (-8)
-1:	ret
+	DBL_CHECK_FORCE_UFLOW_NONNAN
+	ret
 
 3:	jp	4b		// in case x is ħInf
 	fstp	%st(1)