OSDN Git Service

Add new optimized strlen for arm.
authorChristopher Ferris <cferris@google.com>
Wed, 10 Jul 2013 21:31:03 +0000 (14:31 -0700)
committerChristopher Ferris <cferris@google.com>
Mon, 15 Jul 2013 19:37:51 +0000 (12:37 -0700)
commit2fc071797743b88a9a47427d46baed7c7b24f4d2
tree09d82e84206ef402de1c89c1e5a82bc237cd9924
parent47c7e33ccb9eaadaadc84e7d7e910aba1c07f089
Add new optimized strlen for arm.

This optimized version is primarily targeted at cortex-a15.

Tested on all nexus devices using the system/extras/libc_test strlen test.
Tested alignments from 1 to 32 that are powers of 2.
Tested that strlen does not cross page boundaries at all alignments.

Speed improvements listed below:

cortex-a15
- Sizes >= 32 bytes, ~75% improvement.
- Sizes >= 1024 bytes, ~250% improvement.

cortex-a9
- Sizes >= 32 bytes, ~75% improvement.
- Sizes >= 1024 bytes, ~85% improvement.

krait
- Sizes >= 32 bytes, ~95% improvement.
- Sizes >= 1024 bytes, ~160% improvement.

Change-Id: I361b1a36ed89ab991f2a8f0abbf0d7416d39c8f5
libc/arch-arm/arm.mk
libc/arch-arm/cortex-a15/bionic/strlen.S [new file with mode: 0644]
libc/arch-arm/cortex-a15/cortex-a15.mk
libc/arch-arm/cortex-a9/cortex-a9.mk
libc/arch-arm/generic/bionic/strlen.c [moved from libc/arch-arm/bionic/strlen.c with 100% similarity]
libc/arch-arm/generic/generic.mk
libc/arch-arm/krait/krait.mk