https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112623
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
The vectorizer usually checks the operand mode, like with
if (insn_data[icode1].operand[0].mode == TYPE_MODE (narrow_vectype))
but yeah, ambiguities are bad here. When designing these patterns no
such ambiguities existed. Can't the patterns work out both? I guess
in the testcases case the issue points to vector lowering failing to
perform this kind of check. Let me have a quick try.