[llvm] [SLP]Vectorize unique scalars of splat gather nodes as separate subtrees (PR #220250)

Alexey Bataev via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 7 05:41:12 PDT 2026


alexey-bataev wrote:

> > > We are seeing a 4.2% regression in SPEC2017 lbm and 3.6% regression in SPEC2026 lbm on graviton4 from this change. I suggest we revert it.
> > 
> > 
> > Reproducers are required
> 
> ```c
> /*
> "$BEFORE/bin/clang" --target=aarch64-linux-gnu -O3 -mcpu=neoverse-v2 \
>   -S reproducer.c -o before.s
> "$AFTER/bin/clang" --target=aarch64-linux-gnu -O3 -mcpu=neoverse-v2 \
>   -S reproducer.c -o after.s
> 
> After #220250 the code no longer vectorizes.
> Adding -fno-slp-vectorize removes the difference between before/after.
> */
> void mix4(unsigned *restrict out, const unsigned *restrict in) {
>   unsigned a = in[0] + in[1];
>   unsigned b = in[2] + in[3];
>   unsigned c = in[4] + in[5];
>   out[0] = ((in[6] + a) ^ b) + c;
>   out[1] = ((in[7] + a) ^ b) + c;
>   out[2] = ((in[8] + a) ^ b) + c;
>   out[3] = ((in[9] + a) ^ b) + c;
>   out[4] = a;
>   out[6] = b;
>   out[8] = c;
> }
> ```

https://github.com/llvm/llvm-project/pull/221717

https://github.com/llvm/llvm-project/pull/220250


More information about the llvm-commits mailing list