X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbetranshlp.h;h=d91bae7f1985fdf5e6621dadc0e7259706116359;hb=53c6ff576ef14e36a2b42b69b2a6416fb0eab96a;hp=630636ac3c0167a70b820342891e9bbfbd09969a;hpb=87283842972fcf42d3e40ceb521b85e72695139e;p=libfirm diff --git a/ir/be/betranshlp.h b/ir/be/betranshlp.h index 630636ac3..d91bae7f1 100644 --- a/ir/be/betranshlp.h +++ b/ir/be/betranshlp.h @@ -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 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