math: remove x86 modf asm

the int part was wrong when -1 < x <= -0 (+0.0 instead of -0.0)
and the size and performace gain of the asm version was negligible
This commit is contained in:
nsz 2012-03-29 14:05:16 +02:00
parent f6ceccd922
commit d79ac8c38f
4 changed files with 0 additions and 111 deletions

View File

@ -1,28 +0,0 @@
.global modf
.type modf,@function
modf:
mov 12(%esp),%ecx
fldl 4(%esp)
fxam
fnstsw %ax
sahf
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

View File

@ -1,28 +0,0 @@
.global modff
.type modff,@function
modff:
mov 8(%esp),%ecx
flds 4(%esp)
fxam
fnstsw %ax
sahf
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

View File

@ -1,28 +0,0 @@
.global modfl
.type modfl,@function
modfl:
mov 16(%esp),%ecx
fldt 4(%esp)
fxam
fnstsw %ax
sahf
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

View File

@ -1,27 +0,0 @@
.global modfl
.type modfl,@function
modfl:
fldt 8(%rsp)
fxam
fnstsw %ax
sahf
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 (%rdi)
ret
2: fstpt (%rdi)
mov 6(%rdi),%eax
and $0x80000000,%eax
mov %eax,8(%rsp)
flds 8(%rsp)
ret