<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/119189>119189</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
-slp-max-vf doesn't affect horizontal reductions
</td>
</tr>
<tr>
<th>Labels</th>
<td>
llvm:SLPVectorizer
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
lukel97
</td>
</tr>
</table>
<pre>
E.g. for the example below:
```llvm
define i32 @f(ptr %p) {
%p0 = getelementptr i32, ptr %p, i32 0
%p1 = getelementptr i32, ptr %p, i32 1
%p2 = getelementptr i32, ptr %p, i32 2
%p3 = getelementptr i32, ptr %p, i32 3
%x0 = load i32, ptr %p0
%x1 = load i32, ptr %p1
%x2 = load i32, ptr %p2
%x3 = load i32, ptr %p3
%y0 = add i32 %x0, %x1
%y1 = add i32 %y0, %x2
%y2 = add i32 %y1, %x3
ret i32 %y2
}
```
`opt -passes=slp-vectorizer -slp-max-vf=2` will still vectorize it to a vector of 4 elements:
```llvm
define i32 @f(ptr %p) {
%p0 = getelementptr i32, ptr %p, i32 0
%1 = load <4 x i32>, ptr %p0, align 4
%2 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %1)
ret i32 %2
}
```
I'm not sure if this is by design or not. My intuition is that the VF for a horizontal reduction would be the number of root scalars.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzElE-PmzAQxT-NuYyCYExCOHDIJhupUitVqrR3g4fg1mCETTbpp69sNuyfNtLeKqFE4N_zPHueRlirTj1RydYPbH2IxORaM5Z6-kW6yKPKyGv5GJ9iaMwIriWgi-gGTVCRNs-M71gSnk0yP1qfO5bsJDWqJ1AcgWVJw3A7uBEYrgeGBbD8gSU7CO8JMH6AEznS1FHvPKc4MtzDq2QfdkoWUfp5UepF_gN-XoNLIf55Eb-JLvORtBHyI7uc4JLeZdKFwbvMYvDC7zKLn-vsR0g598M79GCwsUDpR-i6QEu1K_4FpTdoLjeSW5a8jOWHt-lYwmIGB6tBWEuW8YPVw-pMtTOj-k0jrPx7Jy6rc8P4AdkmgWelNVjnfxcQlANnQLx8AdNABi99sv8pmW_ayvg-g0tQ8Mf3IcA9CK1OPWQ33XyxtdD65szbjeeTxSPJqaZYSBmfs2Bh-273UJlh8bEFdzvwhWHeQW8c2GkkUA24VllQFqorSPIjAczogRi-XUH1blJOmd4TrhUuTIKnYxgKAlrfDtM7oSE4DeSzmbSEigLaT11FoUOj8UVrocVo40iWXBa8EBGVac55zrec86gtk7rIZLMlEptMYJ41OdabSm6SphCp2IpIlZhglmJSJMV6u-Yxx6oWJGqkmhqZ1ixLqBNKx-EezXiKlLUTlWlapNsi0qIibcPQQwzJ4LsfX78_LSFkiH4cjqVfXFXTyfqeKOvs645OOU3lm7SCNGR7hrkD0TRUu39ejY2mUZetc0NIKR4ZHk_KtVMV16ZjeAx-5r_VMJqfVDuGx-DfMjy-HOFc4p8AAAD__7c9qdg">