[PATCH 1/3] riscv: word-at-a-time: improve find_zero() for !RISCV_ISA_ZBB

Jisheng Zhang jszhang at kernel.org
Mon Aug 31 21:34:11 PDT 2026


On Thu, Aug 20, 2026 at 10:31:49AM +0200, Nam Cao wrote:
> Jisheng Zhang <jszhang at kernel.org> writes:
> > +#if !(defined(CONFIG_RISCV_ISA_ZBB) && defined(CONFIG_TOOLCHAIN_HAS_ZBB))
> > +#include <asm-generic/word-at-a-time.h>
> > +#else
> 
> Instead of this #if, would it be better to do
> 
> static inline unsigned long find_zero(unsigned long mask)
> {
>         if (IS_ENABLED(CONFIG_RISCV_ISA_ZBB) && IS_ENABLED(CONFIG_TOOLCHAIN_HAS_ZBB) &&
> 	    riscv_has_extension_likely(RISCV_ISA_EXT_ZBB))
> 		return !mask ? 0 : ((__fls(mask) + 1) >> 3);
> 
> 	return count_masked_bytes(mask);
> }
> 
> and let compiler's dead code elimination does its job?

This is impossible because the generic word-at-a-time.h implements
the generic find_zero() itself, so there will be compile error.

Thanks



More information about the linux-riscv mailing list