<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/64658>64658</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [Loop Vectorizer] Loop is not vectorized despite builtin_assume
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          komalon1
      </td>
    </tr>
</table>

<pre>
    See reproducer in https://godbolt.org/z/M6a7zxxdK
Given the fact that `stride >= width` it should be safe to vectorize the load from `l_out[(i + 1) * stride + j]` and the store to `l_out[i*stride + j]` since they won't overlap.

Replacing `stride` with `width` works in this case.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxskk9vnDAQxT_NcBkFGbOwcOCw0ZYe2l5aqdfIf4bFicHIHnaTfPoK0jRV1YstjTW_mef3VEruMhN1UN1Ddc7UymOI3VOYlA9zkelgX7ofRBhpicGuhiK6GUfmJUF5AtmD7C_B6uA5D_ECsn8F2X-r1fH1-dl-AXEGcfrsrjQjj4SDMow8KkaoReLoLCGUn6A8481ZHqEW6BjTGFZvURMmNRBywCsZDtG90o7xQVkcYpg2jH8IK2_7y8YhyHssQLYI8oTvA-Q9PkJ13uBqtjshcYg7-C-AA3n6T0tys9nHvuAtzCCPjOFK0aslf5P3dn6nxSvj5suHtK375njcKn_k3UJ8Stsn8ugSGpUoz2xX2rZsVUZdUbdFKw_i2GRjZ6wpWm2KQhXFQLpuqkZqQXqohKhMecxcJ4UsRVOUhagOZZPLYTDKHtuhMlWj2xIOgiblfO79ddocylxKK3X1oa6azCtNPu3mSznTDfdHkHLLQuy2nju9XhIchHeJ0weFHfs9NV9DWPDnuzsRqjPuJZdwDvzhm0VLaXFMqFfn2c0PKqV1omyNvvsnT47HVecmTCD7beLv626J4ZEMg-z3PRPIftfxKwAA__941eOu">