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).