diff mbox series

Update math: redirect roundeven function

Message ID CAMe9rOrwqnz0Wdr4pWtyA2-wZy8_brgJEcVEfmMkEeQAt20L9g@mail.gmail.com
State Committed
Headers show
Series Update math: redirect roundeven function | expand

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent

Commit Message

H.J. Lu June 23, 2021, 8:34 p.m. UTC
On Tue, Jun 22, 2021 at 3:35 PM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> On Tue, May 25, 2021 at 5:02 AM H.J. Lu <hjl.tools@gmail.com> wrote:
> >
> > On Sun, May 23, 2021 at 6:43 PM Shen-Ta Hsieh <ibmibmibm.tw@gmail.com> wrote:
> > >
> > > This patch redirect roundeven function for futhermore changes.
> > >
> > > Signed-off-by: Shen-Ta Hsieh <ibmibmibm.tw@gmail.com>
> > > ---
> > >  include/math.h                             | 2 +-
> > >  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, 10 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/include/math.h b/include/math.h
> > > index e1c2a4eb64..b4772d3d3b 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)
> > >
> > >  #  if !defined __NO_LONG_DOUBLE_MATH \
> > >        && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0
> > > @@ -159,6 +158,7 @@ fabsf128 (_Float128 x)
> > >  MATH_REDIRECT (sqrt, "__ieee754_", MATH_REDIRECT_UNARY_ARGS)
> > >  MATH_REDIRECT (ceil, "__", MATH_REDIRECT_UNARY_ARGS)
> > >  MATH_REDIRECT (floor, "__", MATH_REDIRECT_UNARY_ARGS)
> > > +MATH_REDIRECT (roundeven, "__", MATH_REDIRECT_UNARY_ARGS)
> > >  MATH_REDIRECT (rint, "__", MATH_REDIRECT_UNARY_ARGS)
> > >  MATH_REDIRECT (trunc, "__", MATH_REDIRECT_UNARY_ARGS)
> > >  MATH_REDIRECT (round, "__", MATH_REDIRECT_UNARY_ARGS)
> > > diff --git a/sysdeps/ieee754/dbl-64/s_roundeven.c b/sysdeps/ieee754/dbl-64/s_roundeven.c
> > > index 943b2c634c..5deff3bb8a 100644
> > > --- a/sysdeps/ieee754/dbl-64/s_roundeven.c
> > > +++ b/sysdeps/ieee754/dbl-64/s_roundeven.c
> > > @@ -16,6 +16,7 @@
> > >     License along with the GNU C Library; if not, see
> > >     <https://www.gnu.org/licenses/>.  */
> > >
> > > +#define NO_MATH_REDIRECT
> > >  #include <math.h>
> > >  #include <math_private.h>
> > >  #include <libm-alias-double.h>
> > > @@ -66,5 +67,6 @@ __roundeven (double x)
> > >    INSERT_WORDS64 (x, ix);
> > >    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 5a9b3f395f..e0faf727f6 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 ae54365bbe..2cc0d7b001 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
> > >     <https://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 02765be0e0..7c9c11fad2 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
> > >     <https://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 8340116ed8..f826829c31 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
> > >     <https://www.gnu.org/licenses/>.  */
> > >
> > > +#define NO_MATH_REDIRECT
> > >  #include <math.h>
> > >  #include <math_private.h>
> > >  #include <libm-alias-ldouble.h>
> > > --
> > > 2.31.1
> > >
> >
> > LGTM.
> >
> > Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
> >
>
> I tried it with scripts/build-many-glibcs.py.  It failed with targets using:
>
> sysdeps/ieee754/ldbl-128ibm/s_roundevenl.c
> sysdeps/aarch64/fpu/s_roundevenf.c
> sysdeps/aarch64/fpu/s_roundeven.c
> sysdeps/riscv/rv64/rvd/s_roundeven.c
> sysdeps/riscv/rvf/s_roundevenf.c
>
> --
> H.J.

I am testing this patch.
diff mbox series

Patch

From c520c1c226f310f9cf7c82ed12e7cbcd034b3750 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Wed, 23 Jun 2021 13:29:41 -0700
Subject: [PATCH] Update math: redirect roundeven function

Redirect target specific roundeven functions for aarch64, ldbl-128ibm
and riscv.
---
 sysdeps/aarch64/fpu/s_roundeven.c          | 2 +-
 sysdeps/aarch64/fpu/s_roundevenf.c         | 1 +
 sysdeps/ieee754/ldbl-128ibm/s_roundevenl.c | 1 +
 sysdeps/riscv/rv64/rvd/s_roundeven.c       | 2 +-
 sysdeps/riscv/rvf/s_roundevenf.c           | 1 +
 5 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/sysdeps/aarch64/fpu/s_roundeven.c b/sysdeps/aarch64/fpu/s_roundeven.c
index d74b40daf5..fbce9aaded 100644
--- a/sysdeps/aarch64/fpu/s_roundeven.c
+++ b/sysdeps/aarch64/fpu/s_roundeven.c
@@ -16,6 +16,7 @@ 
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
+#define NO_MATH_REDIRECT
 #include <math.h>
 #include <libm-alias-double.h>
 
@@ -25,5 +26,4 @@  __roundeven (double x)
   asm volatile ("frintn \t%d0, %d1" : "=w" (x) : "w" (x));
   return x;
 }
-hidden_def (__roundeven)
 libm_alias_double (__roundeven, roundeven)
diff --git a/sysdeps/aarch64/fpu/s_roundevenf.c b/sysdeps/aarch64/fpu/s_roundevenf.c
index dfc492c2f8..7985ca5f30 100644
--- a/sysdeps/aarch64/fpu/s_roundevenf.c
+++ b/sysdeps/aarch64/fpu/s_roundevenf.c
@@ -16,6 +16,7 @@ 
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
+#define NO_MATH_REDIRECT
 #include <math.h>
 #include <libm-alias-float.h>
 
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_roundevenl.c b/sysdeps/ieee754/ldbl-128ibm/s_roundevenl.c
index 6701970f4a..90eecf496b 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_roundevenl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_roundevenl.c
@@ -17,6 +17,7 @@ 
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
+#define NO_MATH_REDIRECT
 #include <math.h>
 #include <math_private.h>
 
diff --git a/sysdeps/riscv/rv64/rvd/s_roundeven.c b/sysdeps/riscv/rv64/rvd/s_roundeven.c
index e77d8307d1..02dd0f7a9a 100644
--- a/sysdeps/riscv/rv64/rvd/s_roundeven.c
+++ b/sysdeps/riscv/rv64/rvd/s_roundeven.c
@@ -16,6 +16,7 @@ 
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
+#define NO_MATH_REDIRECT
 #include <math.h>
 #include <fenv_private.h>
 #include <libm-alias-double.h>
@@ -49,5 +50,4 @@  __roundeven (double x)
   return x;
 }
 
-hidden_def (__roundeven)
 libm_alias_double (__roundeven, roundeven)
diff --git a/sysdeps/riscv/rvf/s_roundevenf.c b/sysdeps/riscv/rvf/s_roundevenf.c
index fa594d46bd..be22d047e2 100644
--- a/sysdeps/riscv/rvf/s_roundevenf.c
+++ b/sysdeps/riscv/rvf/s_roundevenf.c
@@ -16,6 +16,7 @@ 
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
+#define NO_MATH_REDIRECT
 #include <math.h>
 #include <fenv_private.h>
 #include <libm-alias-float.h>
-- 
2.31.1