X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbetranshlp.h;h=d91bae7f1985fdf5e6621dadc0e7259706116359;hb=7fc5212efdd0faf06fed3850760ca319bdc66afc;hp=68552b0f777cb3e54aaaefbab4a84cee5571751e;hpb=6892f449f2b18be4addedf7f014a675e5af2eccb;p=libfirm diff --git a/ir/be/betranshlp.h b/ir/be/betranshlp.h index 68552b0f7..d91bae7f1 100644 --- a/ir/be/betranshlp.h +++ b/ir/be/betranshlp.h @@ -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. @@ -53,11 +53,24 @@ ir_node *be_transform_node(ir_node *node); */ void be_duplicate_deps(ir_node *old_node, ir_node *new_node); +/** + * Depend on the frame if the node is in the start block. This prevents + * nodes being scheduled before they can be spilled. + */ +void be_dep_on_frame(ir_node *node); + /** * Duplicate a node during transformation. */ 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. */ @@ -76,6 +89,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