https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115487
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Building chain #7... Adding insn 34 to chain #7 r133 def in insn 33 isn't convertible Mark r133 def in insn 33 as requiring both modes in chain #7 Collected chain #7... insns: 34 defs to convert: r133 Computing gain for chain #7... Instruction gain 8 for 34: [r103:SI]=r133:DI Instruction conversion gain: 8 Registers conversion cost: 6 Total gain: 2 Converting chain #7... deferring rescan insn with uid = 89. deferring rescan insn with uid = 90. deferring rescan insn with uid = 91. Copied r133 to a vector register r141 for insn 33 the question is why we start the chain at 33: r133:DI=vec_select(r131:V4SI#0,parallel) rather than at 28: r131:V4SI=[r102:SI] or why we are working with SImode regs/vectors in the lowering. The code before STV2 looks perfectly OK, and most definitely the costs are totally off here.
