aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/aarch64/fpu/s_round.c1
-rw-r--r--sysdeps/aarch64/fpu/s_roundf.c1
-rw-r--r--sysdeps/ieee754/dbl-64/e_gamma_r.c2
-rw-r--r--sysdeps/ieee754/dbl-64/s_round.c1
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/s_round.c1
-rw-r--r--sysdeps/ieee754/float128/s_roundf128.c1
-rw-r--r--sysdeps/ieee754/flt-32/e_gammaf_r.c2
-rw-r--r--sysdeps/ieee754/flt-32/s_roundf.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/e_gammal_r.c2
-rw-r--r--sysdeps/ieee754/ldbl-128/s_roundl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_expl.c11
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_roundl.c7
-rw-r--r--sysdeps/ieee754/ldbl-96/e_gammal_r.c2
-rw-r--r--sysdeps/ieee754/ldbl-96/s_roundl.c1
-rw-r--r--sysdeps/powerpc/fpu/math_private.h24
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round.c1
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf.c1
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c1
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c1
-rw-r--r--sysdeps/riscv/rv64/rvd/s_round.c1
-rw-r--r--sysdeps/riscv/rvf/s_roundf.c1
-rw-r--r--sysdeps/x86/fpu/powl_helper.c2
23 files changed, 33 insertions, 35 deletions
diff --git a/sysdeps/aarch64/fpu/s_round.c b/sysdeps/aarch64/fpu/s_round.c
index 275b00f318..ae020d3afa 100644
--- a/sysdeps/aarch64/fpu/s_round.c
+++ b/sysdeps/aarch64/fpu/s_round.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <libm-alias-double.h>
diff --git a/sysdeps/aarch64/fpu/s_roundf.c b/sysdeps/aarch64/fpu/s_roundf.c
index 201ffc54db..f87609b207 100644
--- a/sysdeps/aarch64/fpu/s_roundf.c
+++ b/sysdeps/aarch64/fpu/s_roundf.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <libm-alias-float.h>
diff --git a/sysdeps/ieee754/dbl-64/e_gamma_r.c b/sysdeps/ieee754/dbl-64/e_gamma_r.c
index 2cfe6d640e..7707c062cb 100644
--- a/sysdeps/ieee754/dbl-64/e_gamma_r.c
+++ b/sysdeps/ieee754/dbl-64/e_gamma_r.c
@@ -88,7 +88,7 @@ gamma_positive (double x, int *exp2_adj)
starting by computing pow (X_ADJ, X_ADJ) with a power of 2
factored out. */
double exp_adj = -eps;
- double x_adj_int = __round (x_adj);
+ double x_adj_int = round (x_adj);
double x_adj_frac = x_adj - x_adj_int;
int x_adj_log2;
double x_adj_mant = __frexp (x_adj, &x_adj_log2);
diff --git a/sysdeps/ieee754/dbl-64/s_round.c b/sysdeps/ieee754/dbl-64/s_round.c
index fa9e83196e..012b6dc43d 100644
--- a/sysdeps/ieee754/dbl-64/s_round.c
+++ b/sysdeps/ieee754/dbl-64/s_round.c
@@ -17,6 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_private.h>
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_round.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_round.c
index 3323621ce3..2dfd1ed3a9 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/s_round.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_round.c
@@ -17,6 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_private.h>
diff --git a/sysdeps/ieee754/float128/s_roundf128.c b/sysdeps/ieee754/float128/s_roundf128.c
index 1eb36f2a5e..d9f6fa4754 100644
--- a/sysdeps/ieee754/float128/s_roundf128.c
+++ b/sysdeps/ieee754/float128/s_roundf128.c
@@ -1,2 +1,3 @@
+#define NO_MATH_REDIRECT
#include <float128_private.h>
#include "../ldbl-128/s_roundl.c"
diff --git a/sysdeps/ieee754/flt-32/e_gammaf_r.c b/sysdeps/ieee754/flt-32/e_gammaf_r.c
index 7d9a6cbac4..6a9e28a309 100644
--- a/sysdeps/ieee754/flt-32/e_gammaf_r.c
+++ b/sysdeps/ieee754/flt-32/e_gammaf_r.c
@@ -81,7 +81,7 @@ gammaf_positive (float x, int *exp2_adj)
starting by computing pow (X_ADJ, X_ADJ) with a power of 2
factored out. */
float exp_adj = -eps;
- float x_adj_int = __roundf (x_adj);
+ float x_adj_int = roundf (x_adj);
float x_adj_frac = x_adj - x_adj_int;
int x_adj_log2;
float x_adj_mant = __frexpf (x_adj, &x_adj_log2);
diff --git a/sysdeps/ieee754/flt-32/s_roundf.c b/sysdeps/ieee754/flt-32/s_roundf.c
index 7c95125d9c..a411de69aa 100644
--- a/sysdeps/ieee754/flt-32/s_roundf.c
+++ b/sysdeps/ieee754/flt-32/s_roundf.c
@@ -17,6 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_private.h>
diff --git a/sysdeps/ieee754/ldbl-128/e_gammal_r.c b/sysdeps/ieee754/ldbl-128/e_gammal_r.c
index 184798fb54..837395e1fd 100644
--- a/sysdeps/ieee754/ldbl-128/e_gammal_r.c
+++ b/sysdeps/ieee754/ldbl-128/e_gammal_r.c
@@ -96,7 +96,7 @@ gammal_positive (_Float128 x, int *exp2_adj)
starting by computing pow (X_ADJ, X_ADJ) with a power of 2
factored out. */
_Float128 exp_adj = -eps;
- _Float128 x_adj_int = __roundl (x_adj);
+ _Float128 x_adj_int = roundl (x_adj);
_Float128 x_adj_frac = x_adj - x_adj_int;
int x_adj_log2;
_Float128 x_adj_mant = __frexpl (x_adj, &x_adj_log2);
diff --git a/sysdeps/ieee754/ldbl-128/s_roundl.c b/sysdeps/ieee754/ldbl-128/s_roundl.c
index 22789cedf3..4f0184fcac 100644
--- a/sysdeps/ieee754/ldbl-128/s_roundl.c
+++ b/sysdeps/ieee754/ldbl-128/s_roundl.c
@@ -18,6 +18,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_private.h>
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_expl.c b/sysdeps/ieee754/ldbl-128ibm/e_expl.c
index a5024559dc..0c33d88010 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_expl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_expl.c
@@ -134,6 +134,11 @@ static const long double C[] = {
1.98412698413981650382436541785404286E-04L,
};
+/* Avoid local PLT entry use from (int) roundl (...) being converted
+ to a call to lroundl in the case of 32-bit long and roundl not
+ inlined. */
+long int lroundl (long double) asm ("__lroundl");
+
long double
__ieee754_expl (long double x)
{
@@ -149,15 +154,15 @@ __ieee754_expl (long double x)
SET_RESTORE_ROUND (FE_TONEAREST);
- n = __roundl (x*M_1_LN2);
+ n = roundl (x*M_1_LN2);
x = x-n*M_LN2_0;
xl = n*M_LN2_1;
- tval1 = __roundl (x*TWO8);
+ tval1 = roundl (x*TWO8);
x -= __expl_table[T_EXPL_ARG1+2*tval1];
xl -= __expl_table[T_EXPL_ARG1+2*tval1+1];
- tval2 = __roundl (x*TWO15);
+ tval2 = roundl (x*TWO15);
x -= __expl_table[T_EXPL_ARG2+2*tval2];
xl -= __expl_table[T_EXPL_ARG2+2*tval2+1];
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c b/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c
index 36801213d4..6361d35428 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c
@@ -95,7 +95,7 @@ gammal_positive (long double x, int *exp2_adj)
starting by computing pow (X_ADJ, X_ADJ) with a power of 2
factored out. */
long double exp_adj = -eps;
- long double x_adj_int = __roundl (x_adj);
+ long double x_adj_int = roundl (x_adj);
long double x_adj_frac = x_adj - x_adj_int;
int x_adj_log2;
long double x_adj_mant = __frexpl (x_adj, &x_adj_log2);
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_roundl.c b/sysdeps/ieee754/ldbl-128ibm/s_roundl.c
index 94a62dcd6c..156be267a0 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_roundl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_roundl.c
@@ -20,12 +20,15 @@
/* This has been coded in assembler because GCC makes such a mess of it
when it's coded in C. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_private.h>
#include <math_ldbl_opt.h>
#include <float.h>
#include <ieee754.h>
+double round (double) asm ("__round");
+
long double
__roundl (long double x)
@@ -39,7 +42,7 @@ __roundl (long double x)
&& __builtin_isless (__builtin_fabs (xh),
__builtin_inf ()), 1))
{
- hi = __round (xh);
+ hi = round (xh);
if (hi != xh)
{
/* The high part is not an integer; the low part only
@@ -62,7 +65,7 @@ __roundl (long double x)
else
{
/* The high part is a nonzero integer. */
- lo = __round (xl);
+ lo = round (xl);
if (fabs (lo - xl) == 0.5)
{
if (xh > 0 && xl < 0)
diff --git a/sysdeps/ieee754/ldbl-96/e_gammal_r.c b/sysdeps/ieee754/ldbl-96/e_gammal_r.c
index b0970335b9..49428eba44 100644
--- a/sysdeps/ieee754/ldbl-96/e_gammal_r.c
+++ b/sysdeps/ieee754/ldbl-96/e_gammal_r.c
@@ -89,7 +89,7 @@ gammal_positive (long double x, int *exp2_adj)
starting by computing pow (X_ADJ, X_ADJ) with a power of 2
factored out. */
long double exp_adj = -eps;
- long double x_adj_int = __roundl (x_adj);
+ long double x_adj_int = roundl (x_adj);
long double x_adj_frac = x_adj - x_adj_int;
int x_adj_log2;
long double x_adj_mant = __frexpl (x_adj, &x_adj_log2);
diff --git a/sysdeps/ieee754/ldbl-96/s_roundl.c b/sysdeps/ieee754/ldbl-96/s_roundl.c
index c5c304cb2e..1eeed0195d 100644
--- a/sysdeps/ieee754/ldbl-96/s_roundl.c
+++ b/sysdeps/ieee754/ldbl-96/s_roundl.c
@@ -17,6 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_private.h>
diff --git a/sysdeps/powerpc/fpu/math_private.h b/sysdeps/powerpc/fpu/math_private.h
index 7f2acbb833..2ed56fa2ab 100644
--- a/sysdeps/powerpc/fpu/math_private.h
+++ b/sysdeps/powerpc/fpu/math_private.h
@@ -35,28 +35,4 @@ __ieee754_sqrtf128 (_Float128 __x)
}
#endif
-#if defined _ARCH_PWR5X
-
-# ifndef __round
-# define __round(x) \
- ({ double __z; \
- __asm __volatile ( \
- " frin %0,%1\n" \
- : "=f" (__z) \
- : "f" (x)); \
- __z; })
-# endif
-# ifndef __roundf
-# define __roundf(x) \
- ({ float __z; \
- __asm __volatile ( \
- " frin %0,%1\n" \
- " frsp %0,%0\n" \
- : "=f" (__z) \
- : "f" (x)); \
- __z; })
-# endif
-
-#endif /* defined _ARCH_PWR5X */
-
#endif /* _PPC_MATH_PRIVATE_H_ */
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round.c
index 65e7801315..e5b27daf81 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_ldbl_opt.h>
#include <shlib-compat.h>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf.c
index 0d923a2ca6..659a989a70 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_ldbl_opt.h>
#include <shlib-compat.h>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c
index bfa4d8119e..cd9291bf74 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_ldbl_opt.h>
#include <shlib-compat.h>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c
index 3d77156846..bd8b4a4cf9 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_ldbl_opt.h>
#include <shlib-compat.h>
diff --git a/sysdeps/riscv/rv64/rvd/s_round.c b/sysdeps/riscv/rv64/rvd/s_round.c
index b3e5bc4f0d..e375d4d062 100644
--- a/sysdeps/riscv/rv64/rvd/s_round.c
+++ b/sysdeps/riscv/rv64/rvd/s_round.c
@@ -16,6 +16,7 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_private.h>
#include <fenv_private.h>
diff --git a/sysdeps/riscv/rvf/s_roundf.c b/sysdeps/riscv/rvf/s_roundf.c
index 87839de3fb..685a8e3beb 100644
--- a/sysdeps/riscv/rvf/s_roundf.c
+++ b/sysdeps/riscv/rvf/s_roundf.c
@@ -16,6 +16,7 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_private.h>
#include <fenv_private.h>
diff --git a/sysdeps/x86/fpu/powl_helper.c b/sysdeps/x86/fpu/powl_helper.c
index 651eedd792..469fd0fb18 100644
--- a/sysdeps/x86/fpu/powl_helper.c
+++ b/sysdeps/x86/fpu/powl_helper.c
@@ -216,7 +216,7 @@ __powl_helper (long double x, long double y)
/* Split the base-2 logarithm of the result into integer and
fractional parts. */
- long double log2_res_int = __roundl (log2_res_hi);
+ long double log2_res_int = roundl (log2_res_hi);
long double log2_res_frac = log2_res_hi - log2_res_int + log2_res_lo;
/* If the integer part is very large, the computed fractional part
may be outside the valid range for f2xm1. */