<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">