summaryrefslogtreecommitdiff
path: root/src/math/i386/expm1.s
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-03-19 09:00:30 -0400
committerRich Felker <dalias@aerifal.cx>2012-03-19 09:00:30 -0400
commit02db27d9deaee71b244c91e720ec819c74dab150 (patch)
treeef2543fd54a6fdbca8839cb14c71bb10ffdaa8f1 /src/math/i386/expm1.s
parentda7458a602a6f0bdea25d6b9b613372048a974e6 (diff)
downloadmusl-02db27d9deaee71b244c91e720ec819c74dab150.tar.gz
optimize exponential asm for i386
up to 30% faster exp2 by avoiding slow frndint and fscale functions. expm1 also takes a much more direct path for small arguments (the expected usage case).
Diffstat (limited to 'src/math/i386/expm1.s')
-rw-r--r--src/math/i386/expm1.s48
1 files changed, 1 insertions, 47 deletions
diff --git a/src/math/i386/expm1.s b/src/math/i386/expm1.s
index bbb5d12e..f335a3e5 100644
--- a/src/math/i386/expm1.s
+++ b/src/math/i386/expm1.s
@@ -1,47 +1 @@
-.global expm1f
-.type expm1f,@function
-expm1f:
- flds 4(%esp)
- jmp 1f
-
-.global expm1l
-.type expm1l,@function
-expm1l:
- fldt 4(%esp)
- jmp 1f
-
-.global expm1
-.type expm1,@function
-expm1:
- fldl 4(%esp)
-1: fxam
- fnstsw %ax
- sahf
- jnp 1f
- jnc 1f
- fstps 4(%esp)
- mov $0xfe,%al
- and %al,7(%esp)
- flds 4(%esp)
-1: fldl2e
- fmulp
- fld %st(0)
- frndint
- fldz
- fcomp
- fnstsw %ax
- sahf
- jnz 1f
- fstp %st(0)
- f2xm1
- ret
-1: fxch %st(1)
- fsub %st(1)
- f2xm1
- fld1
- faddp
- fscale
- fld1
- fsubrp
- fstp %st(1)
- ret
+# see exp.s