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

Reply via email to