https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96340
--- Comment #2 from Richard Sandiford <rsandifo at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #1)
> was this also fixed by r14-6416-gf5fc001a84a7db ?
No, it's still unfixed due to:
/* We currently do not support generating simdclones where vector arguments
do not fit into a single vector register, i.e. vector types that are more
than 128-bits large. This is because of how we currently represent such
types in ACLE, where we use a struct to allow us to pass them as arguments
and return.
Hence why we have to check whether the simdlens available for this
simdclone would cause a vector type to be larger than 128-bits, and reject
such a clone. */
unsigned j = 0;
while (j < simdlens.length ())
{
bool remove_simdlen = false;
for (auto elt : vec_elts)
if (known_gt (simdlens[j] * elt.second, 128U))
{
/* Don't issue a warning for every simdclone when there is no
specific simdlen clause. */
if (explicit_p && maybe_ne (clonei->simdlen, 0U))
warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
"GCC does not currently support simdlen %wd for "
"type %qT",
constant_lower_bound (simdlens[j]), elt.first);
remove_simdlen = true;
break;
}
if (remove_simdlen)
simdlens.ordered_remove (j);
else
j++;
}