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]

GNU C Library master sources branch tuliom/multilib updated. glibc-2.17-396-g6f1341e


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, tuliom/multilib has been updated
       via  6f1341ed0356611b936b34e65f660e2d8ff8843b (commit)
       via  852da90a7c8d3d2333aff246ea52c58e8af58469 (commit)
       via  a49b77834098275476a3994498d2c42c8c10471f (commit)
       via  42747c841a2a4c6c269f59c6c7d688a82a64a4b4 (commit)
       via  4fc34c6e2f2abb08d56ebb7ce4860e1d337e0e84 (commit)
       via  c5284ce8beced3b02c420fc467da6bd62de7988e (commit)
      from  ac33b12a3624c031d408dbb1ad5a550d72aabe3f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=6f1341ed0356611b936b34e65f660e2d8ff8843b

commit 6f1341ed0356611b936b34e65f660e2d8ff8843b
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Thu Apr 11 17:20:44 2013 -0500

    PowerPC: isnan/isnanf multilib for PowerPC32

diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
index 1eae5b3..c9003e3 100644
--- a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
@@ -1,10 +1,19 @@
 ifeq ($(subdir),math)
+sysdep_routines += s_isnan-power7 s_isnan-power6 s_isnan-power5 \
+		   s_isnan-ppc32 \
+		   s_isnanf-power7 s_isnanf-power6 s_isnanf-power5 \
+		   s_isnanf-ppc32
+
 libm-sysdep_routines += s_llrintf-power6 s_llrintf-power4 s_llrintf-c \
 			s_llrint-power6 s_llrint-power4 s_llrint-c \
 			s_llround-power6 s_llround-power5+ s_llround-power4 \
 			s_llround-c \
 			w_sqrt-power5 w_sqrt-power4 w_sqrt-c \
-			w_sqrtf-power5 w_sqrtf-power4 w_sqrtf-c
+			w_sqrtf-power5 w_sqrtf-power4 w_sqrtf-c \
+			s_isnan-power7 s_isnan-power6 s_isnan-power5 \
+			s_isnan-ppc32 \
+			s_isnanf-power7 s_isnanf-power6 s_isnanf-power5 \
+			s_isnanf-ppc32
 
 CFLAGS-s_llround.c = -fno-builtin-llroundf
 endif
diff --git a/sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan-power5.S
similarity index 79%
rename from sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan-power5.S
index f2417fd..a42eaf2 100644
--- a/sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan-power5.S
@@ -21,7 +21,7 @@
 
 /* int __isnan(x)  */
 	.machine power5
-EALIGN (__isnan, 4, 0)
+EALIGN (__isnan_power5, 4, 0)
 	stwu	r1,-32(r1)
 	cfi_adjust_cfa_offset (32)
 	ori	r1,r1,0
@@ -42,20 +42,4 @@ EALIGN (__isnan, 4, 0)
 L(NaN):
 	li	r3,1		/* else return 1 */
 	blr
-	END (__isnan)
-
-hidden_def (__isnan)
-weak_alias (__isnan, isnan)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
-
-#ifndef IS_IN_libm
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-# endif
-#endif
-
+END (__isnan_power5)
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan-power6.S
similarity index 79%
rename from sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan-power6.S
index 2c095db..62f9c4b 100644
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan-power6.S
@@ -21,7 +21,7 @@
 
 /* int __isnan(x)  */
 	.machine power6
-EALIGN (__isnan, 4, 0)
+EALIGN (__isnan_power6, 4, 0)
 	stwu	r1,-32(r1)
 	cfi_adjust_cfa_offset (32)
 	ori	r1,r1,0
@@ -42,20 +42,4 @@ EALIGN (__isnan, 4, 0)
 L(NaN):
 	li	r3,1		/* else return 1 */
 	blr
-	END (__isnan)
-
-hidden_def (__isnan)
-weak_alias (__isnan, isnan)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
-
-#ifndef IS_IN_libm
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-# endif
-#endif
-
+END (__isnan_power6)
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan-power7.S
similarity index 84%
rename from sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan-power7.S
index 99ff126..54cc998 100644
--- a/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan-power7.S
@@ -29,7 +29,7 @@
 	.section    ".text"
 	.type	    __isnan, @function
 	.machine    power7
-ENTRY (__isnan)
+ENTRY (__isnan_power7)
 #ifdef SHARED
 	mflr	r11
 	cfi_register(lr,r11)
@@ -66,25 +66,10 @@ ENTRY (__isnan)
 L(NaN):
 	li      r3,1	      /* x == NaN?  */
 	blr
-	END (__isnan)
-
-hidden_def (__isnan)
-weak_alias (__isnan, isnan)
+END (__isnan_power7)
 
 /* It turns out that the 'double' version will also always work for
    single-precision.  */
-strong_alias (__isnan, __isnanf)
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
-
-#ifndef IS_IN_libm
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-# endif
-#endif
+strong_alias (__isnan_power7, __isnanf_power7)
+hidden_def (__isnanf_power7)
+weak_alias (__isnanf_power7, isnanf_power7)
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan-ppc32.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan-ppc32.S
new file mode 100644
index 0000000..f844d10
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan-ppc32.S
@@ -0,0 +1,9 @@
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+#define __isnan __isnan_ppc32
+#undef hidden_def
+#define hidden_def(name)
+  strong_alias (__isnan_ppc32, __GI___isnan)
+
+#include <sysdeps/powerpc/powerpc32/fpu/s_isnan.S>
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_isnan.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan.c
similarity index 54%
copy from sysdeps/powerpc/powerpc32/fpu/s_isnan.S
copy to sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan.c
index ac8b088..aea0031 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_isnan.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan.c
@@ -1,5 +1,5 @@
-/* isnan().  PowerPC32 version.
-   Copyright (C) 2008-2013 Free Software Foundation, Inc.
+/* Multiple versions of s_isnan.
+   Copyright (C) 2013 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
@@ -16,40 +16,31 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <sysdep.h>
+#include <math.h>
 #include <math_ldbl_opt.h>
+#include <shlib-compat.h>
+#include "init-arch.h"
+
+extern __typeof (__isnan) __isnan_ppc32 attribute_hidden;
+extern __typeof (__isnan) __isnan_power5 attribute_hidden;
+extern __typeof (__isnan) __isnan_power6 attribute_hidden;
+extern __typeof (__isnan) __isnan_power7 attribute_hidden;
+
+libc_ifunc (__isnan,
+	    (hwcap & PPC_FEATURE_ARCH_2_06)
+	    ? __isnan_power7 :
+	      (hwcap & PPC_FEATURE_ARCH_2_05)
+	      ? __isnan_power6 :
+		(hwcap & PPC_FEATURE_POWER5)
+		? __isnan_power5
+            : __isnan_ppc32);
 
-/* int __isnan(x)  */
-	.machine power4
-EALIGN (__isnan, 4, 0)	
-	mffs	fp0
-	mtfsb0	4*cr6+lt /* reset_fpscr_bit (FPSCR_VE) */
-	fcmpu	cr7,fp1,fp1
-	mtfsf	255,fp0
-	li	r3,0
-	beqlr+	cr7	/* (x == x) then not a NAN */
-	li	r3,1	/* else must be a NAN */
-	blr
-	END (__isnan)
-
-hidden_def (__isnan)
 weak_alias (__isnan, isnan)
 
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__isnan, __isnanf)
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
-
 #ifdef NO_LONG_DOUBLE
 strong_alias (__isnan, __isnanl)
 weak_alias (__isnan, isnanl)
 #endif
