[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:44:55 PDT 2026


RKSimon wrote:

Reductions are getting messed up as well (we've lost vmovmskpd lowering, not sure if its IR or backend for this v3i64 -> v3i1 pattern):
```diff
-	vmovq	%r11, %xmm3
-	vpbroadcastq	%xmm3, %xmm3
-	vpbroadcastq	.LCPI2_1(%rip), %xmm4   # xmm4 = [9223372036854775808,9223372036854775808]
-	vpxor	%xmm4, %xmm1, %xmm1
-	vpxor	%xmm4, %xmm0, %xmm0
-	vpcmpgtq	%xmm0, %xmm1, %xmm0
-	vpxor	%xmm4, %xmm2, %xmm1
-	vpxor	%xmm4, %xmm3, %xmm2
-	vpcmpgtq	%xmm1, %xmm2, %xmm1
-	vpand	%xmm1, %xmm0, %xmm0
-	cmpq	%r14, %rdi
-	setb	%bl
-	cmpq	%r11, %rdx
-	setb	%r11b
-	andb	%bl, %r11b
-	vmovmskpd	%xmm0, %ebx
-	orb	%bl, %r11b
-                                        # kill: def $bl killed $bl killed $ebx
-	shrb	%bl
-	orb	%bl, %r11b
+	vmovq	%rcx, %xmm3
+	vinserti128	$1, %xmm3, %ymm2, %ymm2
+	vmovq	%r10, %xmm3
+	vpbroadcastq	%xmm3, %ymm3
+	vpbroadcastq	.LCPI2_0(%rip), %ymm4   # ymm4 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808]
+	vpxor	%ymm4, %ymm1, %ymm1
+	vpxor	%ymm4, %ymm0, %ymm0
+	vpcmpgtq	%ymm0, %ymm1, %ymm0
+	vpxor	%ymm4, %ymm2, %ymm1
+	vpxor	%ymm4, %ymm3, %ymm2
+	vpcmpgtq	%ymm1, %ymm2, %ymm1
+	vpand	%ymm1, %ymm0, %ymm0
+	vpextrb	$0, %xmm0, %ebx
+	leaq	(,%r9,4), %r10
+	vpextrb	$8, %xmm0, %ebp
+	andb	$1, %bpl
+	addb	%bpl, %bpl
+	vextracti128	$1, %ymm0, %xmm0
+	vpextrb	$0, %xmm0, %r11d
+	subb	%bl, %bpl
+	andb	$1, %r11b
+	shlb	$2, %r11b
+	orb	%bpl, %r11b
```

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


More information about the llvm-commits mailing list