[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