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