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

--- Comment #7 from Xi Ruoyao <xry111 at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #6)

> Can you check if the following makes things work for you?
> 
> diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
> index 67f6e5df255..7496e31164c 100644
> --- a/gcc/tree-vect-stmts.cc
> +++ b/gcc/tree-vect-stmts.cc
> @@ -14200,7 +14200,6 @@ supportable_widening_operation (vec_info *vinfo,
>          are properly set up for the caller.  If we fail, we'll continue with
>          a VEC_WIDEN_MULT_LO/HI_EXPR check.  */
>        if (vect_loop
> -         && STMT_VINFO_RELEVANT (stmt_info) == vect_used_by_reduction
>           && !nested_in_vect_loop_p (vect_loop, stmt_info)
>           && supportable_widening_operation (vinfo, VEC_WIDEN_MULT_EVEN_EXPR,
>                                              stmt_info, vectype_out,

Still not.  I get something like

t1.c:5:20: note:   ==> examining pattern statement: patt_24 = _1 w* _3; 
t1.c:5:20: note:   vect_is_simple_use: operand x[i_15], type of def: internal
t1.c:5:20: note:   vect_is_simple_use: vectype vector(8) short int 
t1.c:5:20: note:   vect_is_simple_use: operand y[i_15], type of def: internal
t1.c:5:20: note:   vect_is_simple_use: vectype vector(8) short int 
t1.c:5:20: missed:   conversion not supported by target.
t1.c:5:20: note:   vect_is_simple_use: operand x[i_15], type of def: internal
t1.c:5:20: note:   vect_is_simple_use: vectype vector(8) short int 
t1.c:3:5: missed:   not vectorized: relevant stmt not supported: patt_24 = _1
w* _3; 
t1.c:5:20: missed:  bad operation or unsupported loop bound.
t1.c:5:20: note:  ***** Analysis failed with vector mode V8HI

As an experiment I renamed the {even,odd} expanders to {lo,hi} (doing so is
definitely wrong in reality) and I got the "expected" result.

Reply via email to