Rename reorder_node to reorder_node_after_edge_deletion.
[libfirm] / heuristical_co_ld.c
index 9325cdb..82717cb 100644 (file)
@@ -39,6 +39,8 @@ static void back_propagate_RI(pbqp *pbqp, pbqp_node *node)
        assert(pbqp);
        assert(node);
 
+       (void) pbqp;
+
        edge = node->edges[0];
        mat = edge->costs;
        is_src = edge->src == node;
@@ -144,10 +146,10 @@ static void back_propagate_RII(pbqp *pbqp, pbqp_node *node)
 
 static void back_propagate_RN(pbqp *pbqp, pbqp_node *node)
 {
-       vector                  *vec            = NULL;
-       pbqp_node               *neighbor       = NULL;
-       pbqp_edge               *edge           = NULL;
-       unsigned                 idx            = 0;
+       vector    *vec      = NULL;
+       pbqp_node *neighbor = NULL;
+       pbqp_edge *edge     = NULL;
+       unsigned   idx      = 0;
 
        assert(pbqp);
 
@@ -158,9 +160,11 @@ static void back_propagate_RN(pbqp *pbqp, pbqp_node *node)
                edge = node->edges[idx];
                neighbor = edge->src == node ? edge->tgt : edge->src;
 
-               if(edge->src == node)   /* node is edge src node */
+               /* node is edge src node */
+               if(edge->src == node)
                        vector_add_matrix_col(vec, edge->costs, neighbor->solution);
-               else                                    /* node is edge tgt node */
+               /* node is edge tgt node */
+               else
                        vector_add_matrix_row(vec, edge->costs, neighbor->solution);
        }
 
@@ -208,10 +212,10 @@ static void back_propagate_ld(pbqp *pbqp)
 
 static void apply_RN_co_without_selection(pbqp *pbqp, plist_t *rpeo)
 {
-       pbqp_node   *node               = NULL;
-       pbqp_node       *neighbor               = NULL;
-       pbqp_edge   *edge               = NULL;
-       unsigned         idx                    = 0;
+       pbqp_node *node     = NULL;
+       pbqp_node *neighbor = NULL;
+       pbqp_edge *edge     = NULL;
+       unsigned   idx      = 0;
 
        (void)pbqp;
 
@@ -248,7 +252,7 @@ static void apply_RN_co_without_selection(pbqp *pbqp, plist_t *rpeo)
                        continue;
 
                disconnect_edge(neighbor, edge);
-               reorder_node(neighbor);
+               reorder_node_after_edge_deletion(neighbor);
        }
 
        /* Remove node from old bucket */
@@ -264,30 +268,22 @@ static void apply_heuristic_reductions_co(pbqp *pbqp, plist_t *rpeo)
 {
        #if KAPS_TIMING
                /* create timers */
-               ir_timer_t *t_edge = ir_timer_register("be_pbqp_edges", "pbqp reduce independent edges");
-               ir_timer_t *t_r0 = ir_timer_register("be_pbqp_r0", "pbqp R0 reductions");
-               ir_timer_t *t_r1 = ir_timer_register("be_pbqp_r1", "pbqp R1 reductions");
-               ir_timer_t *t_r2 = ir_timer_register("be_pbqp_r2", "pbqp R2 reductions");
-               ir_timer_t *t_rn = ir_timer_register("be_pbqp_rN", "pbqp RN reductions");
-
-               /* reset timers */
-               ir_timer_reset(t_edge);
-               ir_timer_reset(t_r0);
-               ir_timer_reset(t_r1);
-               ir_timer_reset(t_r2);
-               ir_timer_reset(t_rn);
+               ir_timer_t *t_edge = ir_timer_new();
+               ir_timer_t *t_r1   = ir_timer_new();
+               ir_timer_t *t_r2   = ir_timer_new();
+               ir_timer_t *t_rn   = ir_timer_new();
        #endif
 
        for (;;) {
                if (edge_bucket_get_length(edge_bucket) > 0) {
                        #if KAPS_TIMING
-                               ir_timer_start(t_r0);
+                               ir_timer_start(t_edge);
                        #endif
 
                        apply_edge(pbqp);
 
                        #if KAPS_TIMING
-                               ir_timer_stop(t_r0);
+                               ir_timer_stop(t_edge);
                        #endif
                } else if (node_bucket_get_length(node_buckets[1]) > 0) {
                        #if KAPS_TIMING
@@ -321,11 +317,10 @@ static void apply_heuristic_reductions_co(pbqp *pbqp, plist_t *rpeo)
                        #endif
                } else {
                        #if KAPS_TIMING
-                               printf("%-20s: %8.3lf msec\n", ir_timer_get_description(t_edge), (double)ir_timer_elapsed_usec(t_edge) / 1000.0);
-                               printf("%-20s: %8.3lf msec\n", ir_timer_get_description(t_r0), (double)ir_timer_elapsed_usec(t_r0) / 1000.0);
-                               printf("%-20s: %8.3lf msec\n", ir_timer_get_description(t_r1), (double)ir_timer_elapsed_usec(t_r1) / 1000.0);
-                               printf("%-20s: %8.3lf msec\n", ir_timer_get_description(t_r2), (double)ir_timer_elapsed_usec(t_r2) / 1000.0);
-                               printf("%-20s: %8.3lf msec\n", ir_timer_get_description(t_rn), (double)ir_timer_elapsed_usec(t_rn) / 1000.0);
+                               printf("PBQP RE reductions:           %10.3lf msec\n", (double)ir_timer_elapsed_usec(t_edge) / 1000.0);
+                               printf("PBQP R1 reductions:           %10.3lf msec\n", (double)ir_timer_elapsed_usec(t_r1) / 1000.0);
+                               printf("PBQP R2 reductions:           %10.3lf msec\n", (double)ir_timer_elapsed_usec(t_r2) / 1000.0);
+                               printf("PBQP RN reductions:           %10.3lf msec\n", (double)ir_timer_elapsed_usec(t_rn) / 1000.0);
                        #endif
 
                        return;
@@ -353,9 +348,15 @@ void solve_pbqp_heuristical_co_ld(pbqp *pbqp, plist_t *rpeo)
 
        #if KAPS_STATISTIC
                fh = fopen("solutions.pb", "a");
-               fprintf(fh, ": %lld RE:%u R0:%u R1:%u R2:%u RM:%u RN/BF:%u\n", pbqp->solution,
+               #if KAPS_USE_UNSIGNED
+                       fprintf(fh, ": %u RE:%u R0:%u R1:%u R2:%u RM:%u RN/BF:%u\n", pbqp->solution,
+                                       pbqp->num_edges, pbqp->num_r0, pbqp->num_r1, pbqp->num_r2,
+                                       pbqp->num_rm, pbqp->num_rn);
+               #else
+                       fprintf(fh, ": %lld RE:%u R0:%u R1:%u R2:%u RM:%u RN/BF:%u\n", pbqp->solution,
                                        pbqp->num_edges, pbqp->num_r0, pbqp->num_r1, pbqp->num_r2,
                                        pbqp->num_rm, pbqp->num_rn);
+               #endif
                fclose(fh);
        #endif