unofficial mirror of libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: libc-alpha@sourceware.org
Subject: [PATCH 28/28] powerpc: refactor logb{f,l}
Date: Fri, 29 Mar 2019 10:35:29 -0300	[thread overview]
Message-ID: <20190329133529.22523-29-adhemerval.zanella@linaro.org> (raw)
In-Reply-To: <20190329133529.22523-1-adhemerval.zanella@linaro.org>

The power7 logb implementation does not show a performance gain on
ISA 2.07+ chips with faster floating-point to GRP instructions
(currently POWER8 and POWER9).

This patch moves the POWER7 implementation to generic one and enables
it for POWER7.  It also add some cleanup to use inline floating-point
number instead of define them using static const.

The performance difference is for POWER9:

  - Without patch:
  "logb": {
   "subnormal": {
    "duration": 4.99202e+09,
    "iterations": 8.83662e+08,
    "max": 75.194,
    "min": 5.501,
    "mean": 5.64925
   },
   "normal": {
    "duration": 4.97063e+09,
    "iterations": 9.97094e+08,
    "max": 46.489,
    "min": 4.956,
    "mean": 4.98512
   }
  }

  - With patch:
  "logb": {
   "subnormal": {
    "duration": 4.97226e+09,
    "iterations": 9.92036e+08,
    "max": 77.209,
    "min": 4.892,
    "mean": 5.01218
   },
   "normal": {
    "duration": 4.96192e+09,
    "iterations": 1.07545e+09,
    "max": 12.361,
    "min": 4.593,
    "mean": 4.61382
   }
  }

The ifunc implementation is also enabled only for powerpc64.

Checked on powerpc-linux-gnu (built without --with-cpu, with
--with-cpu=power4 and with --with-cpu=power5+ and --disable-multi-arch),
powerpc64-linux-gnu (built without --with-cp and with --with-cpu=power5+
and --disable-multi-arch).

	* sysdeps/powerpc/power7/fpu/s_logb.c: Move to ...
	* sysdeps/powerpc/fpu/s_logb.c: ... here.  Use inline FP constants.
	* sysdeps/powerpc/power7/fpu/s_logbf.c: Move to ...
	* sysdeps/powerpc/fpu/s_logbf.c: ... here.  Use inline FP constants.
	* sysdeps/powerpc/power7/fpu/s_logbl.c: Move to ...
	* sysdeps/powerpc/fpu/s_logbl.c: ... here.  Use inline FP constants.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-power7.c:
	Adjust implementation path.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-power7.c:
	Adjust implementation path.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c:
	Adjust implementation path.
	* sysdeps/powerpc/powerpc64/be/fpu/multiarch/Makefile
	(libm-sysdep_routines): Add s_log* objects.
	(CFLAGS-s_logbf-power7.c, CFLAGS-s_logbl-power7.c,
	CFLAGS-s_logb-power7.c): New fule.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c: Move
	to ...
	* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logb-power7.c:
	... here.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-ppc64.c: Move
	to ...
	* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logb-ppc64.c:
	... here.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c: Move to ...
	* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logb.c: ... here.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c: Move
	to ...
	* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbf-power7.c:
	... here.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-ppc64.c: Move
	to ...
	* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbf-ppc64.c:
	... here.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c: Move to ...
	* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbf.c: ... here.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c: Move
	to ...
	* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbl-power7.c:
	... here.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-ppc64.c: Move
	to ...
	* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbl-ppc64.c:
	... here.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c: Move to ...
	* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbl.c: ... here.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile: Remove file.
	* sysdeps/powerpc/powerpc64/power7/fpu/s_logb.c: Remove file.
	* sysdeps/powerpc/powerpc64/power7/fpu/s_logbf.c: Likewise.
	* sysdeps/powerpc/powerpc64/power7/fpu/s_logbl.c: Likewise.
