we don't need no stinking selfs
[libfirm] / ir / be / beschedmris.h
1 /*
2  * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
3  *
4  * This file is part of libFirm.
5  *
6  * This file may be distributed and/or modified under the terms of the
7  * GNU General Public License version 2 as published by the Free Software
8  * Foundation and appearing in the file LICENSE.GPL included in the
9  * packaging of this file.
10  *
11  * Licensees holding valid libFirm Professional Edition licenses may use
12  * this file in accordance with the libFirm Commercial License.
13  * Agreement provided with the Software.
14  *
15  * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
16  * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17  * PURPOSE.
18  */
19
20 /**
21  * @file
22  * @brief       Implements a list scheduler for the MRIS algorithm.
23  * @author      Sebastian Hack
24  * @date        04.04.2006
25  * @version     $Id$
26  *
27  * Implements a list scheduler for the MRIS algorithm in:
28  * Govindarajan, Yang, Amaral, Zhang, Gao
29  * Minimum Register Instruction Sequencing to Reduce Register Spills
30  * in out-of-order issue superscalar architectures
31  */
32 #ifndef FIRM_BE_BESCHEDMRIS_H
33 #define FIRM_BE_BESCHEDMRIS_H
34
35 #include "beirg.h"
36
37 typedef struct _mris_env_t mris_env_t;
38
39 /**
40  * Preprocess the irg with the MRIS algorithm.
41  * @param birg The backend irg.
42  * @return     Private data to be kept.
43  */
44 mris_env_t *be_sched_mris_preprocess(const be_irg_t *birg);
45
46 /**
47  * Cleanup the MRIS preprocessing.
48  * @param env The private data as returned by be_sched_mris_preprocess().
49  */
50 void be_sched_mris_free(mris_env_t *env);
51
52 /**
53  * Dump IR graph with lineages.
54  */
55 void dump_ir_block_graph_mris(mris_env_t *env, const char *suffix);
56
57 #endif /* FIRM_BE_BESCHEDMRIS_H */