diff options
author | Alexander Monakov <amonakov@ispras.ru> | 2020-01-10 23:06:36 +0300 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2020-03-24 16:31:36 -0400 |
commit | 6bbdbfdcdeac216c4a13edd04dee1f6d87bd33c8 (patch) | |
tree | 84636c660b5f360ed5545824ebf4d747bed8e60f | |
parent | acfe6d033eafe12d61ad91f496850b1bf58c6f98 (diff) | |
download | musl-6bbdbfdcdeac216c4a13edd04dee1f6d87bd33c8.tar.gz musl-6bbdbfdcdeac216c4a13edd04dee1f6d87bd33c8.tar.bz2 musl-6bbdbfdcdeac216c4a13edd04dee1f6d87bd33c8.tar.xz musl-6bbdbfdcdeac216c4a13edd04dee1f6d87bd33c8.zip |
math: move x86_64 (l)lrint(f) functions to C with inline asm
-rw-r--r-- | src/math/x86_64/llrint.c | 8 | ||||
-rw-r--r-- | src/math/x86_64/llrint.s | 5 | ||||
-rw-r--r-- | src/math/x86_64/llrintf.c | 8 | ||||
-rw-r--r-- | src/math/x86_64/llrintf.s | 5 | ||||
-rw-r--r-- | src/math/x86_64/lrint.c | 8 | ||||
-rw-r--r-- | src/math/x86_64/lrint.s | 5 | ||||
-rw-r--r-- | src/math/x86_64/lrintf.c | 8 | ||||
-rw-r--r-- | src/math/x86_64/lrintf.s | 5 |
8 files changed, 32 insertions, 20 deletions
diff --git a/src/math/x86_64/llrint.c b/src/math/x86_64/llrint.c new file mode 100644 index 00000000..dd38a722 --- /dev/null +++ b/src/math/x86_64/llrint.c @@ -0,0 +1,8 @@ +#include <math.h> + +long long llrint(double x) +{ + long long r; + __asm__ ("cvtsd2si %1, %0" : "=r"(r) : "x"(x)); + return r; +} diff --git a/src/math/x86_64/llrint.s b/src/math/x86_64/llrint.s deleted file mode 100644 index bf476498..00000000 --- a/src/math/x86_64/llrint.s +++ /dev/null @@ -1,5 +0,0 @@ -.global llrint -.type llrint,@function -llrint: - cvtsd2si %xmm0,%rax - ret diff --git a/src/math/x86_64/llrintf.c b/src/math/x86_64/llrintf.c new file mode 100644 index 00000000..fc8625e8 --- /dev/null +++ b/src/math/x86_64/llrintf.c @@ -0,0 +1,8 @@ +#include <math.h> + +long long llrintf(float x) +{ + long long r; + __asm__ ("cvtss2si %1, %0" : "=r"(r) : "x"(x)); + return r; +} diff --git a/src/math/x86_64/llrintf.s b/src/math/x86_64/llrintf.s deleted file mode 100644 index d7204ac0..00000000 --- a/src/math/x86_64/llrintf.s +++ /dev/null @@ -1,5 +0,0 @@ -.global llrintf -.type llrintf,@function -llrintf: - cvtss2si %xmm0,%rax - ret diff --git a/src/math/x86_64/lrint.c b/src/math/x86_64/lrint.c new file mode 100644 index 00000000..a742fec6 --- /dev/null +++ b/src/math/x86_64/lrint.c @@ -0,0 +1,8 @@ +#include <math.h> + +long lrint(double x) +{ + long r; + __asm__ ("cvtsd2si %1, %0" : "=r"(r) : "x"(x)); + return r; +} diff --git a/src/math/x86_64/lrint.s b/src/math/x86_64/lrint.s deleted file mode 100644 index 15fc2454..00000000 --- a/src/math/x86_64/lrint.s +++ /dev/null @@ -1,5 +0,0 @@ -.global lrint -.type lrint,@function -lrint: - cvtsd2si %xmm0,%rax - ret diff --git a/src/math/x86_64/lrintf.c b/src/math/x86_64/lrintf.c new file mode 100644 index 00000000..2ba5639d --- /dev/null +++ b/src/math/x86_64/lrintf.c @@ -0,0 +1,8 @@ +#include <math.h> + +long lrintf(float x) +{ + long r; + __asm__ ("cvtss2si %1, %0" : "=r"(r) : "x"(x)); + return r; +} diff --git a/src/math/x86_64/lrintf.s b/src/math/x86_64/lrintf.s deleted file mode 100644 index 488423d2..00000000 --- a/src/math/x86_64/lrintf.s +++ /dev/null @@ -1,5 +0,0 @@ -.global lrintf -.type lrintf,@function -lrintf: - cvtss2si %xmm0,%rax - ret |