]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
riscv: lib: add strnlen() implementation
authorFeng Jiang <jiangfeng@kylinos.cn>
Sat, 4 Apr 2026 01:28:47 +0000 (19:28 -0600)
committerPaul Walmsley <pjw@kernel.org>
Sun, 5 Apr 2026 00:42:44 +0000 (18:42 -0600)
commit5ba15d419fab848a3813eb56bbcad00e291fbc49
tree04f14e84abe3362886a975255d904dda7b944042
parente73bcb3708a69369d506e5bc6a63d4fc13d8e28a
riscv: lib: add strnlen() implementation

Add an optimized strnlen() implementation for RISC-V. This version
includes a generic optimization and a Zbb-powered optimization using
the 'orc.b' instruction, derived from the strlen() implementation.

Benchmark results (QEMU TCG, rv64):
  Length | Original (MB/s) | Optimized (MB/s) | Improvement
  -------|-----------------|------------------|------------
  16 B   | 179             | 309              | +72.6%
  512 B  | 347             | 1562             | +350.1%
  4096 B | 356             | 1878             | +427.5%

Suggested-by: Qingfang Deng <dqfext@gmail.com>
Signed-off-by: Feng Jiang <jiangfeng@kylinos.cn>
Link: https://patch.msgid.link/20260130025018.172925-7-jiangfeng@kylinos.cn
Signed-off-by: Paul Walmsley <pjw@kernel.org>
arch/riscv/include/asm/string.h
arch/riscv/lib/Makefile
arch/riscv/lib/strnlen.S [new file with mode: 0644]
arch/riscv/purgatory/Makefile