-
-#ifndef IS_IN_libm
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-# endif
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __isnan, isnanl, GLIBC_2_1);
 #endif
-
diff --git a/sysdeps/powerpc/powerpc32/power5/fpu/s_isnanf.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf-power5.S
similarity index 93%
copy from sysdeps/powerpc/powerpc32/power5/fpu/s_isnanf.S
copy to sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf-power5.S
index 0373f01..cfdae7d 100644
--- a/sysdeps/powerpc/powerpc32/power5/fpu/s_isnanf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf-power5.S
@@ -21,7 +21,7 @@
 
 /* int __isnanf(x)  */
 	.machine power5
-EALIGN (__isnanf, 4, 0)
+EALIGN (__isnanf_power5, 4, 0)
 	stwu	r1,-32(r1)
 	cfi_adjust_cfa_offset (32)
 	stfs	fp1,28(r1)	/* copy FPR to GPR */
@@ -38,8 +38,4 @@ EALIGN (__isnanf, 4, 0)
 L(NaN):
 	li	r3,1		/* else return 1 */
 	blr
-	END (__isnanf)
-
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
-
+END (__isnanf_power5)
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_isnanf.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf-power6.S
similarity index 93%
rename from sysdeps/powerpc/powerpc32/power6/fpu/s_isnanf.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf-power6.S
index 483f0f9..0890b35 100644
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_isnanf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf-power6.S
@@ -21,7 +21,7 @@
 
 /* int __isnanf(x)  */
 	.machine power6
-EALIGN (__isnanf, 4, 0)
+EALIGN (__isnanf_power6, 4, 0)
 	stwu	r1,-32(r1)
 	cfi_adjust_cfa_offset (32)
 	ori	r1,r1,0
@@ -38,7 +38,4 @@ EALIGN (__isnanf, 4, 0)
 L(NaN):
 	li	r3,1		/* else return 1 */
 	blr
-	END (__isnanf)
-
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
+END (__isnanf_power6)
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf-power7.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf-power7.S
new file mode 100644
index 0000000..3fa2145
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf-power7.S
@@ -0,0 +1 @@
+/* This function uses the same code as s_isnan-power7.S.  */
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf-ppc32.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf-ppc32.S
new file mode 100644
index 0000000..d0db5cc
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf-ppc32.S
@@ -0,0 +1,14 @@
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+#undef weak_alias
+#define weak_alias(a, b)
+#undef compat_symbol
+#define compat_symbol(a, b, c, d)
+
+#define __isnan __isnanf_ppc32
+#undef hidden_def
+#define hidden_def(name) \
+  strong_alias (__isnanf_ppc32, __GI___isnanf)
+
+#include <sysdeps/powerpc/powerpc32/fpu/s_isnan.S>
diff --git a/sysdeps/powerpc/powerpc32/power5/fpu/s_isnanf.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf.c
similarity index 54%
rename from sysdeps/powerpc/powerpc32/power5/fpu/s_isnanf.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf.c
index 0373f01..21bca8d 100644
--- a/sysdeps/powerpc/powerpc32/power5/fpu/s_isnanf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf.c
@@ -1,5 +1,5 @@
-/* isnan().  PowerPC32 version.
-   Copyright (C) 2008-2013 Free Software Foundation, Inc.
+/* Multiple versions of s_isnanf.
+   Copyright (C) 2013 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
@@ -16,30 +16,22 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
+#include <math.h>
+#include <shlib-compat.h>
+#include "init-arch.h"
 
-/* int __isnanf(x)  */
-	.machine power5
-EALIGN (__isnanf, 4, 0)
-	stwu	r1,-32(r1)
-	cfi_adjust_cfa_offset (32)
-	stfs	fp1,28(r1)	/* copy FPR to GPR */
-	nop
-	nop
-	lwz	r4,28(r1)
-	lis	r0,0x7f80	/* const long r0 0x7f800000 */
-	clrlwi	r4,r4,1		/* x = fabs(x) */
-	cmpw	cr7,r4,r0	/* if (fabs(x) =< inf) */
-	li	r3,0		/* then return 0 */
-	addi	r1,r1,32
-	cfi_adjust_cfa_offset (-32)
-	blelr+	cr7
-L(NaN):
-	li	r3,1		/* else return 1 */
-	blr
-	END (__isnanf)
+extern __typeof (__isnanf) __isnanf_ppc32 attribute_hidden;
+extern __typeof (__isnanf) __isnanf_power5 attribute_hidden;
+extern __typeof (__isnanf) __isnanf_power6 attribute_hidden;
+extern __typeof (__isnanf) __isnanf_power7 attribute_hidden;
 
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
+libc_ifunc (__isnanf,
+	    (hwcap & PPC_FEATURE_ARCH_2_06)
+	    ? __isnanf_power7 :
+	      (hwcap & PPC_FEATURE_ARCH_2_05)
+	      ? __isnanf_power6 :
+		(hwcap & PPC_FEATURE_POWER5)
+		? __isnanf_power5
+            : __isnanf_ppc32);
 
+weak_alias (__isnanf, isnanf)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_isnan.S b/sysdeps/powerpc/powerpc32/fpu/s_isnan.S
index ac8b088..5a78b51 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_isnan.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_isnan.S
@@ -37,9 +37,11 @@ weak_alias (__isnan, isnan)
 
 /* It turns out that the 'double' version will also always work for
    single-precision.  */
