diff options
author | Adhemerval Zanella <azanella@linux.vnet.ibm.com> | 2013-04-14 09:39:19 -0500 |
---|---|---|
committer | Adhemerval Zanella <azanella@linux.vnet.ibm.com> | 2013-04-14 18:21:18 -0500 |
commit | 0fc435974c65787a0b1b2dfc149c1433b5a86d2d (patch) | |
tree | d7f7c5b4b282fb3fcbfda5dc82735e5c64a51532 | |
parent | 2bff5a09d22122b699faf29d798d757ae8f6151c (diff) | |
download | glibc-0fc435974c65787a0b1b2dfc149c1433b5a86d2d.tar.gz glibc-0fc435974c65787a0b1b2dfc149c1433b5a86d2d.tar.xz glibc-0fc435974c65787a0b1b2dfc149c1433b5a86d2d.zip |
PowerPC: floor/floorf multilib for PowerPC32
-rw-r--r-- | sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile | 4 | ||||
-rw-r--r-- | sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-ppc32.S | 4 | ||||
-rw-r--r-- | sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor-power5+.S (renamed from sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S) | 14 | ||||
-rw-r--r-- | sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor-ppc32.S | 13 | ||||
-rw-r--r-- | sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor.c | 40 | ||||
-rw-r--r-- | sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf-power5+.S (renamed from sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S) | 7 | ||||
-rw-r--r-- | sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf-ppc32.S | 9 | ||||
-rw-r--r-- | sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf.c | 32 |
8 files changed, 103 insertions, 20 deletions
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile index aaafdbea85..4251936e4b 100644 --- a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile +++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile @@ -17,7 +17,9 @@ libm-sysdep_routines += s_llrintf-power6 s_llrintf-power4 s_llrintf-c \ s_isnanf-ppc32 \ s_copysign-power6 s_copysign-ppc32 \ s_ceil-power5+ s_ceil-ppc32 \ - s_ceilf-power5+ s_ceilf-ppc32 + s_ceilf-power5+ s_ceilf-ppc32 \ + s_floor-power5+ s_floor-ppc32 \ + s_floorf-power5+ s_floorf-ppc32 CFLAGS-s_llround.c = -fno-builtin-llroundf endif diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-ppc32.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-ppc32.S index d69b921b70..81068d5b98 100644 --- a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-ppc32.S +++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-ppc32.S @@ -8,6 +8,6 @@ #undef compat_symbol #define compat_symbol(a,b,c,d) -#define __ceil __ceil_ppc32 +#define __floor __floor_ppc32 -#include <sysdeps/powerpc/powerpc32/fpu/s_ceil.S> +#include <sysdeps/powerpc/powerpc32/fpu/s_floor.S> diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor-power5+.S index 215c67cfb7..c9515df8ba 100644 --- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S +++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor-power5+.S @@ -20,17 +20,7 @@ #include <math_ldbl_opt.h> .machine "power5" -EALIGN (__floor, 4, 0) +EALIGN (__floor_power5plus, 4, 0) frim fp1, fp1 blr - END (__floor) - -weak_alias (__floor, floor) - -#ifdef NO_LONG_DOUBLE -weak_alias (__floor, floorl) -strong_alias (__floor, __floorl) -#endif -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) -compat_symbol (libm, __floor, floorl, GLIBC_2_0) -#endif +END (__floor_power5plus) diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor-ppc32.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor-ppc32.S new file mode 100644 index 0000000000..81068d5b98 --- /dev/null +++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor-ppc32.S @@ -0,0 +1,13 @@ +#include <sysdep.h> +#include <math_ldbl_opt.h> + +#undef weak_alias +#define weak_alias(a,b) +#undef strong_alias +#define strong_alias(a,b) +#undef compat_symbol +#define compat_symbol(a,b,c,d) + +#define __floor __floor_ppc32 + +#include <sysdeps/powerpc/powerpc32/fpu/s_floor.S> diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor.c b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor.c new file mode 100644 index 0000000000..6d3fcba906 --- /dev/null +++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor.c @@ -0,0 +1,40 @@ +/* Multiple versions of s_floor. + 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 (__floor) __floor_ppc32 attribute_hidden; +extern __typeof (__floor) __floor_power5plus attribute_hidden; + +libc_ifunc (__floor, + (hwcap & PPC_FEATURE_POWER5_PLUS) + ? __floor_power5plus + : __floor_ppc32); + +weak_alias (__floor, floor) + +#ifdef NO_LONG_DOUBLE +strong_alias (__floor, __floorl) +weak_alias (__floor, floorl) +#endif +#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) +compat_symbol (libm, __floor, floorl, GLIBC_2_0); +#endif diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf-power5+.S index eb228da10d..bece5509da 100644 --- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S +++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf-power5+.S @@ -19,11 +19,8 @@ #include <sysdep.h> .machine "power5" -EALIGN (__floorf, 4, 0) +EALIGN (__floorf_power5plus, 4, 0) frim fp1, fp1 /* The rounding instructions are double. */ frsp fp1, fp1 /* But we need to set ooverflow for float. */ blr - END (__floorf) - -weak_alias (__floorf, floorf) - +END (__floorf_power5plus) diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf-ppc32.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf-ppc32.S new file mode 100644 index 0000000000..c7be7e5691 --- /dev/null +++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf-ppc32.S @@ -0,0 +1,9 @@ +#include <sysdep.h> +#include <math_ldbl_opt.h> + +#undef weak_alias +#define weak_alias(a,b) + +#define __floorf __floorf_ppc32 + +#include <sysdeps/powerpc/powerpc32/fpu/s_floorf.S> diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf.c b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf.c new file mode 100644 index 0000000000..0bfc7c060c --- /dev/null +++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf.c @@ -0,0 +1,32 @@ +/* Multiple versions of s_floorf. + 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 (__floorf) __floorf_ppc32 attribute_hidden; +extern __typeof (__floorf) __floorf_power5plus attribute_hidden; + +libc_ifunc (__floorf, + (hwcap & PPC_FEATURE_POWER5_PLUS) + ? __floorf_power5plus + : __floorf_ppc32); + +weak_alias (__floorf, floorf) |