Merge branch 'master' of git://git.etalabs.net/musl

This commit is contained in:
nsz 2012-03-20 10:25:02 +01:00
commit 03c52e137a
4 changed files with 72 additions and 24 deletions

View File

@ -2,40 +2,49 @@
.type remquof,@function
remquof:
mov 12(%esp),%ecx
fldl 4(%esp)
fldl 8(%esp)
fldl 4(%esp)
mov 11(%esp),%dh
xor 7(%esp),%dh
jmp 1f
.global remquol
.type remquol,@function
remquol:
mov 28(%esp),%ecx
fldl 4(%esp)
fldl 16(%esp)
fldl 4(%esp)
mov 25(%esp),%dh
xor 13(%esp),%dh
jmp 1f
.global remquo
.type remquo,@function
remquo:
mov 20(%esp),%ecx
fldl 4(%esp)
fldl 12(%esp)
1: fld %st(1)
fldl 4(%esp)
mov 19(%esp),%dh
xor 11(%esp),%dh
1: fprem1
fnstsw %ax
sahf
jp 1b
fsubr %st(0),%st(2)
fxch %st(2)
fdivp
mov $0x4f000000,%eax
mov %eax,4(%esp)
flds 4(%esp)
fxch %st(1)
1: fprem
fnstsw %ax
sahf
jp 1b
fistpl (%ecx)
fstp %st(0)
fstp %st(1)
mov %ah,%dl
shr %dl
and $1,%dl
mov %ah,%al
shr $5,%al
and $2,%al
or %al,%dl
mov %ah,%al
shl $2,%al
and $4,%al
or %al,%dl
test %dh,%dh
jns 1f
neg %dl
1: movsbl %dl,%edx
mov %edx,(%ecx)
ret

View File

@ -11,10 +11,23 @@ scalbln:
.global scalbn
.type scalbn,@function
scalbn:
fildl 12(%esp)
mov 12(%esp),%eax
add $0x3ffe,%eax
cmp $0x7ffd,%eax
jb 1f
sub $0x3ffe,%eax
sar $31,%eax
xor $0xfff,%eax
add $0x3ffe,%eax
1: inc %eax
fldl 4(%esp)
fscale
fstp %st(1)
mov %eax,12(%esp)
mov $0x80000000,%eax
mov %eax,8(%esp)
xor %eax,%eax
mov %eax,4(%esp)
fldt 4(%esp)
fmulp
fstpl 4(%esp)
fldl 4(%esp)
ret

View File

@ -11,10 +11,22 @@ scalblnf:
.global scalbnf
.type scalbnf,@function
scalbnf:
fildl 8(%esp)
mov 8(%esp),%eax
add $0x3fe,%eax
cmp $0x7fd,%eax
jb 1f
sub $0x3fe,%eax
sar $31,%eax
xor $0x1ff,%eax
add $0x3fe,%eax
1: inc %eax
shl $20,%eax
flds 4(%esp)
fscale
fstp %st(1)
mov %eax,8(%esp)
xor %eax,%eax
mov %eax,4(%esp)
fldl 4(%esp)
fmulp
fstps 4(%esp)
flds 4(%esp)
ret

View File

@ -11,7 +11,21 @@ scalblnl:
.global scalbnl
.type scalbnl,@function
scalbnl:
fildl 16(%esp)
mov 16(%esp),%eax
add $0x3ffe,%eax
cmp $0x7ffd,%eax
jae 1f
inc %eax
fldt 4(%esp)
mov %eax,12(%esp)
mov $0x80000000,%eax
mov %eax,8(%esp)
xor %eax,%eax
mov %eax,4(%esp)
fldt 4(%esp)
fmulp
ret
1: fildl 16(%esp)
fldt 4(%esp)
fscale
fstp %st(1)