string: Improve generic strncmp
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 20 Jan 2023 19:18:33 +0000 (16:18 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Mon, 6 Feb 2023 19:19:35 +0000 (16:19 -0300)
commit367c31b5d61164db97834917f5487094ebef2f58
treeae01394362fcc7a612299176ef1e62dd219ff91e
parent30cf54bf3072be942847400c1669bcd63aab039e
string: Improve generic strncmp

It follows the strategy:

   - Align the first input to word boundary using byte operations.

   - If second input is also word aligned, read a word per time, check
     for  null (using has_zero), and check final words using byte
     operation.

   - If second input is not word aligned, loop by aligning the source,
     and merge the result of two reads.  Similar to aligned case, check
     for null with has_zero, and check final words using byte operation.

Checked on x86_64-linux-gnu, i686-linux-gnu, powerpc64-linux-gnu,
and powerpc-linux-gnu by removing the arch-specific assembly
implementation and disabling multi-arch (it covers both LE and BE
for 64 and 32 bits).

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
string/strncmp.c