X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=src%2Fmath%2Fi386%2Fscalbnf.s;h=9cb9ef5fee441710f536024f8c074c28851cf4af;hp=40232b6adbdc853b40e0f396b72158a77cb9b655;hb=baa43bca0a051e8deb0d6a9a8882ceeea5c27249;hpb=7513d3ecabb998e2c8c4cb9ed5de48c4b64a166b diff --git a/src/math/i386/scalbnf.s b/src/math/i386/scalbnf.s index 40232b6a..9cb9ef5f 100644 --- a/src/math/i386/scalbnf.s +++ b/src/math/i386/scalbnf.s @@ -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