---
 sysdeps/powerpc/{power7 => }/fpu/s_logb.c     | 64 ++++++++-----------
 sysdeps/powerpc/{power7 => }/fpu/s_logbf.c    | 44 ++++++-------
 sysdeps/powerpc/{power7 => }/fpu/s_logbl.c    | 47 ++++++--------
 .../power4/fpu/multiarch/s_logb-power7.c      | 13 +---
 .../power4/fpu/multiarch/s_logbf-power7.c     |  8 +--
 .../power4/fpu/multiarch/s_logbl-power7.c     |  3 +-
 .../powerpc64/be/fpu/multiarch/Makefile       | 10 +++
 .../{ => be}/fpu/multiarch/s_logb-power7.c    |  3 +-
 .../{ => be}/fpu/multiarch/s_logb-ppc64.c     |  0
 .../powerpc64/{ => be}/fpu/multiarch/s_logb.c |  0
 .../{ => be}/fpu/multiarch/s_logbf-power7.c   |  3 +-
 .../{ => be}/fpu/multiarch/s_logbf-ppc64.c    |  0
 .../{ => be}/fpu/multiarch/s_logbf.c          |  0
 .../{ => be}/fpu/multiarch/s_logbl-power7.c   |  3 +-
 .../{ => be}/fpu/multiarch/s_logbl-ppc64.c    |  0
 .../{ => be}/fpu/multiarch/s_logbl.c          |  0
 .../powerpc/powerpc64/fpu/multiarch/Makefile  | 11 ----
 sysdeps/powerpc/powerpc64/power7/fpu/s_logb.c |  1 -
 .../powerpc/powerpc64/power7/fpu/s_logbf.c    |  1 -
 .../powerpc/powerpc64/power7/fpu/s_logbl.c    |  1 -
 20 files changed, 87 insertions(+), 125 deletions(-)
 rename sysdeps/powerpc/{power7 => }/fpu/s_logb.c (56%)
 rename sysdeps/powerpc/{power7 => }/fpu/s_logbf.c (67%)
 rename sysdeps/powerpc/{power7 => }/fpu/s_logbl.c (72%)
 rename sysdeps/powerpc/powerpc64/{ => be}/fpu/multiarch/s_logb-power7.c (91%)
 rename sysdeps/powerpc/powerpc64/{ => be}/fpu/multiarch/s_logb-ppc64.c (100%)
 rename sysdeps/powerpc/powerpc64/{ => be}/fpu/multiarch/s_logb.c (100%)
 rename sysdeps/powerpc/powerpc64/{ => be}/fpu/multiarch/s_logbf-power7.c (91%)
 rename sysdeps/powerpc/powerpc64/{ => be}/fpu/multiarch/s_logbf-ppc64.c (100%)
 rename sysdeps/powerpc/powerpc64/{ => be}/fpu/multiarch/s_logbf.c (100%)
 rename sysdeps/powerpc/powerpc64/{ => be}/fpu/multiarch/s_logbl-power7.c (91%)
 rename sysdeps/powerpc/powerpc64/{ => be}/fpu/multiarch/s_logbl-ppc64.c (100%)
 rename sysdeps/powerpc/powerpc64/{ => be}/fpu/multiarch/s_logbl.c (100%)
 delete mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
 delete mode 100644 sysdeps/powerpc/powerpc64/power7/fpu/s_logb.c
 delete mode 100644 sysdeps/powerpc/powerpc64/power7/fpu/s_logbf.c
 delete mode 100644 sysdeps/powerpc/powerpc64/power7/fpu/s_logbl.c

diff --git a/sysdeps/powerpc/power7/fpu/s_logb.c b/sysdeps/powerpc/fpu/s_logb.c
similarity index 56%
rename from sysdeps/powerpc/power7/fpu/s_logb.c
rename to sysdeps/powerpc/fpu/s_logb.c
index 4cddc0f9c1..364f7f0cc3 100644
--- a/sysdeps/powerpc/power7/fpu/s_logb.c
+++ b/sysdeps/powerpc/fpu/s_logb.c
@@ -1,4 +1,4 @@
-/* logb(). PowerPC/POWER7 version.
+/* Get exponent of a floating-point value.  PowerPC version.
    Copyright (C) 2012-2019 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -16,59 +16,49 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <math.h>
-#include <math_private.h>
-#include <math_ldbl_opt.h>
-#include <libm-alias-double.h>
+/* ISA 2.07 provides fast GPR to FP instruction (mfvsr{d,wz}) which make
+   generic implementation faster.  */
+#if defined(_ARCH_PWR8) || !defined(_ARCH_PWR7)
+# include <sysdeps/ieee754/dbl-64/s_logb.c>
+#else
+# include <math.h>
+# include <math_private.h>
+# include <math_ldbl_opt.h>
+# include <libm-alias-double.h>
 
 /* This implementation avoids FP to INT conversions by using VSX
    bitwise instructions over FP values.  */
