On Mon, 7 Aug 2017, Tamar Christina wrote:

> Hi Richard,
> 
> >               switch (code)
> >                 {
> >                 case MULT_EXPR:
> >                   if (!convert_mult_to_widen (stmt, &gsi)
> >                       && !convert_expand_mult_copysign (stmt, &gsi)
> >                       && convert_mult_to_fma (stmt,
> >                                               gimple_assign_rhs1 (stmt),
> >                                               gimple_assign_rhs2 (stmt)))
> > 
> > given you likely do not want x * copysign (1, y) + z to be transformed into
> > FMA but still use xorsign?
> 
> Ah yes, that's correct, thanks!
> 
> > 
> > I am also eventually missing a single-use check on the copysign result.  If 
> > the
> > result of copysign is used in multiple places do we want to keep the 
> > multiply
> > or is the xorsign much cheaper?
> > The only eventual disadvantage would be higher register pressure if y and
> > copysing (1, y) were not live at the same time before.
> 
> No the transformation should be limited for single use, I've updated the 
> patch accordingly.

+static bool
+is_copysign_call_with_1 (gimple *call)
+{
+  gcall *c = dyn_cast <gcall *> (call);
+  if (! c)
+    return false;
+
+  enum combined_fn code = gimple_call_combined_fn (call);

use c instead of call.

Ok with that change.

Thanks,
Richard.

> Thanks,
> Tamar
> 
> > 
> > 
> > > gcc/
> > > 2017-08-03  Tamar Christina  <tamar.christ...@arm.com>
> > >       Andrew Pinski <pins...@gmail.com>
> > >
> > >   PR middle-end/19706
> > >   * internal-fn.def (XORSIGN): New.
> > >   * optabs.def (xorsign_optab): New.
> > >   * tree-ssa-math-opts.c (is_copysign_call_with_1): New.
> > >   (convert_expand_mult_copysign): New.
> > >   (pass_optimize_widening_mul::execute): Call
> > convert_expand_mult_copysign.
> > >
> > >
> > 
> > --
> > Richard Biener <rguent...@suse.de>
> > SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton,
> > HRB 21284 (AG Nuernberg)
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 
21284 (AG Nuernberg)

Reply via email to