summaryrefslogtreecommitdiff
path: root/src/math/i386
diff options
context:
space:
mode:
Diffstat (limited to 'src/math/i386')
-rw-r--r--src/math/i386/exp.s9
-rw-r--r--src/math/i386/expm1.s13
-rw-r--r--src/math/i386/llrint.s8
-rw-r--r--src/math/i386/llrintf.s9
-rw-r--r--src/math/i386/llrintl.s8
-rw-r--r--src/math/i386/log.s7
-rw-r--r--src/math/i386/log10.s7
-rw-r--r--src/math/i386/log10f.s7
-rw-r--r--src/math/i386/log10l.s7
-rw-r--r--src/math/i386/logf.s7
-rw-r--r--src/math/i386/logl.s7
-rw-r--r--src/math/i386/lrint.s7
-rw-r--r--src/math/i386/lrintf.s7
-rw-r--r--src/math/i386/lrintl.s7
14 files changed, 109 insertions, 1 deletions
diff --git a/src/math/i386/exp.s b/src/math/i386/exp.s
index 18f6cd67..f4769d59 100644
--- a/src/math/i386/exp.s
+++ b/src/math/i386/exp.s
@@ -34,6 +34,15 @@ exp:
.type exp2,@function
exp2:
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: fld %st(0)
frndint
fxch %st(1)
diff --git a/src/math/i386/expm1.s b/src/math/i386/expm1.s
index d6d511ef..bbb5d12e 100644
--- a/src/math/i386/expm1.s
+++ b/src/math/i386/expm1.s
@@ -14,12 +14,23 @@ expm1l:
.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
- fcompi
+ fcomp
+ fnstsw %ax
+ sahf
jnz 1f
fstp %st(0)
f2xm1
diff --git a/src/math/i386/llrint.s b/src/math/i386/llrint.s
new file mode 100644
index 00000000..e961b35d
--- /dev/null
+++ b/src/math/i386/llrint.s
@@ -0,0 +1,8 @@
+.global llrint
+.type llrint,@function
+llrint:
+ fldl 4(%esp)
+ fistpl 4(%esp)
+ mov 4(%esp),%eax
+ mov 8(%esp),%edx
+ ret
diff --git a/src/math/i386/llrintf.s b/src/math/i386/llrintf.s
new file mode 100644
index 00000000..1905cdcd
--- /dev/null
+++ b/src/math/i386/llrintf.s
@@ -0,0 +1,9 @@
+.global llrintf
+.type llrintf,@function
+llrintf:
+ sub $8,%esp
+ flds 12(%esp)
+ fistpq (%esp)
+ pop %eax
+ pop %edx
+ ret
diff --git a/src/math/i386/llrintl.s b/src/math/i386/llrintl.s
new file mode 100644
index 00000000..84e63867
--- /dev/null
+++ b/src/math/i386/llrintl.s
@@ -0,0 +1,8 @@
+.global llrintl
+.type llrintl,@function
+llrintl:
+ fldt 4(%esp)
+ fistpl 4(%esp)
+ mov 4(%esp),%eax
+ mov 8(%esp),%edx
+ ret
diff --git a/src/math/i386/log.s b/src/math/i386/log.s
new file mode 100644
index 00000000..fcccf030
--- /dev/null
+++ b/src/math/i386/log.s
@@ -0,0 +1,7 @@
+.global log
+.type log,@function
+log:
+ fldln2
+ fldl 4(%esp)
+ fyl2x
+ ret
diff --git a/src/math/i386/log10.s b/src/math/i386/log10.s
new file mode 100644
index 00000000..28eb5b2f
--- /dev/null
+++ b/src/math/i386/log10.s
@@ -0,0 +1,7 @@
+.global log10
+.type log10,@function
+log10:
+ fldlg2
+ fldl 4(%esp)
+ fyl2x
+ ret
diff --git a/src/math/i386/log10f.s b/src/math/i386/log10f.s
new file mode 100644
index 00000000..c0c0c67e
--- /dev/null
+++ b/src/math/i386/log10f.s
@@ -0,0 +1,7 @@
+.global log10f
+.type log10f,@function
+log10f:
+ fldlg2
+ flds 4(%esp)
+ fyl2x
+ ret
diff --git a/src/math/i386/log10l.s b/src/math/i386/log10l.s
new file mode 100644
index 00000000..aaa44f2f
--- /dev/null
+++ b/src/math/i386/log10l.s
@@ -0,0 +1,7 @@
+.global log10l
+.type log10l,@function
+log10l:
+ fldlg2
+ fldt 4(%esp)
+ fyl2x
+ ret
diff --git a/src/math/i386/logf.s b/src/math/i386/logf.s
new file mode 100644
index 00000000..da7ff3ae
--- /dev/null
+++ b/src/math/i386/logf.s
@@ -0,0 +1,7 @@
+.global logf
+.type logf,@function
+logf:
+ fldln2
+ flds 4(%esp)
+ fyl2x
+ ret
diff --git a/src/math/i386/logl.s b/src/math/i386/logl.s
new file mode 100644
index 00000000..d4e3339b
--- /dev/null
+++ b/src/math/i386/logl.s
@@ -0,0 +1,7 @@
+.global logl
+.type logl,@function
+logl:
+ fldln2
+ fldt 4(%esp)
+ fyl2x
+ ret
diff --git a/src/math/i386/lrint.s b/src/math/i386/lrint.s
new file mode 100644
index 00000000..02b83d9f
--- /dev/null
+++ b/src/math/i386/lrint.s
@@ -0,0 +1,7 @@
+.global lrint
+.type lrint,@function
+lrint:
+ fldl 4(%esp)
+ fistpl 4(%esp)
+ mov 4(%esp),%eax
+ ret
diff --git a/src/math/i386/lrintf.s b/src/math/i386/lrintf.s
new file mode 100644
index 00000000..907aac29
--- /dev/null
+++ b/src/math/i386/lrintf.s
@@ -0,0 +1,7 @@
+.global lrintf
+.type lrintf,@function
+lrintf:
+ flds 4(%esp)
+ fistpl 4(%esp)
+ mov 4(%esp),%eax
+ ret
diff --git a/src/math/i386/lrintl.s b/src/math/i386/lrintl.s
new file mode 100644
index 00000000..3ae05aac
--- /dev/null
+++ b/src/math/i386/lrintl.s
@@ -0,0 +1,7 @@
+.global lrintl
+.type lrintl,@function
+lrintl:
+ fldt 4(%esp)
+ fistpl 4(%esp)
+ mov 4(%esp),%eax
+ ret