-
-static const double two1div52 = 2.220446049250313e-16;	/* 1/2**52  */
-static const double two10m1   = -1023.0;		/* 2**10 -1  */
-
-/* FP mask to extract the exponent.  */
-static const union {
-  unsigned long long mask;
-  double d;
-} mask = { 0x7ff0000000000000ULL };
-
 double
 __logb (double x)
 {
   double ret;
 
-  if (__builtin_expect (x == 0.0, 0))
+  if (__glibc_unlikely (x == 0.0))
     /* Raise FE_DIVBYZERO and return -HUGE_VAL[LF].  */
-    return -1.0 / __builtin_fabs (x);
+    return -1.0 / fabs (x);
 
-  /* ret = x & 0x7ff0000000000000;  */
-  asm (
-    "xxland %x0,%x1,%x2\n"
-    "fcfid  %0,%0"
-    : "=f" (ret)
-    : "f" (x), "f" (mask.d));
-  /* ret = (ret >> 52) - 1023.0;  */
-  ret = (ret * two1div52) + two10m1;
-  if (__builtin_expect (ret > -two10m1, 0))
+  /* Mask to extract the exponent.  */
+  asm ("xxland %x0,%x1,%x2\n"
+       "fcfid  %0,%0"
+       : "=d" (ret)
+       : "d" (x), "d" (0x7ff0000000000000ULL));
+  ret = (ret * 0x1p-52) - 1023.0;
+  if (ret > 1023.0)
     /* Multiplication is used to set logb (+-INF) = INF.  */
     return (x * x);
-  else if (__builtin_expect (ret == two10m1, 0))
+  else if (ret == -1023.0)
     {
       /* POSIX specifies that denormal numbers are treated as
          though they were normalized.  */
-      int32_t lx, ix;
-      int ma;
-
-      EXTRACT_WORDS (ix, lx, x);
-      ix &= 0x7fffffff;
-      if (ix == 0)
-	ma = __builtin_clz (lx) + 32;
-      else
-	ma = __builtin_clz (ix);
-      return (double) (-1023 - (ma - 12));
+      int64_t ix;
+      EXTRACT_WORDS64 (ix, x);
+      ix &= UINT64_C (0x7fffffffffffffff);
+      return (double) (-1023 - (__builtin_clzll (ix) - 12));
     }
   /* Test to avoid logb_downward (0.0) == -0.0.  */
   return ret == -0.0 ? 0.0 : ret;
 }
+# ifndef __logb
 libm_alias_double (__logb, logb)
+# endif
+#endif
diff --git a/sysdeps/powerpc/power7/fpu/s_logbf.c b/sysdeps/powerpc/fpu/s_logbf.c
similarity index 67%
rename from sysdeps/powerpc/power7/fpu/s_logbf.c
rename to sysdeps/powerpc/fpu/s_logbf.c
index b0d006b5c7..cf564ad294 100644
--- a/sysdeps/powerpc/power7/fpu/s_logbf.c
+++ b/sysdeps/powerpc/fpu/s_logbf.c
@@ -1,4 +1,4 @@
-/* logbf(). PowerPC/POWER7 version.
+/* Get exponent of a floating-point value.  PowerPC version.
    Copyright (C) 2012-2019 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -16,40 +16,33 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <libm-alias-float.h>
-
+/* ISA 2.07 provides fast GPR to FP instruction (mfvsr{d,wz}) which make
+   generic implementation faster.  */
+#if defined(_ARCH_PWR8) || !defined(_ARCH_PWR7)
+# include <sysdeps/ieee754/flt-32/s_logbf.c>
+#else
+# include <math.h>
+# include <libm-alias-float.h>
 /* This implementation avoids FP to INT conversions by using VSX
    bitwise instructions over FP values.  */
