diff options
Diffstat (limited to 'sysdeps/libm-i387')
-rw-r--r-- | sysdeps/libm-i387/e_exp.S | 2 | ||||
-rw-r--r-- | sysdeps/libm-i387/e_expf.S | 2 | ||||
-rw-r--r-- | sysdeps/libm-i387/e_expl.S | 2 | ||||
-rw-r--r-- | sysdeps/libm-i387/s_expm1.S | 12 | ||||
-rw-r--r-- | sysdeps/libm-i387/s_expm1f.S | 12 | ||||
-rw-r--r-- | sysdeps/libm-i387/s_expm1l.S | 12 |
6 files changed, 24 insertions, 18 deletions
diff --git a/sysdeps/libm-i387/e_exp.S b/sysdeps/libm-i387/e_exp.S index 3c9d45b746..e76b9c63df 100644 --- a/sysdeps/libm-i387/e_exp.S +++ b/sysdeps/libm-i387/e_exp.S @@ -24,7 +24,7 @@ ENTRY(__ieee754_exp) fmulp /* x * log2(e) */ fstl %st(1) frndint /* int(x * log2(e)) */ - fsub %st,%st(1) /* fract(x * log2(e)) */ + fsubr %st,%st(1) /* fract(x * log2(e)) */ fxch f2xm1 /* 2^(fract(x * log2(e))) - 1 */ fld1 diff --git a/sysdeps/libm-i387/e_expf.S b/sysdeps/libm-i387/e_expf.S index cd8dc7f0b9..9a669cf8d4 100644 --- a/sysdeps/libm-i387/e_expf.S +++ b/sysdeps/libm-i387/e_expf.S @@ -25,7 +25,7 @@ ENTRY(__ieee754_expf) fmulp /* x * log2(e) */ fstl %st(1) frndint /* int(x * log2(e)) */ - fsub %st,%st(1) /* fract(x * log2(e)) */ + fsubr %st,%st(1) /* fract(x * log2(e)) */ fxch f2xm1 /* 2^(fract(x * log2(e))) - 1 */ fld1 diff --git a/sysdeps/libm-i387/e_expl.S b/sysdeps/libm-i387/e_expl.S index e398a90ef6..e83d30640d 100644 --- a/sysdeps/libm-i387/e_expl.S +++ b/sysdeps/libm-i387/e_expl.S @@ -26,7 +26,7 @@ ENTRY(__ieee754_expl) fmulp /* x * log2(e) */ fstl %st(1) frndint /* int(x * log2(e)) */ - fsub %st,%st(1) /* fract(x * log2(e)) */ + fsubr %st,%st(1) /* fract(x * log2(e)) */ fxch f2xm1 /* 2^(fract(x * log2(e))) - 1 */ fld1 diff --git a/sysdeps/libm-i387/s_expm1.S b/sysdeps/libm-i387/s_expm1.S index 2685d6e770..78e8013b7e 100644 --- a/sysdeps/libm-i387/s_expm1.S +++ b/sysdeps/libm-i387/s_expm1.S @@ -1,8 +1,9 @@ /* ix87 specific implementation of exp(x)-1. - Copyright (C) 1996 Free Software Foundation, Inc. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>. + Corrections by H.J. Lu (hjl@gnu.ai.mit.edu), 1997. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -64,15 +65,16 @@ ENTRY(__expm1) fmulp // log2(e)*x fld %st // log2(e)*x : log2(e)*x frndint // int(log2(e)*x) : log2(e)*x - fsub %st, %st(1) // int(log2(e)*x) : fract(log2(e)*x) + fsubr %st, %st(1) // int(log2(e)*x) : fract(log2(e)*x) fxch // fract(log2(e)*x) : int(log2(e)*x) f2xm1 // 2^fract(log2(e)*x)-1 : int(log2(e)*x) fscale // 2^(log2(e)*x)-2^int(log2(e)*x) : int(log2(e)*x) fxch // int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) fldl MO(one) // 1 : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) - fscale // 2^int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) - faddp // 2^(log2(e)*x) - fsubl MO(one) + fscale // 2^int(log2(e)*x) : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fsubrl MO(one) // 1-2^int(log2(e)*x) : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fstp %st(1) // 1-2^int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fsubrp %st, %st(1) // 2^(log2(e)*x) ret 2: testl $0x200, %eax // Test sign. diff --git a/sysdeps/libm-i387/s_expm1f.S b/sysdeps/libm-i387/s_expm1f.S index 85c3c849f1..00f1562e73 100644 --- a/sysdeps/libm-i387/s_expm1f.S +++ b/sysdeps/libm-i387/s_expm1f.S @@ -1,8 +1,9 @@ /* ix87 specific implementation of exp(x)-1. - Copyright (C) 1996 Free Software Foundation, Inc. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>. + Corrections by H.J. Lu (hjl@gnu.ai.mit.edu), 1997. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -64,15 +65,16 @@ ENTRY(__expm1f) fmulp // log2(e)*x fld %st // log2(e)*x : log2(e)*x frndint // int(log2(e)*x) : log2(e)*x - fsub %st, %st(1) // int(log2(e)*x) : fract(log2(e)*x) + fsubr %st, %st(1) // int(log2(e)*x) : fract(log2(e)*x) fxch // fract(log2(e)*x) : int(log2(e)*x) f2xm1 // 2^fract(log2(e)*x)-1 : int(log2(e)*x) fscale // 2^(log2(e)*x)-2^int(log2(e)*x) : int(log2(e)*x) fxch // int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) fldl MO(one) // 1 : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) - fscale // 2^int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) - faddp // 2^(log2(e)*x) - fsubl MO(one) + fscale // 2^int(log2(e)*x) : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fsubrl MO(one) // 1-2^int(log2(e)*x) : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fstp %st(1) // 1-2^int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fsubrp %st, %st(1) // 2^(log2(e)*x) ret 2: testl $0x200, %eax // Test sign. diff --git a/sysdeps/libm-i387/s_expm1l.S b/sysdeps/libm-i387/s_expm1l.S index 45aa753094..b7e6b36d39 100644 --- a/sysdeps/libm-i387/s_expm1l.S +++ b/sysdeps/libm-i387/s_expm1l.S @@ -1,8 +1,9 @@ /* ix87 specific implementation of exp(x)-1. - Copyright (C) 1996 Free Software Foundation, Inc. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>. + Corrections by H.J. Lu (hjl@gnu.ai.mit.edu), 1997. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -64,15 +65,16 @@ ENTRY(__expm1l) fmulp // log2(e)*x fld %st // log2(e)*x : log2(e)*x frndint // int(log2(e)*x) : log2(e)*x - fsub %st, %st(1) // int(log2(e)*x) : fract(log2(e)*x) + fsubr %st, %st(1) // int(log2(e)*x) : fract(log2(e)*x) fxch // fract(log2(e)*x) : int(log2(e)*x) f2xm1 // 2^fract(log2(e)*x)-1 : int(log2(e)*x) fscale // 2^(log2(e)*x)-2^int(log2(e)*x) : int(log2(e)*x) fxch // int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) fldl MO(one) // 1 : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) - fscale // 2^int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) - faddp // 2^(log2(e)*x) - fsubl MO(one) + fscale // 2^int(log2(e)*x) : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fsubrl MO(one) // 1-2^int(log2(e)*x) : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fstp %st(1) // 1-2^int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fsubrp %st, %st(1) // 2^(log2(e)*x) ret 2: testl $0x200, %eax // Test sign. |