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

Nam Cao namcao at linutronix.de
Thu Aug 20 01:31:49 PDT 2026


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?

Nam



More information about the linux-riscv mailing list