asm exponential functions for i386
authorRich Felker <dalias@aerifal.cx>
Mon, 19 Mar 2012 01:43:43 +0000 (21:43 -0400)
committerRich Felker <dalias@aerifal.cx>
Mon, 19 Mar 2012 01:43:43 +0000 (21:43 -0400)
src/math/i386/exp.s [new file with mode: 0644]
src/math/i386/exp2.s [new file with mode: 0644]
src/math/i386/exp2f.s [new file with mode: 0644]
src/math/i386/exp2l.s [new file with mode: 0644]
src/math/i386/expf.s [new file with mode: 0644]
src/math/i386/expl.s [new file with mode: 0644]
src/math/i386/expm1.s [new file with mode: 0644]
src/math/i386/expm1f.s [new file with mode: 0644]
src/math/i386/expm1l.s [new file with mode: 0644]

diff --git a/src/math/i386/exp.s b/src/math/i386/exp.s
new file mode 100644 (file)
index 0000000..18f6cd6
--- /dev/null
@@ -0,0 +1,46 @@
+.global exp2f
+.type exp2f,@function
+exp2f:
+       flds 4(%esp)
+       jmp 1f
+
+.global exp2l
+.type exp2l,@function
+exp2l:
+       fldt 4(%esp)
+       jmp 1f
+
+.global expf
+.type expf,@function
+expf:
+       flds 4(%esp)
+       jmp 2f
+
+.global expl
+.type expl,@function
+expl:
+       fldt 4(%esp)
+       jmp 2f
+
+.global exp
+.type exp,@function
+exp:
+       fldl 4(%esp)
+2:     fldl2e
+       fmulp
+       jmp 1f
+
+.global exp2
+.type exp2,@function
+exp2:
+       fldl 4(%esp)
+1:     fld %st(0)
+       frndint
+       fxch %st(1)
+       fsub %st(1)
+       f2xm1
+       fld1
+       faddp
+       fscale
+       fstp %st(1)
+       ret
diff --git a/src/math/i386/exp2.s b/src/math/i386/exp2.s
new file mode 100644 (file)
index 0000000..f335a3e
--- /dev/null
@@ -0,0 +1 @@
+# see exp.s
diff --git a/src/math/i386/exp2f.s b/src/math/i386/exp2f.s
new file mode 100644 (file)
index 0000000..f335a3e
--- /dev/null
@@ -0,0 +1 @@
+# see exp.s
diff --git a/src/math/i386/exp2l.s b/src/math/i386/exp2l.s
new file mode 100644 (file)
index 0000000..f335a3e
--- /dev/null
@@ -0,0 +1 @@
+# see exp.s
diff --git a/src/math/i386/expf.s b/src/math/i386/expf.s
new file mode 100644 (file)
index 0000000..f335a3e
--- /dev/null
@@ -0,0 +1 @@
+# see exp.s
diff --git a/src/math/i386/expl.s b/src/math/i386/expl.s
new file mode 100644 (file)
index 0000000..f335a3e
--- /dev/null
@@ -0,0 +1 @@
+# see exp.s
diff --git a/src/math/i386/expm1.s b/src/math/i386/expm1.s
new file mode 100644 (file)
index 0000000..d6d511e
--- /dev/null
@@ -0,0 +1,36 @@
+.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:     fldl2e
+       fmulp
+       fld %st(0)
+       frndint
+       fldz
+       fcompi
+       jnz 1f
+       fstp %st(0)
+       f2xm1
+       ret
+1:     fxch %st(1)
+       fsub %st(1)
+       f2xm1
+       fld1
+       faddp
+       fscale
+       fld1
+       fsubrp
+       fstp %st(1)
+       ret
diff --git a/src/math/i386/expm1f.s b/src/math/i386/expm1f.s
new file mode 100644 (file)
index 0000000..89c2d29
--- /dev/null
@@ -0,0 +1 @@
+# see expm1.s
diff --git a/src/math/i386/expm1l.s b/src/math/i386/expm1l.s
new file mode 100644 (file)
index 0000000..89c2d29
--- /dev/null
@@ -0,0 +1 @@
+# see expm1.s