diff options
author | Ulrich Drepper <drepper@gmail.com> | 2011-10-15 18:09:12 -0400 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-10-15 18:09:12 -0400 |
commit | ba1a0d5938b53454a249d679ab90baf541cd91ad (patch) | |
tree | 29597637003f805478e7372deaa6da407025670a | |
parent | e9b25bd9303436af1de65afea4e984b640b2c81d (diff) | |
download | glibc-ba1a0d5938b53454a249d679ab90baf541cd91ad.tar.gz glibc-ba1a0d5938b53454a249d679ab90baf541cd91ad.tar.xz glibc-ba1a0d5938b53454a249d679ab90baf541cd91ad.zip |
No need for boundary case handling in x86-32 __ieee_logf
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | sysdeps/i386/i686/fpu/e_logf.S | 53 |
2 files changed, 4 insertions, 52 deletions
diff --git a/ChangeLog b/ChangeLog index 3e71646be1..44580a53b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2011-10-15 Ulrich Drepper <drepper@gmail.com> + * sysdeps/i386/i686/fpu/e_logf.S: No need for the fyl2xp1 use, fyl2x + is sufficient, at least on modern CPUs. + * ctype/ctype-info.c (__ctype_init): Define. * include/ctype.h (__ctype_init): Declare. (__ctype_b_loc): The variable is always initialized. diff --git a/sysdeps/i386/i686/fpu/e_logf.S b/sysdeps/i386/i686/fpu/e_logf.S index 64f8807f35..6fd39d50d3 100644 --- a/sysdeps/i386/i686/fpu/e_logf.S +++ b/sysdeps/i386/i686/fpu/e_logf.S @@ -3,34 +3,11 @@ * Public domain. * Adapted for float by Ulrich Drepper <drepper@cygnus.com>. * - * Changed to use fyl2xp1 for values near 1, <drepper@cygnus.com>. * Adapted for i686 instructions. */ #include <machine/asm.h> -#ifdef __ELF__ - .section .rodata.cst8,"aM",@progbits,8 -#else - .text -#endif - .p2align 3 - ASM_TYPE_DIRECTIVE(one,@object) -one: .double 1.0 - ASM_SIZE_DIRECTIVE(one) - /* It is not important that this constant is precise. It is only - a value which is known to be on the safe side for using the - fyl2xp1 instruction. */ - ASM_TYPE_DIRECTIVE(limit,@object) -limit: .double 0.29 - ASM_SIZE_DIRECTIVE(limit) - - -#ifdef PIC -# define MO(op) op##@GOTOFF(%edx) -#else -# define MO(op) op -#endif .text ENTRY(__ieee754_logf) @@ -38,22 +15,6 @@ ENTRY(__ieee754_logf) flds 4(%esp) // x : log(2) fucomi %st jp 3f -#ifdef PIC - LOAD_PIC_REG (dx) -#endif - fld %st // x : x : log(2) - fsubl MO(one) // x-1 : x : log(2) - fld %st // x-1 : x-1 : x : log(2) - fabs // |x-1| : x-1 : x : log(2) - fld MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) - fcomip %st(1) // |x-1| : x-1 : x : log(2) - fstp %st(0) // x-1 : x : log(2) - jc 2f - fstp %st(1) // x-1 : log(2) - fyl2xp1 // log(x) - ret - -2: fstp %st(0) // x : log(2) fyl2x // log(x) ret @@ -64,18 +25,6 @@ END (__ieee754_logf) ENTRY(__logf_finite) fldln2 // log(2) flds 4(%esp) // x : log(2) -#ifdef PIC - LOAD_PIC_REG (dx) -#endif - fld %st // x : x : log(2) - fsubl MO(one) // x-1 : x : log(2) - fld %st // x-1 : x-1 : x : log(2) - fabs // |x-1| : x-1 : x : log(2) - fld MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) - fcomip %st(1) // |x-1| : x-1 : x : log(2) - fstp %st(0) // x-1 : x : log(2) - jc 2b - fstp %st(1) // x-1 : log(2) - fyl2xp1 // log(x) + fyl2x // log(x) ret END(__logf_finite) |