This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[glibc] powerpc: Remove optimized finite


https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=119269606996258ee0a53ff9e5828d474ee0f698

commit 119269606996258ee0a53ff9e5828d474ee0f698
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Mon Mar 11 03:29:37 2019 +0000

    powerpc: Remove optimized finite
    
    The powerpc finite optimization do not show much gain:
    
      - GCC will call libm iff -fsignaling-nans is used. This usage pattern
        is usually not performance oriented and for such calls PLT overhead
        should dominate execution time.
    
      - The power7 uses ftdiv to optimize for some input patterns, but at
        cost of others.  Comparing against generic C implementation built
        for powerpc64-linux-gnu-power7 (--with-cpu=power7):
    
        - Generic sysdeps/ieee754 implementation:
           "isfinite": {
            "": {
             "duration": 5.0082e+09,
             "iterations": 2.45299e+09,
             "max": 43.824,
             "min": 2.008,
             "mean": 2.04167
            },
            "INF": {
             "duration": 4.66554e+09,
             "iterations": 2.28288e+09,
             "max": 35.73,
             "min": 2.008,
             "mean": 2.04371
            },
            "NAN": {
             "duration": 4.66274e+09,
             "iterations": 2.28716e+09,
             "max": 34.161,
             "min": 2.009,
             "mean": 2.03866
            }
           }
    
        - power7 optimized one:
           "isfinite": {
            "": {
             "duration": 4.99111e+09,
             "iterations": 2.65566e+09,
             "max": 25.015,
             "min": 1.716,
             "mean": 1.87942
            },
            "INF": {
             "duration": 4.6783e+09,
             "iterations": 2.0999e+09,
             "max": 35.264,
             "min": 1.868,
             "mean": 2.22787
            },
            "NAN": {
             "duration": 4.67915e+09,
             "iterations": 2.08678e+09,
             "max": 38.099,
             "min": 1.869,
             "mean": 2.24228
            }
           }
    
         So it basically optimizes marginally for normal numbers while
         increasing the latency for other kind of FP.
    
      - The power8 implementation is just the generic implementation using
        ISA 2.07 mfvsrd instruction (which GCC uses for generic implementation).
        So generic implementation is the best option for powerpc64le.
    
    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/powerpc32/power4/fpu/multiarch/Makefile
    	(sysdeps_routines, libm-sysdep_routines): Remove s_finite*
    	objects.
    	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-power7.S:
    	Remove file.
    	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-ppc32.c:
    	Likewise.
    	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite.c: Likewise.
    	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef-ppc32.c:
    	Likewise.
    	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef.c: Likewise.
    	* sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S: Likewise.
    	* sysdeps/powerpc/powerpc32/power7/fpu/s_finitef.S: Likewise.
    	* sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile (sysdep_call):
    	Remove s_finite* objects.
    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power7.S: Remove file.
    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S: Likewise.
    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-ppc64.c: Likewise.
    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c: Likewise.
    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef-ppc64.c: Likewise.
    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c: Likewise.
    	* sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S: Likewise.
    	* sysdeps/powerpc/powerpc64/power7/fpu/s_finitef.S: Likewise.
    	* sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S: Likewise.
    	* sysdeps/powerpc/powerpc64/power8/fpu/s_finitef.S: Likewise.
    
    Reviewed-by: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>

Diff:
---
 ChangeLog                                          | 26 ++++++
 .../powerpc32/power4/fpu/multiarch/Makefile        |  7 +-
 .../power4/fpu/multiarch/s_finite-power7.S         | 33 --------
 .../power4/fpu/multiarch/s_finite-ppc32.c          | 33 --------
 .../powerpc32/power4/fpu/multiarch/s_finite.c      | 57 -------------
 .../power4/fpu/multiarch/s_finitef-ppc32.c         | 31 --------
 .../powerpc32/power4/fpu/multiarch/s_finitef.c     | 34 --------
 sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S    | 93 ----------------------
 sysdeps/powerpc/powerpc32/power7/fpu/s_finitef.S   |  1 -
 sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile   |  4 +-
 .../powerpc64/fpu/multiarch/s_finite-power7.S      | 32 --------
 .../powerpc64/fpu/multiarch/s_finite-power8.S      | 32 --------
 .../powerpc64/fpu/multiarch/s_finite-ppc64.c       | 34 --------
 sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c | 69 ----------------
 .../powerpc64/fpu/multiarch/s_finitef-ppc64.c      | 32 --------
 .../powerpc/powerpc64/fpu/multiarch/s_finitef.c    | 37 ---------
 sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S    | 70 ----------------
 sysdeps/powerpc/powerpc64/power7/fpu/s_finitef.S   |  1 -
 sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S    | 56 -------------
 sysdeps/powerpc/powerpc64/power8/fpu/s_finitef.S   |  1 -
 20 files changed, 29 insertions(+), 654 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 66512da..2afedc1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,31 @@
 2019-06-12  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
