- Added 2 new blockschedulers, a greedy algorithm and an "optimal" ILP that
[libfirm] / ir / be / ia32 / ia32_transform.h
1 /**
2  * Function prototypes for Firm into ia32-Firm transformations.
3  * @author Christian Wuerdig
4  * $Id$
5  */
6
7 #ifndef _IA32_TRANSFORM_H_
8 #define _IA32_TRANSFORM_H_
9
10 #include "firm_config.h"
11 #include "bearch_ia32_t.h"
12
13 /**
14  * Enters all transform functions into the generic pointer
15  */
16 void ia32_register_transformers(void);
17
18 /**
19  * Transforms the given Firm node into one or more appropriate ia32 nodes.
20  */
21 void ia32_transform_node(ir_node *node, void *env);
22
23 /**
24  * The Psi selector can be a tree of compares combined with "And"s and "Or"s.
25  * We create a Set node, respectively a xCmp in case the Psi is a float, for each
26  * compare, which causes the compare result to be stores in a register.  The
27  * "And"s and "Or"s are transformed later, we only adjust their mode.
28  */
29 void ia32_transform_psi_cond_tree(ir_node *node, void *env);
30
31 /**
32  * Transforms a Minus node.
33  *
34  * @param env   The transformation environment
35  * @param op    The Minus operand
36  * @return The created ia32 Minus node
37  */
38 ir_node *gen_Minus_ex(ia32_transform_env_t *env, ir_node *op);
39
40 #ifndef NDEBUG
41 /**
42  * Prints the old node name on cg obst and returns a pointer to it.
43  */
44 const char *ia32_get_old_node_name(ia32_code_gen_t *cg, ir_node *irn);
45 #endif /* NDEBUG */
46
47 #endif /* _IA32_TRANSFORM_H_ */