+#ifndef __isnan
 strong_alias (__isnan, __isnanf)
 hidden_def (__isnanf)
 weak_alias (__isnanf, isnanf)
+#endif
 
 #ifdef NO_LONG_DOUBLE
 strong_alias (__isnan, __isnanl)
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/s_isnanf.S b/sysdeps/powerpc/powerpc32/power7/fpu/s_isnanf.S
deleted file mode 100644
index b48c85e..0000000
--- a/sysdeps/powerpc/powerpc32/power7/fpu/s_isnanf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* This function uses the same code as s_isnan.S.  */

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=852da90a7c8d3d2333aff246ea52c58e8af58469

commit 852da90a7c8d3d2333aff246ea52c58e8af58469
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Wed Apr 10 15:42:10 2013 -0500

    PowerPC: sqrtf multilib for PowerPC32

diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
index 0584f8a..1eae5b3 100644
--- a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
@@ -3,7 +3,8 @@ libm-sysdep_routines += s_llrintf-power6 s_llrintf-power4 s_llrintf-c \
 			s_llrint-power6 s_llrint-power4 s_llrint-c \
 			s_llround-power6 s_llround-power5+ s_llround-power4 \
 			s_llround-c \
-			w_sqrt-power5 w_sqrt-power4 w_sqrt-c
+			w_sqrt-power5 w_sqrt-power4 w_sqrt-c \
+			w_sqrtf-power5 w_sqrtf-power4 w_sqrtf-c
 
 CFLAGS-s_llround.c = -fno-builtin-llroundf
 endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-c.c b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-c.c
index 75a1b9a..3bfa77e 100644
--- a/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-c.c
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-c.c
@@ -3,11 +3,11 @@
 /* The PPC32 default implementation will fallback to __ieee754_sqrt symbol
    from sysdeps/powerpc/fpu/e_sqrt.c  */
 
-#define __sqrt __sqrt_ppc32
+#define __sqrtf __sqrtf_ppc32
 #undef weak_alias
 #define weak_alias(a, b)
 #undef strong_alias
 #define strong_alias(a, b)
 
 
-#include <math/w_sqrt.c>
+#include <math/w_sqrtf.c>
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-c.c b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrtf-c.c
similarity index 100%
copy from sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-c.c
copy to sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrtf-c.c
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrtf-power4.S
similarity index 97%
rename from sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrtf-power4.S
index 0da5b7a..8616bf9 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrtf-power4.S
@@ -25,27 +25,27 @@
    sets the appropriate floating point exceptions.  Extended checking is
    only needed to set errno (via __kernel_standard) if the input value
    is negative.
