<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/61742>61742</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Inefficient scalable vector codegen after "[SCEV] Add SCEVType to represent `vscale`."
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:AArch64,
llvm:codegen,
loopoptim,
SCEV
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
UsmanNadeem
</td>
</tr>
</table>
<pre>
See sample code: https://godbolt.org/z/dnPzGrTqj
The issue was bisected to patch `[SCEV] Add SCEVType to represent ``vscale``.` :
https://reviews.llvm.org/D144891 or https://github.com/llvm/llvm-project/commit/62d11b2ccaeec8abc12e07aa009c922d72fd6377
A quick look shows that the difference comes from LSR and disabling LSR gives good code again.
Before the patch we were getting
```
ld1d { z1.d }, p0/z, [x1, x8, lsl #3]
add x11, x1, x10
ld1d { z2.d }, p0/z, [x11, #1, mul vl]
ld1d { z3.d }, p0/z, [x11, #2, mul vl]
ld1d { z4.d }, p0/z, [x11, #3, mul vl]
ld1d { z5.d }, p0/z, [x11, #4, mul vl]
...
```
Now we are seeing address calculation inside the loop:
```
ld1d { z1.d }, p0/z, [x1, x8, lsl #3]
add x11, x1, x10
ld1b { z2.b }, p1/z, [x11, x9]
add x12, x11, x9
ld1b { z3.b }, p1/z, [x12, x9]
add x13, x12, x9
ld1b { z4.b }, p1/z, [x13, x9]
add x11, x13, x9
ld1b { z5.b }, p1/z, [x11, x9]
...
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyclVGPozYQxz-NeRkVGRtCeOAhuTRVpepUdbd9N_YAvjWYs51kbz99ZUhzu71ESbtaGccafuP8ZzJ_4b3uRsSaFFtS7BJxCL119Z9-EONnoRCHpLHqW_2ECF4Mk0GQViHhG-hDmDzhG8L2hO07qxprQmpdR9j-jbC9Gn9_-8U9f_1C6I7QzbI-9wja-wPCSXhotEcZUEGwMIkgeyArSort06ef_yLFDjZKQdw_f5swxjicHHocwxy3okcvhcFln5IVhXidOc_Hyzk8ajz51JjjcL7hLsvzdZWBdf_-Ijr0hyaVdiBsH184P36anP2CMhC2l3YYdNysmMqyhkkpEOVaNDJjSEshKK1kxZgqWatWvCzfK7CBrwctX8BY-wK-tycPoRcBQo-gdNuiw1FGlQf00Do7wG9Pf4AYFSjtRWP02M0nnT6ih85aNVcERCf0mL7PtMXWOpzBi7gnhBM6hA5DiJj3wYuI8X_-CEZlCgCAlFt4y1IFpNwR9gkmupT3E5Bi-5rFzes6rsYbIIxzUuzOiPOfUDMIXrMl-rzSj1Ef8rGb-eaXCePzczgYOJofEn5A8bso9igqv4vij6KKu6j8GipN06vVWtbP9hRLLByCR4wFFko59B6kMPJgRNB2BD16rZauMNZOl1_M9Ta4dvn_1w0Pt0Hzrg2aS6LsR5Veq2t0tnD_ibhN5zfp7DadL3R2l57fpPPb9LMm_C69eFyZWz2TqJqrilciwTpblVVVVGvKk74uRcEEVyLPacVXtMhpXjRtsVbrvFoXok10zSjjlLOScU4pTyvWZuumaEq-VlTlnOQUB6HNZd4m88ivV1mZs8SIBo2fDYexRsgXHBXhm83GyX6VExa1JYzNo5dv4mzrcPx-bO1kp6CHy8lsFoxF93L1PKmbQ-dJTo324fvMT4IOButfR2xbLXU0kegeojEIR5TBOjjnAtEGdDAzH7Oiiw-lhLHk4Ez9nz1lVshHT4ki_R0AAP__4p4PmQ">