about summary refs log tree commit diff
path: root/src/math
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-03-18 16:43:54 -0400
committerRich Felker <dalias@aerifal.cx>2012-03-18 16:43:54 -0400
commit8d9e948652eb8381f1f376cbd0c9bc5e2947d150 (patch)
tree37c869b664053d019d5ff03374f6d825498ebd19 /src/math
parentafad262440d213633144d696b8fdda7a65bf26d1 (diff)
downloadmusl-8d9e948652eb8381f1f376cbd0c9bc5e2947d150.tar.gz
musl-8d9e948652eb8381f1f376cbd0c9bc5e2947d150.tar.xz
musl-8d9e948652eb8381f1f376cbd0c9bc5e2947d150.zip
asm versions of some simple math functions for i386 and x86_64
these are functions that have direct fpu approaches to implementation
without problematic exception or rounding issues. x86_64 lacks
float/double versions because i'm unfamiliar with the necessary sse
code for performing these operations.
Diffstat (limited to 'src/math')
-rw-r--r--src/math/i386/fabs.s6
-rw-r--r--src/math/i386/fabsf.s6
-rw-r--r--src/math/i386/fabsl.s6
-rw-r--r--src/math/i386/rint.s6
-rw-r--r--src/math/i386/rintf.s6
-rw-r--r--src/math/i386/rintl.s6
-rw-r--r--src/math/x86_64/fabsl.s6
-rw-r--r--src/math/x86_64/rintl.s6
8 files changed, 48 insertions, 0 deletions
diff --git a/src/math/i386/fabs.s b/src/math/i386/fabs.s
new file mode 100644
index 00000000..d66ea9a1
--- /dev/null
+++ b/src/math/i386/fabs.s
@@ -0,0 +1,6 @@
+.global fabs
+.type fabs,@function
+fabs:
+	fldl 4(%esp)
+	fabs
+	ret
diff --git a/src/math/i386/fabsf.s b/src/math/i386/fabsf.s
new file mode 100644
index 00000000..a981c422
--- /dev/null
+++ b/src/math/i386/fabsf.s
@@ -0,0 +1,6 @@
+.global fabsf
+.type fabsf,@function
+fabsf:
+	flds 4(%esp)
+	fabs
+	ret
diff --git a/src/math/i386/fabsl.s b/src/math/i386/fabsl.s
new file mode 100644
index 00000000..ceef9e4c
--- /dev/null
+++ b/src/math/i386/fabsl.s
@@ -0,0 +1,6 @@
+.global fabsl
+.type fabsl,@function
+fabsl:
+	fldt 4(%esp)
+	fabs
+	ret
diff --git a/src/math/i386/rint.s b/src/math/i386/rint.s
new file mode 100644
index 00000000..bb99a11c
--- /dev/null
+++ b/src/math/i386/rint.s
@@ -0,0 +1,6 @@
+.global rint
+.type rint,@function
+rint:
+	fldl 4(%esp)
+	frndint
+	ret
diff --git a/src/math/i386/rintf.s b/src/math/i386/rintf.s
new file mode 100644
index 00000000..bce4c5a6
--- /dev/null
+++ b/src/math/i386/rintf.s
@@ -0,0 +1,6 @@
+.global rintf
+.type rintf,@function
+rintf:
+	flds 4(%esp)
+	frndint
+	ret
diff --git a/src/math/i386/rintl.s b/src/math/i386/rintl.s
new file mode 100644
index 00000000..cd2bf9a9
--- /dev/null
+++ b/src/math/i386/rintl.s
@@ -0,0 +1,6 @@
+.global rintl
+.type rintl,@function
+rintl:
+	fldt 4(%esp)
+	frndint
+	ret
diff --git a/src/math/x86_64/fabsl.s b/src/math/x86_64/fabsl.s
new file mode 100644
index 00000000..4e7ab525
--- /dev/null
+++ b/src/math/x86_64/fabsl.s
@@ -0,0 +1,6 @@
+.global fabsl
+.type fabsl,@function
+fabsl:
+	fldt 8(%rsp)
+	fabs
+	ret
diff --git a/src/math/x86_64/rintl.s b/src/math/x86_64/rintl.s
new file mode 100644
index 00000000..64e663cd
--- /dev/null
+++ b/src/math/x86_64/rintl.s
@@ -0,0 +1,6 @@
+.global rintl
+.type rintl,@function
+rintl:
+	fldt 8(%rsp)
+	frndint
+	ret