-
-static const double two1div52 = 2.220446049250313e-16;	/* 1/2**52  */
-static const double two10m1   = -1023.0;		/* -2**10 + 1  */
-static const double two7m1    = -127.0;			/* -2**7 + 1  */
-
-/* FP mask to extract the exponent.  */
-static const union {
-  unsigned long long mask;
-  double d;
-} mask = { 0x7ff0000000000000ULL };
-
 float
 __logbf (float x)
 {
   /* VSX operation are all done internally as double.  */
   double ret;
 
-  if (__builtin_expect (x == 0.0, 0))
+  if (__glibc_unlikely (x == 0.0))
     /* Raise FE_DIVBYZERO and return -HUGE_VAL[LF].  */
-    return -1.0 / __builtin_fabsf (x);
+    return -1.0 / fabs (x);
 
-  /* ret = x & 0x7f800000;  */
-  asm (
-    "xxland %x0,%x1,%x2\n"
-    "fcfid  %0,%0"
-    : "=f"(ret)
-    : "f" (x), "f" (mask.d));
+  /* mask to extract the exponent.  */
+  asm ("xxland %x0,%x1,%x2\n"
+       "fcfid  %0,%0"
+       : "=d"(ret)
+       : "d" (x), "d" (0x7ff0000000000000ULL));
   /* ret = (ret >> 52) - 1023.0, since ret is double.  */
-  ret = (ret * two1div52) + two10m1;
-  if (__builtin_expect (ret > -two7m1, 0))
+  ret = (ret * 0x1p-52) - 1023.0;
+  if (ret > 127.0)
     /* Multiplication is used to set logb (+-INF) = INF.  */
     return (x * x);
   /* Since operations are done with double we don't need
@@ -57,4 +50,7 @@ __logbf (float x)
      The test is to avoid logb_downward (0.0) == -0.0.  */
   return ret == -0.0 ? 0.0 : ret;
 }
+# ifndef __logbf
 libm_alias_float (__logb, logb)
+# endif
+#endif
diff --git a/sysdeps/powerpc/power7/fpu/s_logbl.c b/sysdeps/powerpc/fpu/s_logbl.c
similarity index 72%
rename from sysdeps/powerpc/power7/fpu/s_logbl.c
rename to sysdeps/powerpc/fpu/s_logbl.c
index 76c29daeca..543cd4a188 100644
--- a/sysdeps/powerpc/power7/fpu/s_logbl.c
+++ b/sysdeps/powerpc/fpu/s_logbl.c
@@ -1,4 +1,4 @@
-/* logbl(). PowerPC/POWER7 version.
+/* Get exponent of a floating-point value.  PowerPC version.
    Copyright (C) 2012-2019 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -16,22 +16,17 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <math.h>
-#include <math_private.h>
-#include <math_ldbl_opt.h>
+/* ISA 2.07 provides fast GPR to FP instruction (mfvsr{d,wz}) which make
+   generic implementation faster.  */
+#if defined(_ARCH_PWR8) || !defined(_ARCH_PWR7)
+# include <./sysdeps/ieee754/ldbl-128ibm/s_logbl.c>
+#else
+# include <math.h>
+# include <math_private.h>
+# include <math_ldbl_opt.h>
 
 /* This implementation avoids FP to INT conversions by using VSX
    bitwise instructions over FP values.  */
