diff options
Diffstat (limited to 'sysdeps/i386/fpu/s_expm1.S')
-rw-r--r-- | sysdeps/i386/fpu/s_expm1.S | 24 |
1 files changed, 3 insertions, 21 deletions
diff --git a/sysdeps/i386/fpu/s_expm1.S b/sysdeps/i386/fpu/s_expm1.S index 05e5285d7b..b4694c8e37 100644 --- a/sysdeps/i386/fpu/s_expm1.S +++ b/sysdeps/i386/fpu/s_expm1.S @@ -23,6 +23,7 @@ #include <sysdep.h> #include <machine/asm.h> +#include <i386-math-asm.h> .section .rodata @@ -37,12 +38,7 @@ one: .double 1.0 l2e: .tfloat 1.442695040888963407359924681002 ASM_SIZE_DIRECTIVE(l2e) - .section .rodata.cst8,"aM",@progbits,8 - - .p2align 3 - .type dbl_min,@object -dbl_min: .byte 0, 0, 0, 0, 0, 0, 0x10, 0 - ASM_SIZE_DIRECTIVE(dbl_min) +DEFINE_DBL_MIN #ifdef PIC #define MO(op) op##@GOTOFF(%edx) @@ -81,21 +77,6 @@ ENTRY(__expm1) #ifdef PIC LOAD_PIC_REG (dx) #endif - fld %st - fabs - fcoml MO(dbl_min) - fstp %st - fnstsw - sahf - jae 5f - subl $8, %esp - cfi_adjust_cfa_offset (8) - fld %st(0) - fmul %st(0) - fstpl (%esp) - addl $8, %esp - cfi_adjust_cfa_offset (-8) - ret 5: fldt MO(l2e) // log2(e) : x fmulp // log2(e)*x @@ -122,6 +103,7 @@ ENTRY(__expm1) fsubrl MO(one) // 1-2^int(log2(e)*x) : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) fstp %st(1) // 1-2^int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) fsubrp %st, %st(1) // 2^(log2(e)*x) + DBL_CHECK_FORCE_UFLOW ret 2: fstp %st |