[llvm] [SLP] Enable full non-power-of-2 vectorization by default (PR #199450)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 26 06:10:19 PDT 2026
RKSimon wrote:
The test-suite diffs have a number of cases like:
```diff
--- build.x86-64-v3-O3-base/MicroBenchmarks/SLPVectorization/CMakeFiles/SLPVectorizationBenchmarks.dir/Versioning.s 2026-08-26 11:28:39.212175952 +0000
+++ build.x86-64-v3-O3-head/MicroBenchmarks/SLPVectorization/CMakeFiles/SLPVectorizationBenchmarks.dir/Versioning.s 2026-08-26 11:12:26.089400745 +0000
@@ -2805,13 +2805,17 @@
.p2align 4
.LBB26_2: # %for.body
# =>This Inner Loop Header: Depth=1
- vmovapd (%rsp), %xmm0
- vmovddup (%rsp), %xmm1 # xmm1 = mem[0,0]
- vfmadd132pd 32(%rsp), %xmm0, %xmm1 # xmm1 = (xmm1 * mem) + xmm0
- vmovapd %xmm1, (%rsp)
+ vmovapd 32(%rsp), %xmm0
vmovsd 48(%rsp), %xmm1 # xmm1 = mem[0],zero
- vfmadd213sd 16(%rsp), %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + mem
- vmovsd %xmm0, 16(%rsp)
+ vinsertf128 $1, %xmm1, %ymm0, %ymm0
+ vmovapd (%rsp), %xmm1
+ vmovsd 16(%rsp), %xmm2 # xmm2 = mem[0],zero
+ vinsertf128 $1, %xmm2, %ymm1, %ymm1
+ vbroadcastsd (%rsp), %ymm2
+ vfmadd213pd %ymm1, %ymm0, %ymm2 # ymm2 = (ymm0 * ymm2) + ymm1
+ vmovapd %xmm2, (%rsp)
+ vextractf128 $1, %ymm2, %xmm0
+ vmovlpd %xmm0, 16(%rsp)
```
which suggests that we're not doing a good job of <3 x double> load/stores/scalarization costs?
https://github.com/llvm/llvm-project/pull/199450
More information about the llvm-commits
mailing list