math: move i386 sqrtf to C with inline asm

This commit is contained in:
Alexander Monakov 2020-01-06 20:31:47 +03:00 committed by Rich Felker
parent 41b290ba39
commit 29adaeb2c0
2 changed files with 12 additions and 7 deletions

12
src/math/i386/sqrtf.c Normal file
View File

@ -0,0 +1,12 @@
#include <math.h>
float sqrtf(float x)
{
long double t;
/* The long double result has sufficient precision so that
* second rounding to float still keeps the returned value
* correctly rounded, see Pierre Roux, "Innocuous Double
* Rounding of Basic Arithmetic Operations". */
__asm__ ("fsqrt" : "=t"(t) : "0"(x));
return (float)t;
}

View File

@ -1,7 +0,0 @@
.global sqrtf
.type sqrtf,@function
sqrtf: flds 4(%esp)
fsqrt
fstps 4(%esp)
flds 4(%esp)
ret