https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120828
Bug ID: 120828 Summary: [16 Regression] Unrecognized insn after recent RISC-V change for .vf support Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: law at gcc dot gnu.org Target Milestone: --- This is marginally reduced from rvv/base/bug-5.c. Compile with -O2 -march=rv64gcv -mabi=lp64d to trigger an unrecognized insn: #include "riscv_vector.h" vfloat32m1_t frob() { vfloat32m1_t vb; vfloat32m1_t vc; vfloat32m1_t vd = __riscv_vfmsub_vf_f32m1 (vb, 1.0f, vc, 1); return vd; } j.c:12:1: error: unrecognizable insn: 12 | } | ^ (insn 8 7 12 2 (set (reg/v:RVVM1SF 136 [ <retval> ]) (if_then_else:RVVM1SF (unspec:RVVMF32BI [ (const_vector:RVVMF32BI repeat [ (const_int 1 [0x1]) ]) (const_int 1 [0x1]) (const_int 2 [0x2]) repeated x2 (const_int 0 [0]) (const_int 7 [0x7]) (reg:SI 66 vl) (reg:SI 67 vtype) (reg:SI 69 frm) ] UNSPEC_VPREDICATE) (minus:RVVM1SF (mult:RVVM1SF (vec_duplicate:RVVM1SF (reg/v:RVVM1SF 134 [ vb ])) (reg:SF 137)) (reg/v:RVVM1SF 135 [ vc ])) (reg/v:RVVM1SF 134 [ vb ]))) "j.c":10:21 -1 (nil)) during RTL pass: vregs Note the failure is in the .vregs pass indicating the initial RTL generation is incorrect.