diff options
-rw-r--r-- | src/math/i386/exp.s | 9 | ||||
-rw-r--r-- | src/math/i386/expm1.s | 13 |
2 files changed, 21 insertions, 1 deletions
diff --git a/src/math/i386/exp.s b/src/math/i386/exp.s index 18f6cd67..f4769d59 100644 --- a/src/math/i386/exp.s +++ b/src/math/i386/exp.s @@ -34,6 +34,15 @@ exp: .type exp2,@function exp2: fldl 4(%esp) +1: fxam + fnstsw %ax + sahf + jnp 1f + jnc 1f + fstps 4(%esp) + mov $0xfe,%al + and %al,7(%esp) + flds 4(%esp) 1: fld %st(0) frndint fxch %st(1) diff --git a/src/math/i386/expm1.s b/src/math/i386/expm1.s index d6d511ef..bbb5d12e 100644 --- a/src/math/i386/expm1.s +++ b/src/math/i386/expm1.s @@ -14,12 +14,23 @@ expm1l: .type expm1,@function expm1: fldl 4(%esp) +1: fxam + fnstsw %ax + sahf + jnp 1f + jnc 1f + fstps 4(%esp) + mov $0xfe,%al + and %al,7(%esp) + flds 4(%esp) 1: fldl2e fmulp fld %st(0) frndint fldz - fcompi + fcomp + fnstsw %ax + sahf jnz 1f fstp %st(0) f2xm1 |