about summary refs log tree commit diff
path: root/sysdeps/powerpc/powerpc32
Commit message (Collapse)AuthorAgeFilesLines
* PowerPC: Adjust multiarch Implies for PowerPC32Adhemerval Zanella2013-12-0613-2/+12
| | | | | This patch adds Implies files on multiarch folder for POWER chips so multirach is enabled when building with --with-cpu and powerN option.
* PowerPC: multiarch __ieee754_hypot[f] for PowerPC32Adhemerval Zanella2013-12-067-1/+172
|
* PowerPC: multiarch logb/logbf/logbl for PowerPC32Adhemerval Zanella2013-12-0613-209/+264
|
* PowerPC: multiarch modf/modff for PowerPC32Adhemerval Zanella2013-12-067-2/+194
|
* PowerPC: multiarch lrint/lrintf for PowerPC32Adhemerval Zanella2013-12-065-1/+137
|
* PowerPC: multiarch lround/lrounf for PowerPC32Adhemerval Zanella2013-12-066-1/+176
|
* PowerPC: multiarch copysign/copysignf for PowerPC32Adhemerval Zanella2013-12-065-2/+154
|
* PowerPC: multiarch trunc/truncf for PowerPC32Adhemerval Zanella2013-12-067-1/+191
|
* PowerPC: multiarch round/roundf for PowerPC32Adhemerval Zanella2013-12-067-1/+191
|
* PowerPC: multiarch floor/floorf for PowerPC32Adhemerval Zanella2013-12-067-1/+192
|
* PowerPC: multiarch ceil/ceilf for PowerPC32Adhemerval Zanella2013-12-067-1/+191
|
* PowerPC: multiarch finite/finitef for PowerPC32Adhemerval Zanella2013-12-066-2/+184
|
* PowerPC: multiarch isinf/isinff for PowerPC32Adhemerval Zanella2013-12-066-2/+178
|
* PowerPC: multiarch isnan/isnanf for PowerPC32Adhemerval Zanella2013-12-0610-1/+283
|
* PowerPC: multiarch sqrt/sqrtf for PowerPC32Adhemerval Zanella2013-12-067-1/+188
|
* PowerPC: multiarch llround/llroundf for PowerPC32Adhemerval Zanella2013-12-066-1/+172
|
* PowerPC: multiarch llrint/llrintf for PowerPC32Adhemerval Zanella2013-12-067-0/+189
|
* PowerPC: multiarch wordcopy routines for PowerPC32Adhemerval Zanella2013-12-067-426/+159
|
* PowerPC: multiarch wcscpy for PowerPC32Adhemerval Zanella2013-12-067-105/+119
|
* PowerPC: multiarch wcsrchr for PowerPC32Adhemerval Zanella2013-12-067-89/+116
|
* PowerPC: multiarch wcschr for PowerPC32Adhemerval Zanella2013-12-067-89/+136
|
* PowerPC: multiarch strchr for PowerPC32Adhemerval Zanella2013-12-066-1/+143
|
* PowerPC: multiarch strchrnul for PowerPC32Adhemerval Zanella2013-12-065-1/+113
|
* PowerPC: multiarch strncasecmp for PowerPC32Adhemerval Zanella2013-12-066-1/+155
|
* PowerPC: multiarch strcasecmp for PowerPC32Adhemerval Zanella2013-12-066-1/+179
|
* PowerPC: multiarch strncmp for PowerPC32Adhemerval Zanella2013-12-065-1/+121
|
* PowerPC: multiarch strnlen for PowerPC32Adhemerval Zanella2013-12-066-1/+123
|
* PowerPC: multiarch strlen for PowerPC32Adhemerval Zanella2013-12-065-1/+115
|
* PowerPC: multiarch rawmemchr for PowerPC32Adhemerval Zanella2013-12-065-1/+119
|
* PowerPC: multiarch memrchr for PowerPC32Adhemerval Zanella2013-12-065-1/+111
|
* PowerPC: multiarch memchr for PowerPC32Adhemerval Zanella2013-12-065-1/+122
|
* PowerPC: multiarch mempcpy for PowerPC32Adhemerval Zanella2013-12-065-1/+114
|
* PowerPC: multiarch memset/bzero for PowerPC32Adhemerval Zanella2013-12-0611-1/+307
|
* PowerPC: multiarch memcmp for PowerPC32Adhemerval Zanella2013-12-066-1/+146
|
* PowerPC: multiarch memcpy for PowerPC32Adhemerval Zanella2013-12-068-1/+254
|
* PowerPC: initial support for multilib for PowerPC32Adhemerval Zanella2013-12-063-0/+105
| | | | | This patch add a empty Makefile, the C IFUNC helper macros, and a empty available IFUNC implementation enumeration.
* PowerPC: Add systemtap static probe points in setjmp/longjmpAdhemerval Zanella2013-12-058-32/+56
| | | | | | | | | 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).
* Add powerpc-nofpu/e500 support functions for atomic compound assignment and ↵Joseph Myers2013-11-286-3/+193
| | | | FLT_ROUNDS.
* Fix dbl-64 e_sqrt.c for non-default rounding modes (bug 16271).Joseph Myers2013-11-281-0/+1
|
* Fix powerpc-nofpu build.Joseph Myers2013-11-251-0/+3
|
* rename configure.in to configure.acMike Frysinger2013-10-302-1/+1
| | | | | | | 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>
* Add e500 port.Joseph Myers2013-10-1826-0/+1091
|
* Move powerpc ports pieces to libc.Joseph Myers2013-10-0412-0/+1021
|
* Use stdint.h types in union unaligned.Alan Modra2013-10-041-2/+2
| | | | | | * 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.
* Correct little-endian relocation of UADDR64,32,16.Alan Modra2013-10-041-6/+8
| | | | | | * 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.
* PowerPC LE memchr and memrchrAlan Modra2013-10-043-189/+200
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* PowerPC LE memsetAlan Modra2013-10-043-6/+6
| | | | | | | | | | | | | | | | | http://sourceware.org/ml/libc-alpha/2013-08/msg00104.html One of the things I noticed when looking at power7 timing is that rlwimi is cracked and the two resulting insns have a register dependency. That makes it a little slower than the equivalent rldimi. * sysdeps/powerpc/powerpc64/memset.S: Replace rlwimi with insrdi. Formatting. * sysdeps/powerpc/powerpc64/power4/memset.S: Likewise. * sysdeps/powerpc/powerpc64/power6/memset.S: Likewise. * sysdeps/powerpc/powerpc64/power7/memset.S: Likewise. * sysdeps/powerpc/powerpc32/power4/memset.S: Likewise. * sysdeps/powerpc/powerpc32/power6/memset.S: Likewise. * sysdeps/powerpc/powerpc32/power7/memset.S: Likewise.
* PowerPC LE memcpyAlan Modra2013-10-044-19/+172
| | | | | | | | | | | | | | | | | | | | http://sourceware.org/ml/libc-alpha/2013-08/msg00103.html LIttle-endian support for memcpy. I spent some time cleaning up the 64-bit power7 memcpy, in order to avoid the extra alignment traps power7 takes for little-endian. It probably would have been better to copy the linux kernel version of memcpy. * sysdeps/powerpc/powerpc32/power4/memcpy.S: Add little endian support. * sysdeps/powerpc/powerpc32/power6/memcpy.S: Likewise. * sysdeps/powerpc/powerpc32/power7/memcpy.S: Likewise. * sysdeps/powerpc/powerpc32/power7/mempcpy.S: Likewise. * sysdeps/powerpc/powerpc64/memcpy.S: Likewise. * sysdeps/powerpc/powerpc64/power4/memcpy.S: Likewise. * sysdeps/powerpc/powerpc64/power6/memcpy.S: Likewise. * sysdeps/powerpc/powerpc64/power7/memcpy.S: Likewise. * sysdeps/powerpc/powerpc64/power7/mempcpy.S: Likewise. Make better use of regs. Use power7 mtocrf. Tidy function tails.
* PowerPC LE memcmpAlan Modra2013-10-042-954/+1736
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | http://sourceware.org/ml/libc-alpha/2013-08/msg00102.html This is a rather large patch due to formatting and renaming. The formatting changes were to make it possible to compare power7 and power4 versions of memcmp. Using different register defines came about while I was wrestling with the code, trying to find spare registers at one stage. I found it much simpler if we refer to a reg by the same name throughout a function, so it's better if short-term multiple use regs like rTMP are referred to using their register number. I made the cr field usage changes when attempting to reload rWORDn regs in the exit path to byte swap before comparing when little-endian. That proved a bad idea due to the pipelining involved in the main loop; Offsets to reload the regs were different first time around the loop.. Anyway, I left the cr field usage changes in place for consistency. Aside from these more-or-less cosmetic changes, I fixed a number of places where an early exit path restores regs unnecessarily, removed some dead code, and optimised one or two exits. * sysdeps/powerpc/powerpc64/power7/memcmp.S: Add little-endian support. Formatting. Consistently use rXXX register defines or rN defines. Use early exit labels that avoid restoring unused non-volatile regs. Make cr field use more consistent with rWORDn compares. Rename regs used as shift registers for unaligned loop, using rN defines for short lifetime/multiple use regs. * sysdeps/powerpc/powerpc64/power4/memcmp.S: Likewise. * sysdeps/powerpc/powerpc32/power7/memcmp.S: Likewise. Exit with addi 1,1,64 to pop stack frame. Simplify return value code. * sysdeps/powerpc/powerpc32/power4/memcmp.S: Likewise.
* PowerPC LE strchrAlan Modra2013-10-043-40/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | http://sourceware.org/ml/libc-alpha/2013-08/msg00101.html Adds little-endian support to optimised strchr assembly. I've also tweaked the big-endian code a little. In power7/strchr.S there's a check in the tail of the function that we didn't match 0 before finding a c match, done by comparing leading zero counts. It's just as valid, and quicker, to compare the raw output from cmpb. Another little tweak is to use rldimi/insrdi in place of rlwimi for the power7 strchr functions. Since rlwimi is cracked, it is a few cycles slower. rldimi can be used on the 32-bit power7 functions too. * sysdeps/powerpc/powerpc64/power7/strchr.S (strchr): Add little-endian support. Correct typos, formatting. Optimize tail. Use insrdi rather than rlwimi. * sysdeps/powerpc/powerpc32/power7/strchr.S: Likewise. * sysdeps/powerpc/powerpc64/power7/strchrnul.S (__strchrnul): Add little-endian support. Correct typos. * sysdeps/powerpc/powerpc32/power7/strchrnul.S: Likewise. Use insrdi rather than rlwimi. * sysdeps/powerpc/powerpc64/strchr.S (rTMP4, rTMP5): Define. Use in loop and entry code to keep "and." results. (strchr): Add little-endian support. Comment. Move cntlzd earlier in tail. * sysdeps/powerpc/powerpc32/strchr.S: Likewise.