https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126160
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
Last reconfirmed| |2026-07-08
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Hongtao Liu from comment #1)
> Looks like vectorizer hard requirement
>
> Element count (vectorizable_call, gcc/tree-vect-stmts.cc:3574):
>
> nunits_in = TYPE_VECTOR_SUBPARTS (vectype_in);
>
> nunits_out = TYPE_VECTOR_SUBPARTS (vectype_out);
>
> if (nunits_in * 2 == nunits_out) modifier = NARROW;
>
> else if (nunits_out == nunits_in) modifier = NONE;
>
> else if (nunits_out * 2 == nunits_in) modifier = WIDEN;
>
> else return false;
>
> The internal function is only tried for NONE or NARROW (:3604). So the
> vectorizer needs the same number of lanes (or a 2× narrowing). Same element
> count: required.
>
>
> But here it's WIDEN.
Note there's also vectorizable_conversion which might be a better fit
(that would also in theory support multi-step conversions).
Confirmed. The code generation part for WIDEN isn't implemented.