This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PR71078] x / abs(x) -> copysign (1.0, x)
On Wed, 27 Jul 2016, Prathamesh Kulkarni wrote:
> On 26 July 2016 at 17:41, Richard Biener <rguenther@suse.de> wrote:
> > On Mon, 25 Jul 2016, Prathamesh Kulkarni wrote:
> >
> >> Hi,
> >> The attached patch tries to fix PR71078.
> >> I am not sure if I have got the converts right.
> >> I put (convert? @0) and (convert1? (abs @1))
> >> to match for cases when operands's types may
> >> be different from outermost type like in pr71078-3.c
> >
> > Types of RDIV_EXPR have to be the same so as you have a
> > match on @0 the converts need to be either both present
> > or not present.
> >
> > + (if (FLOAT_TYPE_P (type)
> >
> > as you special-case several types below please use SCALAR_FLOAT_TYPE_P
> > here.
> >
> > + && ! HONOR_NANS (type)
> > + && ! HONOR_INFINITIES (type))
> > + (switch
> > + (if (type == float_type_node)
> > + (BUILT_IN_COPYSIGNF { build_one_cst (type); } (convert @0)))
> >
> > please use if (types_match (type, float_type_node)) instead of
> > pointer equality. I _think_ you can do better here by using
> > IFN_COPYSIGN but possibly only so if the target supports it.
> > Richard - this seems to be the first pattern in need of
> > generating a builtin where no other was there to match the type
> > to - any idea how we can safely use the internal function here?
> > I see those do not have an expander that would fall back to
> > expanding the regular builtin, correct?
> >
> > Please place the pattern next to
> >
> > /* Optimize -A / A to -1.0 if we don't care about
> > NaNs or Infinities. */
> > (simplify
> > (rdiv:C @0 (negate @0))
> > (if (FLOAT_TYPE_P (type)
> > && ! HONOR_NANS (type)
> > && ! HONOR_INFINITIES (type))
> > { build_minus_one_cst (type); }))
> >
> > where it logically belongs.
> Hi,
> Is this version OK ?
> Bootstrap + test in progress on x86_64-unknown-linux-gnu
Ok.
Thanks,
Richard.
>
> Thanks,
> Prathamesh
> >
> > Thanks,
> > Richard.
> >
> >> test-case (included in patch).
> >> Bootstrap+test in progress on x86_64-unknown-linux-gnu.
> >>
> >> Thanks,
> >> Prathamesh
> >>
> >
> > --
> > Richard Biener <rguenther@suse.de>
> > SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)
>
--
Richard Biener <rguenther@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)