becopyheur2: Avoid unnecessary copies of the admissible registers.
[libfirm] / ir / kaps / pbqp_t.h
1 /*
2  * This file is part of libFirm.
3  * Copyright (C) 2012 University of Karlsruhe.
4  */
5
6 /**
7  * @file
8  * @brief   PBQP data types.
9  * @date    02.10.2008
10  * @author  Sebastian Buchwald
11  */
12 #ifndef KAPS_PBQP_T_H
13 #define KAPS_PBQP_T_H
14
15 #include <limits.h>
16 #include <stdint.h>
17 #include <stdio.h>
18
19 #include "adt/obstack.h"
20
21 #define KAPS_DUMP 0
22 #define KAPS_ENABLE_VECTOR_NAMES 0
23 #define KAPS_STATISTIC 0
24 #define KAPS_TIMING 0
25 #define KAPS_USE_UNSIGNED 1
26
27 #if KAPS_USE_UNSIGNED
28         typedef unsigned num;
29         #define INF_COSTS UINT_MAX
30 #else
31         typedef intmax_t num;
32         #define INF_COSTS INTMAX_MAX
33 #endif
34
35 #include "matrix_t.h"
36 #include "vector_t.h"
37
38 typedef struct pbqp_edge_t pbqp_edge_t;
39 typedef struct pbqp_node_t pbqp_node_t;
40 typedef struct pbqp_t      pbqp_t;
41
42 struct pbqp_t {
43         struct obstack obstack;            /* Obstack. */
44         num            solution;           /* Computed solution. */
45         size_t         num_nodes;          /* Number of PBQP nodes. */
46         pbqp_node_t  **nodes;              /* Nodes of PBQP. */
47         FILE          *dump_file;          /* File to dump in. */
48 #if KAPS_STATISTIC
49         unsigned       num_bf;             /* Number of brute force reductions. */
50         unsigned       num_edges;          /* Number of independent edges. */
51         unsigned       num_r0;             /* Number of trivial solved nodes. */
52         unsigned       num_r1;             /* Number of R1 reductions. */
53         unsigned       num_r2;             /* Number of R2 reductions. */
54         unsigned       num_rm;             /* Number of RM reductions. */
55         unsigned       num_rn;             /* Number of RN reductions. */
56 #endif
57 };
58
59 #endif /* KAPS_PBQP_T_H */