mirror of
git://git.musl-libc.org/musl
synced 2025-03-06 20:48:29 +01:00
math: move trivial x86-family sqrt functions to C with inline asm
This commit is contained in:
parent
c24a992386
commit
41b290ba39
8 changed files with 28 additions and 18 deletions
7
src/math/i386/sqrtl.c
Normal file
7
src/math/i386/sqrtl.c
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
long double sqrtl(long double x)
|
||||||
|
{
|
||||||
|
__asm__ ("fsqrt" : "+t"(x));
|
||||||
|
return x;
|
||||||
|
}
|
|
@ -1,5 +0,0 @@
|
||||||
.global sqrtl
|
|
||||||
.type sqrtl,@function
|
|
||||||
sqrtl: fldt 4(%esp)
|
|
||||||
fsqrt
|
|
||||||
ret
|
|
7
src/math/x86_64/sqrt.c
Normal file
7
src/math/x86_64/sqrt.c
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
double sqrt(double x)
|
||||||
|
{
|
||||||
|
__asm__ ("sqrtsd %1, %0" : "=x"(x) : "x"(x));
|
||||||
|
return x;
|
||||||
|
}
|
|
@ -1,4 +0,0 @@
|
||||||
.global sqrt
|
|
||||||
.type sqrt,@function
|
|
||||||
sqrt: sqrtsd %xmm0, %xmm0
|
|
||||||
ret
|
|
7
src/math/x86_64/sqrtf.c
Normal file
7
src/math/x86_64/sqrtf.c
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
float sqrtf(float x)
|
||||||
|
{
|
||||||
|
__asm__ ("sqrtss %1, %0" : "=x"(x) : "x"(x));
|
||||||
|
return x;
|
||||||
|
}
|
|
@ -1,4 +0,0 @@
|
||||||
.global sqrtf
|
|
||||||
.type sqrtf,@function
|
|
||||||
sqrtf: sqrtss %xmm0, %xmm0
|
|
||||||
ret
|
|
7
src/math/x86_64/sqrtl.c
Normal file
7
src/math/x86_64/sqrtl.c
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
long double sqrtl(long double x)
|
||||||
|
{
|
||||||
|
__asm__ ("fsqrt" : "+t"(x));
|
||||||
|
return x;
|
||||||
|
}
|
|
@ -1,5 +0,0 @@
|
||||||
.global sqrtl
|
|
||||||
.type sqrtl,@function
|
|
||||||
sqrtl: fldt 8(%rsp)
|
|
||||||
fsqrt
|
|
||||||
ret
|
|
Loading…
Add table
Reference in a new issue