e6eb87aaf93ed5d30b9b4b8b5f588e311b9ebd62
[libfirm] / ir / be / beschedmris.h
1 /*
2  * Copyright (C) 1995-2007 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  * Implements a list schedule selector for the MRIS algorithm in:
22  * Govindarajan, Yang, Amaral, Zhang, Gao
23  * Minimum Register Instruction Sequencing to Reduce Register Spills
24  * in out-of-order issue superscalar architectures
25  */
26
27 #ifndef _BESCHEDMRIS_H
28 #define _BESCHEDMRIS_H
29
30 #include "be.h"
31 #include "belistsched.h"
32
33 typedef struct _mris_env_t mris_env_t;
34
35 /**
36  * Preprocess the irg with the MRIS algorithm.
37  * @param birg The backend irg.
38  * @return     Private data to be kept.
39  */
40 mris_env_t *be_sched_mris_preprocess(const be_irg_t *birg);
41
42 /**
43  * Cleanup the MRIS preprocessing.
44  * @param env The private data as returned by be_sched_mris_preprocess().
45  */
46 void be_sched_mris_free(mris_env_t *env);
47
48 /**
49  * Dump IR graph with lineages.
50  */
51 void dump_ir_block_graph_mris(mris_env_t *env, const char *suffix);
52
53 #endif /* _BESCHEDMRIS_H */