math: fix i386 atan2.s to raise underflow for subnormal results

This commit is contained in:
Szabolcs Nagy 2013-08-15 14:18:32 +00:00
commit 411efb3bc6
2 changed files with 24 additions and 2 deletions

View file

@ -4,4 +4,14 @@ atan2:
fldl 4(%esp)
fldl 12(%esp)
fpatan
ret
fstl 4(%esp)
mov 8(%esp),%eax
add %eax,%eax
cmp $0x00200000,%eax
jae 1f
# subnormal x, return x with underflow
fnstsw %ax
and $16,%ax
jnz 1f
fsts 4(%esp)
1: ret

View file

@ -4,4 +4,16 @@ atan2f:
flds 4(%esp)
flds 8(%esp)
fpatan
ret
fsts 4(%esp)
mov 4(%esp),%eax
add %eax,%eax
cmp $0x01000000,%eax
jae 1f
# subnormal x, return x with underflow
fnstsw %ax
and $16,%ax
jnz 1f
fld %st(0)
fmul %st(1)
fstps 4(%esp)
1: ret