aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2001-08-08 18:46:22 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2001-08-08 16:46:22 +0000
commit0f0138b6b2669803f26f9a19adce9da9c8eb9911 (patch)
tree593189d00d343aa04079a728386234bc706553f1 /gcc
parentb2bcb32d2831ec81ba03baba01c0f29998ee748c (diff)
downloadgcc-0f0138b6b2669803f26f9a19adce9da9c8eb9911.zip
gcc-0f0138b6b2669803f26f9a19adce9da9c8eb9911.tar.gz
gcc-0f0138b6b2669803f26f9a19adce9da9c8eb9911.tar.bz2
* predict.def: Set hitrates according our experimental run.
From-SVN: r44719
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/i386/i386.h9
-rw-r--r--gcc/predict.def10
3 files changed, 22 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3e9cb99..aa19eca 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+Wed Aug 8 18:44:37 CEST 2001 Jan Hubicka <jh@suse.cz>
+
+ * predict.def: Set hitrates according our experimental run.
+
+Wed Aug 8 18:01:58 CEST 2001 Jan Hubicka <jh@suse.cz>
+
+ * i386.h (HARD_REGNO_RENAME_OK): New macro.
+
2001-08-08 H.J. Lu <hjl@gnu.org>
* config/mips/mips.c (mips_unique_section): New. Copied from
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index e145cae..a0d23f6 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -3186,6 +3186,15 @@ enum fp_cw_mode {FP_CW_STORED, FP_CW_UNINITIALIZED, FP_CW_ANY};
? emit_i387_cw_initialization (assign_386_stack_local (HImode, 1), \
assign_386_stack_local (HImode, 2)), 0\
: 0)
+
+/* Avoid renaming of stack registers, as doing so in combination with
+ scheduling just increases amount of live registers at time and in
+ the turn amount of fxch instructions needed.
+
+ ??? Maybe Pentium chips benefits from renaming, someone can try... */
+
+#define HARD_REGNO_RENAME_OK(src,target) \
+ ((src) < FIRST_STACK_REG || (src) > LAST_STACK_REG)
/*
diff --git a/gcc/predict.def b/gcc/predict.def
index 28b0bbf..7559a12 100644
--- a/gcc/predict.def
+++ b/gcc/predict.def
@@ -66,7 +66,7 @@ DEF_PREDICTOR (PRED_LOOP_BRANCH, "loop branch", HITRATE (88),
PRED_FLAG_FIRST_MATCH)
/* Edge causing loop to terminate is probably not taken. */
-DEF_PREDICTOR (PRED_LOOP_EXIT, "loop exit", HITRATE (80),
+DEF_PREDICTOR (PRED_LOOP_EXIT, "loop exit", HITRATE (92),
PRED_FLAG_FIRST_MATCH)
/* Condition emitted by preconditiong code to ensure that variable
@@ -77,16 +77,16 @@ DEF_PREDICTOR (PRED_LOOP_CONDITION, "loop condition", PROB_VERY_LIKELY, 0)
DEF_PREDICTOR (PRED_LOOP_PRECONDITIONING, "loop preconditioning", PROB_VERY_LIKELY, 0)
/* Copied condition for the first iteration of loop is probably true. */
-DEF_PREDICTOR (PRED_LOOP_HEADER, "loop header", HITRATE (75), 0)
+DEF_PREDICTOR (PRED_LOOP_HEADER, "loop header", HITRATE (60), 0)
/* Pointers are usually not NULL. */
-DEF_PREDICTOR (PRED_POINTER, "pointer", HITRATE (60), 0)
+DEF_PREDICTOR (PRED_POINTER, "pointer", HITRATE (75), 0)
/* NE is probable, EQ not etc... */
-DEF_PREDICTOR (PRED_OPCODE, "opcode", HITRATE (84), 0)
+DEF_PREDICTOR (PRED_OPCODE, "opcode", HITRATE (53), 0)
/* Branch guarding call is probably taken. */
-DEF_PREDICTOR (PRED_CALL, "call", HITRATE (78), 0)
+DEF_PREDICTOR (PRED_CALL, "call", HITRATE (66), 0)
/* Branch causing function to terminate is probably not taken. */
DEF_PREDICTOR (PRED_ERROR_RETURN, "error return", PROB_LIKELY, 0)