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?