On Thu, 10 Jul 2025, Richard Biener wrote:

> On Thu, 10 Jul 2025, Jan Hubicka wrote:
> 
> > > The x86 add_stmt_hook relies on the passed vectype to determine
> > > the mode and whether it is FP for a scalar operation.  This is
> > > unreliable now for stmts involving patterns and in the future when
> > > there is no vector type passed for scalar operations.
> > > 
> > > To be least disruptive I've kept using the vector type if it is passed.
> > > 
> > > Bootstrapped and tested on x86_64-unknown-linux-gnu.
> > > 
> > > OK?
> > > 
> > > Thanks
> > > Richard.
> > > 
> > >   * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost): Use
> > >   the LHS of a scalar stmt to determine mode and whether it is FP.
> > > ---
> > >  gcc/config/i386/i386.cc | 6 ++++++
> > >  1 file changed, 6 insertions(+)
> > > 
> > > diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
> > > index ad7360ec71a..26eefadea64 100644
> > > --- a/gcc/config/i386/i386.cc
> > > +++ b/gcc/config/i386/i386.cc
> > > @@ -25798,6 +25798,12 @@ ix86_vector_costs::add_stmt_cost (int count, 
> > > vect_cost_for_stmt kind,
> > >        if (scalar_p)
> > >   mode = TYPE_MODE (TREE_TYPE (vectype));
> > >      }
> > > +  else if (scalar_p && stmt_info)
> > > +    if (tree lhs = gimple_get_lhs (stmt_info->stmt))
> > > +      {
> > > + fp = FLOAT_TYPE_P (TREE_TYPE (lhs));
> > > + mode = TYPE_MODE (TREE_TYPE (lhs));
> > > +      }
> > Makes sense to me, but perhaps it would be good idea to add a comment,
> > since it looks odd at first glance?
> 
> Like
> 
>   /* When we are costing a scalar stmt use the scalar stmt to get at the
>      type of the operation.  */
> 
> ?

I have pushed with this change.

Richard.

Reply via email to