366 lines
9.8 KiB
Diff
366 lines
9.8 KiB
Diff
__ieee754_sqrt{,f} are now inline functions and call out __slow versions
|
|
|
|
|
|
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
|
Upstream-Status: Pending
|
|
Index: libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
|
|
===================================================================
|
|
--- libc.orig/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
|
|
+++ libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
|
|
@@ -40,7 +40,7 @@ static const float half = 0.5;
|
|
simultaneously. */
|
|
|
|
double
|
|
-__ieee754_sqrt (double b)
|
|
+__slow_ieee754_sqrt (double b)
|
|
{
|
|
if (__builtin_expect (b > 0, 1))
|
|
{
|
|
@@ -77,7 +77,7 @@ __ieee754_sqrt (double b)
|
|
|
|
/* Handle small numbers by scaling. */
|
|
if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
|
|
- return __ieee754_sqrt (b * two108) * twom54;
|
|
+ return __slow_ieee754_sqrt (b * two108) * twom54;
|
|
|
|
#define FMADD(a_, c_, b_) \
|
|
({ double __r; \
|
|
@@ -126,4 +126,12 @@ __ieee754_sqrt (double b)
|
|
}
|
|
return f_wash (b);
|
|
}
|
|
+
|
|
+#undef __ieee754_sqrt
|
|
+double
|
|
+__ieee754_sqrt (double x)
|
|
+{
|
|
+ return __slow_ieee754_sqrt (x);
|
|
+}
|
|
+
|
|
strong_alias (__ieee754_sqrt, __sqrt_finite)
|
|
Index: libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
|
|
===================================================================
|
|
--- libc.orig/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
|
|
+++ libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
|
|
@@ -38,7 +38,7 @@ static const float threehalf = 1.5;
|
|
square root. */
|
|
|
|
float
|
|
-__ieee754_sqrtf (float b)
|
|
+__slow_ieee754_sqrtf (float b)
|
|
{
|
|
if (__builtin_expect (b > 0, 1))
|
|
{
|
|
@@ -93,4 +93,10 @@ __ieee754_sqrtf (float b)
|
|
}
|
|
return f_washf (b);
|
|
}
|
|
+#undef __ieee754_sqrtf
|
|
+float
|
|
+__ieee754_sqrtf (float x)
|
|
+{
|
|
+ return __slow_ieee754_sqrtf (x);
|
|
+}
|
|
strong_alias (__ieee754_sqrtf, __sqrtf_finite)
|
|
Index: libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
|
|
===================================================================
|
|
--- libc.orig/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
|
|
+++ libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
|
|
@@ -40,7 +40,7 @@ static const float half = 0.5;
|
|
simultaneously. */
|
|
|
|
double
|
|
-__ieee754_sqrt (double b)
|
|
+__slow_ieee754_sqrt (double b)
|
|
{
|
|
if (__builtin_expect (b > 0, 1))
|
|
{
|
|
@@ -77,7 +77,7 @@ __ieee754_sqrt (double b)
|
|
|
|
/* Handle small numbers by scaling. */
|
|
if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
|
|
- return __ieee754_sqrt (b * two108) * twom54;
|
|
+ return __slow_ieee754_sqrt (b * two108) * twom54;
|
|
|
|
#define FMADD(a_, c_, b_) \
|
|
({ double __r; \
|
|
@@ -126,4 +126,12 @@ __ieee754_sqrt (double b)
|
|
}
|
|
return f_wash (b);
|
|
}
|
|
+
|
|
+#undef __ieee754_sqrt
|
|
+double
|
|
+__ieee754_sqrt (double x)
|
|
+{
|
|
+ return __slow_ieee754_sqrt (x);
|
|
+}
|
|
+
|
|
strong_alias (__ieee754_sqrt, __sqrt_finite)
|
|
Index: libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
|
|
===================================================================
|
|
--- libc.orig/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
|
|
+++ libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
|
|
@@ -38,7 +38,7 @@ static const float threehalf = 1.5;
|
|
square root. */
|
|
|
|
float
|
|
-__ieee754_sqrtf (float b)
|
|
+__slow_ieee754_sqrtf (float b)
|
|
{
|
|
if (__builtin_expect (b > 0, 1))
|
|
{
|
|
@@ -93,4 +93,11 @@ __ieee754_sqrtf (float b)
|
|
}
|
|
return f_washf (b);
|
|
}
|
|
+#undef __ieee754_sqrtf
|
|
+float
|
|
+__ieee754_sqrtf (float x)
|
|
+{
|
|
+ return __slow_ieee754_sqrtf (x);
|
|
+}
|
|
+
|
|
strong_alias (__ieee754_sqrtf, __sqrtf_finite)
|
|
Index: libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
|
|
===================================================================
|
|
--- libc.orig/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
|
|
+++ libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
|
|
@@ -41,10 +41,10 @@ static const float half = 0.5;
|
|
|
|
#ifdef __STDC__
|
|
double
|
|
-__ieee754_sqrt (double b)
|
|
+__slow_ieee754_sqrt (double b)
|
|
#else
|
|
double
|
|
-__ieee754_sqrt (b)
|
|
+__slow_ieee754_sqrt (b)
|
|
double b;
|
|
#endif
|
|
{
|
|
@@ -83,7 +83,7 @@ __ieee754_sqrt (b)
|
|
|
|
/* Handle small numbers by scaling. */
|
|
if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
|
|
- return __ieee754_sqrt (b * two108) * twom54;
|
|
+ return __slow_ieee754_sqrt (b * two108) * twom54;
|
|
|
|
#define FMADD(a_, c_, b_) \
|
|
({ double __r; \
|
|
@@ -132,4 +132,12 @@ __ieee754_sqrt (b)
|
|
}
|
|
return f_wash (b);
|
|
}
|
|
+
|
|
+#undef __ieee754_sqrt
|
|
+double
|
|
+__ieee754_sqrt (double x)
|
|
+{
|
|
+ return __slow_ieee754_sqrt (x);
|
|
+}
|
|
+
|
|
strong_alias (__ieee754_sqrt, __sqrt_finite)
|
|
Index: libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
|
|
===================================================================
|
|
--- libc.orig/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
|
|
+++ libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
|
|
@@ -39,10 +39,10 @@ static const float threehalf = 1.5;
|
|
|
|
#ifdef __STDC__
|
|
float
|
|
-__ieee754_sqrtf (float b)
|
|
+__slow_ieee754_sqrtf (float b)
|
|
#else
|
|
float
|
|
-__ieee754_sqrtf (b)
|
|
+__slow_ieee754_sqrtf (b)
|
|
float b;
|
|
#endif
|
|
{
|
|
@@ -99,4 +99,12 @@ __ieee754_sqrtf (b)
|
|
}
|
|
return f_washf (b);
|
|
}
|
|
+
|
|
+#undef __ieee754_sqrtf
|
|
+float
|
|
+__ieee754_sqrtf (float x)
|
|
+{
|
|
+ return __slow_ieee754_sqrtf (x);
|
|
+}
|
|
+
|
|
strong_alias (__ieee754_sqrtf, __sqrtf_finite)
|
|
Index: libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
|
|
===================================================================
|
|
--- libc.orig/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
|
|
+++ libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
|
|
@@ -41,10 +41,10 @@ static const float half = 0.5;
|
|
|
|
#ifdef __STDC__
|
|
double
|
|
-__ieee754_sqrt (double b)
|
|
+__slow_ieee754_sqrt (double b)
|
|
#else
|
|
double
|
|
-__ieee754_sqrt (b)
|
|
+__slow_ieee754_sqrt (b)
|
|
double b;
|
|
#endif
|
|
{
|
|
@@ -83,7 +83,7 @@ __ieee754_sqrt (b)
|
|
|
|
/* Handle small numbers by scaling. */
|
|
if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
|
|
- return __ieee754_sqrt (b * two108) * twom54;
|
|
+ return __slow_ieee754_sqrt (b * two108) * twom54;
|
|
|
|
#define FMADD(a_, c_, b_) \
|
|
({ double __r; \
|
|
@@ -132,4 +132,12 @@ __ieee754_sqrt (b)
|
|
}
|
|
return f_wash (b);
|
|
}
|
|
+
|
|
+#undef __ieee754_sqrt
|
|
+double
|
|
+__ieee754_sqrt (double x)
|
|
+{
|
|
+ return __slow_ieee754_sqrt (x);
|
|
+}
|
|
+
|
|
strong_alias (__ieee754_sqrt, __sqrt_finite)
|
|
Index: libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
|
|
===================================================================
|
|
--- libc.orig/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
|
|
+++ libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
|
|
@@ -39,10 +39,10 @@ static const float threehalf = 1.5;
|
|
|
|
#ifdef __STDC__
|
|
float
|
|
-__ieee754_sqrtf (float b)
|
|
+__slow_ieee754_sqrtf (float b)
|
|
#else
|
|
float
|
|
-__ieee754_sqrtf (b)
|
|
+__slow_ieee754_sqrtf (b)
|
|
float b;
|
|
#endif
|
|
{
|
|
@@ -99,4 +99,12 @@ __ieee754_sqrtf (b)
|
|
}
|
|
return f_washf (b);
|
|
}
|
|
+
|
|
+#undef __ieee754_sqrtf
|
|
+float
|
|
+__ieee754_sqrtf (float x)
|
|
+{
|
|
+ return __slow_ieee754_sqrtf (x);
|
|
+}
|
|
+
|
|
strong_alias (__ieee754_sqrtf, __sqrtf_finite)
|
|
Index: libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
|
|
===================================================================
|
|
--- libc.orig/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
|
|
+++ libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
|
|
@@ -41,10 +41,10 @@ static const float half = 0.5;
|
|
|
|
#ifdef __STDC__
|
|
double
|
|
-__ieee754_sqrt (double b)
|
|
+__slow_ieee754_sqrt (double b)
|
|
#else
|
|
double
|
|
-__ieee754_sqrt (b)
|
|
+__slow_ieee754_sqrt (b)
|
|
double b;
|
|
#endif
|
|
{
|
|
@@ -83,7 +83,7 @@ __ieee754_sqrt (b)
|
|
|
|
/* Handle small numbers by scaling. */
|
|
if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
|
|
- return __ieee754_sqrt (b * two108) * twom54;
|
|
+ return __slow_ieee754_sqrt (b * two108) * twom54;
|
|
|
|
#define FMADD(a_, c_, b_) \
|
|
({ double __r; \
|
|
@@ -132,4 +132,12 @@ __ieee754_sqrt (b)
|
|
}
|
|
return f_wash (b);
|
|
}
|
|
+
|
|
+#undef __ieee754_sqrt
|
|
+double
|
|
+__ieee754_sqrt (double x)
|
|
+{
|
|
+ return __slow_ieee754_sqrt (x);
|
|
+}
|
|
+
|
|
strong_alias (__ieee754_sqrt, __sqrt_finite)
|
|
Index: libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
|
|
===================================================================
|
|
--- libc.orig/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
|
|
+++ libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
|
|
@@ -39,10 +39,10 @@ static const float threehalf = 1.5;
|
|
|
|
#ifdef __STDC__
|
|
float
|
|
-__ieee754_sqrtf (float b)
|
|
+__slow_ieee754_sqrtf (float b)
|
|
#else
|
|
float
|
|
-__ieee754_sqrtf (b)
|
|
+__slow_ieee754_sqrtf (b)
|
|
float b;
|
|
#endif
|
|
{
|
|
@@ -99,4 +99,12 @@ __ieee754_sqrtf (b)
|
|
}
|
|
return f_washf (b);
|
|
}
|
|
+
|
|
+#undef __ieee754_sqrtf
|
|
+float
|
|
+__ieee754_sqrtf (float x)
|
|
+{
|
|
+ return __slow_ieee754_sqrtf (x);
|
|
+}
|
|
+
|
|
strong_alias (__ieee754_sqrtf, __sqrtf_finite)
|
|
Index: libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
|
|
===================================================================
|
|
--- libc.orig/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
|
|
+++ libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
|
|
@@ -132,4 +132,12 @@ __ieee754_sqrt (b)
|
|
}
|
|
return f_wash (b);
|
|
}
|
|
+
|
|
+#undef __ieee754_sqrt
|
|
+double
|
|
+__ieee754_sqrt (double x)
|
|
+{
|
|
+ return __slow_ieee754_sqrt (x);
|
|
+}
|
|
+
|
|
strong_alias (__ieee754_sqrt, __sqrt_finite)
|
|
Index: libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
|
|
===================================================================
|
|
--- libc.orig/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
|
|
+++ libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
|
|
@@ -99,4 +99,12 @@ __ieee754_sqrtf (b)
|
|
}
|
|
return f_washf (b);
|
|
}
|
|
+
|
|
+#undef __ieee754_sqrtf
|
|
+float
|
|
+__ieee754_sqrtf (float x)
|
|
+{
|
|
+ return __slow_ieee754_sqrtf (x);
|
|
+}
|
|
+
|
|
strong_alias (__ieee754_sqrtf, __sqrtf_finite)
|