aboutsummaryrefslogtreecommitdiff
path: root/src/math/i386/scalbnf.s
diff options
context:
space:
mode:
authornsz <nsz@port70.net>2012-03-20 10:25:02 +0100
committernsz <nsz@port70.net>2012-03-20 10:25:02 +0100
commit03c52e137a28f65519bf6e7c303e5bd25df6e929 (patch)
treef5fe7ae916d9039adfe82217716e2aafd08702fb /src/math/i386/scalbnf.s
parentMerge branch 'master' of git://git.etalabs.net/musl (diff)
parentoptimize scalbn family (diff)
downloadgrovel-03c52e137a28f65519bf6e7c303e5bd25df6e929.tar.gz
grovel-03c52e137a28f65519bf6e7c303e5bd25df6e929.tar.xz
Merge branch 'master' of git://git.etalabs.net/musl
Diffstat (limited to 'src/math/i386/scalbnf.s')
-rw-r--r--src/math/i386/scalbnf.s18
1 files changed, 15 insertions, 3 deletions
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