https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117947

            Bug ID: 117947
           Summary: [14/15 Regression] GCC miscompile rvv intrinsics at
                    `-O2` and `-O3`, use `vlenb` after an inappropriate
                    `vsetvli`
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rvismith1115 at gmail dot com
  Target Milestone: ---

Created attachment 59811
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59811&action=edit
reduced_testcase

code link: https://godbolt.org/z/zhToG9TfM

line 159-164, `a2` is set by `vlenb` in `e32m4`:
```
        vsetvli zero,zero,e32,m4,ta,ma
        vs8r.v  v16,0(sp)
        vmv.s.x v24,s4
        vmv.s.x v16,t0
        csrr    a2,vlenb
        vsetvli zero,zero,e16,m4,ta,ma
```
then, `a2` is used to update ptr in `e16m4`:
```
164:        vsetvli zero,zero,e16,m4,ta,ma
183:        vfmsub.vv       v4,v4,v4
185:        vsetvli zero,zero,e8,m2,ta,ma
196:        vse16.v v4,0(a6)
197:        add     a6,a6,a2    (a bug occurred)
```

compile flag:
```
riscv64-unknown-elf-gcc -O3 -march=rv64gcv_zvfh -mabi=lp64d -Wno-psabi -static
```
  • [Bug target/117947] New: [14/15... rvismith1115 at gmail dot com via Gcc-bugs

Reply via email to