-   
+
    The fsqrts will set FPCC and FU (Floating Point Unordered or NaN
    to indicated that the input value was negative or NaN. Use Move to
    Condition Register from FPSCR to copy the FPCC field to cr1.  The
    branch on summary overflow transfers control to w_sqrt to process
    any error conditions. Otherwise we can return the result directly.
-   
+
    This part of the function is a leaf routine,  so no need to stack a
    frame or execute prologue/epilogue code. This means it is safe to
    transfer directly to w_sqrt as long as the input value (f1) is
    preserved. Putting the sqrt result into f2 (float parameter 2)
    allows passing both the input value and sqrt result into the extended
    wrapper so there is no need to recompute.
-   
+
    This tactic avoids the overhead of stacking a frame for the normal
    (non-error) case.  Until gcc supports prologue shrink-wrapping
    this is the best we can do.  */
 
 	.section	".text"
 	.machine power4
-EALIGN (__sqrtf, 5, 0)
+EALIGN (__sqrtf_power4, 5, 0)
 	fsqrts	fp2,fp1
 	mcrfs	cr1,4
 	bso-	cr1,.Lw_sqrtf
@@ -95,7 +95,4 @@ EALIGN (__sqrtf, 5, 0)
 	bl	__kernel_standard@plt
 	fmr	fp12,fp1
 	b	.L4
-	END	(__sqrtf)
-
-weak_alias (__sqrtf, sqrtf)
-
+END (__sqrtf_power4)
diff --git a/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrtf-power5.S
similarity index 96%
rename from sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrtf-power5.S
index 590c24c..fef5bf4 100644
--- a/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrtf-power5.S
@@ -25,26 +25,26 @@
    sets the appropriate floating point exceptions.  Extended checking is
    only needed to set errno (via __kernel_standard) if the input value
    is negative.
-   
+
    So compare the input value against the absolute value of itself.
    This will compare equal unless the value is negative (EDOM) or a NAN,
    in which case we branch to the extend wrapper.  If equal we can return
    the result directly.
-   
+
    This part of the function looks like a leaf routine,  so no need to
    stack a frame or execute prologue/epilogue code. It is safe to
    branch directly to w_sqrt as long as the input value (f1) is
    preserved. Putting the sqrt result into f2 (float parameter 2)
    allows passing both the input value and sqrt result into the extended
    wrapper so there is no need to recompute.
-   
+
    This tactic avoids the overhead of stacking a frame for the normal
    (non-error) case.  Until gcc supports prologue shrink-wrapping
    this is the best we can do.  */
 
 	.section	".text"
-	.machine power4
-EALIGN (__sqrtf, 5, 0)
+	.machine power5
+EALIGN (__sqrtf_power5, 5, 0)
 	fabs	fp0,fp1
 	fsqrts	fp2,fp1
 	fcmpu	cr1,fp0,fp1
@@ -93,7 +93,4 @@ EALIGN (__sqrtf, 5, 0)
 	bl	__kernel_standard@plt
 	fmr	fp12,fp1
 	b	.L4
-	END	(__sqrtf)
-
-weak_alias (__sqrtf, sqrtf)
-
+END (__sqrtf_power5)
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrtf.c b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrtf.c
new file mode 100644
index 0000000..41a09d8
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrtf.c
@@ -0,0 +1,35 @@
+/* Multiple versions of sqrtf
+   Copyright (C) 2013 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>
+#include <math_ldbl_opt.h>
+#include <shlib-compat.h>
+#include "init-arch.h"
+
+extern __typeof (__sqrtf) __sqrtf_ppc32 attribute_hidden;
+extern __typeof (__sqrtf) __sqrtf_power4 attribute_hidden;
+extern __typeof (__sqrtf) __sqrtf_power5 attribute_hidden;
+
+libc_ifunc (__sqrtf,
+	    (hwcap & PPC_FEATURE_POWER5)
+	    ? __sqrtf_power5 :
+	      (hwcap & PPC_FEATURE_POWER4)
+	      ? __sqrtf_power4
+	    : __sqrtf_ppc32);
+
+weak_alias (__sqrtf, sqrtf)

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=a49b77834098275476a3994498d2c42c8c10471f

commit a49b77834098275476a3994498d2c42c8c10471f
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Wed Apr 10 15:00:32 2013 -0500

    PowerPC: sqrt multilib for PowerPC32

diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
index b877357..0584f8a 100644
--- a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
@@ -2,7 +2,8 @@ ifeq ($(subdir),math)
 libm-sysdep_routines += s_llrintf-power6 s_llrintf-power4 s_llrintf-c \
 			s_llrint-power6 s_llrint-power4 s_llrint-c \
 			s_llround-power6 s_llround-power5+ s_llround-power4 \
-			s_llround-c
+			s_llround-c \
+			w_sqrt-power5 w_sqrt-power4 w_sqrt-c
 
 CFLAGS-s_llround.c = -fno-builtin-llroundf
 endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-c.c b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-c.c
new file mode 100644
index 0000000..75a1b9a
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-c.c
@@ -0,0 +1,13 @@
+#include <math.h>
+
+/* The PPC32 default implementation will fallback to __ieee754_sqrt symbol
+   from sysdeps/powerpc/fpu/e_sqrt.c  */
+
+#define __sqrt __sqrt_ppc32
+#undef weak_alias
+#define weak_alias(a, b)
+#undef strong_alias
+#define strong_alias(a, b)
+
+
+#include <math/w_sqrt.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-power4.S
similarity index 92%
rename from sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-power4.S
index 4f1c176..5dae2ac 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-power4.S
@@ -25,27 +25,27 @@
    sets the appropriate floating point exceptions.  Extended checking is
    only needed to set errno (via __kernel_standard) if the input value
    is negative.
-   
+
    The fsqrt will set FPCC and FU (Floating Point Unordered or NaN
    to indicated that the input value was negative or NaN. Use Move to
    Condition Register from FPSCR to copy the FPCC field to cr1.  The
    branch on summary overflow transfers control to w_sqrt to process
    any error conditions. Otherwise we can return the result directly.
-   
+
    This part of the function is a leaf routine,  so no need to stack a
    frame or execute prologue/epilogue code. This means it is safe to
    transfer directly to w_sqrt as long as the input value (f1) is
    preserved. Putting the sqrt result into f2 (double parameter 2)
    allows passing both the input value and sqrt result into the extended
    wrapper so there is no need to recompute.
-   
+
    This tactic avoids the overhead of stacking a frame for the normal
    (non-error) case.  Until gcc supports prologue shrink-wrapping
    this is the best we can do.  */
 
 	.section	".text"
 	.machine power4
-EALIGN (__sqrt, 5, 0)
+EALIGN (__sqrt_power4, 5, 0)
 	fsqrt	fp2,fp1
 	mcrfs	cr1,4
 	bso-	cr1,.Lw_sqrt
@@ -95,15 +95,4 @@ EALIGN (__sqrt, 5, 0)
 	bl	__kernel_standard@plt
 	fmr	fp12,fp1
 	b	.L4
-	END	(__sqrt)
-
-weak_alias (__sqrt, sqrt)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__sqrt, sqrtl)
-strong_alias (__sqrt, __sqrtl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __sqrt, sqrtl, GLIBC_2_0)
-#endif
-
+END(__sqrt_power4)
diff --git a/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-power5.S
similarity index 91%
rename from sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-power5.S
index 23559aa..4b4f895 100644
--- a/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-power5.S
@@ -25,26 +25,26 @@
    sets the appropriate floating point exceptions.  Extended checking is
    only needed to set errno (via __kernel_standard) if the input value
    is negative.
-   
+
    So compare the input value against the absolute value of itself.
    This will compare equal unless the value is negative (EDOM) or a NAN,
    in which case we branch to the extend wrapper.  If equal we can return
    the result directly.
-   
+
    This part of the function looks like a leaf routine,  so no need to
    stack a frame or execute prologue/epilogue code. It is safe to
    branch directly to w_sqrt as long as the input value (f1) is
    preserved. Putting the sqrt result into f2 (float parameter 2)
    allows passing both the input value and sqrt result into the extended
    wrapper so there is no need to recompute.
-   
+
    This tactic avoids the overhead of stacking a frame for the normal
    (non-error) case.  Until gcc supports prologue shrink-wrapping
    this is the best we can do.  */
 
 	.section	".text"
-	.machine power4
-EALIGN (__sqrt, 5, 0)
+	.machine power5
+EALIGN (__sqrt_power5, 5, 0)
 	fabs	fp0,fp1
 	fsqrt	fp2,fp1
 	fcmpu	cr1,fp0,fp1
@@ -93,15 +93,4 @@ EALIGN (__sqrt, 5, 0)
 	bl	__kernel_standard@plt
 	fmr	fp12,fp1
 	b	.L4
-	END	(__sqrt)
-
-weak_alias (__sqrt, sqrt)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__sqrt, sqrtl)
-strong_alias (__sqrt, __sqrtl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __sqrt, sqrtl, GLIBC_2_0)
-#endif
-
+END (__sqrt_power5)
diff --git a/sysdeps/powerpc/fpu/w_sqrt.c b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt.c
similarity index 59%
rename from sysdeps/powerpc/fpu/w_sqrt.c
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt.c
index 2488ad9..f7a9253 100644
--- a/sysdeps/powerpc/fpu/w_sqrt.c
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt.c
@@ -1,5 +1,5 @@
-/* Double-precision floating point square root wrapper.
-   Copyright (C) 2004-2013 Free Software Foundation, Inc.
+/* Multiple versions of w_sqrt.
+   Copyright (C) 2013 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
@@ -17,28 +17,24 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <math.h>
-#include <math_private.h>
-#include <fenv_libc.h>
-
-double
-__sqrt (double x)		/* wrapper sqrt */
-{
-#ifdef _IEEE_LIBM
-  return __ieee754_sqrt (x);
-#else
-  double z;
-  z = __ieee754_sqrt (x);
-  if (_LIB_VERSION == _IEEE_ || (x != x))
-    return z;
-
-  if (x < 0.0)
-    return __kernel_standard (x, x, 26);	/* sqrt(negative) */
-  else
-    return z;
-#endif
-}
+#include <math_ldbl_opt.h>
+#include <shlib-compat.h>
+#include "init-arch.h"
+
+extern __typeof (__sqrt) __sqrt_ppc32 attribute_hidden;
+extern __typeof (__sqrt) __sqrt_power4 attribute_hidden;
+extern __typeof (__sqrt) __sqrt_power5 attribute_hidden;
+
+libc_ifunc (__sqrt,
+	    (hwcap & PPC_FEATURE_POWER5)
+	    ? __sqrt_power5 :
+	      (hwcap & PPC_FEATURE_POWER4)
+	      ? __sqrt_power4
+	    : __sqrt_ppc32);
 
 weak_alias (__sqrt, sqrt)
