[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