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