Commit 36e22416 authored by Kuan-Wei Chiu's avatar Kuan-Wei Chiu Committed by Andrew Morton
Browse files

riscv: optimize gcd() performance on RISC-V without Zbb extension

The binary GCD implementation uses FFS (find first set), which benefits
from hardware support for the ctz instruction, provided by the Zbb
extension on RISC-V.  Without Zbb, this results in slower
software-emulated behavior.

Previously, RISC-V always used the binary GCD, regardless of actual
hardware support.  This patch improves runtime efficiency by disabling the
efficient_ffs_key static branch when Zbb is either not enabled in the
kernel (config) or not supported on the executing CPU.  This selects the
odd-even GCD implementation, which is faster in the absence of efficient
FFS.

This change ensures the most suitable GCD algorithm is chosen dynamically
based on actual hardware capabilities.

Link: https://lkml.kernel.org/r/20250606134758.1308400-4-visitorckw@gmail.com


Co-developed-by: default avatarYu-Chun Lin <eleanor15x@gmail.com>
Signed-off-by: default avatarYu-Chun Lin <eleanor15x@gmail.com>
Signed-off-by: default avatarKuan-Wei Chiu <visitorckw@gmail.com>
Acked-by: default avatarAlexandre Ghiti <alexghiti@rivosinc.com>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: Ching-Chun (Jim) Huang <jserv@ccns.ncku.edu.tw>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Paul Walmsley <paul.walmsley@sifive.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 26b537ed
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment