summaryrefslogtreecommitdiff
path: root/lib/libm/aarch64
diff options
context:
space:
mode:
authorKacper <kacper@mail.openlinux.dev>2025-12-09 19:20:15 +0100
committerKacper <kacper@mail.openlinux.dev>2025-12-09 19:20:15 +0100
commit885f5974cdf65b59415837ae97f5a14ef1350670 (patch)
tree66ac13de29c7f4932c5fcae11773df574e4e256a /lib/libm/aarch64
parent8f9e448b2ef6db7cd905540c21f3c5b190e7a1e7 (diff)
feat: add gzip and new headers
Diffstat (limited to 'lib/libm/aarch64')
-rw-r--r--lib/libm/aarch64/ceil.c7
-rw-r--r--lib/libm/aarch64/ceilf.c7
-rw-r--r--lib/libm/aarch64/fabs.c7
-rw-r--r--lib/libm/aarch64/fabsf.c7
-rw-r--r--lib/libm/aarch64/floor.c7
-rw-r--r--lib/libm/aarch64/floorf.c7
-rw-r--r--lib/libm/aarch64/fma.c7
-rw-r--r--lib/libm/aarch64/fmaf.c7
-rw-r--r--lib/libm/aarch64/fmax.c7
-rw-r--r--lib/libm/aarch64/fmaxf.c7
-rw-r--r--lib/libm/aarch64/fmin.c7
-rw-r--r--lib/libm/aarch64/fminf.c7
-rw-r--r--lib/libm/aarch64/llrint.c10
-rw-r--r--lib/libm/aarch64/llrintf.c10
-rw-r--r--lib/libm/aarch64/llround.c8
-rw-r--r--lib/libm/aarch64/llroundf.c8
-rw-r--r--lib/libm/aarch64/lrint.c10
-rw-r--r--lib/libm/aarch64/lrintf.c10
-rw-r--r--lib/libm/aarch64/lround.c8
-rw-r--r--lib/libm/aarch64/lroundf.c8
-rw-r--r--lib/libm/aarch64/nearbyint.c7
-rw-r--r--lib/libm/aarch64/nearbyintf.c7
-rw-r--r--lib/libm/aarch64/rint.c7
-rw-r--r--lib/libm/aarch64/rintf.c7
-rw-r--r--lib/libm/aarch64/round.c7
-rw-r--r--lib/libm/aarch64/roundf.c7
-rw-r--r--lib/libm/aarch64/sqrt.c7
-rw-r--r--lib/libm/aarch64/sqrtf.c7
-rw-r--r--lib/libm/aarch64/trunc.c7
-rw-r--r--lib/libm/aarch64/truncf.c7
30 files changed, 226 insertions, 0 deletions
diff --git a/lib/libm/aarch64/ceil.c b/lib/libm/aarch64/ceil.c
new file mode 100644
index 00000000..44f4cc19
--- /dev/null
+++ b/lib/libm/aarch64/ceil.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+double ceil(double x)
+{
+ __asm__("frintp %d0, %d1" : "=w"(x) : "w"(x));
+ return x;
+}
diff --git a/lib/libm/aarch64/ceilf.c b/lib/libm/aarch64/ceilf.c
new file mode 100644
index 00000000..a449bf7b
--- /dev/null
+++ b/lib/libm/aarch64/ceilf.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+float ceilf(float x)
+{
+ __asm__("frintp %s0, %s1" : "=w"(x) : "w"(x));
+ return x;
+}
diff --git a/lib/libm/aarch64/fabs.c b/lib/libm/aarch64/fabs.c
new file mode 100644
index 00000000..96c336dd
--- /dev/null
+++ b/lib/libm/aarch64/fabs.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+double fabs(double x)
+{
+ __asm__("fabs %d0, %d1" : "=w"(x) : "w"(x));
+ return x;
+}
diff --git a/lib/libm/aarch64/fabsf.c b/lib/libm/aarch64/fabsf.c
new file mode 100644
index 00000000..dd652781
--- /dev/null
+++ b/lib/libm/aarch64/fabsf.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+float fabsf(float x)
+{
+ __asm__("fabs %s0, %s1" : "=w"(x) : "w"(x));
+ return x;
+}
diff --git a/lib/libm/aarch64/floor.c b/lib/libm/aarch64/floor.c
new file mode 100644
index 00000000..53170a83
--- /dev/null
+++ b/lib/libm/aarch64/floor.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+double floor(double x)
+{
+ __asm__("frintm %d0, %d1" : "=w"(x) : "w"(x));
+ return x;
+}
diff --git a/lib/libm/aarch64/floorf.c b/lib/libm/aarch64/floorf.c
new file mode 100644
index 00000000..633fd2a2
--- /dev/null
+++ b/lib/libm/aarch64/floorf.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+float floorf(float x)
+{
+ __asm__("frintm %s0, %s1" : "=w"(x) : "w"(x));
+ return x;
+}
diff --git a/lib/libm/aarch64/fma.c b/lib/libm/aarch64/fma.c
new file mode 100644
index 00000000..858a6f04
--- /dev/null
+++ b/lib/libm/aarch64/fma.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+double fma(double x, double y, double z)
+{
+ __asm__("fmadd %d0, %d1, %d2, %d3" : "=w"(x) : "w"(x), "w"(y), "w"(z));
+ return x;
+}
diff --git a/lib/libm/aarch64/fmaf.c b/lib/libm/aarch64/fmaf.c
new file mode 100644
index 00000000..9f80e065
--- /dev/null
+++ b/lib/libm/aarch64/fmaf.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+float fmaf(float x, float y, float z)
+{
+ __asm__("fmadd %s0, %s1, %s2, %s3" : "=w"(x) : "w"(x), "w"(y), "w"(z));
+ return x;
+}
diff --git a/lib/libm/aarch64/fmax.c b/lib/libm/aarch64/fmax.c
new file mode 100644
index 00000000..4d094507
--- /dev/null
+++ b/lib/libm/aarch64/fmax.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+double fmax(double x, double y)
+{
+ __asm__("fmaxnm %d0, %d1, %d2" : "=w"(x) : "w"(x), "w"(y));
+ return x;
+}
diff --git a/lib/libm/aarch64/fmaxf.c b/lib/libm/aarch64/fmaxf.c
new file mode 100644
index 00000000..34779718
--- /dev/null
+++ b/lib/libm/aarch64/fmaxf.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+float fmaxf(float x, float y)
+{
+ __asm__("fmaxnm %s0, %s1, %s2" : "=w"(x) : "w"(x), "w"(y));
+ return x;
+}
diff --git a/lib/libm/aarch64/fmin.c b/lib/libm/aarch64/fmin.c
new file mode 100644
index 00000000..d49d80cc
--- /dev/null
+++ b/lib/libm/aarch64/fmin.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+double fmin(double x, double y)
+{
+ __asm__("fminnm %d0, %d1, %d2" : "=w"(x) : "w"(x), "w"(y));
+ return x;
+}
diff --git a/lib/libm/aarch64/fminf.c b/lib/libm/aarch64/fminf.c
new file mode 100644
index 00000000..8a7166c4
--- /dev/null
+++ b/lib/libm/aarch64/fminf.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+float fminf(float x, float y)
+{
+ __asm__("fminnm %s0, %s1, %s2" : "=w"(x) : "w"(x), "w"(y));
+ return x;
+}
diff --git a/lib/libm/aarch64/llrint.c b/lib/libm/aarch64/llrint.c
new file mode 100644
index 00000000..a1862927
--- /dev/null
+++ b/lib/libm/aarch64/llrint.c
@@ -0,0 +1,10 @@
+#include <math.h>
+
+long long llrint(double x)
+{
+ long long n;
+ __asm__("frintx %d1, %d1\n"
+ "fcvtzs %x0, %d1\n"
+ : "=r"(n), "+w"(x));
+ return n;
+}
diff --git a/lib/libm/aarch64/llrintf.c b/lib/libm/aarch64/llrintf.c
new file mode 100644
index 00000000..6a3d5068
--- /dev/null
+++ b/lib/libm/aarch64/llrintf.c
@@ -0,0 +1,10 @@
+#include <math.h>
+
+long long llrintf(float x)
+{
+ long long n;
+ __asm__("frintx %s1, %s1\n"
+ "fcvtzs %x0, %s1\n"
+ : "=r"(n), "+w"(x));
+ return n;
+}
diff --git a/lib/libm/aarch64/llround.c b/lib/libm/aarch64/llround.c
new file mode 100644
index 00000000..ae5972d3
--- /dev/null
+++ b/lib/libm/aarch64/llround.c
@@ -0,0 +1,8 @@
+#include <math.h>
+
+long long llround(double x)
+{
+ long long n;
+ __asm__("fcvtas %x0, %d1" : "=r"(n) : "w"(x));
+ return n;
+}
diff --git a/lib/libm/aarch64/llroundf.c b/lib/libm/aarch64/llroundf.c
new file mode 100644
index 00000000..8c2d391d
--- /dev/null
+++ b/lib/libm/aarch64/llroundf.c
@@ -0,0 +1,8 @@
+#include <math.h>
+
+long long llroundf(float x)
+{
+ long long n;
+ __asm__("fcvtas %x0, %s1" : "=r"(n) : "w"(x));
+ return n;
+}
diff --git a/lib/libm/aarch64/lrint.c b/lib/libm/aarch64/lrint.c
new file mode 100644
index 00000000..70c5cebd
--- /dev/null
+++ b/lib/libm/aarch64/lrint.c
@@ -0,0 +1,10 @@
+#include <math.h>
+
+long lrint(double x)
+{
+ long n;
+ __asm__("frintx %d1, %d1\n"
+ "fcvtzs %x0, %d1\n"
+ : "=r"(n), "+w"(x));
+ return n;
+}
diff --git a/lib/libm/aarch64/lrintf.c b/lib/libm/aarch64/lrintf.c
new file mode 100644
index 00000000..aee60614
--- /dev/null
+++ b/lib/libm/aarch64/lrintf.c
@@ -0,0 +1,10 @@
+#include <math.h>
+
+long lrintf(float x)
+{
+ long n;
+ __asm__("frintx %s1, %s1\n"
+ "fcvtzs %x0, %s1\n"
+ : "=r"(n), "+w"(x));
+ return n;
+}
diff --git a/lib/libm/aarch64/lround.c b/lib/libm/aarch64/lround.c
new file mode 100644
index 00000000..a22e0970
--- /dev/null
+++ b/lib/libm/aarch64/lround.c
@@ -0,0 +1,8 @@
+#include <math.h>
+
+long lround(double x)
+{
+ long n;
+ __asm__("fcvtas %x0, %d1" : "=r"(n) : "w"(x));
+ return n;
+}
diff --git a/lib/libm/aarch64/lroundf.c b/lib/libm/aarch64/lroundf.c
new file mode 100644
index 00000000..a823024b
--- /dev/null
+++ b/lib/libm/aarch64/lroundf.c
@@ -0,0 +1,8 @@
+#include <math.h>
+
+long lroundf(float x)
+{
+ long n;
+ __asm__("fcvtas %x0, %s1" : "=r"(n) : "w"(x));
+ return n;
+}
diff --git a/lib/libm/aarch64/nearbyint.c b/lib/libm/aarch64/nearbyint.c
new file mode 100644
index 00000000..6a186039
--- /dev/null
+++ b/lib/libm/aarch64/nearbyint.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+double nearbyint(double x)
+{
+ __asm__("frinti %d0, %d1" : "=w"(x) : "w"(x));
+ return x;
+}
diff --git a/lib/libm/aarch64/nearbyintf.c b/lib/libm/aarch64/nearbyintf.c
new file mode 100644
index 00000000..d61b07b8
--- /dev/null
+++ b/lib/libm/aarch64/nearbyintf.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+float nearbyintf(float x)
+{
+ __asm__("frinti %s0, %s1" : "=w"(x) : "w"(x));
+ return x;
+}
diff --git a/lib/libm/aarch64/rint.c b/lib/libm/aarch64/rint.c
new file mode 100644
index 00000000..2cf91f05
--- /dev/null
+++ b/lib/libm/aarch64/rint.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+double rint(double x)
+{
+ __asm__("frintx %d0, %d1" : "=w"(x) : "w"(x));
+ return x;
+}
diff --git a/lib/libm/aarch64/rintf.c b/lib/libm/aarch64/rintf.c
new file mode 100644
index 00000000..e1d92fa8
--- /dev/null
+++ b/lib/libm/aarch64/rintf.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+float rintf(float x)
+{
+ __asm__("frintx %s0, %s1" : "=w"(x) : "w"(x));
+ return x;
+}
diff --git a/lib/libm/aarch64/round.c b/lib/libm/aarch64/round.c
new file mode 100644
index 00000000..27b8e63f
--- /dev/null
+++ b/lib/libm/aarch64/round.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+double round(double x)
+{
+ __asm__("frinta %d0, %d1" : "=w"(x) : "w"(x));
+ return x;
+}
diff --git a/lib/libm/aarch64/roundf.c b/lib/libm/aarch64/roundf.c
new file mode 100644
index 00000000..155aaba1
--- /dev/null
+++ b/lib/libm/aarch64/roundf.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+float roundf(float x)
+{
+ __asm__("frinta %s0, %s1" : "=w"(x) : "w"(x));
+ return x;
+}
diff --git a/lib/libm/aarch64/sqrt.c b/lib/libm/aarch64/sqrt.c
new file mode 100644
index 00000000..33c32ddb
--- /dev/null
+++ b/lib/libm/aarch64/sqrt.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+double sqrt(double x)
+{
+ __asm__("fsqrt %d0, %d1" : "=w"(x) : "w"(x));
+ return x;
+}
diff --git a/lib/libm/aarch64/sqrtf.c b/lib/libm/aarch64/sqrtf.c
new file mode 100644
index 00000000..8a7961d3
--- /dev/null
+++ b/lib/libm/aarch64/sqrtf.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+float sqrtf(float x)
+{
+ __asm__("fsqrt %s0, %s1" : "=w"(x) : "w"(x));
+ return x;
+}
diff --git a/lib/libm/aarch64/trunc.c b/lib/libm/aarch64/trunc.c
new file mode 100644
index 00000000..e5aa908d
--- /dev/null
+++ b/lib/libm/aarch64/trunc.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+double trunc(double x)
+{
+ __asm__("frintz %d0, %d1" : "=w"(x) : "w"(x));
+ return x;
+}
diff --git a/lib/libm/aarch64/truncf.c b/lib/libm/aarch64/truncf.c
new file mode 100644
index 00000000..10389ca0
--- /dev/null
+++ b/lib/libm/aarch64/truncf.c
@@ -0,0 +1,7 @@
+#include <math.h>
+
+float truncf(float x)
+{
+ __asm__("frintz %s0, %s1" : "=w"(x) : "w"(x));
+ return x;
+}