+	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/Makefile
+	(sysdeps_routines, libm-sysdep_routines): Remove s_finite*
+	objects.
+	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-power7.S:
+	Remove file.
+	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-ppc32.c:
+	Likewise.
+	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite.c: Likewise.
+	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef-ppc32.c:
+	Likewise.
+	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef.c: Likewise.
+	* sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S: Likewise.
+	* sysdeps/powerpc/powerpc32/power7/fpu/s_finitef.S: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile (sysdep_call):
+	Remove s_finite* objects.
+	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power7.S: Remove file.
+	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-ppc64.c: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef-ppc64.c: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c: Likewise.
+	* sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S: Likewise.
+	* sysdeps/powerpc/powerpc64/power7/fpu/s_finitef.S: Likewise.
+	* sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S: Likewise.
+	* sysdeps/powerpc/powerpc64/power8/fpu/s_finitef.S: Likewise.
+
 	* sysdeps/ieee754/dbl-64/wordsize-64/s_finite.c: Move to ...
 	* sysdeps/ieee754/dbl-64/s_finite.c: ... here and format code.
 
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/Makefile
index c7b9d48..51b13fe 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/Makefile
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/Makefile
@@ -1,13 +1,10 @@
 ifeq ($(subdir),math)
-sysdep_routines += s_finite-power7 \
-		   s_finite-ppc32 s_finitef-ppc32 \
-		   s_modf-power5+ s_modf-ppc32 \
+sysdep_routines += s_modf-power5+ s_modf-ppc32 \
 		   s_modff-power5+ s_modff-ppc32
 
 libm-sysdep_routines += s_llrintf-power6 s_llrintf-ppc32 s_llrint-power6 \
 			s_llrint-ppc32 s_llround-power6 s_llround-power5+ \
