On Tue, Sep 05, 2017 at 03:12:47PM +0200, Richard Biener wrote:
> On Tue, 5 Sep 2017, Tamar Christina wrote:
>
> >
> >
> > > -----Original Message-----
> > > From: Richard Biener [mailto:[email protected]]
> > > Sent: 05 September 2017 13:51
> > > To: Tamar Christina
> > > Cc: Andrew Pinski; Andreas Schwab; Jon Beniston; [email protected];
> > > nd
> > > Subject: RE: [RFC, vectorizer] Allow single element vector types for
> > > vector
> > > reduction operations
> > >
> > > On Tue, 5 Sep 2017, Richard Biener wrote:
> > >
> > > > On Tue, 5 Sep 2017, Tamar Christina wrote:
> > > >
> > > > > Hi Richard,
> > > > >
> > > > > That was an really interesting analysis, thanks for the details!
> > > > >
> > > > > Would you be submitting the patch you proposed at the end as a fix?
> > > >
> > > > I'm testing it currently.
> > >
> > > Unfortunately it breaks some required lowering. I'll have to more closely
> > > look at this.
> >
> > Ah, ok. In the meantime, can this patch be reverted? It's currently
> > breaking spec for us so we're
> > Not able to get any benchmarking numbers.
>
> Testing the following instead:
Any news on this?
VP.
>
> Index: gcc/tree-vect-generic.c
> ===================================================================
> --- gcc/tree-vect-generic.c (revision 251642)
> +++ gcc/tree-vect-generic.c (working copy)
> @@ -1640,7 +1640,7 @@ expand_vector_operations_1 (gimple_stmt_
> || code == VEC_UNPACK_FLOAT_LO_EXPR)
> type = TREE_TYPE (rhs1);
>
> - /* For widening/narrowing vector operations, the relevant type is of
> the
> + /* For widening vector operations, the relevant type is of the
> arguments, not the widened result. VEC_UNPACK_FLOAT_*_EXPR is
> calculated in the same way above. */
> if (code == WIDEN_SUM_EXPR
> @@ -1650,9 +1650,6 @@ expand_vector_operations_1 (gimple_stmt_
> || code == VEC_WIDEN_MULT_ODD_EXPR
> || code == VEC_UNPACK_HI_EXPR
> || code == VEC_UNPACK_LO_EXPR
> - || code == VEC_PACK_TRUNC_EXPR
> - || code == VEC_PACK_SAT_EXPR
> - || code == VEC_PACK_FIX_TRUNC_EXPR
> || code == VEC_WIDEN_LSHIFT_HI_EXPR
> || code == VEC_WIDEN_LSHIFT_LO_EXPR)
> type = TREE_TYPE (rhs1);
>
>
> also fix for a bug uncovered by the previous one:
>
> Index: gcc/gimple-ssa-strength-reduction.c
> ===================================================================
> --- gcc/gimple-ssa-strength-reduction.c (revision 251710)
> +++ gcc/gimple-ssa-strength-reduction.c (working copy)
> @@ -1742,8 +1742,7 @@ find_candidates_dom_walker::before_dom_c
> slsr_process_ref (gs);
>
> else if (is_gimple_assign (gs)
> - && SCALAR_INT_MODE_P
> - (TYPE_MODE (TREE_TYPE (gimple_assign_lhs (gs)))))
> + && INTEGRAL_TYPE_P (TREE_TYPE (gimple_assign_lhs (gs))))
> {
> tree rhs1 = NULL_TREE, rhs2 = NULL_TREE;
>
>