<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/62935>62935</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[LV] gcc generate better code than clang related to the update of memory address
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
vfdff
</td>
</tr>
</table>
<pre>
* test: https://gcc.godbolt.org/z/3c8f3caKo
```
float foo (void) {
for (int i = 0; i < N; i++)
{
a[i] += b[i]* c[i] + d[i] * e[i] + f[i] * g[i] +
h[i] * j[i] + p[i];
}
}
```
* clang: **base address are reused with x0 and x1**
```
.LBB0_1: // =>This Inner Loop Header: Depth=1
add x0, x11, x8
add x1, x12, x8
ldr q0, [x0, #8192]
add x0, x9, x8
ldr q1, [x1, #8192]
add x1, x10, x8
ldr q2, [x0, #8192]
add x0, x13, x8
fmul v0.2d, v0.2d, v1.2d
ldr q1, [x1, #8192]
add x1, x14, x8
fmla v0.2d, v1.2d, v2.2d
ldr q1, [x0, #8192]
ldr q2, [x1, #8192]
add x0, x15, x8
add x1, x16, x8
fmla v0.2d, v2.2d, v1.2d
ldr q3, [x0, #8192]
ldr q1, [x1, #8192]
add x0, x17, x8
fmla v0.2d, v1.2d, v3.2d
ldr q1, [x0, #8192]
add x0, x18, x8
adds x8, x8, #16
fadd v0.2d, v0.2d, v1.2d
ldr q1, [x0, #8192]
fadd v0.2d, v1.2d, v0.2d
str q0, [x0, #8192]
b.ne .LBB0_1
```
* gcc: only need one single **add x0, x0, 16** to update all the memory address
```
.L2:
ldr q30, [x7, x0]
ldr q31, [x8, x0]
ldr q27, [x10, x0]
ldr q28, [x9, x0]
fmul v31.2d, v31.2d, v30.2d
ldr q29, [x6, x0]
ldr q30, [x5, x0]
fmla v31.2d, v27.2d, v28.2d
ldr q27, [x4, x0]
ldr q28, [x3, x0]
fmla v31.2d, v29.2d, v30.2d
ldr q29, [x2, x0]
ldr q30, [x1, x0]
fmla v31.2d, v27.2d, v28.2d
fadd v31.2d, v31.2d, v29.2d
fadd v31.2d, v31.2d, v30.2d
str q31, [x1, x0]
add x0, x0, 16
cmp x0, 8192
bne .L2
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVstu6zYQ_Rp6M7gGH9ZroYV9XaNFg66KbgtKHD0uaNFXpNOkX19QlmTLkRInFQyRzBydmTnkTCitrcsGMSXBjgT7lTy7yrTpc6GKYpUZ9ZoSvgWH1hGxhcq5kyViS_iB8EOZ5-vSqMxotzZtSfjhX8IPIo8LkcvfDaF7QrckpP2vWxbaSAeFMUB4_GxqRXgCJNpdrFCY1hvqxkENROyBErHrpt_hj25K-K77Jf0XcPN190gS7GoS7MHDxB6yfu3zyG9soK6LLeCtpbi1lLeWW0fDU92ifwyLDn4afIshRBLte13GyVSg_s23ALmWTellJ9z_IZMWQSrVorUgW4QWzxYV_FO7Cl4oyEbBC7tgZ6nXT7sd_Zt5xg-ey_76DSDilz-r2sJvTYMtPBlzgl9RKmw9yx5PriJiz6aySKW68YUS_h1eGOuGeAF0sTI-B9Kq7cafHRMJdhdKwkXMEu6Ffc9xMqEcudjAxR7i6uOjS_H95F-JjYk5vuJ41n58pmuuPOA6YX4yL87XEtrMB6DlNAA2TPgDAbyrwAjnn4u3FyyYxHufTfhYNnxGzjEu8bk0Hpd9SCH6pOTi_0p-r2G8UIm2Aw3WCyELh57cs3zxUM4H-JaUTdgnpNY91gaydYMeNzS62f7qO2uZ575_mUa_QoOowDQItm5KjdB32zvpurc_ZR2BM3A-KekQpNbgKoQjHk37OrTnhfbL_b_OebnEmFrU-1s8d2KUNv4IyqPxjNIPsfGATRagY3cS1xN6nb3dtit1MlCHHyY36hDcQ8dCuTrl0TiL33E_qrC555zJXixm_9Z9Mpf9TNr88bTZe-4fTX2srrmdukR9V4YPbulYiYItBrxQOROe_Hi6wXRVPLFnDYKvl2kdrVQqVCISucKUhXFAKQtCsarSfJMnRZxvGM8iGsSqCCKeZUHGs1BKypJVnXLKBQ14QKMg4WIdF2GWhzIRQYhFoSKyoXiUtV5r_Xz0t9lVbe0Z05AnIlhpmaG2wx25TT3oW3YuLdlQXVtnr5-52mlMvTJPf_l7YJnnUGKDre8WGTqHLeRGIbhKNpcrHrSopUPl24rvJX1rMcVdV1mdW53eXcFrV52zdW6OhB98DP3w7dSaH5g7wg9dHpbwQ5fKfwEAAP__xIfkCA">