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

Hongtao Liu <liuhongt at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization
             Target|                            |x86_64-*-* i?86-*-*

--- Comment #1 from Hongtao Liu <liuhongt at gcc dot gnu.org> ---
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.

Reply via email to