#include "irprog.h"
#include "iredges.h"
#include "phiclass_t.h"
+#include "beutil.h"
#include "becopyopt.h"
#include "becopystat.h"
#include "xmalloc.h"
#define DEBUG_LVL SET_LEVEL_1
static firm_dbg_module_t *dbg = NULL;
-#define MAX_ARITY 10
-#define MAX_CLS_SIZE 10
-#define MAX_CLS_PHIS 10
+#define MAX_ARITY 20
+#define MAX_CLS_SIZE 20
+#define MAX_CLS_PHIS 20
/**
* For an explanation of these values see the code of copystat_dump_pretty
I_COPIES_MAX, /* max possible costs of copies*/
I_COPIES_INIT, /* number of copies in initial allocation */
I_COPIES_HEUR, /* number of copies after heuristic */
+ I_COPIES_5SEC, /* number of copies after ilp with max n sec */
+ I_COPIES_30SEC, /* number of copies after ilp with max n sec */
I_COPIES_OPT, /* number of copies after ilp */
I_COPIES_IF, /* number of copies inevitable due to root-arg-interf */
if (is_Block(node)) /* count all blocks */
curr_vals[I_BLOCKS]++;
- if (is_Phi(node) && mode_is_datab(get_irn_mode(node))) /* collect phis */
+ if (is_Reg_Phi(node)) /* collect phis */
pset_insert_ptr(all_phi_nodes, node);
- if (is_Copy(arch_env, node))
+ if (is_Perm_Proj(arch_env, node))
pset_insert_ptr(all_copy_nodes, node);
+
+ /* TODO: Add 2-Addr-Code nodes */
}
static void copystat_collect_irg(ir_graph *irg, arch_env_t *arch_env) {
}
#define is_curr_reg_class(irn) \
- (arch_get_irn_reg_class(chordal_env->session_env->main_env->arch_env, irn, \
- arch_pos_make_out(0)) == chordal_env->cls)
+ (arch_get_irn_reg_class(chordal_env->main_env->arch_env, irn, \
+ -1) == chordal_env->cls)
void copystat_collect_cls(be_chordal_env_t *chordal_env) {
ir_node *n;
pset *pc;
- ir_graph *irg = chordal_env->session_env->irg;
+ ir_graph *irg = chordal_env->irg;
if (last_irg != irg) {
copystat_reset();
- copystat_collect_irg(irg, chordal_env->session_env->main_env->arch_env);
+ copystat_collect_irg(irg, chordal_env->main_env->arch_env);
}
for (n = pset_first(all_phi_nodes); n; n = pset_next(all_phi_nodes))
void copystat_add_heur_costs(int costs) {
curr_vals[I_COPIES_HEUR] += costs;
}
+void copystat_add_ilp_5_sec_costs(int costs) {
+ curr_vals[I_COPIES_5SEC] += costs;
+}
+void copystat_add_ilp_30_sec_costs(int costs) {
+ curr_vals[I_COPIES_30SEC] += costs;
+}
void copystat_add_opt_costs(int costs) {
curr_vals[I_COPIES_OPT] += costs;
}