-			s_llround-ppc32 s_finite-power7 \
-			s_finite-ppc32 s_finitef-ppc32 s_ceil-power5+ \
+			s_llround-ppc32 s_ceil-power5+ \
 			s_ceil-ppc32 s_ceilf-power5+ s_ceilf-ppc32 \
 			s_floor-power5+ s_floor-ppc32 s_floorf-power5+ \
 			s_floorf-ppc32 s_round-power5+ s_round-ppc32 \
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-power7.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-power7.S
deleted file mode 100644
index 0cde9f1..0000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-power7.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* finite().  PowerPC32/POWER7 version.
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, alias, ver)
-
-#define __finite __finite_power7
-
-#include <sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-ppc32.c
deleted file mode 100644
index c03a26e..0000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-ppc32.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* finite().  PowerPC32 default version.
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   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)
-#undef strong_alias
-#define strong_alias(a, b)
-
-#define FINITE __finite_ppc32
-#ifdef SHARED
-# undef hidden_def
-# define hidden_def(a) \
-   __hidden_ver1 (__finite_ppc32, __GI___finite, __finite_ppc32);
-#endif
-
-#include <sysdeps/ieee754/dbl-64/s_finite.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite.c
deleted file mode 100644
index 677b71b..0000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Multiple versions of finite.
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define __finite __redirect___finite
-#define __finitef __redirect___finitef
-#define __finitel __redirect___finitel
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__finite) __finite_ppc32 attribute_hidden;
-extern __typeof (__finite) __finite_power7 attribute_hidden;
-#undef __finite
-#undef __finitef
-#undef __finitel
-
-libc_ifunc_redirected (__redirect___finite,  __finite,
-		       (hwcap & PPC_FEATURE_ARCH_2_06)
-		       ? __finite_power7
-		       : __finite_ppc32);
-
-weak_alias (__finite, finite)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__finite, __finitel)
-weak_alias (__finite, finitel)
-#endif
-
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, finite, finitel, GLIBC_2_0);
-# endif
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_1)
-compat_symbol (libm, __finite, __finitel, GLIBC_2_1);
-# endif
-#else
-# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
-compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
-compat_symbol (libc, finite, finitel, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef-ppc32.c
deleted file mode 100644
index e43c7a5..0000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef-ppc32.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* finitef().  PowerPC32 default version.
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   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 FINITEF __finitef_ppc32
-#ifdef SHARED
-# undef hidden_def
-# define hidden_def(a) \
-   __hidden_ver1 (__finitef_ppc32, __GI___finitef, __finitef_ppc32);
-#endif
-
-#include <sysdeps/ieee754/flt-32/s_finitef.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef.c
deleted file mode 100644
index da47805..0000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Multiple versions of finitef.
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define __finitef __redirect___finitef
-#include <math.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__finitef) __finitef_ppc32 attribute_hidden;
-/* The power7 finite(double) works for float.  */
-extern __typeof (__finitef) __finite_power7 attribute_hidden;
-#undef __finitef
-
-libc_ifunc_redirected  (__redirect___finitef, __finitef,
-			(hwcap & PPC_FEATURE_ARCH_2_06)
-			? __finite_power7
-			: __finitef_ppc32);
-
-weak_alias (__finitef, finitef)
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S b/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S
deleted file mode 100644
index 07fa8ae..0000000
--- a/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S
+++ /dev/null
@@ -1,93 +0,0 @@
-/* finite().  PowerPC32/POWER7 version.
-   Copyright (C) 2010-2019 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __finite(x)  */
-	.section    .rodata.cst8,"aM",@progbits,8
-	.align 3
-.LC0:   /* 1.0 */
-	.quad	    0x3ff0000000000000
-
-	.section    ".text"
-	.type	    __finite, @function
-	.machine    power7
-ENTRY (__finite)
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-
-	SETUP_GOT_ACCESS(r9,got_label)
-	addis	r9,r9,.LC0-got_label@ha
-	lfd	fp0,.LC0-got_label@l(r9)
-
-	mtlr	r11
-	cfi_same_value (lr)
-#else
-	lis	r9,.LC0@ha
-	lfd	fp0,.LC0@l(r9)
-#endif
-	ftdiv	cr7,fp1,fp0
-	li	r3,1
-	bflr	30
-
-	/* We have -INF/+INF/NaN or a denormal.  */
-
-	stwu	r1,-16(r1)    /* Allocate stack space.  */
-	stfd    fp1,8(r1)     /* Transfer FP to GPR's.  */
-
-	ori	2,2,0	      /* Force a new dispatch group.  */
-	lhz	r0,8+HISHORT(r1) /* Fetch the upper 16 bits of the FP value
-				    (biased exponent and sign bit).  */
-	clrlwi	r0,r0,17      /* r0 = abs(r0).  */
-	addi	r1,r1,16      /* Reset the stack pointer.  */
-	cmpwi	cr7,r0,0x7ff0 /* r4 == 0x7ff0?.  */
-	bltlr	cr7	      /* LT means we have a denormal.  */
-	li	r3,0
-	blr
-	END (__finite)
-
-hidden_def (__finite)
-weak_alias (__finite, finite)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__finite, __finitef)
-hidden_def (__finitef)
-weak_alias (__finitef, finitef)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__finite, __finitel)
-weak_alias (__finite, finitel)
-#endif
-
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, finite, finitel, GLIBC_2_0)
-# endif
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_1)
-compat_symbol (libm, __finite, __finitel, GLIBC_2_1)
-# endif
-#else
-# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
-compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
-compat_symbol (libc, finite, finitel, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/s_finitef.S b/sysdeps/powerpc/powerpc32/power7/fpu/s_finitef.S
deleted file mode 100644
index 54bd941..0000000
--- a/sysdeps/powerpc/powerpc32/power7/fpu/s_finitef.S
+++ /dev/null
@@ -1 +0,0 @@
-/* This function uses the same code as s_finite.S.  */
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
index 3a2051d..4aa7fd6 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
@@ -2,9 +2,7 @@ ifeq ($(subdir),math)
 # These functions are built both for libc and libm because they're required
 # by printf.  While the libc objects have the prefix s_, the libm ones are
 # prefixed with  m_.
-sysdep_calls := s_finite-power8 s_finite-power7 s_finite-ppc64 \
-		s_finitef-ppc64 \
-		s_modf-power5+ s_modf-ppc64 \
+sysdep_calls := s_modf-power5+ s_modf-ppc64 \
 		s_modff-power5+ s_modff-ppc64
 
 sysdep_routines += $(sysdep_calls)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power7.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power7.S
deleted file mode 100644
index c360c3a..0000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power7.S
+++ /dev/null
@@ -1,32 +0,0 @@
-/* isnan().  PowerPC64/POWER7 version.
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <shlib-compat.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, symbol, ver)
-
-#define __finite __finite_power7
-
-#include <sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S
deleted file mode 100644
index 8fa57e2..0000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S
+++ /dev/null
@@ -1,32 +0,0 @@
-/* isnan().  PowerPC64/POWER7 version.
-   Copyright (C) 2014-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <shlib-compat.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, symbol, ver)
-
-#define __finite __finite_power8
-
-#include <sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-ppc64.c
deleted file mode 100644
index 59cc8ba..0000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-ppc64.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* finite().  PowerPC64 default version.
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   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)
-#undef strong_alias
-#define strong_alias(a, b)
-
-#define FINITE __finite_ppc64
-#ifdef SHARED
-# undef hidden_def
-# define hidden_def(a) \
-   __hidden_ver1 (__finite_ppc64, __GI___finite, __finite_ppc64);
-#endif
-
-#include <sysdeps/ieee754/dbl-64/s_finite.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c
deleted file mode 100644
index 4f88a22..0000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Multiple versions of finite.
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define __finite __redirect___finite
-
-/* The following definitions, although not related to the 'double'
-   version of 'finite', are required to guarantee macro expansions
-   (e.g.: from __finitef to __redirect_finitef) in include/math.h, thus
-   compensating for the unintended macro expansions in
-   math/bits/mathcalls-helper-functions.h.  */
-#define __finitef __redirect___finitef
-#define __finitel __redirect___finitel
-#define __finitef128 __redirect___finitef128
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__finite) __finite_ppc64 attribute_hidden;
-extern __typeof (__finite) __finite_power7 attribute_hidden;
-extern __typeof (__finite) __finite_power8 attribute_hidden;
-#undef __finite
-#undef __finitef
-#undef __finitel
-#undef __finitef128
-
-libc_ifunc_redirected (__redirect___finite, __finite,
-		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		       ? __finite_power8
-		       : (hwcap & PPC_FEATURE_ARCH_2_06)
-			 ? __finite_power7
-			 : __finite_ppc64);
-
-weak_alias (__finite, finite)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__finite, __finitel)
-weak_alias (__finite, finitel)
-#endif
-
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, finite, finitel, GLIBC_2_0);
-# endif
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_1)
-compat_symbol (libm, __finite, __finitel, GLIBC_2_1);
-# endif
-#else
-# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
-compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
-compat_symbol (libc, finite, finitel, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef-ppc64.c
deleted file mode 100644
index 77af76d..0000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef-ppc64.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* finitef().  PowerPC64 default version.
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   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 FINITEF __finitef_ppc64
-#ifdef SHARED
-# undef hidden_def
-# define hidden_def(a) \
-   __hidden_ver1 (__finitef_ppc64, __GI___finitef, __finitef_ppc64);
-#endif
-
-#include <sysdeps/ieee754/flt-32/s_finitef.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c
deleted file mode 100644
index cde669e..0000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Multiple versions of finitef.
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define __finitef __redirect___finitef
-#include <math.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__finitef) __finitef_ppc64 attribute_hidden;
-/* The double-precision version also works for single-precision.  */
-extern __typeof (__finitef) __finite_power7 attribute_hidden;
-extern __typeof (__finitef) __finite_power8 attribute_hidden;
-#undef __finitef
-
-libc_ifunc_redirected (__redirect___finitef, __finitef,
-		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		       ? __finite_power8
-		       : (hwcap & PPC_FEATURE_ARCH_2_06)
-			 ? __finite_power7
-			 : __finitef_ppc64);
-
-weak_alias (__finitef, finitef)
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S b/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S
deleted file mode 100644
index 5b5746c..0000000
--- a/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S
+++ /dev/null
@@ -1,70 +0,0 @@
-/* finite().  PowerPC64/POWER7 version.
-   Copyright (C) 2010-2019 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __finite(x)  */
-	.section    ".toc","aw"
-.LC0:   /* 1.0 */
-	.tc	    FD_ONE[TC],0x3ff0000000000000
-	.section    ".text"
-	.type	    __finite, @function
-	.machine    power7
-ENTRY (__finite, 4)
-	CALL_MCOUNT 0
-	lfd     fp0,.LC0@toc(r2)
-	ftdiv   cr7,fp1,fp0
-	li	r3,1
-	bflr    30
-
-	/* If we are here, we either have +/-INF,
-	NaN or denormal.  */
-
-	stfd    fp1,-16(r1)   /* Transfer FP to GPR's.  */
-	ori	2,2,0	      /* Force a new dispatch group.  */
-	lhz     r4,-16+HISHORT(r1)  /* Fetch the upper 16 bits of the FP value
-				    (biased exponent and sign bit).  */
-	clrlwi  r4,r4,17      /* r4 = abs(r4).  */
-	cmpwi   cr7,r4,0x7ff0 /* r4 == 0x7ff0?  */
-	bltlr   cr7	      /* LT means finite, other non-finite.  */
-	li      r3,0
-	blr
-	END (__finite)
-
-hidden_def (__finite)
-weak_alias (__finite, finite)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__finite, __finitef)
-hidden_def (__finitef)
-weak_alias (__finitef, finitef)
-
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, __finite, __finitel, GLIBC_2_0)
-compat_symbol (libm, finite, finitel, GLIBC_2_0)
-# endif
-#else
-# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
-compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
-compat_symbol (libc, finite, finitel, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_finitef.S b/sysdeps/powerpc/powerpc64/power7/fpu/s_finitef.S
deleted file mode 100644
index 54bd941..0000000
--- a/sysdeps/powerpc/powerpc64/power7/fpu/s_finitef.S
+++ /dev/null
@@ -1 +0,0 @@
-/* This function uses the same code as s_finite.S.  */
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S
deleted file mode 100644
index f5316e8..0000000
--- a/sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S
+++ /dev/null
@@ -1,56 +0,0 @@
-/* isfinite().  PowerPC64/POWER8 version.
-   Copyright (C) 2014-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#define MFVSRD_R3_V1  .long 0x7c230066     /* mfvsrd  r3,vs1  */
-
-/* int [r3] __finite ([fp1] x)  */
-
-ENTRY_TOCLESS (__finite, 4)
-	CALL_MCOUNT 0
-	MFVSRD_R3_V1
-	lis     r9,0x8010
-	clrldi  r3,r3,1       /* r3 = r3 & 0x8000000000000000  */
-	rldicr  r9,r9,32,31   /* r9 = (r9 << 32) & 0xffffffff  */
-	add     r3,r3,r9
-	rldicl  r3,r3,1,63
-	blr
-END (__finite)
-
-hidden_def (__finite)
-weak_alias (__finite, finite)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__finite, __finitef)
-hidden_def (__finitef)
-weak_alias (__finitef, finitef)
-
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, __finite, __finitel, GLIBC_2_0)
-compat_symbol (libm, finite, finitel, GLIBC_2_0)
-# endif
-#else
-# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
-compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
-compat_symbol (libc, finite, finitel, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_finitef.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_finitef.S
deleted file mode 100644
index 54bd941..0000000
--- a/sysdeps/powerpc/powerpc64/power8/fpu/s_finitef.S
+++ /dev/null
@@ -1 +0,0 @@
-/* This function uses the same code as s_finite.S.  */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]