Re: Re: [PATCH] [PHIOPT] Add A ? B + CST : B match and simplify optimizations

2022-11-09 Thread Richard Biener via Gcc-patches
On Tue, Nov 8, 2022 at 4:51 PM 钟云德  wrote:

> At 2022-11-08 22:58:34, "Richard Biener" 
> wrote:
>
> >On Sat, Nov 5, 2022 at 10:03 AM Zhongyunde via Gcc-patches
> > wrote:
> >>
> >>
> >> > -Original Message-
> >> > From: Andrew Pinski [mailto:pins...@gcc.gnu.org]
> >> > Sent: Saturday, November 5, 2022 2:34 PM
> >> > To: Zhongyunde 
> >> > Cc: hongtao@intel.com; gcc-patches@gcc.gnu.org; Zhangwen(Esan)
> >> > ; Weiwei (weiwei, Compiler)
> >> > ; zhong_1985...@163.com
> >> > Subject: Re: [PATCH] [PHIOPT] Add A ? B + CST : B match and simplify
> >> > optimizations
> >> >
> >> > On Fri, Nov 4, 2022 at 11:17 PM Zhongyunde 
> >> > wrote:
> >> > >
> >> > > hi,
> >> > >   This patch is try to fix the issue
> >> > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107190,
> >> > > would you like to give me some suggestion, thanks.
> >> >
> >> > This seems like a "simplified" version of
> >> > https://gcc.gnu.org/pipermail/gcc-patches/2021-November/584411.html
> >> > which just handles power of 2 constants where we know the cond will be
> >> > removed.
> >> > We could do even more "simplified" of 1 if needed really.
> >> > What is the IR before PHI-OPT? Is it just + 1?
> >>
> >> Thanks for your attention. It is + 4294967296 before PHI-OPT  (See detail 
> >> https://gcc.godbolt.org/z/6zEc6ja1z)
> >> So we should keep matching the power of 2 constants ?
> >>
> >> > Also your pattern can be simplified to use integer_pow2p in the match 
> >> > part
> >> > instead of INTEGER_CST.
> >> >
> >> Apply your comment, thanks
> >
> >How does the patch fix the mentioned bug?  match.pd patterns should make 
> >things
> >"simpler" but x + (a << C') isn't simpler than a ? x + C : x.  It
> >looks you are targeting
> >PHI-OPT here, so maybe instead extend value_replacement to handle this case,
> >it does look similar to the case with neutral/absorbing element there?
> >
> >Richard.
>
> Thanks. This patch try to fix the 1st issued mentioned in 107090 – [aarch64] 
> sequence logic should be combined with mul and umulh (gnu.org) 
> <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107090>
> Sure, I'll take a look at the function value_replacement.
> I have also noticed that the function of two_value_replacement is very close 
> to patch I want to achieve, and it may be easy to extend.
> It seems can be expressed equally in match.pd (called by 
> match_simplify_replacement), so how do we
> choose where to implement may be better?
>
>
I think that if we realize that we don't want a simplification to always
apply (like by checking
for canonicalize_math_p ()), then we should look for a pass which is a good
fit and since
you add the pattern to trigger a PHI-OPT optimization that looked like an
obvious choice ...

```
>
>   /* Do the replacement of conditional if it can be done.  */ 
> if (!early_p  
>   
> && !diamond_p 
>   && 
> two_value_replacement (bb, bb1, e2, phi, arg0, arg1)) 
>  cfgchanged = true;   
>  
> else if (!diamond_p   
>&& 
> match_simplify_replacement (bb, bb1, e1, e2, phi, 
>   arg0, 
> arg1, early_p)) 
> cfgchanged = true;
>
> ```
> >> > Thanks, >> > Andrew >> >>
>
>


Re:Re: [PATCH] [PHIOPT] Add A ? B + CST : B match and simplify optimizations

2022-11-08 Thread 钟云德 via Gcc-patches
At 2022-11-08 22:58:34, "Richard Biener"  wrote:

>On Sat, Nov 5, 2022 at 10:03 AM Zhongyunde via Gcc-patches
> wrote:
>>
>>
>> > -Original Message-
>> > From: Andrew Pinski [mailto:pins...@gcc.gnu.org]
>> > Sent: Saturday, November 5, 2022 2:34 PM
>> > To: Zhongyunde 
>> > Cc: hongtao@intel.com; gcc-patches@gcc.gnu.org; Zhangwen(Esan)
>> > ; Weiwei (weiwei, Compiler)
>> > ; zhong_1985...@163.com
>> > Subject: Re: [PATCH] [PHIOPT] Add A ? B + CST : B match and simplify
>> > optimizations
>> >
>> > On Fri, Nov 4, 2022 at 11:17 PM Zhongyunde 
>> > wrote:
>> > >
>> > > hi,
>> > >   This patch is try to fix the issue
>> > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107190,
>> > > would you like to give me some suggestion, thanks.
>> >
>> > This seems like a "simplified" version of
>> > https://gcc.gnu.org/pipermail/gcc-patches/2021-November/584411.html
>> > which just handles power of 2 constants where we know the cond will be
>> > removed.
>> > We could do even more "simplified" of 1 if needed really.
>> > What is the IR before PHI-OPT? Is it just + 1?
>>
>> Thanks for your attention. It is + 4294967296 before PHI-OPT  (See detail 
>> https://gcc.godbolt.org/z/6zEc6ja1z)
>> So we should keep matching the power of 2 constants ?
>>
>> > Also your pattern can be simplified to use integer_pow2p in the match part
>> > instead of INTEGER_CST.
>> >
>> Apply your comment, thanks
>
>How does the patch fix the mentioned bug?  match.pd patterns should make things
>"simpler" but x + (a << C') isn't simpler than a ? x + C : x.  It
>looks you are targeting
>PHI-OPT here, so maybe instead extend value_replacement to handle this case,
>it does look similar to the case with neutral/absorbing element there?
>

>Richard.


Thanks. This patch try to fix the 1st issued mentioned in107090 – [aarch64] 
sequence logic should be combined with mul and umulh (gnu.org)
Sure, I'll take a look at the function value_replacement. 
I have also noticed that the function of two_value_replacement is very close to 
patch I want to achieve, and it may be easy to extend.
It seems can be expressed equally in match.pd (called by 
match_simplify_replacement), so how do we
choose where to implement may be better?
```
|
/* Do the replacement of conditional if it can be done.  */if (!early_p 

   && !diamond_p
   && 
two_value_replacement (bb, bb1, e2, phi, arg0, arg1))   
   cfgchanged = true;   
   elseif 
(!diamond_p 
 && match_simplify_replacement (bb, 
bb1, e1, e2, phi,   
arg0, arg1, early_p))   
  cfgchanged = true;
  
|
```
>> > Thanks, >> > Andrew >> >>

Re: [PATCH] [PHIOPT] Add A ? B + CST : B match and simplify optimizations

2022-11-08 Thread Richard Biener via Gcc-patches
On Sat, Nov 5, 2022 at 10:03 AM Zhongyunde via Gcc-patches
 wrote:
>
>
> > -Original Message-
> > From: Andrew Pinski [mailto:pins...@gcc.gnu.org]
> > Sent: Saturday, November 5, 2022 2:34 PM
> > To: Zhongyunde 
> > Cc: hongtao@intel.com; gcc-patches@gcc.gnu.org; Zhangwen(Esan)
> > ; Weiwei (weiwei, Compiler)
> > ; zhong_1985...@163.com
> > Subject: Re: [PATCH] [PHIOPT] Add A ? B + CST : B match and simplify
> > optimizations
> >
> > On Fri, Nov 4, 2022 at 11:17 PM Zhongyunde 
> > wrote:
> > >
> > > hi,
> > >   This patch is try to fix the issue
> > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107190,
> > > would you like to give me some suggestion, thanks.
> >
> > This seems like a "simplified" version of
> > https://gcc.gnu.org/pipermail/gcc-patches/2021-November/584411.html
> > which just handles power of 2 constants where we know the cond will be
> > removed.
> > We could do even more "simplified" of 1 if needed really.
> > What is the IR before PHI-OPT? Is it just + 1?
>
> Thanks for your attention. It is + 4294967296 before PHI-OPT  (See detail 
> https://gcc.godbolt.org/z/6zEc6ja1z)
> So we should keep matching the power of 2 constants ?
>
> > Also your pattern can be simplified to use integer_pow2p in the match part
> > instead of INTEGER_CST.
> >
> Apply your comment, thanks

How does the patch fix the mentioned bug?  match.pd patterns should make things
"simpler" but x + (a << C') isn't simpler than a ? x + C : x.  It
looks you are targeting
PHI-OPT here, so maybe instead extend value_replacement to handle this case,
it does look similar to the case with neutral/absorbing element there?

Richard.

>
> > Thanks,
> > Andrew
>
>


RE: [PATCH] [PHIOPT] Add A ? B + CST : B match and simplify optimizations

2022-11-05 Thread Zhongyunde via Gcc-patches

> -Original Message-
> From: Andrew Pinski [mailto:pins...@gcc.gnu.org]
> Sent: Saturday, November 5, 2022 2:34 PM
> To: Zhongyunde 
> Cc: hongtao@intel.com; gcc-patches@gcc.gnu.org; Zhangwen(Esan)
> ; Weiwei (weiwei, Compiler)
> ; zhong_1985...@163.com
> Subject: Re: [PATCH] [PHIOPT] Add A ? B + CST : B match and simplify
> optimizations
> 
> On Fri, Nov 4, 2022 at 11:17 PM Zhongyunde 
> wrote:
> >
> > hi,
> >   This patch is try to fix the issue
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107190,
> > would you like to give me some suggestion, thanks.
> 
> This seems like a "simplified" version of
> https://gcc.gnu.org/pipermail/gcc-patches/2021-November/584411.html
> which just handles power of 2 constants where we know the cond will be
> removed.
> We could do even more "simplified" of 1 if needed really.
> What is the IR before PHI-OPT? Is it just + 1?

Thanks for your attention. It is + 4294967296 before PHI-OPT  (See detail 
https://gcc.godbolt.org/z/6zEc6ja1z)
So we should keep matching the power of 2 constants ?

> Also your pattern can be simplified to use integer_pow2p in the match part
> instead of INTEGER_CST.
> 
Apply your comment, thanks

> Thanks,
> Andrew




0001-PHIOPT-Add-A-B-op-CST-B-match-and-simplify-optimizat.patch
Description: 0001-PHIOPT-Add-A-B-op-CST-B-match-and-simplify-optimizat.patch


Re: [PATCH] [PHIOPT] Add A ? B + CST : B match and simplify optimizations

2022-11-04 Thread Andrew Pinski via Gcc-patches
On Fri, Nov 4, 2022 at 11:17 PM Zhongyunde  wrote:
>
> hi,
>   This patch is try to fix the issue 
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107190,
> would you like to give me some suggestion, thanks.

This seems like a "simplified" version of
https://gcc.gnu.org/pipermail/gcc-patches/2021-November/584411.html
which just handles power of 2 constants where we know the cond will be
removed.
We could do even more "simplified" of 1 if needed really.
What is the IR before PHI-OPT? Is it just + 1?

Also your pattern can be simplified to use integer_pow2p in the match
part instead of INTEGER_CST.

Thanks,
Andrew

>
> ~/source/gccUpstreamDir/gcc/testsuite(cfg) » git format-patch -1 
> --start-number=00 HEAD -o ~/patch
> /home/zhongyunde/patch/-PHIOPT-Add-A-B-CST-B-match-and-simplify-optimization.patch


[PATCH] [PHIOPT] Add A ? B + CST : B match and simplify optimizations

2022-11-04 Thread Zhongyunde via Gcc-patches
hi,
  This patch is try to fix the issue 
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107190, 
would you like to give me some suggestion, thanks.

~/source/gccUpstreamDir/gcc/testsuite(cfg) » git format-patch -1 
--start-number=00 HEAD -o ~/patch
/home/zhongyunde/patch/-PHIOPT-Add-A-B-CST-B-match-and-simplify-optimization.patch


-PHIOPT-Add-A-B-CST-B-match-and-simplify-optimization.patch
Description: -PHIOPT-Add-A-B-CST-B-match-and-simplify-optimization.patch