diff options
Diffstat (limited to 'sysdeps/i386/fpu/e_scalbl.S')
-rw-r--r-- | sysdeps/i386/fpu/e_scalbl.S | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/sysdeps/i386/fpu/e_scalbl.S b/sysdeps/i386/fpu/e_scalbl.S deleted file mode 100644 index 896f599cb0..0000000000 --- a/sysdeps/i386/fpu/e_scalbl.S +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Written by J.T. Conklin <jtc@netbsd.org>. - * Public domain. - * - * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. - * - * Correct handling of y==-inf <drepper@gnu> - */ - -#include <machine/asm.h> - - .section .rodata - - .align ALIGNARG(4) - .type zero_nan,@object -zero_nan: - .double 0.0 -nan: .byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f - .byte 0, 0, 0, 0, 0, 0, 0, 0x80 - .byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f - ASM_SIZE_DIRECTIVE(zero_nan) - - -#ifdef PIC -# define MO(op) op##@GOTOFF(%ecx) -# define MOX(op,x,f) op##@GOTOFF(%ecx,x,f) -#else -# define MO(op) op -# define MOX(op,x,f) op(,x,f) -#endif - - .text -ENTRY(__ieee754_scalbl) - fldt 16(%esp) - fxam - fnstsw - fldt 4(%esp) - andl $0x4700, %eax - cmpl $0x0700, %eax - je 1f - andl $0x4500, %eax - cmpl $0x0100, %eax - je 2f - fxam - fnstsw - andl $0x4500, %eax - cmpl $0x0100, %eax - je 2f - fld %st(1) - frndint - fcomp %st(2) - fnstsw - sahf - jne 4f - fscale - fstp %st(1) - ret - - /* y is -inf */ -1: fxam -#ifdef PIC - LOAD_PIC_REG (cx) -#endif - fnstsw - movl 12(%esp), %edx - shrl $5, %eax - fstp %st - fstp %st - andl $0x8000, %edx - andl $0x0228, %eax - cmpl $0x0028, %eax - je 4f - andl $8, %eax - shrl $11, %edx - addl %edx, %eax - fldl MOX(zero_nan, %eax, 1) - ret - - /* The result is NaN; raise an exception for sNaN arguments. */ -2: faddp - ret - - /* Return NaN and raise the invalid exception. */ -4: fstp %st - fstp %st - fldz - fdiv %st - ret -END(__ieee754_scalbl) -strong_alias (__ieee754_scalbl, __scalbl_finite) |