Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-16 Thread Richard Biener
On Tue, Oct 15, 2013 at 6:55 PM, Jeff Law l...@redhat.com wrote: On 10/15/13 10:53, Jakub Jelinek wrote: On Tue, Oct 15, 2013 at 10:50:39AM -0600, Jeff Law wrote: I noticed that we're now including rtl.h and tm_p.h in tree-ssa-reassoc.c, which seems wrong. Isn't that required for

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-16 Thread Jeff Law
On 10/16/13 02:21, Richard Biener wrote: On Tue, Oct 15, 2013 at 6:55 PM, Jeff Law l...@redhat.com wrote: On 10/15/13 10:53, Jakub Jelinek wrote: On Tue, Oct 15, 2013 at 10:50:39AM -0600, Jeff Law wrote: I noticed that we're now including rtl.h and tm_p.h in tree-ssa-reassoc.c, which seems

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-16 Thread Joseph S. Myers
On Wed, 16 Oct 2013, Jeff Law wrote: What's the policy on the GDFL stuff. I've tried so hard to avoid having to worry about that rats nest that I have no idea what our policy is. Basically I just want to take the old docs for BRANCH_COST and re-use those. Is that considered kosher with all

RE: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-15 Thread Zhenqiang Chen
-Original Message- From: Jakub Jelinek [mailto:ja...@redhat.com] Sent: Monday, October 14, 2013 4:49 PM To: Zhenqiang Chen Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-15 Thread Jakub Jelinek
On Tue, Oct 15, 2013 at 03:57:23PM +0800, Zhenqiang Chen wrote: Is it OK? Ok, except two comments apparently still need updating. +/* Optimize X == CST1 || X == CST2 + if popcount (CST1 ^ CST2) == 1 into + (X ~(CST1 ^ CST2)) == (CST1 ~(CST1 ^ CST2)). + Similarly for ranges. E.g. + X

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-15 Thread Jeff Law
On 10/11/13 20:11, Zhenqiang Chen wrote: -Original Message- From: Jeff Law [mailto:l...@redhat.com] Sent: Friday, October 11, 2013 1:20 PM To: Zhenqiang Chen Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-15 Thread Jeff Law
On 10/15/13 02:12, Jakub Jelinek wrote: On Tue, Oct 15, 2013 at 03:57:23PM +0800, Zhenqiang Chen wrote: Is it OK? Ok, except two comments apparently still need updating. +/* Optimize X == CST1 || X == CST2 + if popcount (CST1 ^ CST2) == 1 into + (X ~(CST1 ^ CST2)) == (CST1 ~(CST1 ^

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-15 Thread Jakub Jelinek
On Tue, Oct 15, 2013 at 10:50:39AM -0600, Jeff Law wrote: I noticed that we're now including rtl.h and tm_p.h in tree-ssa-reassoc.c, which seems wrong. Isn't that required for BRANCH_COST use? Other option would be to add some dummy wrapper around BRANCH_COST, put that wrapper into some file

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-15 Thread Jeff Law
On 10/15/13 10:53, Jakub Jelinek wrote: On Tue, Oct 15, 2013 at 10:50:39AM -0600, Jeff Law wrote: I noticed that we're now including rtl.h and tm_p.h in tree-ssa-reassoc.c, which seems wrong. Isn't that required for BRANCH_COST use? Other option would be to add some dummy wrapper around

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-15 Thread Jeff Law
On 10/15/13 02:12, Jakub Jelinek wrote: On Tue, Oct 15, 2013 at 03:57:23PM +0800, Zhenqiang Chen wrote: Is it OK? Ok, except two comments apparently still need updating. +/* Optimize X == CST1 || X == CST2 + if popcount (CST1 ^ CST2) == 1 into + (X ~(CST1 ^ CST2)) == (CST1 ~(CST1 ^

RE: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-14 Thread Zhenqiang Chen
/tree-ssa/reassoc-36.c: New test case. -Original Message- From: Jakub Jelinek [mailto:ja...@redhat.com] Sent: Saturday, October 12, 2013 3:40 PM To: Zhenqiang Chen Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-14 Thread Jakub Jelinek
On Mon, Oct 14, 2013 at 03:10:12PM +0800, Zhenqiang Chen wrote: @@ -2131,6 +2133,155 @@ update_range_test (struct range_entry *range, struct range_entry *otherrange, return true; } +/* Optimize X == CST1 || X == CST2 + if popcount (CST1 ^ CST2) == 1 into + (X ~(CST1 ^ CST2)) == (CST1

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-12 Thread Jakub Jelinek
On Sat, Oct 12, 2013 at 10:08:12AM +0800, Zhenqiang Chen wrote: As you had mentioned, the transition in this patch does not reduce instructions. But the preexisting optimization does. So we prefer to do the preexisting optimization first. E.g. X == 10 || X == 12 || X == 26 Ok, that makes

RE: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-11 Thread Zhenqiang Chen
-Original Message- From: Jakub Jelinek [mailto:ja...@redhat.com] Sent: Thursday, October 10, 2013 7:13 PM To: Zhenqiang Chen Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

RE: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-11 Thread Zhenqiang Chen
-Original Message- From: Jeff Law [mailto:l...@redhat.com] Sent: Friday, October 11, 2013 1:20 PM To: Zhenqiang Chen Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0 On 10

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-10 Thread Richard Biener
On Thu, Oct 10, 2013 at 5:04 AM, Jeff Law l...@redhat.com wrote: On 08/05/13 02:08, Zhenqiang Chen wrote: Hi The patch reassociates X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0. Bootstrap on x86-64 and ARM chromebook. No make check

RE: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-10 Thread Zhenqiang Chen
-Original Message- From: Jeff Law [mailto:l...@redhat.com] Sent: Thursday, October 10, 2013 11:05 AM To: Zhenqiang Chen; gcc-patches@gcc.gnu.org Subject: Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0 On 08/05

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-10 Thread Jakub Jelinek
On Thu, Oct 10, 2013 at 05:25:01PM +0800, Zhenqiang Chen wrote: Note I've been suggesting the bits I'm referring to in fold-const.c move out into the tree-ssa optimizers. If they fit well into tree-ssa-reassoc.c I'd look favorably upon a patch which moved them. The code is similar with

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-10 Thread Jakub Jelinek
On Mon, Aug 05, 2013 at 01:39:50AM -0700, Andrew Pinski wrote: Seems like a better place to put this is inside tree-ssa-ifcombine.c which handles the case where if(a || b) is split up into if(a) else if(b). Moving it into tree-ssa-ifcombine.c allows for code to be optimized which was written

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-10 Thread Jakub Jelinek
On Mon, Aug 05, 2013 at 04:08:58PM +0800, Zhenqiang Chen wrote: ChangeLog 2013-08-05 Zhenqiang Chen zhenqiang.c...@arm.com * tree-ssa-reassoc.c (optimize_range_tests): Reasociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) ==

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-10 Thread Jeff Law
On 10/10/13 03:25, Zhenqiang Chen wrote: It comes from Coremark. The code is: if (NEXT_SYMBOL == '+' || NEXT_SYMBOL == '-') I should have guessed ;-) For ARM, there are three instructions rather than 4 (in thumb state). For some older gcc, I got performance improvement on ARM chromebook.

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-10 Thread Jeff Law
On 10/10/13 04:10, Jakub Jelinek wrote: On Thu, Oct 10, 2013 at 05:25:01PM +0800, Zhenqiang Chen wrote: Note I've been suggesting the bits I'm referring to in fold-const.c move out into the tree-ssa optimizers. If they fit well into tree-ssa-reassoc.c I'd look favorably upon a patch which

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-10 Thread Jeff Law
On 10/10/13 05:12, Jakub Jelinek wrote: On Mon, Aug 05, 2013 at 04:08:58PM +0800, Zhenqiang Chen wrote: ChangeLog 2013-08-05 Zhenqiang Chen zhenqiang.c...@arm.com * tree-ssa-reassoc.c (optimize_range_tests): Reasociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-10-09 Thread Jeff Law
On 08/05/13 02:08, Zhenqiang Chen wrote: Hi The patch reassociates X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0. Bootstrap on x86-64 and ARM chromebook. No make check regression on x86-64 and panda board. For some targets/options, the (X == CST1

RE: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-08-06 Thread Zhenqiang Chen
-Original Message- From: Andrew Pinski [mailto:pins...@gmail.com] Sent: Monday, August 05, 2013 4:40 PM To: Zhenqiang Chen Cc: GCC Patches Subject: Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0 On Mon, Aug 5

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-08-05 Thread Andrew Pinski
On Mon, Aug 5, 2013 at 1:08 AM, Zhenqiang Chen zhenqiang.c...@arm.com wrote: Hi The patch reassociates X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0. Bootstrap on x86-64 and ARM chromebook. No make check regression on x86-64 and panda board.

Re: [PATCH] Reassociate X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0

2013-08-05 Thread Andrew Pinski
On Mon, Aug 5, 2013 at 1:39 AM, Andrew Pinski pins...@gmail.com wrote: On Mon, Aug 5, 2013 at 1:08 AM, Zhenqiang Chen zhenqiang.c...@arm.com wrote: Hi The patch reassociates X == CST1 || X == CST2 if popcount (CST2 - CST1) == 1 into ((X - CST1) ~(CST2 - CST1)) == 0. Bootstrap on x86-64 and