https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115068
Bug ID: 115068 Summary: RISC-V: Illegal instruction of vfwadd Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: juzhe.zhong at rivai dot ai Target Milestone: --- #include <stdint.h> #include <riscv_vector.h> vfloat64m8_t test_vfwadd_wf_f64m8_m(vbool8_t vm, vfloat64m8_t vs2, float rs1, size_t vl) { return __riscv_vfwadd_wf_f64m8_m(vm, vs2, rs1, vl); } char global_memory[1024]; void *fake_memory = (void *)global_memory; int main () { asm volatile("fence":::"memory"); vfloat64m8_t vfwadd_wf_f64m8_m_vd = test_vfwadd_wf_f64m8_m(__riscv_vreinterpret_v_i8m1_b8(__riscv_vundefined_i8m1()), __riscv_vundefined_f64m8(), 1.0, __riscv_vsetvlmax_e64m8()); asm volatile(""::"vr"(vfwadd_wf_f64m8_m_vd):"memory"); return 0; } https://compiler-explorer.com/z/rq7K33zE5 main: fence lui a5,%hi(.LC0) flw fa5,%lo(.LC0)(a5) vsetvli a5,zero,e32,m4,ta,ma vfwadd.wf v0,v8,fa5,v0.t ---> vd should not be v0. li a0,0 ret