You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
4.0 KiB
119 lines
4.0 KiB
6 months ago
|
From 447954a206837b5f153869cfeeeab44631c3fac9 Mon Sep 17 00:00:00 2001
|
||
|
From: Shen-Ta Hsieh <ibmibmibm.tw@gmail.com>
|
||
|
Date: Mon, 24 May 2021 09:43:10 +0800
|
||
|
Subject: [PATCH] math: redirect roundeven function
|
||
|
Content-type: text/plain; charset=UTF-8
|
||
|
|
||
|
This patch redirect roundeven function for futhermore changes.
|
||
|
|
||
|
Signed-off-by: Shen-Ta Hsieh <ibmibmibm.tw@gmail.com>
|
||
|
Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
|
||
|
---
|
||
|
include/math.h | 3 ++-
|
||
|
sysdeps/ieee754/dbl-64/s_roundeven.c | 4 +++-
|
||
|
sysdeps/ieee754/float128/s_roundevenf128.c | 1 +
|
||
|
sysdeps/ieee754/flt-32/s_roundevenf.c | 3 +++
|
||
|
sysdeps/ieee754/ldbl-128/s_roundevenl.c | 1 +
|
||
|
sysdeps/ieee754/ldbl-96/s_roundevenl.c | 1 +
|
||
|
6 files changed, 11 insertions(+), 2 deletions(-)
|
||
|
|
||
|
Conflicts:
|
||
|
include/math.h
|
||
|
(missing MATH_REDIRECT macros)
|
||
|
|
||
|
diff --git a/include/math.h b/include/math.h
|
||
|
index e21d34b8..1f9f9a54 100644
|
||
|
--- a/include/math.h
|
||
|
+++ b/include/math.h
|
||
|
@@ -38,7 +38,6 @@ libm_hidden_proto (__issignaling)
|
||
|
libm_hidden_proto (__issignalingf)
|
||
|
libm_hidden_proto (__exp)
|
||
|
libm_hidden_proto (__expf)
|
||
|
-libm_hidden_proto (__roundeven)
|
||
|
|
||
|
# ifndef __NO_LONG_DOUBLE_MATH
|
||
|
libm_hidden_proto (__fpclassifyl)
|
||
|
@@ -56,6 +55,8 @@ libm_hidden_proto (__expm1f128)
|
||
|
|
||
|
# if !(defined __FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0)
|
||
|
# ifndef NO_MATH_REDIRECT
|
||
|
+float (roundevenf) (float) asm ("__roundevenf");
|
||
|
+double (roundeven) (double) asm ("__roundeven");
|
||
|
/* Declare sqrt for use within GLIBC. Compilers typically inline sqrt as a
|
||
|
single instruction. Use an asm to avoid use of PLTs if it doesn't. */
|
||
|
float (sqrtf) (float) asm ("__ieee754_sqrtf");
|
||
|
diff --git a/sysdeps/ieee754/dbl-64/s_roundeven.c b/sysdeps/ieee754/dbl-64/s_roundeven.c
|
||
|
index 1438e81d..61962184 100644
|
||
|
--- a/sysdeps/ieee754/dbl-64/s_roundeven.c
|
||
|
+++ b/sysdeps/ieee754/dbl-64/s_roundeven.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>
|
||
|
#include <libm-alias-double.h>
|
||
|
@@ -101,5 +102,6 @@ __roundeven (double x)
|
||
|
INSERT_WORDS (x, hx, lx);
|
||
|
return x;
|
||
|
}
|
||
|
-hidden_def (__roundeven)
|
||
|
+#ifndef __roundeven
|
||
|
libm_alias_double (__roundeven, roundeven)
|
||
|
+#endif
|
||
|
diff --git a/sysdeps/ieee754/float128/s_roundevenf128.c b/sysdeps/ieee754/float128/s_roundevenf128.c
|
||
|
index 5a9b3f39..e0faf727 100644
|
||
|
--- a/sysdeps/ieee754/float128/s_roundevenf128.c
|
||
|
+++ b/sysdeps/ieee754/float128/s_roundevenf128.c
|
||
|
@@ -1,2 +1,3 @@
|
||
|
+#define NO_MATH_REDIRECT
|
||
|
#include <float128_private.h>
|
||
|
#include "../ldbl-128/s_roundevenl.c"
|
||
|
diff --git a/sysdeps/ieee754/flt-32/s_roundevenf.c b/sysdeps/ieee754/flt-32/s_roundevenf.c
|
||
|
index 90f991d5..a661875e 100644
|
||
|
--- a/sysdeps/ieee754/flt-32/s_roundevenf.c
|
||
|
+++ b/sysdeps/ieee754/flt-32/s_roundevenf.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>
|
||
|
#include <libm-alias-float.h>
|
||
|
@@ -67,4 +68,6 @@ __roundevenf (float x)
|
||
|
SET_FLOAT_WORD (x, ix);
|
||
|
return x;
|
||
|
}
|
||
|
+#ifndef __roundevenf
|
||
|
libm_alias_float (__roundeven, roundeven)
|
||
|
+#endif
|
||
|
diff --git a/sysdeps/ieee754/ldbl-128/s_roundevenl.c b/sysdeps/ieee754/ldbl-128/s_roundevenl.c
|
||
|
index 5fc59af4..b9375b6c 100644
|
||
|
--- a/sysdeps/ieee754/ldbl-128/s_roundevenl.c
|
||
|
+++ b/sysdeps/ieee754/ldbl-128/s_roundevenl.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>
|
||
|
#include <libm-alias-ldouble.h>
|
||
|
diff --git a/sysdeps/ieee754/ldbl-96/s_roundevenl.c b/sysdeps/ieee754/ldbl-96/s_roundevenl.c
|
||
|
index be2e4fa4..65031ab7 100644
|
||
|
--- a/sysdeps/ieee754/ldbl-96/s_roundevenl.c
|
||
|
+++ b/sysdeps/ieee754/ldbl-96/s_roundevenl.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>
|
||
|
#include <libm-alias-ldouble.h>
|
||
|
--
|
||
|
GitLab
|
||
|
|