summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSzabolcs Nagy <nsz@port70.net>2018-09-13 22:35:13 +0000
committerRich Felker <dalias@aerifal.cx>2018-10-15 14:41:43 -0400
commit1da534ada8a66424e0d23e94ab6750b689be6d64 (patch)
tree1259ec21575cfd310e77c8b81d3c0272a72f20b9 /src
parent481006fd8887b80c4f794085179047e28102b01a (diff)
downloadmusl-1da534ada8a66424e0d23e94ab6750b689be6d64.tar.gz
s390x: add single instruction fma and fmaf
These are available in the s390x baseline isa -march=z900.
Diffstat (limited to 'src')
-rw-r--r--src/math/s390x/fma.c7
-rw-r--r--src/math/s390x/fmaf.c7
2 files changed, 14 insertions, 0 deletions
diff --git a/src/math/s390x/fma.c b/src/math/s390x/fma.c
new file mode 100644
index 00000000..86da0e49
--- /dev/null
+++ b/src/math/s390x/fma.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+double fma(double x, double y, double z)
+{
+ __asm__ ("madbr %0, %1, %2" : "+f"(z) : "f"(x), "f"(y));
+ return z;
+}
diff --git a/src/math/s390x/fmaf.c b/src/math/s390x/fmaf.c
new file mode 100644
index 00000000..f1aec6ad
--- /dev/null
+++ b/src/math/s390x/fmaf.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+float fmaf(float x, float y, float z)
+{
+ __asm__ ("maebr %0, %1, %2" : "+f"(z) : "f"(x), "f"(y));
+ return z;
+}