X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fia32%2Fia32_transform.h;h=cf0215002f556a4db376f41fce619d7f16e21745;hb=cbfbedae75798a9830fb0ef090189345ede85dc8;hp=863016bd7866d25a3a12557d71eb895f09f14a34;hpb=d99b65fa3795ce6dd713b99c3aa031e2f349e98e;p=libfirm diff --git a/ir/be/ia32/ia32_transform.h b/ir/be/ia32/ia32_transform.h index 863016bd7..cf0215002 100644 --- a/ir/be/ia32/ia32_transform.h +++ b/ir/be/ia32/ia32_transform.h @@ -1,6 +1,47 @@ +/** + * Function prototypes for Firm into ia32-Firm transformations. + * @author Christian Wuerdig + * $Id$ + */ + #ifndef _IA32_TRANSFORM_H_ #define _IA32_TRANSFORM_H_ +#include "firm_config.h" +#include "bearch_ia32_t.h" + +/** + * Enters all transform functions into the generic pointer + */ +void ia32_register_transformers(void); + +/** + * Transforms the given Firm node into one or more appropriate ia32 nodes. + */ void ia32_transform_node(ir_node *node, void *env); +/** + * The Psi selector can be a tree of compares combined with "And"s and "Or"s. + * We create a Set node, respectively a xCmp in case the Psi is a float, for each + * compare, which causes the compare result to be stores in a register. The + * "And"s and "Or"s are transformed later, we only adjust their mode. + */ +void ia32_transform_psi_cond_tree(ir_node *node, void *env); + +/** + * Transforms a Minus node. + * + * @param env The transformation environment + * @param op The Minus operand + * @return The created ia32 Minus node + */ +ir_node *gen_Minus_ex(ia32_transform_env_t *env, ir_node *op); + +#ifndef NDEBUG +/** + * Prints the old node name on cg obst and returns a pointer to it. + */ +const char *ia32_get_old_node_name(ia32_code_gen_t *cg, ir_node *irn); +#endif /* NDEBUG */ + #endif /* _IA32_TRANSFORM_H_ */