X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbecopystat.h;h=0aa055bc1602d67d08c7a85b4688b8b1a9cc820d;hb=77f1eeaeb90f2d231b0ccc2fcbe071a9b457e6c3;hp=15fde49b5e7d75f8c0f936736812a4d9e50c88ca;hpb=c84cfae34532910cb95a7da3ed4c949fe0b7d6a4;p=libfirm diff --git a/ir/be/becopystat.h b/ir/be/becopystat.h index 15fde49b5..0aa055bc1 100644 --- a/ir/be/becopystat.h +++ b/ir/be/becopystat.h @@ -1,19 +1,91 @@ /** - * @author Daniel Grund - * @date 11.04.2005 + * Author: Daniel Grund + * Date: 11.04.2005 + * Copyright: (c) Universitaet Karlsruhe + * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. */ +#undef DO_STAT + +#ifdef DO_STAT -//TODO #ifndef _BECOPYSTAT_H #define _BECOPYSTAT_H -#include "becopyopt.h" +#include "irgraph.h" + +#define MAX_ARITY 10 +#define MAX_CLS_SIZE 10 +#define MAX_PHASE 2 + +/** + * For an explanation of these values see phi_stat_dump_pretty + */ +enum vals_t { + I_ALL_NODES = 0, + I_BLOCKS, + + /* phi nodes */ + I_PHI_CNT, /* number of phi nodes */ + I_PHI_ARG_CNT, /* number of arguments of phis */ + I_PHI_ARG_SELF, /* number of arguments of phis being the phi itself */ + I_PHI_ARG_CONST, /* number of arguments of phis being consts */ + I_PHI_ARG_PRED, /* ... being defined in a cf-pred */ + I_PHI_ARG_GLOB, /* ... being defined elsewhere */ + I_PHI_ARITY_S, + I_PHI_ARITY_E = I_PHI_ARITY_S+MAX_ARITY, + + /* phi classes */ + I_CLS_CNT, /* number of phi classes */ + I_CLS_IF_FREE, /* number of pc having no interference */ + I_CLS_IF_MAX, /* number of possible interferences in all classes */ + I_CLS_IF_CNT, /* number of actual interferences in all classes */ + I_CLS_SIZE_S, + I_CLS_SIZE_E = I_CLS_SIZE_S+MAX_CLS_SIZE, + + /* TODO copy nodes */ + I_CPY_CNT, /* number of copynodes */ + + /* TODO ilp values */ + I_ILP_TIME, /* !external set! solving time in 10th seconds */ + I_ILP_ITER, /* !external set! number of simplex iterations */ + + /* copy instructions */ + I_COPIES_MAX, /* max number of copies possible */ + I_COPIES_INIT, /* !external set! number of copies in initial allocation */ + I_COPIES_HEUR, /* !external set! number of copies after heuristic */ + I_COPIES_OPT, /* !external set! number of copies after ilp */ + I_COPIES_LB, /* !external set! the lower bound used for number of copies */ + I_COPIES_IF, /* number of copies inevitable due to root-arg-interf */ + + ASIZE +}; + +/** + * Holds current values. Values are added till next phi_stat_reset + */ +int curr_vals[ASIZE]; + +void stat_init(void); -typedef struct _irg_stat_t irg_stat_t; +/** + * Resets the array holding the data + */ +void stat_reset(void); -irg_stat_t *new_irg_stat(copy_opt_t *co); -void irg_stat_count(irg_stat_t *is, copy_opt_t *co, int phase); -void irg_stat_print(irg_stat_t *is); -void all_stat_dump(void); +/** + * Collect common irg data + */ +void stat_collect_irg(ir_graph *irg); +/** + * Dumps the current contents of the internal values to a file. + */ +void stat_dump(ir_graph *irg); + +/** + * Dumps the current contents of the values array and annotations to a file. + */ +void stat_dump_pretty(ir_graph *irg); + +#endif #endif