osprey/kg++fe/gnu/predict.c File Reference

#include "config.h"
#include "system.h"
#include "tree.h"
#include "rtl.h"
#include "tm_p.h"
#include "hard-reg-set.h"
#include "basic-block.h"
#include "insn-config.h"
#include "regs.h"
#include "flags.h"
#include "output.h"
#include "function.h"
#include "except.h"
#include "toplev.h"
#include "recog.h"
#include "expr.h"
#include "predict.h"
#include "profile.h"
#include "real.h"
#include "params.h"
#include "target.h"
#include "loop.h"
#include "predict.def"

Include dependency graph for predict.c:

Go to the source code of this file.

Data Types

type  predictor_info
type  block_info_def
type  edge_info_def

Defines

#define PROB_VERY_UNLIKELY   (REG_BR_PROB_BASE / 10 - 1)
#define PROB_EVEN   (REG_BR_PROB_BASE / 2)
#define PROB_VERY_LIKELY   (REG_BR_PROB_BASE - PROB_VERY_UNLIKELY)
#define PROB_ALWAYS   (REG_BR_PROB_BASE)
#define PRED_FLAG_FIRST_MATCH   1
#define HITRATE(VAL)   ((int) ((VAL) * REG_BR_PROB_BASE + 50) / 100)
#define DEF_PREDICTOR(ENUM, NAME, HITRATE, FLAGS)   {NAME, HITRATE, FLAGS},
#define BLOCK_INFO(B)   ((block_info) (B)->aux)
#define EDGE_INFO(E)   ((edge_info) (E)->aux)

Typedefs

typedef struct block_info_defblock_info
typedef struct edge_info_defedge_info

Functions/Subroutines

static bool predicted_by_p PARAMS ((basic_block, enum br_predictor))
static void
combine_predictions_for_insn 
PARAMS ((rtx, basic_block))
static void dump_prediction PARAMS ((enum br_predictor, int, basic_block, int))
static void estimate_loops_at_level PARAMS ((struct loop *loop))
static void propagate_freq PARAMS ((struct loop *))
static void estimate_bb_frequencies PARAMS ((struct loops *))
static void counts_to_freqs PARAMS ((void))
static void
process_note_predictions 
PARAMS ((basic_block, int *, dominance_info, dominance_info))
static void process_note_prediction PARAMS ((basic_block, int *, dominance_info, dominance_info, int, int))
static bool last_basic_block_p PARAMS ((basic_block))
static bool can_predict_insn_p PARAMS ((rtx))
bool maybe_hot_bb_p (basic_block bb)
bool probably_cold_bb_p (basic_block bb)
bool probably_never_executed_bb_p (basic_block bb)
static bool predicted_by_p (basic_block bb, enum br_predictor predictor)
void predict_insn (rtx insn, enum br_predictor predictor, int probability)
void predict_insn_def (rtx insn, enum br_predictor predictor, enum prediction taken)
void predict_edge (edge e, enum br_predictor predictor, int probability)
static bool can_predict_insn_p (rtx insn)
void predict_edge_def (edge e, enum br_predictor predictor, enum prediction taken)
void invert_br_probabilities (rtx insn)
static void dump_prediction (enum br_predictor predictor, int probability, basic_block bb, int used)
static void combine_predictions_for_insn (rtx insn, basic_block bb)
void estimate_probability (struct loops *loops_info)
void expected_value_to_br_prob ()
static bool last_basic_block_p (basic_block bb)
static void process_note_prediction (basic_block bb, int *heads, dominance_info dominators, dominance_info post_dominators, int pred, int flags)
static void process_note_predictions (basic_block bb, int *heads, dominance_info dominators, dominance_info post_dominators)
void note_prediction_to_br_prob ()
static void propagate_freq (struct loop *loop)
static void estimate_loops_at_level (struct loop *first_loop)
static void counts_to_freqs ()
bool expensive_function_p (int threshold)
static void estimate_bb_frequencies (struct loops *loops)
static void compute_function_frequency ()
static void choose_function_section ()

Variables

static REAL_VALUE_TYPE real_zero
static REAL_VALUE_TYPE real_one
static REAL_VALUE_TYPE real_almost_one
static REAL_VALUE_TYPE real_br_prob_base
static REAL_VALUE_TYPE real_inv_br_prob_base
static REAL_VALUE_TYPE real_one_half
static REAL_VALUE_TYPE real_bb_freq_max
static struct predictor_info predictor_info []


Define Documentation

#define BLOCK_INFO ( B   )     ((block_info) (B)->aux)

Definition at line 925 of file predict.c.

Referenced by estimate_bb_frequencies(), estimate_loops_at_level(), and propagate_freq().

#define DEF_PREDICTOR ( ENUM,
NAME,
HITRATE,
FLAGS   )     {NAME, HITRATE, FLAGS},

Definition at line 114 of file predict.c.

#define EDGE_INFO (  )     ((edge_info) (E)->aux)

#define HITRATE ( VAL   )     ((int) ((VAL) * REG_BR_PROB_BASE + 50) / 100)

Definition at line 112 of file predict.c.

Referenced by predict_loops(), and probability_reliable_p().

#define PRED_FLAG_FIRST_MATCH   1

Definition at line 108 of file predict.c.

Referenced by combine_predictions_for_bb(), and combine_predictions_for_insn().

#define PROB_ALWAYS   (REG_BR_PROB_BASE)

Definition at line 73 of file predict.c.

#define PROB_EVEN   (REG_BR_PROB_BASE / 2)

