beuses: Remove stale start loop test.
[libfirm] / ir / be / arm / arm_optimize.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 several optimizations for ARM.
23  * @author      Michael Beck
24  */
25 #ifndef FIRM_BE_ARM_ARM_OPTIMIZE_H
26 #define FIRM_BE_ARM_ARM_OPTIMIZE_H
27
28 #include "irgraph.h"
29 #include "bearch_arm_t.h"
30
31 typedef struct arm_vals {
32         int ops;
33         unsigned char values[4];
34         unsigned char rors[4];
35 } arm_vals;
36
37 /**
38  * Encodes an immediate with shifter operand
39  */
40 unsigned int arm_encode_imm_w_shift(unsigned int shift, unsigned int immediate);
41
42 /**
43  * Decode an immediate with shifter operand
44  */
45 unsigned int arm_decode_imm_w_shift(long imm_value);
46
47 /**
48  * construct 8bit values and rot amounts for a 32bit value.
49  */
50 void arm_gen_vals_from_word(unsigned int value, arm_vals *result);
51
52 /**
53  * Performs Peephole Optimizations an a graph.
54  *
55  * @param irg   the graph
56  */
57 void arm_peephole_optimization(ir_graph *irg);
58
59 #endif