+
 #ifdef NO_LONG_DOUBLE
-  strong_alias (__sqrt, __sqrtl) weak_alias (__sqrt, sqrtl)
+strong_alias (__sqrt, __sqrtl)
+weak_alias (__sqrt, sqrtl)
 #endif

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=42747c841a2a4c6c269f59c6c7d688a82a64a4b4

commit 42747c841a2a4c6c269f59c6c7d688a82a64a4b4
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Tue Apr 9 14:23:36 2013 -0500

    PowerPC: llround/llroundf multilib for PowerPC32

diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
index 4c63e5d..b877357 100644
--- a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
@@ -1,4 +1,8 @@
 ifeq ($(subdir),math)
 libm-sysdep_routines += s_llrintf-power6 s_llrintf-power4 s_llrintf-c \
-			s_llrint-power6 s_llrint-power4 s_llrint-c
+			s_llrint-power6 s_llrint-power4 s_llrint-c \
+			s_llround-power6 s_llround-power5+ s_llround-power4 \
+			s_llround-c
+
+CFLAGS-s_llround.c = -fno-builtin-llroundf
 endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround-c.c b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround-c.c
new file mode 100644
index 0000000..a3acf44
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround-c.c
@@ -0,0 +1,3 @@
+#undef __llround
+#define __llround __llround_ppc32
+#include <sysdeps/powerpc/fpu/s_llround.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround-power4.S
similarity index 90%
rename from sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround-power4.S
index 07beb0a..d99a7e2 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround-power4.S
@@ -29,11 +29,11 @@
 	.section	".text"
 
 /* long [r3] lround (float x [fp1])
-   IEEE 1003.1 lround function.  IEEE specifies "round to the nearest 
+   IEEE 1003.1 lround function.  IEEE specifies "round to the nearest
    integer value, rounding halfway cases away from zero, regardless of
    the current rounding mode."  However PowerPC Architecture defines
-   "round to Nearest" as "Choose the best approximation. In case of a 
-   tie, choose the one that is even (least significant bit o).". 
+   "round to Nearest" as "Choose the best approximation. In case of a
+   tie, choose the one that is even (least significant bit o).".
    So we can't use the PowerPC "round to Nearest" mode. Instead we set
    "round toward Zero" mode and round by adding +-0.5 before rounding
    to the integer value.
@@ -46,7 +46,8 @@
    is greater/less than +-2^52 we don't need to bias the number with
    +-0.5.  */
 
-ENTRY (__llround)
+	.machine power4
+ENTRY (__llround_power4)
 	stwu    r1,-16(r1)
 	cfi_adjust_cfa_offset (16)
 #ifdef SHARED
@@ -92,17 +93,4 @@ ENTRY (__llround)
 .Lnobias:
 	fmr	fp3,fp1
 	b	.Lconvert
