2 * This file is part of libFirm.
3 * Copyright (C) 2012 University of Karlsruhe.
8 * @brief Heuristic PBQP solver.
10 * @author Sebastian Buchwald
12 #ifndef KAPS_OPTIMAL_H
13 #define KAPS_OPTIMAL_H
17 extern pbqp_edge_t **edge_bucket;
18 extern pbqp_node_t **node_buckets[4];
19 extern pbqp_node_t **reduced_bucket;
20 extern pbqp_node_t *merged_node;
22 void apply_edge(pbqp_t *pbqp);
24 void apply_RI(pbqp_t *pbqp);
25 void apply_RII(pbqp_t *pbqp);
26 void apply_RM(pbqp_t *pbqp, pbqp_node_t *node);
28 void back_propagate(pbqp_t *pbqp);
29 num determine_solution(pbqp_t *pbqp);
30 void fill_node_buckets(pbqp_t *pbqp);
31 void free_buckets(void);
32 unsigned get_local_minimal_alternative(pbqp_t *pbqp, pbqp_node_t *node);
33 pbqp_node_t *get_node_with_max_degree(void);
34 void initial_simplify_edges(pbqp_t *pbqp);
35 void select_alternative(pbqp_node_t *node, unsigned selected_index);
36 void simplify_edge(pbqp_t *pbqp, pbqp_edge_t *edge);
37 void reorder_node_after_edge_deletion(pbqp_node_t *node);
38 void reorder_node_after_edge_insertion(pbqp_node_t *node);
40 int node_is_reduced(pbqp_node_t *node);
42 #endif /* KAPS_OPTIMAL_H */