<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/66163>66163</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [clang][vectorize] -O2 vectorize will get wrong result
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang,
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          MLsheng
      </td>
    </tr>
</table>

<pre>
    clang: 15.0.4 arm64be
#### demo.c

```
#include <stdio.h>
#define N 32
int a[N], b[N];
int k[N];

void f1 () {
  int i;
  for (i = 0; i < N/4; i++) {
      k[4*i] = a[4*i] < b[4*i] ? 1 : 0;
      k[4*i+1] = a[4*i+1] < b[4*i+1] ? 1 : 0;
      k[4*i+2] = a[4*i+2] < b[4*i+2] ? 1 : 0;
      k[4*i+3] = a[4*i+3] < b[4*i+3] ? 1 : 0;
  }
}

int main () {
  int i;
  for (i = 0; i < N; i++) {
      switch (i % 3)
       {
         case 0: a[i] = 0; b[i] = 1; break;
         case 1: a[i] = 0; b[i] = 0; break;
         case 2: a[i] = 0; b[i] = 0; break;
       }
  }
  f1 ();
  for (i = 0; i < N; i++) {
    printf("%d : %d\n",i,k[i]);
  }
  return 0;
}
```

#### compile command

```
clang demo.c -o demo.exe -static -O2
```

#### output

wrong:

```
0 : 0
1 : 1
2 : 0
3 : 1
4 : 1
5 : 0
6 : 1
7 : 0
8 : 0
9 : 0
10 : 0
11 : 0
12 : 0
13 : 1
14 : 0
15 : 1
16 : 1
17 : 0
18 : 1
19 : 0
20 : 0
21 : 0
22 : 0
23 : 0
24 : 0
25 : 1
26 : 0
27 : 1
28 : 1
29 : 0
30 : 1
31 : 0
```
It's a vectorize problem : with`-fno-tree-vectorize` option,result right

```
0 : 1
1 : 0
2 : 0
3 : 1
4 : 0
5 : 0
6 : 1
7 : 0
8 : 0
9 : 1
10 : 0
11 : 0
12 : 1
13 : 0
14 : 0
15 : 1
16 : 0
17 : 0
18 : 1
19 : 0
20 : 0
21 : 1
22 : 0
23 : 0
24 : 1
25 : 0
26 : 0
27 : 1
28 : 0
29 : 0
30 : 1
31 : 0
```

through  `-mllvm -opt-bisect-limit=` command can locate the pass that caused the error is `InstCombinePass`

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVu1uqzgQfZrJnxGRPQYSfuRHPm6kK-129xWMcYK3gCNs2t19-hUfpbi32xspt0LEnjOcOdjHU6Rz5tpovYPkAMlpJTtf2nb3-2-u1M11ldvin52qZHMFsUeerNk6RtnWaZxrYCdgeyAxX1jo2q7VBIz3lE3XW7ZpVNUVGkEcnS-MXZcgvs1ooS-m0fiEgsaYaTxKSA5PkJyAjpi_jcXhPeH5Y3C8v1hT4IUj0BYoQ9hMKGL_kJmzES-27bMMgjghA3HAfnjEJ6BzPEyBDsMV0PR_fe0YaG8gOQ2PyzAwSl4EzsixX022qB8S0YH_SDYHl4Rz8B5S-oyUPiOl-0nFZ6TiM1Lx_6SwOU37Ng_mva2laR7awS93z70ar8rpSUpQAGVL_GM-IirpdF9hP7zyvO1DzXwZ4UOk1fL5w_q9kfA7SNjPSOghknnBg-F8Zh5d4FtrGn8ZuAgoKYad7weQHJshdjRAx-dJbFhxIajVvmubhWfejfKhwfzYlJStb6bS_W8tm-KL7jQ0uqmJYWTHkf5bY-S89EZh9AfdW9V2_tb5Jfza2uYK385wOEK2_0IGm87HMBkPCx8ntETEEomXk2SZli6RzRLZLidZUDSUwINZIIIHKngcYEmABUJ4oIRvAyzQQoEWCrRQoIVEMAu0UKCF0gDbBFighQItgi0xEWj5sInfPdDGocQXrbxtzb8ab63NK10PD70aX0LKoktjI99qHc1pkDK0N29sM3lle2y16yqPrbmW_qe-4UvfsPt8wx71Db_bNzzwDbvbN-yX-Ibf7Rse-Ibd7Rv2oG_Guy9b211LxN4jdVW91BjZm49y47TyUWVq40Gceq9MbQ2VbLCySnqNvtR4k86hL6VHJTuniyGo29a2aFxP-71x_mjr3DT6T-ncLGBV7ESRiUyu9I6nWZyk20zQqtyR2ihieZFsc5Ft4rhIeXbZykwXaSKSlK_MjhgJlnHBOPE4W0um0o3iiVJbwZRSEDNdS1Ot-xda2_a6Ms51epemPBWrSua6csOHKNH4zTn8gwCiRr_ikNpHktOq3fUMUd5dHcSsMs67d05vfDV8z44cyQmSw_vpSk59F1-cyldTVXjVHof-jONZW3VttSu9vzkQe6Az0PlqfNnla2VroHNfbPqJbq39SysPdB4kOqDz8EL_BQAA__-7Y6x9">