-	END (__llround)
-
-weak_alias (__llround, llround)
-
-strong_alias (__llround, __llroundf)
-weak_alias (__llround, llroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
-#endif
+END (__llround_power4)
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround-power5+.S
similarity index 83%
rename from sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround-power5+.S
index 558bd2a..6c45ed2 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround-power5+.S
@@ -18,19 +18,19 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
-	
+
 /* long [r3] llround (float x [fp1])
-   IEEE 1003.1 lround function.  IEEE specifies "round to the nearest 
+   IEEE 1003.1 lround function.  IEEE specifies "round to the nearest
    integer value, rounding halfway cases away from zero, regardless of
    the current rounding mode."  However PowerPC Architecture defines
-   "round to Nearest" as "Choose the best approximation. In case of a 
-   tie, choose the one that is even (least significant bit o).". 
+   "round to Nearest" as "Choose the best approximation. In case of a
+   tie, choose the one that is even (least significant bit o).".
    So we pre-round using the V2.02 Floating Round to Integer Nearest
    instruction before we use the Floating Convert to Integer Word with
    round to zero instruction.  */
 
 	.machine	"power5"
-ENTRY (__llround)
+ENTRY (__llround_power5)
 	stwu    r1,-16(r1)
 	cfi_adjust_cfa_offset (16)
 	frin	fp2,fp1
@@ -43,17 +43,4 @@ ENTRY (__llround)
 	lwz	r3,8(r1)
 	addi	r1,r1,16
 	blr
-	END (__llround)
-
-weak_alias (__llround, llround)
-
-strong_alias (__llround, __llroundf)
-weak_alias (__llround, llroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
-#endif
+END (__llround_power5)
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround-power6.S
similarity index 82%
rename from sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround-power6.S
index bfc5efb..da3fc14 100644
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround-power6.S
@@ -18,19 +18,19 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
-	
+
 /* long [r3] llround (float x [fp1])
-   IEEE 1003.1 lround function.  IEEE specifies "round to the nearest 
+   IEEE 1003.1 lround function.  IEEE specifies "round to the nearest
    integer value, rounding halfway cases away from zero, regardless of
    the current rounding mode."  However PowerPC Architecture defines
-   "round to Nearest" as "Choose the best approximation. In case of a 
-   tie, choose the one that is even (least significant bit o).". 
+   "round to Nearest" as "Choose the best approximation. In case of a
+   tie, choose the one that is even (least significant bit o).".
    So we pre-round using the V2.02 Floating Round to Integer Nearest
    instruction before we use the Floating Convert to Integer Word with
    round to zero instruction.  */
 
-	.machine	"power5"
-ENTRY (__llround)
+	.machine	"power6"
+ENTRY (__llround_power6)
 	stwu    r1,-16(r1)
 	cfi_adjust_cfa_offset (16)
 	frin	fp2,fp1
@@ -43,17 +43,4 @@ ENTRY (__llround)
 	lwz	r3,8(r1)
 	addi	r1,r1,16
 	blr
-	END (__llround)
-
-weak_alias (__llround, llround)
-
-strong_alias (__llround, __llroundf)
-weak_alias (__llround, llroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
-#endif
+END (__llround_power6)
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround.c b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround.c
new file mode 100644
index 0000000..6d23aab
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround.c
@@ -0,0 +1,58 @@
+/* Multiple versions of s_llround.
+   Copyright (C) 2013 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/>.  */
+
+/* Redefine llroundf/__llroundf so that compiler won't complain abouti
+   the type mismatch with the IFUNC selector in strong_alias/weak_alias
+   below.  */
+#undef llroundf
+#define llroundf __redirect_llroundf
+#undef __llroundf
+#define __llroundf __redirec___llroundf
+#include <math.h>
+#undef llroundf
+#undef __llroundf
+#include <math_ldbl_opt.h>
+#include <shlib-compat.h>
+#include "init-arch.h"
+
+extern __typeof (__llround) __llround_ppc32 attribute_hidden;
+extern __typeof (__llround) __llround_power4 attribute_hidden;
+extern __typeof (__llround) __llround_power5 attribute_hidden;
+extern __typeof (__llround) __llround_power6 attribute_hidden;
+
+libc_ifunc (__llround,
+	    (hwcap & PPC_FEATURE_ARCH_2_05)
+	    ? __llround_power6 :
+	      (hwcap & PPC_FEATURE_POWER5_PLUS)
+	      ? __llround_power5 :
+		(hwcap & PPC_FEATURE_POWER4)
+		? __llround_power4
+            : __llround_ppc32);
+
+weak_alias (__llround, llround)
+
+strong_alias (__llround, __llroundf)
+weak_alias (__llround, llroundf)
+
+#ifdef NO_LONG_DOUBLE
+strong_alias (__llround, __llroundl)
+weak_alias (__llround, llroundl)
+#endif
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __llround, llroundl, GLIBC_2_1);
+#endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llroundf-power4.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llroundf-power4.S
new file mode 100644
index 0000000..9967130
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llroundf-power4.S
@@ -0,0 +1 @@
+/* __llroundf_power4 is in s_llround-power4.S */
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llroundf-power5+.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llroundf-power5+.S
new file mode 100644
index 0000000..51d760c
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llroundf-power5+.S
@@ -0,0 +1 @@
+/* __llroundf_power5+ is in s_llround-power5+.S  */
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llroundf-power6.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llroundf-power6.S
new file mode 100644
index 0000000..adc0699
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llroundf-power6.S
@@ -0,0 +1 @@
+/* __llroundf_power6 is in s_llround-power6.S  */
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llroundf.c b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llroundf.c
new file mode 100644
index 0000000..3ca6e17
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llroundf.c
@@ -0,0 +1 @@
+/* s__llroundf.c is implemented at s_llround.c  */
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/s_llroundf.S b/sysdeps/powerpc/powerpc32/power4/fpu/s_llroundf.S
deleted file mode 100644
index 72d6181..0000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/s_llroundf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* __llroundf is in s_llround.S */
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_llroundf.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_llroundf.S
deleted file mode 100644
index 030d2fd..0000000
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_llroundf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* __llroundf is in s_llround.S  */
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_llroundf.S b/sysdeps/powerpc/powerpc32/power6/fpu/s_llroundf.S
deleted file mode 100644
index 030d2fd..0000000
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_llroundf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* __llroundf is in s_llround.S  */

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=4fc34c6e2f2abb08d56ebb7ce4860e1d337e0e84

commit 4fc34c6e2f2abb08d56ebb7ce4860e1d337e0e84
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Tue Apr 9 13:36:56 2013 -0500

    PowerPC: llrint/llrintf multilib for PowerPC32

diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
new file mode 100644
index 0000000..4c63e5d
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
@@ -0,0 +1,4 @@
+ifeq ($(subdir),math)
+libm-sysdep_routines += s_llrintf-power6 s_llrintf-power4 s_llrintf-c \
+			s_llrint-power6 s_llrint-power4 s_llrint-c
+endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrint-c.c b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrint-c.c
new file mode 100644
index 0000000..a83db3f
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrint-c.c
@@ -0,0 +1,13 @@
+#include <math_ldbl_opt.h>
+
+#undef __llrint
+#define __llrint __llrint_ppc32
+
+#undef weak_alias
+#define weak_alias(a, b)
+#undef strong_alias
+#define strong_alias(a, b)
+#undef compat_symbol
+#define compat_symbol(a, b, c, d)
+
+#include <sysdeps/powerpc/powerpc32/fpu/s_llrint.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrint-power4.S
similarity index 81%
rename from sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrint-power4.S
index 2ac986d..5dcefc0 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrint-power4.S
@@ -20,7 +20,8 @@
 #include <math_ldbl_opt.h>
 
 /* long long int[r3, r4] __llrint (double x[fp1])  */
-ENTRY (__llrint)	
+	.machine power4
+ENTRY (__llrint_power4)
 	CALL_MCOUNT
 	stwu	r1,-16(r1)
 	cfi_adjust_cfa_offset (16)
@@ -31,16 +32,6 @@ ENTRY (__llrint)
 	nop
 	lwz	r3,8(r1)
 	lwz	r4,12(r1)
-	addi	r1,r1,16	
+	addi	r1,r1,16
 	blr
-	END (__llrint)
-
-weak_alias (__llrint, llrint)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1)
-#endif
+END (__llrint_power4)
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrint-power6.S
similarity index 81%
copy from sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S
copy to sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrint-power6.S
index 86f51bb..3fc9b0f 100644
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrint-power6.S
@@ -20,7 +20,8 @@
 #include <math_ldbl_opt.h>
 
 /* long long int[r3, r4] __llrint (double x[fp1])  */
-ENTRY (__llrint)	
+	.machine power6
+ENTRY (__llrint_power6)
 	CALL_MCOUNT
 	stwu	r1,-16(r1)
 	cfi_adjust_cfa_offset (16)
@@ -31,16 +32,6 @@ ENTRY (__llrint)
 	ori	r1,r1,0
 	lwz	r3,8(r1)
 	lwz	r4,12(r1)
-	addi	r1,r1,16	
+	addi	r1,r1,16
 	blr
-	END (__llrint)
-
-weak_alias (__llrint, llrint)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1)
-#endif
+END (__llrint_power6)
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrint.c
similarity index 62%
rename from sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrint.c
index 86f51bb..c89c249 100644
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrint.c
@@ -1,5 +1,5 @@
-/* Round double to long int.  PowerPC32 on PowerPC64 version.
-   Copyright (C) 2004-2013 Free Software Foundation, Inc.
+/* Multiple versions of s_llrint.
+   Copyright (C) 2013 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
@@ -16,24 +16,21 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <sysdep.h>
+#include <math.h>
 #include <math_ldbl_opt.h>
+#include <shlib-compat.h>
+#include "init-arch.h"
 
-/* long long int[r3, r4] __llrint (double x[fp1])  */
-ENTRY (__llrint)	
-	CALL_MCOUNT
-	stwu	r1,-16(r1)
-	cfi_adjust_cfa_offset (16)
-	fctid	fp13,fp1
-	stfd	fp13,8(r1)
-/* Insure the following load is in a different dispatch group by
-   inserting "group ending nop".  */
-	ori	r1,r1,0
-	lwz	r3,8(r1)
-	lwz	r4,12(r1)
-	addi	r1,r1,16	
-	blr
-	END (__llrint)
+extern __typeof (__llrint) __llrint_ppc32 attribute_hidden;
+extern __typeof (__llrint) __llrint_power4 attribute_hidden;
+extern __typeof (__llrint) __llrint_power6 attribute_hidden;
+
+libc_ifunc (__llrint,
+	    (hwcap & PPC_FEATURE_ARCH_2_05)
+	    ? __llrint_power6 :
+	      (hwcap & PPC_FEATURE_POWER4)
+	      ? __llrint_power4
+            : __llrint_ppc32);
 
 weak_alias (__llrint, llrint)
 
