https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121048

Robin Dapp <rdapp at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rdapp at gcc dot gnu.org

--- Comment #2 from Robin Dapp <rdapp at gcc dot gnu.org> ---
Those zve32 tests often do single-element vectorization.

In zve32f-1.c we don't vectorize

void
foo1 (int16_t *__restrict f, int32_t *__restrict d, int n)
{
  for (int i = 0; i < n; ++i)
    {
      f[i * 2 + 0] = 1;
      f[i * 2 + 1] = 2;
      d[i] = 3;
    }
} 

any more due to

      if (known_le (TYPE_VECTOR_SUBPARTS (stmt_vectype), 1U))
        return opt_result::failure_at (STMT_VINFO_STMT (stmt_info),
                                       "not vectorized: unsupported "
                                       "data-type in %G",
                                       STMT_VINFO_STMT (stmt_info));

where we give up on the single-element store (but the load has two elements).

Without having had a closer look, would we not only want to fail when all
statements have known_le (..., 1U) rather than just one?

Reply via email to