-
-static const double two1div52 = 2.220446049250313e-16;	/* 1/2**52  */
-static const double two10m1   = -1023.0;		/* 2**10 -1  */
-
-/* FP mask to extract the exponent.  */
-static const union {
-  unsigned long long mask;
-  double d;
-} mask = { 0x7ff0000000000000ULL };
-
 long double
 __logbl (long double x)
 {
@@ -39,24 +34,23 @@ __logbl (long double x)
   double ret;
   int64_t hx;
 
-  if (__builtin_expect (x == 0.0L, 0))
+  if (__glibc_unlikely (x == 0.0))
     /* Raise FE_DIVBYZERO and return -HUGE_VAL[LF].  */
     return -1.0L / __builtin_fabsl (x);
 
   ldbl_unpack (x, &xh, &xl);
   EXTRACT_WORDS64 (hx, xh);
-  /* ret = x & 0x7ff0000000000000;  */
-  asm (
-    "xxland %x0,%x1,%x2\n"
-    "fcfid  %0,%0"
-    : "=f" (ret)
-    : "f" (xh), "f" (mask.d));
-  /* ret = (ret >> 52) - 1023.0;  */
-  ret = (ret * two1div52) + two10m1;
-  if (__builtin_expect (ret > -two10m1, 0))
+
+  /* Mask to extract the exponent.  */
+  asm ("xxland %x0,%x1,%x2\n"
+       "fcfid  %0,%0"
+       : "=d" (ret)
+       : "d" (xh), "d" (0x7ff0000000000000ULL));
+  ret = (ret * 0x1p-52) - 1023.0;
+  if (ret > 1023.0)
     /* Multiplication is used to set logb (+-INF) = INF.  */
     return (xh * xh);
-  else if (__builtin_expect (ret == two10m1, 0))
+  else if (ret == -1023.0)
     {
       /* POSIX specifies that denormal number is treated as
          though it were normalized.  */
@@ -78,6 +72,7 @@ __logbl (long double x)
   /* Test to avoid logb_downward (0.0) == -0.0.  */
   return ret == -0.0 ? 0.0 : ret;
 }
-#ifndef __logbl
+# ifndef __logbl
 long_double_symbol (libm, __logbl, logbl);
+# endif
 #endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-power7.c
index 812771ac2e..c893ebcf29 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-power7.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-power7.c
@@ -16,16 +16,5 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <math.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-#undef strong_alias
-#define strong_alias(a, b)
-#undef compat_symbol
-#define compat_symbol(lib, name, alias, ver)
-
 #define __logb __logb_power7
-
-#include <sysdeps/powerpc/power7/fpu/s_logb.c>
+#include <sysdeps/powerpc/fpu/s_logb.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-power7.c
index 62c2318421..059c53bce2 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-power7.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-power7.c
@@ -16,11 +16,5 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <math.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-
 #define __logbf __logbf_power7
-
-#include <sysdeps/powerpc/power7/fpu/s_logbf.c>
+#include <sysdeps/powerpc/fpu/s_logbf.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c
index c4fe590c6c..22a6ffb064 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c
@@ -17,5 +17,4 @@
    <http://www.gnu.org/licenses/>.  */
 
 #define __logbl __logbl_power7
-
-#include <sysdeps/powerpc/power7/fpu/s_logbl.c>
+#include <sysdeps/powerpc/fpu/s_logbl.c>
diff --git a/sysdeps/powerpc/powerpc64/be/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/be/fpu/multiarch/Makefile
index 63de39bbf1..f4e2e88af0 100644
--- a/sysdeps/powerpc/powerpc64/be/fpu/multiarch/Makefile
+++ b/sysdeps/powerpc/powerpc64/be/fpu/multiarch/Makefile
@@ -32,6 +32,12 @@ libm-sysdep_routines += s_ceil-power5+ \
 			s_llround-power5+ \
 			s_llround-ppc64 \
 			s_llroundf-ppc64 \
+			s_logb-power7 \
+			s_logbf-power7 \
+			s_logbl-power7 \
+			s_logb-ppc64 \
+			s_logbf-ppc64 \
+			s_logbl-ppc64 \
 			$(sysdep_calls:s_%=m_%)
 
 CFLAGS-s_ceil-power5+.c = -mcpu=power5+
@@ -48,6 +54,10 @@ CFLAGS-s_llround-power5+.c += -mcpu=power5+
 
 CFLAGS-s_modf-power5+.c += -mcpu=power5+
 CFLAGS-s_modff-power5+.c += -mcpu=power5+
+CFLAGS-s_logbf-power7.c = -mcpu=power7
+CFLAGS-s_logbl-power7.c = -mcpu=power7
+CFLAGS-s_logb-power7.c = -mcpu=power7
+
 # These files quiet sNaNs in a way that is optimized away without
 # -fsignaling-nans.
 CFLAGS-s_modf-ppc64.c += -fsignaling-nans
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c b/sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logb-power7.c
similarity index 91%
rename from sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c
rename to sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logb-power7.c
index 507862b2bf..807bf58eeb 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c
+++ b/sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logb-power7.c
@@ -16,4 +16,5 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-power7.c>
+#define __logb __logb_power7
+#include <sysdeps/powerpc/fpu/s_logb.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-ppc64.c b/sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logb-ppc64.c
similarity index 100%
rename from sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-ppc64.c
rename to sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logb-ppc64.c
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c b/sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logb.c
similarity index 100%
rename from sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c
rename to sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logb.c
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c b/sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbf-power7.c
similarity index 91%
rename from sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c
rename to sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbf-power7.c
index 3535ea78cd..4fee11dd84 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c
+++ b/sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbf-power7.c
@@ -16,4 +16,5 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-power7.c>
+#define __logbf __logbf_power7
+#include <sysdeps/powerpc/fpu/s_logbf.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-ppc64.c b/sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbf-ppc64.c
similarity index 100%
rename from sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-ppc64.c
rename to sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbf-ppc64.c
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c b/sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbf.c
similarity index 100%
rename from sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c
rename to sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbf.c
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c b/sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbl-power7.c
similarity index 91%
rename from sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c
rename to sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbl-power7.c
index 915636176d..c413d6e50d 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c
+++ b/sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbl-power7.c
@@ -16,4 +16,5 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c>
+#define __logbl __logbl_power7
+#include <sysdeps/powerpc/fpu/s_logbl.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-ppc64.c b/sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbl-ppc64.c
similarity index 100%
rename from sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-ppc64.c
rename to sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbl-ppc64.c
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c b/sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbl.c
similarity index 100%
rename from sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c
rename to sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_logbl.c
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
deleted file mode 100644
index d7ad1e2724..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-ifeq ($(subdir),math)
-sysdep_routines += $(sysdep_calls)
-libm-sysdep_routines += s_logb-power7 s_logbf-power7 \
-			s_logbl-power7 s_logb-ppc64 s_logbf-ppc64 \
-			s_logbl-ppc64 \
-			$(sysdep_calls:s_%=m_%)
-
-CFLAGS-s_logbf-power7.c = -mcpu=power7
-CFLAGS-s_logbl-power7.c = -mcpu=power7
-CFLAGS-s_logb-power7.c = -mcpu=power7
-endif
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_logb.c b/sysdeps/powerpc/powerpc64/power7/fpu/s_logb.c
deleted file mode 100644
index 2599c771d9..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/fpu/s_logb.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/powerpc/power7/fpu/s_logb.c>
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_logbf.c b/sysdeps/powerpc/powerpc64/power7/fpu/s_logbf.c
deleted file mode 100644
index 7a5a8032e0..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/fpu/s_logbf.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/powerpc/power7/fpu/s_logbf.c>
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_logbl.c b/sysdeps/powerpc/powerpc64/power7/fpu/s_logbl.c
deleted file mode 100644
index 524ae2c78d..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/fpu/s_logbl.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/powerpc/power7/fpu/s_logbl.c>
-- 
2.17.1


  parent reply	other threads:[~2019-03-29 13:42 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-29 13:35 [PATCH 00/28] powerpc floating-point optimization refactor Adhemerval Zanella
2019-03-29 13:35 ` [PATCH 01/28] powerpc: Use generic fabs{f} implementations Adhemerval Zanella
2019-04-01 20:04   ` Joseph Myers
2019-04-03  1:04     ` Adhemerval Zanella
2019-04-15 20:23       ` Gabriel F. T. Gomes
2019-04-15 21:32         ` Tulio Magno Quites Machado Filho
2019-04-17 17:08           ` Adhemerval Zanella
2019-03-29 13:35 ` [PATCH 02/28] powerpc: fma using builtins Adhemerval Zanella
2019-04-01 20:05   ` Joseph Myers
2019-04-03  1:06     ` Adhemerval Zanella
2019-04-15 21:44       ` Gabriel F. T. Gomes
2019-04-17 21:10       ` Joseph Myers
2019-04-17 21:28         ` Adhemerval Zanella
2019-03-29 13:35 ` [PATCH 03/28] powerpc: Remove power4 mpa optimization Adhemerval Zanella
2019-04-24 21:51   ` Gabriel F. T. Gomes
2019-04-25 12:19     ` Adhemerval Zanella
2019-03-29 13:35 ` [PATCH 04/28] powerpc: ceil/ceilf refactor Adhemerval Zanella
2019-04-25  1:56   ` Gabriel F. T. Gomes
2019-04-25 21:58     ` Adhemerval Zanella
2019-05-02 18:41       ` Gabriel F. T. Gomes
2019-05-04 21:46         ` Gabriel F. T. Gomes
2019-05-06 12:22           ` Adhemerval Zanella
2019-05-09 19:56             ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 05/28] powerpc: floor/floorf refactor Adhemerval Zanella
2019-05-03 21:44   ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 06/28] powerpc: round/roundf refactor Adhemerval Zanella
2019-05-04  1:10   ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 07/28] powerpc: trunc/truncf refactor Adhemerval Zanella
2019-05-09 20:06   ` Gabriel F. T. Gomes
2019-05-09 20:54     ` Adhemerval Zanella
2019-05-09 21:36       ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 08/28] powerpc: generic nearbyint/nearbyintf Adhemerval Zanella
2019-05-27 20:42   ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 09/28] powerpc: consolidate rint Adhemerval Zanella
2019-05-30 14:36   ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 10/28] powerpc: copysign cleanup Adhemerval Zanella
2019-05-31 14:14   ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 11/28] benchtests: Add isnan/isinf/isfinite benchmark Adhemerval Zanella
2019-06-05 22:45   ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 12/28] math: Use wordsize-64 version for isnan Adhemerval Zanella
2019-06-05 22:45   ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 13/28] powerpc: Remove optimized isnan Adhemerval Zanella
2019-06-05 22:46   ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 14/28] math: Use wordsize-64 version for isinf Adhemerval Zanella
2019-06-11 13:13   ` Gabriel F. T. Gomes
2019-06-13  8:57   ` Szabolcs Nagy
2019-06-13  9:11     ` Szabolcs Nagy
2019-03-29 13:35 ` [PATCH 15/28] powerpc: Remove optimized isinf Adhemerval Zanella
2019-06-11 13:45   ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 16/28] math: Use wordsize-64 version for finite Adhemerval Zanella
2019-06-11 16:20   ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 17/28] powerpc: Remove optimized finite Adhemerval Zanella
2019-06-11 18:08   ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 18/28] powerpc: refactor powerpc64 lrint/lrintf/llrint/llrintf Adhemerval Zanella
2019-06-13 19:30   ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 19/28] powerpc: Refactor powerpc32 lrint/lrintf/llrint/llrintf Adhemerval Zanella
2019-06-14 18:34   ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 20/28] powerpc: Refactor powerpc64 lround/lroundf/llround/llroundf Adhemerval Zanella
2019-06-13 19:30   ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 21/28] powerpc: Refactor powerpc32 lround/lroundf/llround/llroundf Adhemerval Zanella
2019-06-24 21:07   ` Gabriel F. T. Gomes
2019-06-25 18:34     ` Adhemerval Zanella
2019-06-25 18:44       ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 22/28] powerpc: Use generic e_expf Adhemerval Zanella
2019-06-26 12:59   ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 23/28] benchtests: hypot benchmark Adhemerval Zanella
2019-06-26 19:58   ` Gabriel F. T. Gomes
2019-03-29 13:35 ` [PATCH 24/28] powerpc: hypot refactor and optimization Adhemerval Zanella
2019-04-01 20:14   ` Joseph Myers
2019-04-03  1:08     ` Adhemerval Zanella
2019-06-26 19:59   ` Gabriel F. T. Gomes
2019-07-08 15:37     ` Adhemerval Zanella
2019-07-08 18:30       ` Adhemerval Zanella
2019-03-29 13:35 ` [PATCH 25/28] powerpc: Refactor modf{f} Adhemerval Zanella
2019-07-05  1:23   ` Gabriel F. T. Gomes
2019-07-08 18:30     ` Adhemerval Zanella
2019-03-29 13:35 ` [PATCH 26/28] benchtests: Add logb{f} benchmark Adhemerval Zanella
2019-07-05  1:23   ` Gabriel F. T. Gomes
2019-07-08 18:31     ` Adhemerval Zanella
2019-03-29 13:35 ` [PATCH 27/28] math: Use wordsize-64 version for s_logb Adhemerval Zanella
2019-07-05  1:23   ` Gabriel F. T. Gomes
2019-07-08 18:31     ` Adhemerval Zanella
2019-03-29 13:35 ` Adhemerval Zanella [this message]
2019-07-05  1:24   ` [PATCH 28/28] powerpc: refactor logb{f,l} Gabriel F. T. Gomes
2019-07-08 18:31     ` Adhemerval Zanella

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/libc/involved.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190329133529.22523-29-adhemerval.zanella@linaro.org \
    --to=adhemerval.zanella@linaro.org \
    --cc=libc-alpha@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).