<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/77044>77044</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[RISCV] When enabling `-force-vector-width`, RVV vectorization has produced wrong results
</td>
</tr>
<tr>
<th>Labels</th>
<td>
bug,
backend:RISC-V,
vectorization
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
sunshaoce
</td>
</tr>
</table>
<pre>
```shell
clang foo.c -w -lm -mllvm -force-vector-width=16 -mllvm -force-vector-interleave=2 --target=riscv64 -march=rv64gcv -O3 --gcc-toolchain=$HOME/riscv --sysroot=$HOME/riscv/riscv64-unknown-elf
```
```c
#include <malloc.h>
#include <stdio.h>
float foo() {
#define LEN 10000
float a[LEN];
float ret = 0.;
for (int i = 0; i < LEN; i++) {
a[i] = 1 + i;
ret += a[i];
}
return ret;
}
int main(int argc, char **argv) { printf("%f\n", foo()); }
```
I got the wrong result.
```
50005000.000000
```
Then I tested several other compilers(gcc, clang on x86) and got the same results.
```
50002896.000000
```
Disabling `-force-vector-width` can avoid this issue.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEVN2O4ygTfZryTQmL4J92LnzRiTv6WppvRppd9V5jwDY7GCLA6Z19-hVOOp1osxqJmCKHqnOqCuAh6NEq1UK1g6rL-BIn59uw2DBxJ1TWO_mzhZqeR5iUMUA7oM_CcDvi4FwukLwjMTOS2ZjTjGRwXihyUiI6T961jBMU3aZ-jGsblTeKnxQUHUNCIvejilB0XgdxqkskM_cihfCnuhzFCcm3AgkZhSDROSMmri0UHbDyf9_-_wLssDoiIeFn8M7Ff2Mfc12Sxf6w7t0SZYZzXtdcL8v7P8VlzQpthVmkQij2MzfGiXyC4uURHKLU7hZdv4NxPKb6AWuAbRGedldnqQZtFX55-YobSumdFMSzJ4dq9-XlK1QdFLt7yKuIUHRI81vIeQTWaBtRn1Eodqu5T0TrAthuHTdqEHGl0lB1q9sGgaWtxc2GlZDtEvyx9waHp-7D9Cou3qbpil_R8zfpm1NDz1K5HwWwPYqJJ_nPwJ65H08XiXj02sZhrSADVg1Q7e1q7j8rm0ax-1TxsMGvOLqIcVL47p0d0auwmJg_9KgopemXU3rTnEdRf5-UxVeMKkQlMaiT8tygi5PyKNx81Eb5AKwZxTnJ9Uo5i381dcqQW3mVFfisLqrCf8tizbb-taxOB94bbUeEmj66rTVFwS3yk9MS46QD6hAWlWeyLeS22PJMtZsnWpas2W7KbGrLvmKSqlJWdJCDqBljsh82dc0kZ3UpM90yykq6oRUtWbNp8qbnounlE68oldVWQUnVzLXJ0xOROz9mK2X7lGgyw3tlwvpIMdYv47nHyebih7ISiufvr7_tydsVOOej_-ZRu_VIVF3m2xSc9MsYoKRGhxg-6aKOZn0GU6C3dNr_SN1T9lelSp37_vaGd4w48YBH7-QilLw7UyFbvGmnGI8BimdgB2CHUcdp6XPhZmCHpOgykaN3fyoRgR3WagRgh7Ug_wQAAP__9--jOw">