projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
- finally understand HOW n-input nodes made the Follower -> Leader transition
[libfirm]
/
ir
/
be
/
becopystat.c
diff --git
a/ir/be/becopystat.c
b/ir/be/becopystat.c
index
01edf22
..
a095a20
100644
(file)
--- a/
ir/be/becopystat.c
+++ b/
ir/be/becopystat.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (C) 1995-200
7
University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-200
8
University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
*
* This file is part of libFirm.
*
@@
-18,18
+18,19
@@
*/
/**
*/
/**
- * Author: Daniel Grund
- * Date: 19.04.2005
- * Copyright: (c) Universitaet Karlsruhe
- * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE.
+ * @file
+ * @brief Copy node statistics.
+ * @author Daniel Grund
+ * @date 19.04.2005
+ * @version $Id$
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <string.h>
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <string.h>
-#include <libcore/lc_timing.h>
+#include "timing.h"
#include "xmalloc.h"
#include "irgraph.h"
#include "irgwalk.h"
#include "xmalloc.h"
#include "irgraph.h"
#include "irgwalk.h"
@@
-44,6
+45,7
@@
#include "becopystat.h"
#include "beirg_t.h"
#include "bemodule.h"
#include "becopystat.h"
#include "beirg_t.h"
#include "bemodule.h"
+#include "beintlive_t.h"
#define DEBUG_LVL SET_LEVEL_1
DEBUG_ONLY(static firm_dbg_module_t *dbg = NULL;)
#define DEBUG_LVL SET_LEVEL_1
DEBUG_ONLY(static firm_dbg_module_t *dbg = NULL;)
@@
-186,10
+188,12
@@
static INLINE int was_edge_critical(const ir_node *bl, int pos) {
/**
* Collect phi node data
*/
/**
* Collect phi node data
*/
-static void stat_phi_node(be_chordal_env_t *chordal_env, ir_node *phi) {
+static void stat_phi_node(be_chordal_env_t *chordal_env, ir_node *phi)
+{
int arity, i;
ir_node *phi_bl;
assert(is_Phi(phi));
int arity, i;
ir_node *phi_bl;
assert(is_Phi(phi));
+ (void) chordal_env;
/* count all phi phis */
curr_vals[I_PHI_CNT]++;
/* count all phi phis */
curr_vals[I_PHI_CNT]++;
@@
-237,10
+241,9
@@
static void stat_phi_node(be_chordal_env_t *chordal_env, ir_node *phi) {
* Collect register-constrained node data
*/
static void stat_copy_node(be_chordal_env_t *chordal_env, ir_node *root) {
* Collect register-constrained node data
*/
static void stat_copy_node(be_chordal_env_t *chordal_env, ir_node *root) {
- be_lv_t *lv = be_get_birg_liveness(chordal_env->birg);
curr_vals[I_CPY_CNT]++;
curr_vals[I_COPIES_MAX]++;
curr_vals[I_CPY_CNT]++;
curr_vals[I_COPIES_MAX]++;
- if (values_interfere(
lv
, root, get_Perm_src(root))) {
+ if (values_interfere(
chordal_env->birg
, root, get_Perm_src(root))) {
curr_vals[I_COPIES_IF]++;
assert(0 && "A Perm pair (in/out) should never interfere!");
}
curr_vals[I_COPIES_IF]++;
assert(0 && "A Perm pair (in/out) should never interfere!");
}
@@
-251,7
+254,6
@@
static void stat_copy_node(be_chordal_env_t *chordal_env, ir_node *root) {
*/
static void stat_phi_class(be_chordal_env_t *chordal_env, ir_node **pc) {
int i, o, size, if_free, phis;
*/
static void stat_phi_class(be_chordal_env_t *chordal_env, ir_node **pc) {
int i, o, size, if_free, phis;
- be_lv_t *lv = be_get_birg_liveness(chordal_env->birg);
/* phi class count */
curr_vals[I_CLS_CNT]++;
/* phi class count */
curr_vals[I_CLS_CNT]++;
@@
-277,7
+279,7
@@
static void stat_phi_class(be_chordal_env_t *chordal_env, ir_node **pc) {
curr_vals[I_CLS_IF_MAX] += size * (size - 1) / 2;
for (if_free = 1, i = 0; i < size - 1; ++i)
for (o = i + 1; o < size; ++o)
curr_vals[I_CLS_IF_MAX] += size * (size - 1) / 2;
for (if_free = 1, i = 0; i < size - 1; ++i)
for (o = i + 1; o < size; ++o)
- if (values_interfere(
lv
, pc[i], pc[o])) {
+ if (values_interfere(
chordal_env->birg
, pc[i], pc[o])) {
if_free = 0;
curr_vals[I_CLS_IF_CNT]++;
}
if_free = 0;
curr_vals[I_CLS_IF_CNT]++;
}
@@
-370,7
+372,7
@@
void copystat_dump(ir_graph *irg) {
snprintf(buf, sizeof(buf), "%s__%s", get_irp_prog_name(), get_entity_name(get_irg_entity(irg)));
buf[sizeof(buf) - 1] = '\0';
snprintf(buf, sizeof(buf), "%s__%s", get_irp_prog_name(), get_entity_name(get_irg_entity(irg)));
buf[sizeof(buf) - 1] = '\0';
- out = ffopen(buf, "stat", "wt");
+ out =
be_
ffopen(buf, "stat", "wt");
fprintf(out, "%d\n", ASIZE);
for (i = 0; i < ASIZE; i++) {
fprintf(out, "%d\n", ASIZE);
for (i = 0; i < ASIZE; i++) {
@@
-394,7
+396,7
@@
void copystat_dump_pretty(ir_graph *irg) {
snprintf(buf, sizeof(buf), "%s__%s", get_irp_prog_name(), get_entity_name(get_irg_entity(irg)));
buf[sizeof(buf) - 1] = '\0';
snprintf(buf, sizeof(buf), "%s__%s", get_irp_prog_name(), get_entity_name(get_irg_entity(irg)));
buf[sizeof(buf) - 1] = '\0';
- out = ffopen(buf, "pstat", "wt");
+ out =
be_
ffopen(buf, "pstat", "wt");
fprintf(out, "Nodes %4d\n", curr_vals[I_ALL_NODES]);
fprintf(out, "Blocks %4d\n", curr_vals[I_BLOCKS]);
fprintf(out, "Nodes %4d\n", curr_vals[I_ALL_NODES]);
fprintf(out, "Blocks %4d\n", curr_vals[I_BLOCKS]);
@@
-476,7
+478,7
@@
static void load_colors(color_save_t *color_saver) {
*/
void co_compare_solvers(be_chordal_env_t *chordal_env) {
copy_opt_t *co;
*/
void co_compare_solvers(be_chordal_env_t *chordal_env) {
copy_opt_t *co;
-
lc
_timer_t *timer;
+
ir
_timer_t *timer;
color_save_t saver;
int costs_inevit, costs_init, costs_solved, lower_bound;
color_save_t saver;
int costs_inevit, costs_init, costs_solved, lower_bound;
@@
-507,44
+509,44
@@
void co_compare_solvers(be_chordal_env_t *chordal_env) {
copystat_add_max_costs(co_get_max_copy_costs(co));
/* heuristic 1 (Daniel Grund) */
copystat_add_max_costs(co_get_max_copy_costs(co));
/* heuristic 1 (Daniel Grund) */
- timer =
lc
_timer_register("heur1", NULL);
-
lc
_timer_reset_and_start(timer);
+ timer =
ir
_timer_register("heur1", NULL);
+
ir
_timer_reset_and_start(timer);
co_solve_heuristic(co);
co_solve_heuristic(co);
-
lc
_timer_stop(timer);
+
ir
_timer_stop(timer);
costs_solved = co_get_copy_costs(co);
DBG((dbg, LEVEL_1, "HEUR1 costs: %3d\n", costs_solved));
costs_solved = co_get_copy_costs(co);
DBG((dbg, LEVEL_1, "HEUR1 costs: %3d\n", costs_solved));
- copystat_add_heur_time(
lc
_timer_elapsed_msec(timer));
+ copystat_add_heur_time(
ir
_timer_elapsed_msec(timer));
copystat_add_heur_costs(costs_solved);
assert(lower_bound <= costs_solved);
/* heuristic 2 (Sebastian Hack) */
copystat_add_heur_costs(costs_solved);
assert(lower_bound <= costs_solved);
/* heuristic 2 (Sebastian Hack) */
- timer =
lc
_timer_register("heur2", NULL);
-
lc
_timer_reset_and_start(timer);
+ timer =
ir
_timer_register("heur2", NULL);
+
ir
_timer_reset_and_start(timer);
co_solve_heuristic_new(co);
co_solve_heuristic_new(co);
-
lc
_timer_stop(timer);
+
ir
_timer_stop(timer);
costs_solved = co_get_copy_costs(co);
DBG((dbg, LEVEL_1, "HEUR2 costs: %3d\n", costs_solved));
costs_solved = co_get_copy_costs(co);
DBG((dbg, LEVEL_1, "HEUR2 costs: %3d\n", costs_solved));
- copystat_add_heur_time(
lc
_timer_elapsed_msec(timer));
+ copystat_add_heur_time(
ir
_timer_elapsed_msec(timer));
copystat_add_heur_costs(costs_solved);
assert(lower_bound <= costs_solved);
/* Park & Moon register coalescing (Kimon Hoffmann) */
copystat_add_heur_costs(costs_solved);
assert(lower_bound <= costs_solved);
/* Park & Moon register coalescing (Kimon Hoffmann) */
- timer =
lc
_timer_register("park", NULL);
-
lc
_timer_reset_and_start(timer);
+ timer =
ir
_timer_register("park", NULL);
+
ir
_timer_reset_and_start(timer);
co_solve_park_moon(co);
co_solve_park_moon(co);
-
lc
_timer_stop(timer);
+
ir
_timer_stop(timer);
costs_solved = co_get_copy_costs(co);
DBG((dbg, LEVEL_1, "Park/Moon costs: %3d\n", costs_solved));
costs_solved = co_get_copy_costs(co);
DBG((dbg, LEVEL_1, "Park/Moon costs: %3d\n", costs_solved));
- copystat_add_heur_time(
lc
_timer_elapsed_msec(timer));
+ copystat_add_heur_time(
ir
_timer_elapsed_msec(timer));
copystat_add_heur_costs(costs_solved);
assert(lower_bound <= costs_solved);
copystat_add_heur_costs(costs_solved);
assert(lower_bound <= costs_solved);