summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 3e9cb99cdaa..aa19eca4049 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 e145cae3e8d..a0d23f65832 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 28b0bbfa5af..7559a12f477 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)