X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbetranshlp.h;h=9db5b156b1cb2352a2f798a04b9d506b596ac835;hb=bed05ed2d3b2ae84849fd2e75603e8834153cd5b;hp=3869c7bb918d3f22fbf211c9934c921be2df5973;hpb=14dd44aff9c64c496e886508b1e27fc09b13c0a8;p=libfirm diff --git a/ir/be/betranshlp.h b/ir/be/betranshlp.h index 3869c7bb9..9db5b156b 100644 --- a/ir/be/betranshlp.h +++ b/ir/be/betranshlp.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -33,7 +33,7 @@ /** * A callback to pre-transform some nodes before the transformation starts. */ -typedef void (arch_pretrans_nodes)(void *arch_cg); +typedef void (arch_pretrans_nodes)(void); /** * The type of a transform function. @@ -48,11 +48,6 @@ ir_node *be_pre_transform_node(ir_node *place); */ ir_node *be_transform_node(ir_node *node); -/** - * returns an anchor from the graph before the transformation - */ -ir_node *be_get_old_anchor(int anchor); - /** * Duplicate all dependency edges of a node. */ @@ -63,11 +58,23 @@ void be_duplicate_deps(ir_node *old_node, ir_node *new_node); */ ir_node *be_duplicate_node(ir_node *node); +/** clear transform functions and sets some virtual nodes like + * Start, Sync, Pin to the duplication transformer */ +void be_start_transform_setup(void); + +/** register a transform function for a specific node type */ +void be_set_transform_function(ir_op *op, be_transform_func func); + /** * Associate an old node with a transformed node. Uses link field. */ void be_set_transformed_node(ir_node *old_node, ir_node *new_node); +/** + * returns 1 if the node is already transformed + */ +int be_is_transformed(const ir_node *node); + /** * enqueue all inputs into the transform queue. */ @@ -76,6 +83,14 @@ void be_enqueue_preds(ir_node *node); /** * Transform a graph. Transformers must be registered first. */ -void be_transform_graph(be_irg_t *birg, arch_pretrans_nodes *func, void *cg_env); +void be_transform_graph(ir_graph *irg, arch_pretrans_nodes *func); + +/** + * If Mux(sel, t, f) represents an Abs return 1, if it represents -Abs return + * -1, otherwise 0 + */ +int be_mux_is_abs(ir_node *sel, ir_node *mux_true, ir_node *mux_false); + +ir_node *be_get_abs_op(ir_node *sel); -#endif /* FIRM_BE_BETRANSHLP_H */ +#endif