diff options
author | nsz <nsz@port70.net> | 2012-03-20 10:25:02 +0100 |
---|---|---|
committer | nsz <nsz@port70.net> | 2012-03-20 10:25:02 +0100 |
commit | 03c52e137a28f65519bf6e7c303e5bd25df6e929 (patch) | |
tree | f5fe7ae916d9039adfe82217716e2aafd08702fb /src/math/i386/scalbn.s | |
parent | c879a9592f09a49c1807ee95d4305c406f44882e (diff) | |
parent | baa43bca0a051e8deb0d6a9a8882ceeea5c27249 (diff) | |
download | musl-03c52e137a28f65519bf6e7c303e5bd25df6e929.tar.gz |
Merge branch 'master' of git://git.etalabs.net/musl
Diffstat (limited to 'src/math/i386/scalbn.s')
-rw-r--r-- | src/math/i386/scalbn.s | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/math/i386/scalbn.s b/src/math/i386/scalbn.s index e275d14f..8bf302f2 100644 --- a/src/math/i386/scalbn.s +++ b/src/math/i386/scalbn.s @@ -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 |