X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fmath%2Fi386%2Fscalbn.s;h=8bf302f236bb09e829188e5f9ca344b39b73a694;hb=9f58d06007818c43b9504e959ef81ab5f113b374;hp=e275d14f640971beea1a0e67e8b90dfbfcc45e66;hpb=58ff9e8eaf99f2294232be860daa2ca6f3674faf;p=musl 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