[PATCH v4 3/8] arm64/runtime-const: Introduce runtime_const_mask_32()
Catalin Marinas
catalin.marinas at arm.com
Wed May 6 08:37:01 PDT 2026
On Thu, Apr 30, 2026 at 09:47:25AM +0000, K Prateek Nayak wrote:
> Futex hash computation requires a mask operation with read-only after
> init data that will be converted to a runtime constant in the subsequent
> commit.
>
> Introduce runtime_const_mask_32 to further optimize the mask operation
> in the futex hash computation hot path. GCC generates a:
>
> movz w1, #lo16, lsl #0 // w1 = bits [15:0]
> movk w1, #hi16, lsl #16 // w1 = full 32-bit value
> and w0, w0, w1 // w0 = w0 & w1
>
> pattern to tackle arbitrary 32-bit masks and the same was also suggested
> by Claude which is implemented here. The final (__ret & mask) operation
> is intentiaonally placed outside of asm block to allow compilers to
> further optimize it if possible.
>
> __runtime_fixup_ptr() already patches a "movz, + movk lsl #16" sequence
> which has been reused to patch the same sequence for
> __runtime_fixup_mask().
>
> Assisted-by: Claude:claude-sonnet-4-5
> Signed-off-by: K Prateek Nayak <kprateek.nayak at amd.com>
Reviewed-by: Catalin Marinas <catalin.marinas at arm.com>
More information about the linux-riscv
mailing list