<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/78441>78441</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
The inhibitory effect of vectorization on Loop Optimization
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ZY546
</td>
</tr>
</table>
<pre>
https://godbolt.org/z/andP5rxaz
```cpp
int a, b;
void test() {
a = 0;
for (int c = 0; c < 100; c += 1) {
a += 2;
if (a)
b += 3;
}
}
```
Clang -O3:
```asm
.LCPI0_0:
.long 75 # 0x4b
.long 75 # 0x4b
.long 75 # 0x4b
.long 75 # 0x4b
test(): # @test()
movd xmm0, dword ptr [rip + b] # xmm0 = mem[0],zero,zero,zero
paddd xmm0, xmmword ptr [rip + .LCPI0_0]
pshufd xmm1, xmm0, 250 # xmm1 = xmm0[2,2,3,3]
paddd xmm1, xmm0
pshufd xmm0, xmm1, 85 # xmm0 = xmm1[1,1,1,1]
paddd xmm0, xmm1
movd dword ptr [rip + b], xmm0
mov dword ptr [rip + a], 200
ret
```
If we turn vectorization off:
Clang -O3 -fno-vectorize:
```asm
test(): # @test()
add dword ptr [rip + b], 300
mov dword ptr [rip + a], 200
ret
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVUFv4jwQ_TWTywjk2HEChxwKCKlSpfbwXb69rJzYAa-SOHIMpfz6lU0ChbZUqtbCOMy892Y8YxPR93rTKpUDXwBfRWLntsbmv_7nSRoVRr7lW-e6HtgD0DXQ9cbIwtRuauwG6PoIdC1a-cLtQRyBrIA8DN8pOX3KrjtZdOtQAF1iAWxxMu2NluhU74DOgM4RssGBiCgQ2ArJGextlbEIdOalyrM7PC4xJuMPuvCu-IPioHpy0ythP3TltQXQ-bXdj2KksQsNstWw1_PDuOn3lVjWot3g5Jn5El7DRN-cLNOn5csj-U3OkDHutDbtBhEzjkAZkkNS_Bxwd9ywf0a79BLYQ_BBQt4ZrzJrzF769dA0xJ8L-WqsxM5ZBL6wuvMlxwL4Kgh5VGh5oxrgCwJ8BXR5VNbcLFcxOiGlfBfj0DSfRTnXn69u-P12V8nAjwd-0KGcfFoKjwtZBiBfUKBLP1mYH9Qv2V3Uv4o_5h-QM35dlGDnC--7zDvhLmInxNiLL3vweXqN2eOXNDHQKLlhWeXu3JfHCl8Vup1tca9KZ6w-CqdNi6aqzvfjfKlwUrVmMgLVnTt2fTa_P9V3Tq4IZfymWux22_-2WJHMmZyzuYhUHmeEJ_OUxVm0zbOykGJeyoSXPE5FEYtZmaZE8opmShER6ZwSmpA4zmLKZyybZoIwlqVVmaYiU6KChKhG6Hpa1_vG_9FHuu93Ks9mSRJHtShU3Y-vC5t70KTYbXpISK17119oTrta5f9tFep2qwvtjH1DVVWqdGiq2_a2-GRMh8-d081gjHa2vn3_aLfdFdPSNEDXPtKwTDpr_qjSAV2HbHug65Dw3wAAAP__1-HFaQ">