Definition at line 71 of file predict.c.

Referenced by combine_predictions_for_bb(), and combine_predictions_for_insn().

#define PROB_VERY_LIKELY   (REG_BR_PROB_BASE - PROB_VERY_UNLIKELY)

Definition at line 72 of file predict.c.

#define PROB_VERY_UNLIKELY   (REG_BR_PROB_BASE / 10 - 1)

Definition at line 70 of file predict.c.


Typedef Documentation


Function Documentation

static bool can_predict_insn_p ( rtx  insn  )  [static]

static void choose_function_section ( void   )  [static]

static void combine_predictions_for_insn ( rtx  insn,
basic_block  bb 
) [static]

static void compute_function_frequency ( void   )  [static]

static void counts_to_freqs ( void   )  [static]

static void dump_prediction ( enum br_predictor  predictor,
int  probability,
basic_block  bb,
int  used 
) [static]

static void estimate_bb_frequencies ( struct loops loops  )  [static]

static void estimate_loops_at_level ( struct loop first_loop  )  [static]

void estimate_probability ( struct loops loops_info  ) 

Definition at line 433 of file predict.c.

Referenced by rest_of_compilation(), and rest_of_handle_branch_prob().

void expected_value_to_br_prob ( void   ) 

Definition at line 653 of file predict.c.

Referenced by rest_of_compilation(), and rest_of_handle_jump2().

bool expensive_function_p ( int  threshold  ) 

Definition at line 1113 of file predict.c.

Referenced by ix86_compute_frame_layout(), and ix86_expand_prologue().

void invert_br_probabilities ( rtx  insn  ) 

Definition at line 278 of file predict.c.

Referenced by dead_or_predicable(), invert_jump(), and redirect_jump_2().

static bool last_basic_block_p ( basic_block  bb  )  [static]

Definition at line 724 of file predict.c.

References EXIT_BLOCK_PTR.

Referenced by estimate_probability(), and tree_estimate_probability().

bool maybe_hot_bb_p ( basic_block  bb  ) 

void note_prediction_to_br_prob (  ) 

static bool can_predict_insn_p PARAMS ( (rtx  )  [static]

static bool last_basic_block_p PARAMS ( (basic_block  )  [static]

static void process_note_prediction PARAMS ( (basic_block, int *, dominance_info, dominance_info, int, int)   )  [static]

static void process_note_predictions PARAMS ( (basic_block, int *, dominance_info, dominance_info  )  [static]

static void counts_to_freqs PARAMS ( (void  )  [static, read]

Definition at line 77 of file cplus-dem.c.

static void estimate_bb_frequencies PARAMS ( (struct loops *)   )  [static]

static void propagate_freq PARAMS ( (struct loop *)   )  [static]

static void estimate_loops_at_level PARAMS ( (struct loop *loop  )  [static]

static void dump_prediction PARAMS ( (enum br_predictor, int, basic_block, int)   )  [static]

static void combine_predictions_for_insn PARAMS ( (rtx, basic_block  )  [static]

static bool predicted_by_p PARAMS ( (basic_block, enum br_predictor  )  [static]

void predict_edge ( edge  e,
enum br_predictor  predictor,
int  probability 
)

Definition at line 226 of file predict.c.

Referenced by estimate_probability(), predict_edge_def(), and predict_loops().

void predict_edge_def ( edge  e,
enum br_predictor  predictor,
enum prediction  taken 
)

void predict_insn ( rtx  insn,
enum br_predictor  predictor,
int  probability 
)

void predict_insn_def ( rtx  insn,
enum br_predictor  predictor,
enum prediction  taken 
)

static bool predicted_by_p ( basic_block  bb,
enum br_predictor  predictor 
) [static]

bool probably_cold_bb_p ( basic_block  bb  ) 

Definition at line 144 of file predict.c.

Referenced by eliminate_partially_redundant_loads().

bool probably_never_executed_bb_p ( basic_block  bb  ) 

static void process_note_prediction ( basic_block  bb,
int *  heads,
dominance_info  dominators,
dominance_info  post_dominators,
int  pred,
int  flags 
) [static]

static void process_note_predictions ( basic_block  bb,
int *  heads,
dominance_info  dominators,
dominance_info  post_dominators 
) [static]

static void propagate_freq ( struct loop loop  )  [static]


Variable Documentation

Definition at line 115 of file predict.c.

REAL_VALUE_TYPE real_almost_one [static]

Definition at line 66 of file predict.c.

Referenced by estimate_bb_frequencies(), and propagate_freq().

REAL_VALUE_TYPE real_bb_freq_max [static]

Definition at line 66 of file predict.c.

Referenced by estimate_bb_frequencies().

REAL_VALUE_TYPE real_br_prob_base [static]

Definition at line 66 of file predict.c.

Referenced by estimate_bb_frequencies().

REAL_VALUE_TYPE real_inv_br_prob_base [static]

Definition at line 66 of file predict.c.

Referenced by estimate_bb_frequencies(), and propagate_freq().

REAL_VALUE_TYPE real_one [static]

Definition at line 66 of file predict.c.

Referenced by estimate_bb_frequencies(), and propagate_freq().

REAL_VALUE_TYPE real_one_half [static]

Definition at line 66 of file predict.c.

Referenced by estimate_bb_frequencies().

REAL_VALUE_TYPE real_zero [static]

Definition at line 66 of file predict.c.

Referenced by estimate_bb_frequencies(), and propagate_freq().


Generated on Wed Apr 8 15:41:42 2009 for Open64 by  doxygen 1.5.6