]> git.baikalelectronics.ru Git - kernel.git/commit
arm64: Better optimised memchr()
authorRobin Murphy <robin.murphy@arm.com>
Thu, 27 May 2021 15:34:47 +0000 (16:34 +0100)
committerWill Deacon <will@kernel.org>
Tue, 1 Jun 2021 17:34:38 +0000 (18:34 +0100)
commit0ad32e1c4df497eaf9af4d68289df041bd79ec09
treec108c0a87007cf8061ba0dd5ae71c4e5a5fdc795
parentae36a2195afdc8c187f5cfd025733e51b1a94664
arm64: Better optimised memchr()

Although we implement our own assembly version of memchr(), it turns
out to be barely any better than what GCC can generate for the generic
C version (and would go wrong if the size_t argument were ever large
enough to be interpreted as negative). Unfortunately we can't import the
tuned implementation from the Arm optimized-routines library, since that
has some Advanced SIMD parts which are not really viable for general
kernel library code. What we can do, however, is pep things up with some
relatively straightforward word-at-a-time logic for larger calls.

Adding some timing to optimized-routines' memchr() test for a simple
benchmark, overall this version comes in around half as fast as the SIMD
code, but still nearly 4x faster than our existing implementation.

Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Link: https://lore.kernel.org/r/58471b42f9287e039dafa9e5e7035077152438fd.1622128527.git.robin.murphy@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/lib/memchr.S