https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109672
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
I think the issue is rev. r14-322-g821ef93976e750.
We enter with vector(2) short using SImode and a PLUS_EXPR. Then
bool using_emulated_vectors_p = vect_emulated_vector_p (vectype);
yields true, but we've figured there's target support for SImode add so
fail to hit
/* Check only during analysis. */
if (maybe_ne (GET_MODE_SIZE (vec_mode), UNITS_PER_WORD)
|| (!vec_stmt && !vect_can_vectorize_without_simd_p (code)))
return false;
that we mash bit operations and arithmetics in the used predicates makes
things a bit iffy - for bit operations we can really let things go. In
theory we could also handle this SImode case (no need to always use
word_mode - but at least for some targets subword operations might be
more expensive).