https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118182
--- Comment #2 from Kito Cheng <kito at gcc dot gnu.org> --- (on the train yet but I can describe few details for my current solution 1. Always use vl=1 for vfmv.s.f - this will introduce one extra vsetvli, but at least it correct, and LLVM use same code gen as well 2. Create a pattern to force vd use same reg as vs1 (start value) for all reduction patterns - this could make sure vd[0] always has start value even vl=0 - it will grow few more md pattern, but i don't see better way yet. Patch will send within this workday :P