<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/64982>64982</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[SLPVectorizer] clang failed vectorize the loop in the form of mixed sub/add
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
vfdff
</td>
</tr>
</table>
<pre>
* test: https://godbolt.org/z/11TbEx119
```
void sub4x4_dct(int16_t d[16], int16_t dct[16], uint8_t *pix1, uint8_t *pix2 )
{
int16_t tmp[16];
for( int i = 0; i < 4; i++ )
{
int s03 = d[i*4+0] + d[i*4+3];
int s12 = d[i*4+1] + d[i*4+2];
int d03 = d[i*4+0] - d[i*4+3];
int d12 = d[i*4+1] - d[i*4+2];
tmp[0*4+i] = s03 + s12;
tmp[1*4+i] = 2*d03 + d12;
tmp[2*4+i] = s03 - s12;
tmp[3*4+i] = d03 - 2*d12;
}
for( int i = 0; i < 4; i++ )
{
int s03 = tmp[i*4+0] + tmp[i*4+3];
int s12 = tmp[i*4+1] + tmp[i*4+2];
int d03 = tmp[i*4+0] - tmp[i*4+3];
int d12 = tmp[i*4+1] - tmp[i*4+2];
dct[i*4+0] = s03 + s12;
dct[i*4+1] = 2*d03 + d12;
dct[i*4+2] = s03 - s12;
dct[i*4+3] = d03 - 2*d12;
}
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVU-P2j4Q_TSTywhkj_P3kEOy-eX0O1Rq1esqwQ64ChglDqX76asYFghsdjlUQmIYz3tvbD88Vd_r9U6pFIIcgsKrBrsxXXpoZNN4tZF_UqAMreotiAw31u57EBlQCVSujaxNa5emWwOVb0Al5z_q_46cJ8AKYBmE7PxxPw9GS-yH2j_6r3JlgWK9szx8tSghyHkIQQH0gpfkyt6mB72z8atFoGyvj_wxRQj0LhzlpwARL3x2u7_wifP6taoxHVA8FqNGEAUyELkLX9B3IVAOlF9FRtRE6CyGPROOYdyVBsp8oJxBUOAIv02K21YmDJweGPhHDDRhGKFyTnzxnLSck17MC09ZTufMzoXatS0KxNO5UD5GnB7Ez9dzDyOgTF6AchZIH-stPlUT9yDpIE7zDgRR8a8tc-uVUz8Pbpmmv_TLtJx_zEKzVz_fy-LZTuR8J_ccn1jo9NefnsZnFprW8-e9MwXSF96ZVotr9TO2uQTvj6InUyETkVSeSnmYUBIylkTeJiXuS1nzIJJBLRiTScRDFsarmMci4CrwdEqMBIsp4MznIloypqoqkqpqAlnHUQU-U9tKt8u2PWzH99nTfT-oNPSTmLy2qlXbuxefaKd-o1sEGrfvdemIWdTDugeftbq3_ZXFatu6UfH9_28_1cqaTr-pbjyHVVvt1thUulUSD-9LaDcKW2P2qHcubky3RdPgVh-VmwVAZSWlN3RtejdctN0M9XJltkDl2MD5a7HvzC81To_Std0DlW5bfwMAAP__R9KwCw">