X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fstat%2Ffirmstat.h;h=793ec0621aef688b3838b652325bd3aa2407e92a;hb=b2509ebc03f0b178683087886a9d9269cb84bd03;hp=68f23bec8faff3145419a84fa40d8c7eec44c667;hpb=349dd4b8568fb130d9cc35ad304e9dcab00df0ce;p=libfirm diff --git a/ir/stat/firmstat.h b/ir/stat/firmstat.h index 68f23bec8..793ec0621 100644 --- a/ir/stat/firmstat.h +++ b/ir/stat/firmstat.h @@ -22,9 +22,12 @@ * Statistic options, can be or'ed. */ enum firmstat_options_t { - FIRMSTAT_ENABLED = 0x00000001, /**< enable statistics */ - FIRMSTAT_PATTERN_ENABLED = 0x00000002, /**< enable pattern calculation */ - FIRMSTAT_COUNT_STRONG_OP = 0x00000004, /**< if set, count Mul/Div/Mod/DivMod by constant */ + FIRMSTAT_ENABLED = 0x00000001, /**< enable statistics */ + FIRMSTAT_PATTERN_ENABLED = 0x00000002, /**< enable pattern calculation */ + FIRMSTAT_COUNT_STRONG_OP = 0x00000004, /**< if set, count Mul/Div/Mod/DivMod by constant */ + FIRMSTAT_COUNT_DAG = 0x00000008, /**< if set, count DAG statistics */ + FIRMSTAT_COUNT_DELETED = 0x00000010, /**< if set, count deleted graphs */ + FIRMSTAT_CSV_OUTPUT = 0x10000000 /**< CSV output of some mini-statistic */ }; /** @@ -37,179 +40,17 @@ void stat_finish(const char *name); #ifdef FIRM_STATISTICS -typedef enum { - STAT_OPT_STG, /**< straightening optimization */ - STAT_OPT_IFSIM, /**< if simplification */ - STAT_OPT_CONST_EVAL, /**< constant evaluation */ - STAT_OPT_ALGSIM, /**< algebraic simplification */ - STAT_OPT_PHI, /**< Phi optmization */ - STAT_OPT_WAW, /**< Write-After-Write optimization */ - STAT_OPT_WAR, /**< Write-After-Read optimization */ - STAT_OPT_RAW, /**< Read-After-Write optimization */ - STAT_OPT_RAR, /**< Read-After-Read optimization */ - STAT_OPT_RC, /**< Read-a-Const optimization */ - STAT_OPT_TUPLE, /**< Tuple optimization */ - STAT_OPT_ID, /**< ID optimization */ - STAT_OPT_CSE, /**< common subexpression elimination */ - STAT_OPT_STRENGTH_RED, /**< strenght reduction */ - STAT_OPT_ARCH_DEP, /**< architecture dependant optimization */ - STAT_OPT_REASSOC, /**< reassociation */ - STAT_OPT_POLY_CALL, /**< polymorphic call optimization */ - STAT_LOWERED, /**< lowered */ - - STAT_OPT_MAX -} stat_opt_kind; - /** * initialize the statistics module. * - * @param enable_options Bitmask containing the statistic options + * @param enable_options a bitmask containing the statistic options */ void init_stat(unsigned enable_options); -/** - * A new IR op is registered. - */ -void stat_new_ir_op(const ir_op *op); - -/** - * An IR op is freed. - */ -void stat_free_ir_op(const ir_op *op); - -/** - * A new node is created. - */ -void stat_new_node(ir_node *node); - -/** - * A node is changed into a Id node - */ -void stat_turn_into_id(ir_node *node); - -/** - * A new graph was created - */ -void stat_new_graph(ir_graph *irg, entity *ent); - -/** - * A graph was deleted - */ -void stat_free_graph(ir_graph *irg); - -/** - * A walk over a graph is initiated - */ -void stat_irg_walk(ir_graph *irg, void *pre, void *post); - -/** - * A walk over a graph in block-wise order is initiated - */ -void stat_irg_walk_blkwise(ir_graph *irg, void *pre, void *post); - -/** - * A walk over the graph's blocks is initiated - */ -void stat_irg_block_walk(ir_graph *irg, const ir_node *node, void *pre, void *post); - -/** - * Some nodes were optimized into some others due to an optimization - */ -void stat_merge_nodes( - ir_node **new_node_array, int new_num_entries, - ir_node **old_node_array, int old_num_entries, - stat_opt_kind opt); - -/** - * Reassociation of nodes started/stopped. - */ -void stat_reassociate(int start); - -/** - * A node was lowered into other nodes - */ -void stat_lower(ir_node *node); - -/** - * A graph was inlined - */ -void stat_inline(ir_node *call, ir_graph *irg); - -/** - * A graph with tail-recursions was optimized. - */ -void stat_tail_rec(ir_graph *irg); - -/** - * Strength reduction was performed on an iteration variable. - */ -void stat_strength_red(ir_graph *irg, ir_node *strong, ir_node *cmp); - -/** - * Start the dead node elimination. - */ -void stat_dead_node_elim_start(ir_graph *irg); - -/** - * Stops the dead node elimination. - */ -void stat_dead_node_elim_stop(ir_graph *irg); - -/** - * A multiply was replaced by a series of Shifts/Adds/Subs - */ -void stat_arch_dep_replace_mul_with_shifts(ir_node *mul); - -/** - * A division was replaced by a series of Shifts/Muls - */ -void stat_arch_dep_replace_div_by_const(ir_node *div); - -/** - * A modulo was replaced by a series of Shifts/Muls - */ -void stat_arch_dep_replace_mod_by_const(ir_node *mod); - -/** - * A Divod was replaced by a series of Shifts/Muls - */ -void stat_arch_dep_replace_DivMod_by_const(ir_node *divmod); - -/** - * helper: get an ir_op from an opcode - * - * @param code the opcode - * - * @return The associated ir_op or NULL if the opcode could not be found. - */ -ir_op *stat_get_op_from_opcode(opcode code); - #else #define init_stat(enable_options) -#define stat_finish(name) -#define stat_new_ir_op(op) -#define stat_free_ir_op(op) -#define stat_new_node(node) -#define stat_turn_into_id(node) -#define stat_new_graph(irg, ent) -#define stat_free_graph(irg) -#define stat_irg_walk(irg, pre, post) -#define stat_irg_walk_blkwise(irg, pre, post) -#define stat_irg_block_walk(irg, node, pre, post) -#define stat_merge_nodes(new_node_array, new_num_entries, old_node_array, old_num_entries, opt) -#define stat_reassociate(start) -#define stat_lower(node) -#define stat_inline(call, irg) -#define stat_tail_rec(irg) -#define stat_strength_red(irg, strong, cmp) -#define stat_dead_node_elim_start(irg) -#define stat_dead_node_elim_stop(irg) -#define stat_arch_dep_replace_mul_with_shifts(irn) -#define stat_arch_dep_replace_div_by_const(irn) -#define stat_arch_dep_replace_mod_by_const(irn) -#define stat_arch_dep_replace_DivMod_by_const(irn) -#endif +#endif /* FIRM_STATISTICS */ #endif /* _FIRMSTAT_H_ */