提交 aa1b4dff 编写于 作者: R Rich Felker

fix broken exponential asm

infinities were getting converted into nans. the new code simply tests
for infinity and replaces it with a large magnitude value of the same
sign.

also, the fcomi instruction is apparently not part of the i387
instruction set, so avoid using it.
上级 37eb14dd
......@@ -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)
......
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册