<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">