From: Ulrich Drepper Date: Thu, 20 Mar 1997 03:20:56 +0000 (+0000) Subject: Correct recognition of mantissa overflow. X-Git-Tag: cvs/glibc-2_0_2~48 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=630ee40e9240f415e01b7b338938fc9d84d81253;p=thirdparty%2Fglibc.git Correct recognition of mantissa overflow. --- diff --git a/sysdeps/libm-i387/e_pow.S b/sysdeps/libm-i387/e_pow.S index efe184168b0..e665326438f 100644 --- a/sysdeps/libm-i387/e_pow.S +++ b/sysdeps/libm-i387/e_pow.S @@ -64,6 +64,13 @@ nan: .byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f ENTRY(__ieee754_pow) fldl 12(%esp) // y fxam + +#ifdef PIC + call 1f +1: popl %ecx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx +#endif + fnstsw movb %ah, %dl andb $0x45, %ah @@ -76,12 +83,6 @@ ENTRY(__ieee754_pow) cmpb $0x01, %ah // is y == NaN ? je 30f -#ifdef PIC - call 1f -1: popl %ecx - addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx -#endif - fldl 4(%esp) // x : y subl $8,%esp @@ -307,7 +308,7 @@ ENTRY(__ieee754_pow) andb $1, %al jz 24f // jump if not odd cmpl $0xffe00000, %edx - jbe 24f // does not fit in mantissa bits + jae 24f // does not fit in mantissa bits // It's an odd integer. fldl MO(mzero) ret diff --git a/sysdeps/libm-i387/e_powf.S b/sysdeps/libm-i387/e_powf.S index 54af93c9610..102cd4e3af9 100644 --- a/sysdeps/libm-i387/e_powf.S +++ b/sysdeps/libm-i387/e_powf.S @@ -64,6 +64,13 @@ nan: .byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f ENTRY(__ieee754_powf) flds 8(%esp) // y fxam + +#ifdef PIC + call 1f +1: popl %ecx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx +#endif + fnstsw movb %ah, %dl andb $0x45, %ah @@ -76,12 +83,6 @@ ENTRY(__ieee754_powf) cmpb $0x01, %ah // is y == NaN ? je 30f -#ifdef PIC - call 1f -1: popl %ecx - addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx -#endif - flds 4(%esp) // x : y subl $4, %esp @@ -299,7 +300,7 @@ ENTRY(__ieee754_powf) testb $1, %dl jz 24f // jump if not odd cmpl $0xff000000, %edx - jbe 24f // does not fit in mantissa bits + jae 24f // does not fit in mantissa bits // It's an odd integer. fldl MO(mzero) ret