@@ -42,5 +39,5 @@ strong_alias (__llrint, __llrintl)
 weak_alias (__llrint, llrintl)
 #endif
 #if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1)
+compat_symbol (libm, __llrint, llrintl, GLIBC_2_1);
 #endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrintf-c.c b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrintf-c.c
new file mode 100644
index 0000000..5019f99
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrintf-c.c
@@ -0,0 +1,3 @@
+#undef __llrintf
+#define __llrintf __llrintf_ppc32
+#include <sysdeps/powerpc/powerpc32/fpu/s_llrintf.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrintf-power4.S
similarity index 93%
copy from sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S
copy to sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrintf-power4.S
index 98e3aaf..f6bab6c 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrintf-power4.S
@@ -19,7 +19,8 @@
 #include <sysdep.h>
 
 /* long long int[r3, r4] __llrintf (float x[fp1])  */
-ENTRY (__llrintf)	
+	.machine power4
+ENTRY (__llrintf_power4)
 	CALL_MCOUNT
 	stwu	r1,-16(r1)
 	cfi_adjust_cfa_offset (16)
@@ -30,9 +31,6 @@ ENTRY (__llrintf)
 	nop
 	lwz	r3,8(r1)
 	lwz	r4,12(r1)
-	addi	r1,r1,16	
+	addi	r1,r1,16
 	blr
-	END (__llrintf)
-
-weak_alias (__llrintf, llrintf)
-
+END (__llrintf_power4)
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrintf-power6.S
similarity index 93%
rename from sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrintf-power6.S
index 1b06e2b..596f2d5 100644
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrintf-power6.S
@@ -19,7 +19,8 @@
 #include <sysdep.h>
 
 /* long long int[r3, r4] __llrintf (float x[fp1])  */
-ENTRY (__llrintf)	
+	.machine power6
+ENTRY (__llrintf_power6)
 	CALL_MCOUNT
 	stwu	r1,-16(r1)
 	cfi_adjust_cfa_offset (16)
@@ -30,9 +31,6 @@ ENTRY (__llrintf)
 	ori	r1,r1,0
 	lwz	r3,8(r1)
 	lwz	r4,12(r1)
-	addi	r1,r1,16	
+	addi	r1,r1,16
 	blr
-	END (__llrintf)
-
-weak_alias (__llrintf, llrintf)
-
+END (__llrintf_power6)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrintf.c
similarity index 59%
rename from sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrintf.c
index 98e3aaf..3c85415 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrintf.c
@@ -1,5 +1,5 @@
-/* Round float to long int.  PowerPC32 on PowerPC64 version.
-   Copyright (C) 2004-2013 Free Software Foundation, Inc.
+/* Multiple versions of s_llrintf.
+   Copyright (C) 2013 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
@@ -16,23 +16,19 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <sysdep.h>
+#include <math.h>
+#include <shlib-compat.h>
+#include "init-arch.h"
 
-/* long long int[r3, r4] __llrintf (float x[fp1])  */
-ENTRY (__llrintf)	
-	CALL_MCOUNT
-	stwu	r1,-16(r1)
-	cfi_adjust_cfa_offset (16)
-	fctid	fp13,fp1
-	stfd	fp13,8(r1)
-	nop	/* Insure the following load is in a different dispatch group */
-	nop	/* to avoid pipe stall on POWER4&5.  */
-	nop
-	lwz	r3,8(r1)
-	lwz	r4,12(r1)
-	addi	r1,r1,16	
-	blr
-	END (__llrintf)
+extern __typeof (__llrintf) __llrintf_ppc32 attribute_hidden;
+extern __typeof (__llrintf) __llrintf_power4 attribute_hidden;
+extern __typeof (__llrintf) __llrintf_power6 attribute_hidden;
 
-weak_alias (__llrintf, llrintf)
+libc_ifunc (__llrintf,
+	    (hwcap & PPC_FEATURE_ARCH_2_05)
+	    ? __llrintf_power6 :
+	      (hwcap & PPC_FEATURE_POWER4)
+	      ? __llrintf_power4
+            : __llrintf_ppc32);
 
+weak_alias (__llrintf, llrintf)

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=c5284ce8beced3b02c420fc467da6bd62de7988e

commit c5284ce8beced3b02c420fc467da6bd62de7988e
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Wed Apr 10 12:29:17 2013 -0500

    PowerPC: change sysdeps folder
    
    This patch makes the fpu/multiarch folder appears in front of the
    powerpc/fpu folder.

diff --git a/sysdeps/powerpc/Implies b/sysdeps/powerpc/Implies
index 7ccf9a7..b8ee2e0 100644
--- a/sysdeps/powerpc/Implies
+++ b/sysdeps/powerpc/Implies
@@ -1,4 +1,6 @@
 # On PowerPC we use the IBM extended long double format.
 ieee754/ldbl-128ibm
+# These supply the ABI compatibility for when long double was double.
+ieee754/ldbl-opt
 ieee754/dbl-64
 ieee754/flt-32
