projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add and fix some comments.
[libfirm]
/
ir
/
be
/
becopyilp2.c
diff --git
a/ir/be/becopyilp2.c
b/ir/be/becopyilp2.c
index
c45683f
..
36dad10
100644
(file)
--- a/
ir/be/becopyilp2.c
+++ b/
ir/be/becopyilp2.c
@@
-30,19
+30,19
@@
* - Clique-star constraints
*
*
* - Clique-star constraints
*
*
- *
\min \sum_{ (i,j) \in Q } w_ij y_ij
+ * \min \sum_{ (i,j) \in Q } w_ij y_ij
*
*
- *
\sum_c x_nc = 1
n \in N, c \in C
+ *
\sum_c x_nc = 1
n \in N, c \in C
*
*
- *
x_nc = 0
n \in N, c \not\in C(n)
+ *
x_nc = 0
n \in N, c \not\in C(n)
*
*
- *
\sum x_nc <= 1
x_nc \in Clique \in AllCliques, c \in C
+ *
\sum x_nc <= 1
x_nc \in Clique \in AllCliques, c \in C
*
*
- *
\sum_{e \in p} y_e >= 1 p \in P
path constraints
+ *
\sum_{e \in p} y_e >= 1 p \in P
path constraints
*
*
- *
\sum_{e \in cs} y_e >= |cs| - 1 cs \in CP
clique-star constraints
+ *
\sum_{e \in cs} y_e >= |cs| - 1 cs \in CP
clique-star constraints
*
*
- *
x_nc, y_ij \in N, w_ij \in R^+
+ * x_nc, y_ij \in N, w_ij \in R^+
*/
#include "config.h"
*/
#include "config.h"
@@
-55,13
+55,13
@@
#include "irtools.h"
#include "irgwalk.h"
#include "becopyilp_t.h"
#include "irtools.h"
#include "irgwalk.h"
#include "becopyilp_t.h"
-#include "beifg
_t
.h"
+#include "beifg.h"
#include "besched.h"
#include "bemodule.h"
#define DEBUG_LVL 1
#include "besched.h"
#include "bemodule.h"
#define DEBUG_LVL 1
-typedef struct
_
local_env_t {
+typedef struct local_env_t {
double time_limit;
int first_x_var, last_x_var;
int n_colors;
double time_limit;
int first_x_var, last_x_var;
int n_colors;
@@
-73,16
+73,16
@@
typedef struct _local_env_t {
static void build_coloring_cstr(ilp_env_t *ienv)
{
be_ifg_t *ifg = ienv->co->cenv->ifg;
static void build_coloring_cstr(ilp_env_t *ienv)
{
be_ifg_t *ifg = ienv->co->cenv->ifg;
-
void *iter = be_ifg_nodes_iter_alloca(ifg)
;
+
nodes_iter_t iter
;
bitset_t *colors;
ir_node *irn;
char buf[16];
colors = bitset_alloca(arch_register_class_n_regs(ienv->co->cls));
bitset_t *colors;
ir_node *irn;
char buf[16];
colors = bitset_alloca(arch_register_class_n_regs(ienv->co->cls));
- be_ifg_foreach_node(ifg, iter, irn)
+ be_ifg_foreach_node(ifg,
&
iter, irn)
if (!sr_is_removed(ienv->sr, irn)) {
if (!sr_is_removed(ienv->sr, irn)) {
-
bitset_pos
_t col;
+
size
_t col;
int cst_idx;
const arch_register_req_t *req;
int curr_node_color = get_irn_col(irn);
int cst_idx;
const arch_register_req_t *req;
int curr_node_color = get_irn_col(irn);
@@
-133,7
+133,7
@@
static void build_interference_cstr(ilp_env_t *ienv)
local_env_t *lenv = ienv->env;
be_ifg_t *ifg = ienv->co->cenv->ifg;
int n_colors = lenv->n_colors;
local_env_t *lenv = ienv->env;
be_ifg_t *ifg = ienv->co->cenv->ifg;
int n_colors = lenv->n_colors;
-
void *iter = be_ifg_cliques_iter_alloca(ifg)
;
+
cliques_iter_t iter
;
ir_node **clique = ALLOCAN(ir_node*, n_colors);
int size;
int col;
ir_node **clique = ALLOCAN(ir_node*, n_colors);
int size;
int col;
@@
-142,7
+142,7
@@
static void build_interference_cstr(ilp_env_t *ienv)
char buf[16];
/* for each maximal clique */
char buf[16];
/* for each maximal clique */
- be_ifg_foreach_clique(ifg, iter, clique, &size) {
+ be_ifg_foreach_clique(ifg,
&
iter, clique, &size) {
int realsize = 0;
for (i=0; i<size; ++i)
int realsize = 0;
for (i=0; i<size; ++i)
@@
-218,7
+218,7
@@
static void build_affinity_cstr(ilp_env_t *ienv)
/**
* Helping stuff for build_clique_star_cstr
*/
/**
* Helping stuff for build_clique_star_cstr
*/
-typedef struct
_
edge_t {
+typedef struct edge_t {
ir_node *n1, *n2;
} edge_t;
ir_node *n1, *n2;
} edge_t;
@@
-281,7
+281,7
@@
static inline void remove_edge(set *edges, ir_node *n1, ir_node *n2, int *counte
}
}
}
}
-#define pset_foreach(pset, irn) for(irn=pset_first(pset); irn; irn=pset_next(pset))
+#define pset_foreach(pset, irn) for
(irn=pset_first(pset); irn; irn=pset_next(pset))
/**
* Search for an interference clique and an external node
/**
* Search for an interference clique and an external node
@@
-551,6
+551,7
@@
static void ilp2_apply(ilp_env_t *ienv)
#endif
}
#endif
}
+BE_REGISTER_MODULE_CONSTRUCTOR(be_init_copyilp2);
void be_init_copyilp2(void)
{
static co_algo_info copyheur = {
void be_init_copyilp2(void)
{
static co_algo_info copyheur = {
@@
-560,8
+561,6
@@
void be_init_copyilp2(void)
be_register_copyopt("ilp", ©heur);
}
be_register_copyopt("ilp", ©heur);
}
-BE_REGISTER_MODULE_CONSTRUCTOR(be_init_copyilp2);
-
int co_solve_ilp2(copy_opt_t *co)
{
lpp_sol_state_t sol_state;
int co_solve_ilp2(copy_opt_t *co)
{
lpp_sol_state_t sol_state;
@@
-579,8
+578,8
@@
int co_solve_ilp2(copy_opt_t *co)
my.normal_colors = bitset_alloca(arch_register_class_n_regs(co->cls));
bitset_clear_all(my.normal_colors);
my.normal_colors = bitset_alloca(arch_register_class_n_regs(co->cls));
bitset_clear_all(my.normal_colors);
-
arch_put_non_ignore_regs(
co->cls, my.normal_colors);
- my.n_colors = bitset_popcnt(my.normal_colors);
+
be_put_allocatable_regs(co->irg,
co->cls, my.normal_colors);
+ my.n_colors = bitset_popc
ou
nt(my.normal_colors);
ienv = new_ilp_env(co, ilp2_build, ilp2_apply, &my);
ienv = new_ilp_env(co, ilp2_build, ilp2_apply, &my);