1 #ifndef _IA32_TRANSFORM_H_
2 #define _IA32_TRANSFORM_H_
4 #include "firm_config.h"
5 #include "bearch_ia32_t.h"
8 * Enters all transform functions into the generic pointer
10 void ia32_register_transformers(void);
13 * Transforms the given Firm node into one or more appropriate ia32 nodes.
15 void ia32_transform_node(ir_node *node, void *env);
18 * Transforms a Sub or fSub into Neg--Add iff OUT_REG == SRC2_REG.
19 * THIS FUNCTIONS MUST BE CALLED AFTER REGISTER ALLOCATION.
21 void ia32_transform_sub_to_neg_add(ir_node *irn, ia32_code_gen_t *cg);
24 * Transforms a LEA into an Add if possible
25 * THIS FUNCTIONS MUST BE CALLED AFTER REGISTER ALLOCATION.
27 void ia32_transform_lea_to_add(ir_node *irn, ia32_code_gen_t *cg);
30 * The Psi selector can be a tree of compares combined with "And"s and "Or"s.
31 * We create a Set node, respectively a xCmp in case the Psi is a float, for each
32 * compare, which causes the compare result to be stores in a register. The
33 * "And"s and "Or"s are transformed later, we only adjust their mode.
35 void ia32_transform_psi_cond_tree(ir_node *node, void *env);
39 * Prints the old node name on cg obst and returns a pointer to it.
41 const char *ia32_get_old_node_name(ia32_code_gen_t *cg, ir_node *irn);
44 #endif /* _IA32_TRANSFORM_H_ */