Hi Richard,

Thanks for the feedback, I'll update the patch accordingly.

> What does
> 
> >       (copysigns @0 (negate @1)): Likewise.
> 
> do?
> 

Sorry this slipped through my clean-up. The patch doesn't actually contain this 
definition anymore.

> Third, new IL that is present throughout the compilation always poses the
> risk that while passes may be able to handle copysign they do not handle
> xorsign (vectorization?).  In this case it looks like the matching is simply 
> to
> enhance RTL expansion which means it should ideally be done close to RTL
> expansion only.  If you write
> 
> (match (xorsign_p @0 @1)
>  (mult:c (copysign real_onep @0) @1))
> 
> you can call gimple_xorsign_p (you need to declare it, see the generated
> gimple-match.c file for the definition) from, say,
> pass_optimize_widening_mul, which despite its name is used as a kitchen-
> sink for late GIMPLE pattern-matching stuff to enhance RTL expansion /
> instruction selection.
> 
> Thanks,
> Richard.
> 
> >
> > gcc/
> > 2017-06-07  Tamar Christina  <tamar.christ...@arm.com>
> >
> >     * builtins.def (BUILT_IN_XORSIGN, BUILT_IN_XORSIGNF): New.
> >     (BUILT_IN_XORSIGNL, BUILT_IN_XORSIGN_FLOAT_NX): Likewise.
> >     * match.pd (mult (COPYSIGN:s real_onep @0) @1): New simplifier.
> >     (mult (COPYSIGN:s real_mus_onep @0) @1): Likewise.
> >     (copysigns @0 (negate @1)): Likewise.
> >     * builtins.c (expand_builtin_copysign): Promoted local to argument.
> >     (expand_builtin): Added CASE_FLT_FN_FLOATN_NX
> (BUILT_IN_XORSIGN) and
> >     CASE_FLT_FN (BUILT_IN_XORSIGN).
> >     (BUILT_IN_COPYSIGN): Updated function call.
> >     * optabs.h (expand_copysign): New bool.
> >     (expand_xorsign): New.
> >     * optabs.def (xorsign_optab): New.
> >     * optabs.c (expand_copysign): New parameter.
> >     * fortran/f95-lang.c (xorsignl, xorsign, xorsignf): New.
> >     * fortran/mathbuiltins.def (XORSIGN): New.
> >
> > gcc/testsuite/
> > 2017-06-07  Tamar Christina  <tamar.christ...@arm.com>
> >
> >     * gcc.dg/tree-ssa/xorsign.c: New.
> >     * gcc.dg/xorsign_exec.c: New.
> >     * gcc.dg/vec-xorsign_exec.c: New.
> >     * gcc.dg/tree-ssa/reassoc-39.c (f2, f3): Updated constant to 2.
> 
> --
> Richard Biener <rguent...@suse.de>
> SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton,
> HRB 21284 (AG Nuernberg)

Reply via email to