summaryrefslogtreecommitdiff
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)