On Fri, Feb 07, 2025 at 02:06:29AM +0000, Peilin Ye wrote: > --- /dev/null > +++ b/tools/testing/selftests/bpf/progs/verifier_load_acquire.c > @@ -0,0 +1,190 @@ > +// SPDX-License-Identifier: GPL-2.0 > + > +#include <linux/bpf.h> > +#include <bpf/bpf_helpers.h> > +#include "../../../include/linux/filter.h" > +#include "bpf_misc.h" > + > +#if defined(ENABLE_ATOMICS_TESTS) && defined(__TARGET_ARCH_arm64) > + > +SEC("socket") > +__description("load-acquire, 8-bit") > +__success __success_unpriv __retval(0x12) > +__naked void load_acquire_8(void) > +{ > + asm volatile ( > + "*(u8 *)(r10 - 1) = 0x12;" ~~~~ I realized that I am using STORE_imm<> instructions in load-acquire tests, and llvm-17 -mcpu=v3 cannot build them. Can be fixed by simply doing e.g. the following instead: "r1 = 0x12;" "*(u8 *)(r10 - 1) = r1;" > + ".8byte %[load_acquire_insn];" // w0 = load_acquire((u8 *)(r10 - 1)); > + "exit;" > + : > + : __imm_insn(load_acquire_insn, > + BPF_ATOMIC_OP(BPF_B, BPF_LOAD_ACQ, BPF_REG_0, BPF_REG_10, -1)) > + : __clobber_all); > +} Thanks, Peilin Ye