mirror of
git://git.musl-libc.org/musl
synced 2025-03-06 20:48:29 +01:00
fix broken modf family functions
This commit is contained in:
parent
1bf4dad327
commit
be5b01f855
3 changed files with 66 additions and 27 deletions
|
@ -1,15 +1,28 @@
|
|||
.global modf
|
||||
.type modf,@function
|
||||
modf:
|
||||
mov 12(%esp),%eax
|
||||
mov 12(%esp),%ecx
|
||||
fldl 4(%esp)
|
||||
fld1
|
||||
fld %st(1)
|
||||
1: fprem
|
||||
fstsw %ax
|
||||
fxam
|
||||
fnstsw %ax
|
||||
sahf
|
||||
jp 1b
|
||||
fstp %st(1)
|
||||
fsubr %st(1)
|
||||
fstpl (%eax)
|
||||
jnp 1f
|
||||
jc 2f
|
||||
1: fld1
|
||||
fld %st(1)
|
||||
1: fprem
|
||||
fnstsw %ax
|
||||
sahf
|
||||
jp 1b
|
||||
fstp %st(1)
|
||||
fsubr %st(0),%st(1)
|
||||
fxch %st(1)
|
||||
fstpl (%ecx)
|
||||
ret
|
||||
|
||||
2: fstpl (%ecx)
|
||||
mov 4(%ecx),%eax
|
||||
and $0x80000000,%eax
|
||||
mov %eax,4(%esp)
|
||||
flds 4(%esp)
|
||||
ret
|
||||
|
|
|
@ -1,15 +1,28 @@
|
|||
.global modff
|
||||
.type modff,@function
|
||||
modff:
|
||||
mov 8(%esp),%eax
|
||||
mov 8(%esp),%ecx
|
||||
flds 4(%esp)
|
||||
fld1
|
||||
fld %st(1)
|
||||
1: fprem
|
||||
fstsw %ax
|
||||
fxam
|
||||
fnstsw %ax
|
||||
sahf
|
||||
jp 1b
|
||||
fstp %st(1)
|
||||
fsubr %st(1)
|
||||
fstps (%eax)
|
||||
jnp 1f
|
||||
jc 2f
|
||||
1: fld1
|
||||
fld %st(1)
|
||||
1: fprem
|
||||
fnstsw %ax
|
||||
sahf
|
||||
jp 1b
|
||||
fstp %st(1)
|
||||
fsubr %st(0),%st(1)
|
||||
fxch %st(1)
|
||||
fstps (%ecx)
|
||||
ret
|
||||
|
||||
2: fstps (%ecx)
|
||||
mov (%ecx),%eax
|
||||
and $0x80000000,%eax
|
||||
mov %eax,4(%esp)
|
||||
flds 4(%esp)
|
||||
ret
|
||||
|
|
|
@ -1,15 +1,28 @@
|
|||
.global modfl
|
||||
.type modfl,@function
|
||||
modfl:
|
||||
mov 16(%esp),%eax
|
||||
mov 16(%esp),%ecx
|
||||
fldt 4(%esp)
|
||||
fld1
|
||||
fld %st(1)
|
||||
1: fprem
|
||||
fstsw %ax
|
||||
fxam
|
||||
fnstsw %ax
|
||||
sahf
|
||||
jp 1b
|
||||
fstp %st(1)
|
||||
fsubr %st(1)
|
||||
fstpt (%eax)
|
||||
jnp 1f
|
||||
jc 2f
|
||||
1: fld1
|
||||
fld %st(1)
|
||||
1: fprem
|
||||
fnstsw %ax
|
||||
sahf
|
||||
jp 1b
|
||||
fstp %st(1)
|
||||
fsubr %st(0),%st(1)
|
||||
fxch %st(1)
|
||||
fstpt (%ecx)
|
||||
ret
|
||||
|
||||
2: fstpt (%ecx)
|
||||
mov 6(%ecx),%eax
|
||||
and $0x80000000,%eax
|
||||
mov %eax,4(%esp)
|
||||
flds 4(%esp)
|
||||
ret
|
||||
|
|
Loading…
Add table
Reference in a new issue