Forráskód Böngészése

math: move i386 sqrtf to C with inline asm

Alexander Monakov 5 éve
szülő
commit
29adaeb2c0
2 módosított fájl, 12 hozzáadás és 7 törlés
  1. 12 0
      src/math/i386/sqrtf.c
  2. 0 7
      src/math/i386/sqrtf.s

+ 12 - 0
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;
+}

+ 0 - 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