aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/powerpc/powerpc32
AgeCommit message (Collapse)Author
2014-02-27PowerPC: Optimized isnan/isnanf for POWER8Adhemerval Zanella
This patch add a optimized isnan/isnanf implementation for POWER8 using the new Move From VSR Doubleword instruction to gains some cycles from FP to GRP register move.
2014-02-10Use glibc_likely instead __builtin_expect.Ondřej Bílka
2014-01-01Update copyright notices with scripts/update-copyrightsAllan McRae
2013-12-19Don't make soft-fp symbols compat symbols for powerpc-nofpu.Joseph Myers
sysdeps/powerpc/powerpc32/libgcc-compat.S makes certain symbols that glibc once accidentally reexported from libgcc into compat symbols. Where the exports were purely accidental, this is the right thing to do. However, for powerpc-nofpu the soft-fp symbols are deliberately exported from libc, given public versions in sysdeps/powerpc/nofpu/Versions and used by libm in preference to the libgcc versions that do not support the software exceptions and rounding modes. The libc versions should also be usable by user programs, though normally libgcc gets linked in first (meaning, effectively, that the <fenv.h> functions are broken as regards their expected effects on user arithmetic). A longstanding todo item is to remove the functions in question from libgcc (when built with recent enough glibc) - that is, remove them from static libgcc and make them compat symbols in shared libgcc - so that this works properly (this is one of the items mentioned at <http://gcc.gnu.org/wiki/Software_floating_point> - parts of that page are obviously out of date, but this item still applies). Doing this requires first that the functions are actually available from libc for new links, not just as compat symbols. This patch stops the symbols in question being compat symbols for powerpc-nofpu. The nofpu Versions entries for them are removed (the symbols never were exported at GLIBC_2.3.2, only GLIBC_2.0, because the compat symbols took precedence). Tested powerpc-nofpu. The symbols are no longer compat symbols and libm.so now properly gets undefined references to them (resolved to libc.so) instead of the libgcc copies getting linked into libm as before. * sysdeps/powerpc/powerpc32/libgcc-compat.S [_SOFT_FLOAT || __NO_FPRS__] (__fixdfdi_v_glibc20): Do not define as a macro and a compat symbol. [_SOFT_FLOAT || __NO_FPRS__] (__fixsfdi_v_glibc20): Likewise. [_SOFT_FLOAT || __NO_FPRS__] (__fixunsdfdi_v_glibc20): Likewise. [_SOFT_FLOAT || __NO_FPRS__] (__fixunssfdi_v_glibc20): Likewise. [_SOFT_FLOAT || __NO_FPRS__] (__floatdidf_v_glibc20): Likewise. [_SOFT_FLOAT || __NO_FPRS__] (__floaddisf_v_glibc20): Likewise. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__fixdfdi): Do not use .hidden. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__fixsfdi): Likewise. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__fixunsdfdi): Likewise. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__fixunssfdi): Likewise. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__floaddidf): Likewise. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__floaddisf): Likewise. * sysdeps/powerpc/nofpu/Versions (libc): Remove __fixdfdi, __fixsfdi, __fixunsdfdi, __fixunssfdi, __floatdidf and __floatdisf from GLIBC_2.3.2.
2013-12-06PowerPC: Adjust multiarch Implies for PowerPC32Adhemerval Zanella
This patch adds Implies files on multiarch folder for POWER chips so multirach is enabled when building with --with-cpu and powerN option.
2013-12-06PowerPC: multiarch __ieee754_hypot[f] for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch logb/logbf/logbl for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch modf/modff for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch lrint/lrintf for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch lround/lrounf for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch copysign/copysignf for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch trunc/truncf for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch round/roundf for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch floor/floorf for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch ceil/ceilf for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch finite/finitef for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch isinf/isinff for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch isnan/isnanf for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch sqrt/sqrtf for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch llround/llroundf for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch llrint/llrintf for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch wordcopy routines for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch wcscpy for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch wcsrchr for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch wcschr for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch strchr for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch strchrnul for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch strncasecmp for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch strcasecmp for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch strncmp for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch strnlen for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch strlen for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch rawmemchr for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch memrchr for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch memchr for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch mempcpy for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch memset/bzero for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch memcmp for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: multiarch memcpy for PowerPC32Adhemerval Zanella
2013-12-06PowerPC: initial support for multilib for PowerPC32Adhemerval Zanella
This patch add a empty Makefile, the C IFUNC helper macros, and a empty available IFUNC implementation enumeration.
2013-12-05PowerPC: Add systemtap static probe points in setjmp/longjmpAdhemerval Zanella
This patch add static probes for setjmp/longjmp in the way gdb expects,fixing the gdb.base/longjmp.exp gdb testcases. It changes the symbol_name and use macros to to avoid change the probe names and ending up adding more logic on GDB (since with the expected name GDB work seamlessly).
2013-11-28Add powerpc-nofpu/e500 support functions for atomic compound assignment and ↵Joseph Myers
FLT_ROUNDS.
2013-11-28Fix dbl-64 e_sqrt.c for non-default rounding modes (bug 16271).Joseph Myers
2013-11-25Fix powerpc-nofpu build.Joseph Myers
2013-10-30rename configure.in to configure.acMike Frysinger
Autoconf has been deprecating configure.in for quite a long time. Rename all our configure.in and preconfigure.in files to .ac. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2013-10-18Add e500 port.Joseph Myers
2013-10-04Move powerpc ports pieces to libc.Joseph Myers
2013-10-04Use stdint.h types in union unaligned.Alan Modra
* sysdeps/powerpc/powerpc32/dl-machine.c (__process_machine_rela): Use stdint types in rather than __attribute__((mode())). * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): Likewise.
2013-10-04Correct little-endian relocation of UADDR64,32,16.Alan Modra
* sysdeps/powerpc/powerpc32/dl-machine.c (__process_machine_rela): Correct handling of unaligned relocs for little-endian. * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): Likewise.
2013-10-04PowerPC LE memchr and memrchrAlan Modra
http://sourceware.org/ml/libc-alpha/2013-08/msg00105.html Like strnlen, memchr and memrchr had a number of defects fixed by this patch as well as adding little-endian support. The first one I noticed was that the entry to the main loop needlessly checked for "are we done yet?" when we know the size is large enough that we can't be done. The second defect I noticed was that the main loop count was wrong, which in turn meant that the small loop needed to handle an extra word. Thirdly, there is nothing to say that the string can't wrap around zero, except of course that we'd normally hit a segfault on trying to read from address zero. Fixing that simplified a number of places: - /* Are we done already? */ - addi r9,r8,8 - cmpld r9,r7 - bge L(null) becomes + cmpld r8,r7 + beqlr However, the exit gets an extra test because I test for being on the last word then if so whether the byte offset is less than the end. Overall, the change is a win. Lastly, memrchr used the wrong cache hint. * sysdeps/powerpc/powerpc64/power7/memchr.S: Replace rlwimi with insrdi. Make better use of reg selection to speed exit slightly. Schedule entry path a little better. Remove useless "are we done" checks on entry to main loop. Handle wrapping around zero address. Correct main loop count. Handle single left-over word from main loop inline rather than by using loop_small. Remove extra word case in loop_small caused by wrong loop count. Add little-endian support. * sysdeps/powerpc/powerpc32/power7/memchr.S: Likewise. * sysdeps/powerpc/powerpc64/power7/memrchr.S: Likewise. Use proper cache hint. * sysdeps/powerpc/powerpc32/power7/memrchr.S: Likewise. * sysdeps/powerpc/powerpc64/power7/rawmemchr.S: Add little-endian support. Avoid rlwimi. * sysdeps/powerpc/powerpc32/power7/rawmemchr.S: Likewise.