diff --git a/sysdeps/unix/sysv/linux/powerpc/Implies b/sysdeps/unix/sysv/linux/powerpc/Implies
deleted file mode 100644
index ff27cdb..0000000
--- a/sysdeps/unix/sysv/linux/powerpc/Implies
+++ /dev/null
@@ -1,4 +0,0 @@
-# Make sure these routines come before ldbl-opt.
-ieee754/ldbl-128ibm
-# These supply the ABI compatibility for when long double was double.
-ieee754/ldbl-opt
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/Implies
deleted file mode 100644
index 9f70f79..0000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-# Override ldbl-opt with powerpc32 specific routines.
-powerpc/powerpc32/fpu

-----------------------------------------------------------------------

Summary of changes:
 sysdeps/powerpc/Implies                            |    2 +
 sysdeps/powerpc/fpu/w_sqrt.c                       |   44 --------
 sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile   |   19 ++++
 .../powerpc32/fpu/multiarch/s_isnan-power5.S       |   45 ++++++++
 .../powerpc32/fpu/multiarch/s_isnan-power6.S       |   45 ++++++++
 .../powerpc32/fpu/multiarch/s_isnan-power7.S       |   75 ++++++++++++++
 .../powerpc32/fpu/multiarch/s_isnan-ppc32.S        |    9 ++
 sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan.c  |   46 ++++++++
 .../powerpc32/fpu/multiarch/s_isnanf-power5.S      |   41 ++++++++
 .../powerpc32/fpu/multiarch/s_isnanf-power6.S      |   41 ++++++++
 .../powerpc32/fpu/multiarch/s_isnanf-power7.S      |    1 +
 .../powerpc32/fpu/multiarch/s_isnanf-ppc32.S       |   14 +++
 sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf.c |   37 +++++++
 .../powerpc/powerpc32/fpu/multiarch/s_llrint-c.c   |   13 +++
 .../powerpc32/fpu/multiarch/s_llrint-power4.S      |   37 +++++++
 .../powerpc32/fpu/multiarch/s_llrint-power6.S      |   37 +++++++
 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrint.c |   43 ++++++++
 .../powerpc/powerpc32/fpu/multiarch/s_llrintf-c.c  |    3 +
 .../powerpc32/fpu/multiarch/s_llrintf-power4.S     |   36 +++++++
 .../powerpc32/fpu/multiarch/s_llrintf-power6.S     |   36 +++++++
 .../powerpc/powerpc32/fpu/multiarch/s_llrintf.c    |   34 ++++++
 .../powerpc/powerpc32/fpu/multiarch/s_llround-c.c  |    3 +
 .../powerpc32/fpu/multiarch/s_llround-power4.S     |   96 +++++++++++++++++
 .../powerpc32/fpu/multiarch/s_llround-power5+.S    |   46 ++++++++
 .../powerpc32/fpu/multiarch/s_llround-power6.S     |   46 ++++++++
 .../powerpc/powerpc32/fpu/multiarch/s_llround.c    |   58 +++++++++++
 .../powerpc32/fpu/multiarch/s_llroundf-power4.S    |    1 +
 .../powerpc32/fpu/multiarch/s_llroundf-power5+.S   |    1 +
 .../powerpc32/fpu/multiarch/s_llroundf-power6.S    |    1 +
 .../powerpc/powerpc32/fpu/multiarch/s_llroundf.c   |    1 +
 sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-c.c |   13 +++
 .../powerpc32/fpu/multiarch/w_sqrt-power4.S        |   98 ++++++++++++++++++
 .../powerpc32/fpu/multiarch/w_sqrt-power5.S        |   96 +++++++++++++++++
 sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt.c   |   40 +++++++
 .../powerpc/powerpc32/fpu/multiarch/w_sqrtf-c.c    |   13 +++
 .../powerpc32/fpu/multiarch/w_sqrtf-power4.S       |   98 ++++++++++++++++++
 .../powerpc32/fpu/multiarch/w_sqrtf-power5.S       |   96 +++++++++++++++++
 sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrtf.c  |   35 ++++++
 sysdeps/powerpc/powerpc32/fpu/s_isnan.S            |    2 +
 sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S    |   46 --------
 sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S   |   38 -------
 sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S   |  108 -------------------
 sysdeps/powerpc/powerpc32/power4/fpu/s_llroundf.S  |    1 -
 sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt.S      |  109 --------------------
 sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf.S     |  101 ------------------
 sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S  |   59 -----------
 sysdeps/powerpc/powerpc32/power5+/fpu/s_llroundf.S |    1 -
 sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S     |   61 -----------
 sysdeps/powerpc/powerpc32/power5/fpu/s_isnanf.S    |   45 --------
 sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt.S      |  107 -------------------
 sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf.S     |   99 ------------------
 sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S     |   61 -----------
 sysdeps/powerpc/powerpc32/power6/fpu/s_isnanf.S    |   44 --------
 sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S    |   46 --------
 sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S   |   38 -------
 sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S   |   59 -----------
 sysdeps/powerpc/powerpc32/power6/fpu/s_llroundf.S  |    1 -
 sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S     |   90 ----------------
 sysdeps/powerpc/powerpc32/power7/fpu/s_isnanf.S    |    1 -
 sysdeps/unix/sysv/linux/powerpc/Implies            |    4 -
 .../unix/sysv/linux/powerpc/powerpc32/fpu/Implies  |    2 -
 61 files changed, 1358 insertions(+), 1165 deletions(-)
 delete mode 100644 sysdeps/powerpc/fpu/w_sqrt.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan-power5.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan-power6.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan-power7.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan-ppc32.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf-power5.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf-power6.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf-power7.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf-ppc32.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnanf.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrint-c.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrint-power4.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrint-power6.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrint.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrintf-c.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrintf-power4.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrintf-power6.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llrintf.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround-c.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround-power4.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround-power5+.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround-power6.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llround.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llroundf-power4.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llroundf-power5+.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llroundf-power6.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_llroundf.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-c.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-power4.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt-power5.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrtf-c.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrtf-power4.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrtf-power5.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrtf.c
 delete mode 100644 sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power4/fpu/s_llroundf.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power5+/fpu/s_llroundf.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power5/fpu/s_isnanf.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power6/fpu/s_isnanf.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power6/fpu/s_llroundf.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power7/fpu/s_isnanf.S
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/Implies
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/Implies


hooks/post-receive
-- 
GNU C Library master sources


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