X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=sysdeps%2Fx86_64%2Ffpu%2Fe_log2l.S;h=140b93d101254d2693a613bcd1f17344a9c9033a;hb=622c86f48086403c889a2a16f2f09badde0eac7d;hp=f04d30a05a0ef5d63deb8d1f0c9d106e532a1030;hpb=0ecb606cb6cf65de1d9fc8a919bceb4be476c602;p=platform%2Fupstream%2Fglibc.git diff --git a/sysdeps/x86_64/fpu/e_log2l.S b/sysdeps/x86_64/fpu/e_log2l.S index f04d30a..140b93d 100644 --- a/sysdeps/x86_64/fpu/e_log2l.S +++ b/sysdeps/x86_64/fpu/e_log2l.S @@ -9,12 +9,9 @@ #include -#ifdef __ELF__ - .section .rodata -#else - .text -#endif - .align ALIGNARG(4) + .section .rodata.cst8,"aM",@progbits,8 + + .p2align 3 ASM_TYPE_DIRECTIVE(one,@object) one: .double 1.0 ASM_SIZE_DIRECTIVE(one) @@ -27,9 +24,9 @@ limit: .double 0.29 #ifdef PIC -#define MO(op) op##(%rip) +# define MO(op) op##(%rip) #else -#define MO(op) op +# define MO(op) op #endif .text @@ -62,3 +59,20 @@ ENTRY(__ieee754_log2l) fstp %st(1) ret END (__ieee754_log2l) + + +ENTRY(__log2l_finite) + fldl MO(one) + fldt 8(%rsp) // x : 1 + fld %st // x : x : 1 + fsub %st(2), %st // x-1 : x : 1 + fld %st // x-1 : x-1 : x : 1 + fabs // |x-1| : x-1 : x : 1 + fcompl MO(limit) // x-1 : x : 1 + fnstsw // x-1 : x : 1 + andb $0x45, %ah + jz 2b + fstp %st(1) // x-1 : 1 + fyl2xp1 // log(x) + ret +END (__log2l_finite)