PowerPC LE strchr
authorAlan Modra <amodra@gmail.com>
Sat, 17 Aug 2013 09:16:05 +0000 (18:46 +0930)
committerAlan Modra <amodra@gmail.com>
Fri, 4 Oct 2013 01:10:22 +0000 (10:40 +0930)
commit664318c3eb07032e2bfcf47cb2aa3c89280c19e7
tree338e8a4e5b1215319560caa795ce5830f2f46685
parent43b84013714c46e6dcae4a5564c5527777ad5e08
PowerPC LE strchr
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.
ChangeLog
sysdeps/powerpc/powerpc32/power7/strchr.S
sysdeps/powerpc/powerpc32/power7/strchrnul.S
sysdeps/powerpc/powerpc32/strchr.S
sysdeps/powerpc/powerpc64/power7/strchr.S
sysdeps/powerpc/powerpc64/power7/strchrnul.S
sysdeps/powerpc/powerpc64/strchr.S