diff options
Diffstat (limited to 'sysdeps/i386/fpu/s_log1p.S')
-rw-r--r-- | sysdeps/i386/fpu/s_log1p.S | 45 |
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) |