diff options
Diffstat (limited to 'sysdeps/i386/fpu/e_atan2f.S')
-rw-r--r-- | sysdeps/i386/fpu/e_atan2f.S | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/sysdeps/i386/fpu/e_atan2f.S b/sysdeps/i386/fpu/e_atan2f.S index 9ffa637..ec0eb3f 100644 --- a/sysdeps/i386/fpu/e_atan2f.S +++ b/sysdeps/i386/fpu/e_atan2f.S @@ -7,10 +7,43 @@ RCSID("$NetBSD: e_atan2f.S,v 1.1 1995/05/08 23:35:10 jtc Exp $") + .section .rodata.cst4,"aM",@progbits,4 + + .p2align 2 + .type flt_min,@object +flt_min: .byte 0, 0, 0x80, 0 + ASM_SIZE_DIRECTIVE(flt_min) + +#ifdef PIC +# define MO(op) op##@GOTOFF(%ecx) +#else +# define MO(op) op +#endif + + .text ENTRY(__ieee754_atan2f) +#ifdef PIC + LOAD_PIC_REG (cx) +#endif flds 4(%esp) flds 8(%esp) fpatan - ret + flds MO(flt_min) + fld %st(1) + fabs + fucompp + fnstsw + sahf + jnc 1f + subl $4, %esp + cfi_adjust_cfa_offset (4) + fld %st(0) + fmul %st(0) + fstps (%esp) + fstps (%esp) + flds (%esp) + addl $4, %esp + cfi_adjust_cfa_offset (-4) +1: ret END (__ieee754_atan2f) strong_alias (__ieee754_atan2f, __atan2f_finite) |