math: move trivial x86-family sqrt functions to C with inline asm
This commit is contained in:
committed by
Rich Felker
parent
c24a992386
commit
41b290ba39
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user