<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/64419>64419</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Incorrectly compiled vectorized code
</td>
</tr>
<tr>
<th>Labels</th>
<td>
bug,
llvm:codegen,
vectorization
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
igogo-x86
</td>
</tr>
</table>
<pre>
The following code:
```
#include <stdio.h>
__attribute__((noinline)) void func(double *__restrict__ cme, double *__restrict__ qn, double *__restrict__ qsp, double *__restrict__ cwat, double *__restrict__ cmeres, double deltat, unsigned long long N) {
for (unsigned long long i = 0; i < N; ++i) {
if (qn[i] > 2.0)
cme[i] = cme[i] + qn[i] * deltat;
cme[i] = cme[i] + cmeres[i];
}
}
int main() {
double zero[] = {0.0, 0.0, 0.0, 0.0};
double cme[] = {1.0, 1.0, 1.0, 1.0};
double deltat = 1.0;
double qn[] = {2.0, 2.0, 2.0, 2.0};
double qsp[] = {2.0, 2.0, 2.0, 2.0};
double cwat[] = {1.0, 1.0, 1.0, 1.0};
func(cme, qn, /*qsp*/ qsp, /*cwat*/ zero, /* cmeres */zero, deltat, /*N*/4);
printf("%f\n", cme[0]);
return 0;
}
```
gives different results when vectorised and not-vectorised:
```
$ clang++ -mcpu=neoverse-v1 -march=armv8+sve -Ofast bug.c && ./a.out
2.000000
$ clang++ -mcpu=neoverse-v1 -march=armv8+sve -O0 bug.c && ./a.out
1.000000
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVUuP4zYM_jX0RYgh049JDj7EyQboZXvpPfCDdlTIUlaSM9359YUl5zUznbZYI5AUPj6a5EertlYMiqiEvIJ8H9WTO2lTikEPevXXuoga3f0s_zgR67WU-lWogbW6I0i3wPfAr2vBl1_4i6lQrZw6YpDurOuEjk-Qfnt0OR5r54xoJkfHI-AacK20UFIoAtwAbthFi471k2oB152eGkkMcHs8GrLOiNYdj6wdCXDH_kH7Q32ltOcvtO1r7b5Sj2TIPhh0JF3wmJSvaMekVkNYvs_ZwEsVEme9Ngxw_YmhYJDuGYe08scd-z4fASvASjyDLI_oZ6gfCvJKQL5nkH5jGPO5gk928zMX62a2f_qLFXvAwO01n7R6bNl_wllKEyQ3gNkPXvYL2u3gV6EcG2uhPAne5biU942MDgz1IeGl4nOSO_Zxe3kOugCEl3zwT4LHx-3R_6m53nO2-ATeF-8BHQPex-3zt5u5-Cv-nq3_O707zDJkyzSFsQE8AG79lGwBD9d5CeIwHl7uW3NTLO1nQXnV3acjWH0P6mym6RNDbqezEcr1nhEImPeQ75Q_7pZW8pld79wNuckodu_QnWjvvk9-HcSFLOtE35Mh5ZghO0ln2euJFLtQ67QRljpWq44p7VZ30b99_TLWyloNYXDZamzPE6R7RfpCxtLqkrDVWJv2BOm-NuNlDVjZC7HV731tHWumIW4ZYAFYsBjwUMd6cgEbY-6fX47EvwyTPId5zi_qyrTbpJs6ojIpNkmSv_AMo1OJDU_adJ1QnmyQF0WRZ23H11nR1V3DN30kSuSY8jXPkjTnGcYcE-z7rMnSTZGlOUHGaayFjKW8jLE2QySsnagssizZRLJuSFp_VSE20xAIAYizNaTb-WIaSN3ES8Peaie0l-b7yJSz8aqZBgsZl8I6ew_mhJNU_qZabQy1Tv5krR7PQlJ35cMbdf7-iyYjy5NzZztzYSb1YRDuNDVxq0fAg3-jsK3ORv9JrQM8-GQs4MHn83cAAAD__2KKDkU">