[llvm] [SLP] Allow non-power-of-2 VF in tryToVectorizeList (PR #206259)

via llvm-commits llvm-commits at lists.llvm.org
Sat Jun 27 08:50:40 PDT 2026


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Windows-->
# :window: Windows x64 Test Results

* 136266 tests passed
* 3494 tests skipped
* 1 test failed

## Failed Tests
(click on a test name to see its output)

### LLVM
<details>
<summary>LLVM.Transforms/SLPVectorizer/X86/odd_store.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\opt.exe < C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\X86\odd_store.ll -passes=slp-vectorizer,dce -slp-vectorize-non-power-of-2 -S -mtriple=x86_64-apple-macosx10.8.0 -mcpu=corei7-avx | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe --check-prefixes=CHECK,NON-POW2 C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\X86\odd_store.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -passes=slp-vectorizer,dce -slp-vectorize-non-power-of-2 -S -mtriple=x86_64-apple-macosx10.8.0 -mcpu=corei7-avx
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' --check-prefixes=CHECK,NON-POW2 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\X86\odd_store.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\X86\odd_store.ll:14:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: [[TMP2:%.*]] = load float, ptr [[TMP1]], align 4
# |               ^
# | <stdin>:7:51: note: scanning from here
# |  %1 = getelementptr inbounds float, ptr %B, i64 10
# |                                                   ^
# | <stdin>:7:51: note: with "TMP1" equal to "%1"
# |  %1 = getelementptr inbounds float, ptr %B, i64 10
# |                                                   ^
# | <stdin>:9:7: note: possible intended match here
# |  %3 = load <3 x float>, ptr %1, align 4
# |       ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\X86\odd_store.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            1: ; ModuleID = '<stdin>' 
# |            2: source_filename = "<stdin>" 
# |            3: target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" 
# |            4: target triple = "x86_64-apple-macosx10.8.0" 
# |            5:  
# |            6: define i32 @foo(ptr noalias captures(none) %A, ptr noalias captures(none) %B, float %T) #0 { 
# |            7:  %1 = getelementptr inbounds float, ptr %B, i64 10 
# | next:14'0                                                      {   search range start (exclusive)
# | next:14'1                                                          error: no match found in search range
# | next:14'2                                                          with "TMP1" equal to "%1"
# |            8:  %2 = getelementptr inbounds i8, ptr %A, i64 1 
# |            9:  %3 = load <3 x float>, ptr %1, align 4 
# | next:14'3           ?                                   possible intended match
# |           10:  %4 = insertelement <3 x float> poison, float %T, i32 0 
# |           11:  %5 = shufflevector <3 x float> %4, <3 x float> poison, <3 x i32> zeroinitializer 
# |           12:  %6 = fmul <3 x float> %3, %5 
# |           13:  %7 = fpext <3 x float> %6 to <3 x double> 
# |           14:  %8 = fadd <3 x double> %7, <double 4.000000e+00, double 5.000000e+00, double 6.000000e+00> 
# |            .
# |            .
# |            .
# |           21:  %13 = extractelement <3 x i8> %9, i32 2 
# |           22:  store i8 %13, ptr %12, align 1 
# |           23:  ret i32 undef 
# |           24: } 
# |           25:  
# |           26: define void @test_v4f32_v2f32_store(<4 x float> %f, ptr %p) #0 { 
# | next:14'4                                         }                              search range end (exclusive)
# |           27:  %1 = shufflevector <4 x float> %f, <4 x float> poison, <2 x i32> <i32 0, i32 1> 
# |           28:  store <2 x float> %1, ptr %p, align 4 
# |           29:  ret void 
# |           30: } 
# |           31:  
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.

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


More information about the llvm-commits mailing list