Browse Source

math: move i386 sqrtf to C with inline asm

master
Alexander Monakov 6 years ago
committed by Rich Felker
parent
commit
29adaeb2c0
  1. 12
      src/math/i386/sqrtf.c
  2. 7
      src/math/i386/sqrtf.s

12
src/math/i386/sqrtf.c

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

7
src/math/i386/sqrtf.s

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