math: move x86_64 (l)lrint(f) functions to C with inline asm

This commit is contained in:
Alexander Monakov 2020-01-10 23:06:36 +03:00 committed by Rich Felker
parent acfe6d033e
commit 6bbdbfdcde
8 changed files with 32 additions and 20 deletions

8
src/math/x86_64/llrint.c Normal file
View File

@ -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;
}

View File

@ -1,5 +0,0 @@
.global llrint
.type llrint,@function
llrint:
cvtsd2si %xmm0,%rax
ret

View File

@ -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;
}

View File

@ -1,5 +0,0 @@
.global llrintf
.type llrintf,@function
llrintf:
cvtss2si %xmm0,%rax
ret

8
src/math/x86_64/lrint.c Normal file
View File

@ -0,0 +1,8 @@
#include <math.h>
long lrint(double x)
{
long r;
__asm__ ("cvtsd2si %1, %0" : "=r"(r) : "x"(x));
return r;
}

View File

@ -1,5 +0,0 @@
.global lrint
.type lrint,@function
lrint:
cvtsd2si %xmm0,%rax
ret

8
src/math/x86_64/lrintf.c Normal file
View File

@ -0,0 +1,8 @@
#include <math.h>
long lrintf(float x)
{
long r;
__asm__ ("cvtss2si %1, %0" : "=r"(r) : "x"(x));
return r;
}

View File

@ -1,5 +0,0 @@
.global lrintf
.type lrintf,@function
lrintf:
cvtss2si %xmm0,%rax
ret