From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by sourceware.org (Postfix) with ESMTPS id 588CA3858C2C; Tue, 28 Sep 2021 11:21:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 588CA3858C2C Received: from relay1.suse.de (relay1.suse.de [149.44.160.133]) by smtp-out1.suse.de (Postfix) with ESMTP id 5874C2235B; Tue, 28 Sep 2021 11:21:14 +0000 (UTC) Received: from murzim.suse.de (murzim.suse.de [10.160.4.192]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay1.suse.de (Postfix) with ESMTPS id 4FECE25D44; Tue, 28 Sep 2021 11:21:14 +0000 (UTC) Date: Tue, 28 Sep 2021 13:21:01 +0200 (CEST) From: Richard Biener To: Ilya Leoshkevich cc: gcc-patches@gcc.gnu.org, Andreas Krebbel Subject: Re: [PATCH v3 1/3] reassoc: Do not bias loop-carried PHIs early In-Reply-To: <20210926110936.344019-2-iii@linux.ibm.com> Message-ID: References: <20210926110936.344019-1-iii@linux.ibm.com> <20210926110936.344019-2-iii@linux.ibm.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 8BIT X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Sep 2021 11:21:16 -0000 On Sun, 26 Sep 2021, Ilya Leoshkevich wrote: > Biasing loop-carried PHIs during the 1st reassociation pass interferes > with reduction chains and does not bring measurable benefits, so do it > only during the 2nd reassociation pass. OK. Thanks, Richard. > gcc/ChangeLog: > > * passes.def (pass_reassoc): Rename parameter to early_p. > * tree-ssa-reassoc.c (reassoc_bias_loop_carried_phi_ranks_p): > New variable. > (phi_rank): Don't bias loop-carried phi ranks > before vectorization pass. > (execute_reassoc): Add bias_loop_carried_phi_ranks_p parameter. > (pass_reassoc::pass_reassoc): Add bias_loop_carried_phi_ranks_p > initializer. > (pass_reassoc::set_param): Set bias_loop_carried_phi_ranks_p > value. > (pass_reassoc::execute): Pass bias_loop_carried_phi_ranks_p to > execute_reassoc. > (pass_reassoc::bias_loop_carried_phi_ranks_p): New member. > --- > gcc/passes.def | 4 ++-- > gcc/tree-ssa-reassoc.c | 16 ++++++++++++++-- > 2 files changed, 16 insertions(+), 4 deletions(-) > > diff --git a/gcc/passes.def b/gcc/passes.def > index d7a1f8c97a6..c5f915d04c6 100644 > --- a/gcc/passes.def > +++ b/gcc/passes.def > @@ -242,7 +242,7 @@ along with GCC; see the file COPYING3. If not see > /* Identify paths that should never be executed in a conforming > program and isolate those paths. */ > NEXT_PASS (pass_isolate_erroneous_paths); > - NEXT_PASS (pass_reassoc, true /* insert_powi_p */); > + NEXT_PASS (pass_reassoc, true /* early_p */); > NEXT_PASS (pass_dce); > NEXT_PASS (pass_forwprop); > NEXT_PASS (pass_phiopt, false /* early_p */); > @@ -325,7 +325,7 @@ along with GCC; see the file COPYING3. If not see > NEXT_PASS (pass_lower_vector_ssa); > NEXT_PASS (pass_lower_switch); > NEXT_PASS (pass_cse_reciprocals); > - NEXT_PASS (pass_reassoc, false /* insert_powi_p */); > + NEXT_PASS (pass_reassoc, false /* early_p */); > NEXT_PASS (pass_strength_reduction); > NEXT_PASS (pass_split_paths); > NEXT_PASS (pass_tracer); > diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c > index 8498cfc7aa8..420c14e8cf5 100644 > --- a/gcc/tree-ssa-reassoc.c > +++ b/gcc/tree-ssa-reassoc.c > @@ -180,6 +180,10 @@ along with GCC; see the file COPYING3. If not see > point 3a in the pass header comment. */ > static bool reassoc_insert_powi_p; > > +/* Enable biasing ranks of loop accumulators. We don't want this before > + vectorization, since it interferes with reduction chains. */ > +static bool reassoc_bias_loop_carried_phi_ranks_p; > + > /* Statistics */ > static struct > { > @@ -269,6 +273,9 @@ phi_rank (gimple *stmt) > use_operand_p use; > gimple *use_stmt; > > + if (!reassoc_bias_loop_carried_phi_ranks_p) > + return bb_rank[bb->index]; > + > /* We only care about real loops (those with a latch). */ > if (!father->latch) > return bb_rank[bb->index]; > @@ -6940,9 +6947,10 @@ fini_reassoc (void) > optimization of a gimple conditional. Otherwise returns zero. */ > > static unsigned int > -execute_reassoc (bool insert_powi_p) > +execute_reassoc (bool insert_powi_p, bool bias_loop_carried_phi_ranks_p) > { > reassoc_insert_powi_p = insert_powi_p; > + reassoc_bias_loop_carried_phi_ranks_p = bias_loop_carried_phi_ranks_p; > > init_reassoc (); > > @@ -6983,15 +6991,19 @@ public: > { > gcc_assert (n == 0); > insert_powi_p = param; > + bias_loop_carried_phi_ranks_p = !param; > } > virtual bool gate (function *) { return flag_tree_reassoc != 0; } > virtual unsigned int execute (function *) > - { return execute_reassoc (insert_powi_p); } > + { > + return execute_reassoc (insert_powi_p, bias_loop_carried_phi_ranks_p); > + } > > private: > /* Enable insertion of __builtin_powi calls during execute_reassoc. See > point 3a in the pass header comment. */ > bool insert_powi_p; > + bool bias_loop_carried_phi_ranks_p; > }; // class pass_reassoc > > } // anon namespace > -- Richard Biener SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)