X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fstat%2Ffirmstat.h;h=dd1ba44d7faeb61bb0303dc51e109088e9d3c927;hb=f73f5c542edb2e4ff58a4bdc4f9d53415a14c4a1;hp=b14f8dbff13cda366181bc5dca97430bab9c6641;hpb=86328fafe09cb0c92c93fae0f9309946286ae9df;p=libfirm diff --git a/ir/stat/firmstat.h b/ir/stat/firmstat.h index b14f8dbff..dd1ba44d7 100644 --- a/ir/stat/firmstat.h +++ b/ir/stat/firmstat.h @@ -23,7 +23,11 @@ */ enum firmstat_options_t { FIRMSTAT_ENABLED = 0x00000001, /**< enable statistics */ - FIRMSTAT_PATTERN_ENABLED = 0x00000002 /**< enable pattern calculation */ + 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 */ }; /** @@ -39,16 +43,21 @@ void stat_finish(const char *name); 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_CONST_EVAL, /**< constant evaluation */ - STAT_OPT_STRENGTH_RED, /**< strenght reduction */ + STAT_OPT_CSE, /**< common subexpression elimination */ + STAT_OPT_STRENGTH_RED, /**< strength reduction */ + STAT_OPT_ARCH_DEP, /**< architecture dependent optimization */ + STAT_OPT_REASSOC, /**< reassociation */ + STAT_OPT_POLY_CALL, /**< polymorphic call optimization */ STAT_LOWERED, /**< lowered */ STAT_OPT_MAX @@ -74,12 +83,12 @@ void stat_free_ir_op(const ir_op *op); /** * A new node is created. */ -void stat_new_node(const ir_node *node); +void stat_new_node(ir_node *node); /** * A node is changed into a Id node */ -void stat_turn_into_id(const ir_node *node); +void stat_turn_into_id(ir_node *node); /** * A new graph was created @@ -114,6 +123,11 @@ void stat_merge_nodes( 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 */ @@ -144,6 +158,26 @@ void stat_dead_node_elim_start(ir_graph *irg); */ 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 * @@ -167,12 +201,17 @@ ir_op *stat_get_op_from_opcode(opcode code); #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