public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Vladimir Makarov <vmakarov@redhat.com>
To: "gcc-patches@gcc.gnu.org" <gcc-patches@gcc.gnu.org>
Subject: one more patch for PR64317
Date: Fri, 27 Feb 2015 22:30:00 -0000	[thread overview]
Message-ID: <54F0E9A2.4020407@redhat.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 1039 bytes --]

   The following patch improves inheritance for PR64317 testcase

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64317

   I ran a lot SPEC2000 benchmarks to get better default parameter value 
for EBB_PROBABILITY_CUTOFF in LRA inheritance. The new default parameter 
value improves SPECInt2000 by 0.4% on x86-64 without changing SPECFP2000 
rate.  The code size changes are insignificant (0.002% increase for 
SPECInt and 0.01% decrease for SPECFP).

The patch was bootstrapped and tested on x86-64.

Committed as rev.221070.

2015-02-27  Vladimir Makarov  <vmakarov@redhat.com>

         PR target/64317
         * params.def (PARAM_LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF): New.
         * params.h (LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF): New.
         * lra-constraints.c (EBB_PROBABILITY_CUTOFF): Use
         LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF.
         (lra_inheritance): Use '<' instead of '<=' for
         EBB_PROBABILITY_CUTOFF.
         * doc/invoke.texi (lra-inheritance-ebb-probability-cutoff):
         Document change.


[-- Attachment #2: pr64317-2.patch --]
[-- Type: text/plain, Size: 3364 bytes --]

Index: params.def
===================================================================
--- params.def	(revision 220916)
+++ params.def	(working copy)
@@ -836,6 +836,11 @@ DEFPARAM (PARAM_LRA_MAX_CONSIDERED_RELOA
 	  "The max number of reload pseudos which are considered during spilling a non-reload pseudo",
 	  500, 0, 0)
 
+DEFPARAM (PARAM_LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF,
+	  "lra-inheritance-ebb-probability-cutoff",
+	  "Minimal fall-through edge probability in percentage used to add BB to inheritance EEB in LRA",
+	  40, 0, 100)
+
 /* Switch initialization conversion will refuse to create arrays that are
    bigger than this parameter times the number of switch branches.  */
 
Index: params.h
===================================================================
--- params.h	(revision 220916)
+++ params.h	(working copy)
@@ -202,6 +202,8 @@ extern void init_param_values (int *para
   PARAM_VALUE (PARAM_IRA_LOOP_RESERVED_REGS)
 #define LRA_MAX_CONSIDERED_RELOAD_PSEUDOS \
   PARAM_VALUE (PARAM_LRA_MAX_CONSIDERED_RELOAD_PSEUDOS)
+#define LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF \
+  PARAM_VALUE (PARAM_LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF)
 #define SWITCH_CONVERSION_BRANCH_RATIO \
   PARAM_VALUE (PARAM_SWITCH_CONVERSION_BRANCH_RATIO)
 #define LOOP_INVARIANT_MAX_BBS_IN_LOOP \
Index: lra-constraints.c
===================================================================
--- lra-constraints.c	(revision 220916)
+++ lra-constraints.c	(working copy)
@@ -154,6 +154,7 @@
 #include "df.h"
 #include "ira.h"
 #include "rtl-error.h"
+#include "params.h"
 #include "lra-int.h"
 
 /* Value of LRA_CURR_RELOAD_NUM at the beginning of BB of the current
@@ -5694,7 +5695,8 @@ inherit_in_ebb (rtx_insn *head, rtx_insn
 /* This value affects EBB forming.  If probability of edge from EBB to
    a BB is not greater than the following value, we don't add the BB
    to EBB.  */
-#define EBB_PROBABILITY_CUTOFF ((REG_BR_PROB_BASE * 50) / 100)
+#define EBB_PROBABILITY_CUTOFF \
+  ((REG_BR_PROB_BASE * LRA_INHERITANCE_EBB_PROBABILITY_CUTOFF) / 100)
 
 /* Current number of inheritance/split iteration.  */
 int lra_inheritance_iter;
@@ -5740,7 +5742,7 @@ lra_inheritance (void)
 	  e = find_fallthru_edge (bb->succs);
 	  if (! e)
 	    break;
-	  if (e->probability <= EBB_PROBABILITY_CUTOFF)
+	  if (e->probability < EBB_PROBABILITY_CUTOFF)
 	    break;
 	  bb = bb->next_bb;
 	}
Index: doc/invoke.texi
===================================================================
--- doc/invoke.texi	(revision 220916)
+++ doc/invoke.texi	(working copy)
@@ -10570,6 +10570,14 @@ by this parameter.  The default value of
 the minimal number of registers needed by typical instructions.
 This value is the best found from numerous experiments.
 
+@item lra-inheritance-ebb-probability-cutoff
+LRA tries to reuse values reloaded in registers in subsequent insns.
+This optimization is called inheritance.  EBB is used as a region to
+do this optimization.  The parameter defines a minimal fall-through
+edge probability in percentage used to add BB to inheritance EBB in
+LRA.  The default value of the parameter is 40.  The value was chosen
+from numerous runs of SPEC2000 on x86-64.
+
 @item loop-invariant-max-bbs-in-loop
 Loop invariant motion can be very expensive, both in compilation time and
 in amount of needed compile-time memory, with very large loops.  Loops

             reply	other threads:[~2015-02-27 22:03 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-27 22:30 Vladimir Makarov [this message]
2015-02-27 23:26 ` Bernhard Reutner-Fischer
2015-02-28  0:54   ` Vladimir Makarov
2015-02-28  1:43 ` Sandra Loosemore
2015-02-28  8:39   ` Vladimir Makarov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54F0E9A2.4020407@redhat.com \
    --to=vmakarov@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).