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.

Reply via email to