From 9443f1b5cfeba687f45b96572378519e81ff9a56 Mon Sep 17 00:00:00 2001 From: Alexander Monakov Date: Sat, 11 Jan 2020 18:14:24 +0300 Subject: math: move x87-family lrint functions to C with inline asm --- src/math/x86_64/llrintl.c | 8 ++++++++ src/math/x86_64/llrintl.s | 7 ------- src/math/x86_64/lrintl.c | 8 ++++++++ src/math/x86_64/lrintl.s | 7 ------- 4 files changed, 16 insertions(+), 14 deletions(-) create mode 100644 src/math/x86_64/llrintl.c delete mode 100644 src/math/x86_64/llrintl.s create mode 100644 src/math/x86_64/lrintl.c delete mode 100644 src/math/x86_64/lrintl.s (limited to 'src/math/x86_64') diff --git a/src/math/x86_64/llrintl.c b/src/math/x86_64/llrintl.c new file mode 100644 index 00000000..c439ef28 --- /dev/null +++ b/src/math/x86_64/llrintl.c @@ -0,0 +1,8 @@ +#include + +long long llrintl(long double x) +{ + long long r; + __asm__ ("fistpll %0" : "=m"(r) : "t"(x) : "st"); + return r; +} diff --git a/src/math/x86_64/llrintl.s b/src/math/x86_64/llrintl.s deleted file mode 100644 index 1ec0817d..00000000 --- a/src/math/x86_64/llrintl.s +++ /dev/null @@ -1,7 +0,0 @@ -.global llrintl -.type llrintl,@function -llrintl: - fldt 8(%rsp) - fistpll 8(%rsp) - mov 8(%rsp),%rax - ret diff --git a/src/math/x86_64/lrintl.c b/src/math/x86_64/lrintl.c new file mode 100644 index 00000000..068e2e4d --- /dev/null +++ b/src/math/x86_64/lrintl.c @@ -0,0 +1,8 @@ +#include + +long lrintl(long double x) +{ + long r; + __asm__ ("fistpll %0" : "=m"(r) : "t"(x) : "st"); + return r; +} diff --git a/src/math/x86_64/lrintl.s b/src/math/x86_64/lrintl.s deleted file mode 100644 index d587b12b..00000000 --- a/src/math/x86_64/lrintl.s +++ /dev/null @@ -1,7 +0,0 @@ -.global lrintl -.type lrintl,@function -lrintl: - fldt 8(%rsp) - fistpll 8(%rsp) - mov 8(%rsp),%rax - ret -- cgit 1.4.1