X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbetranshlp.h;h=96a9c0464450df6a0a813af101f893f9665eb05f;hb=7f34faa1fcd5a4547f67ffb41c597921ea1d2d2f;hp=d91bae7f1985fdf5e6621dadc0e7259706116359;hpb=3f57d89fcb7055fc726a41aa63214aab97854cdf;p=libfirm diff --git a/ir/be/betranshlp.h b/ir/be/betranshlp.h index d91bae7f1..96a9c0464 100644 --- a/ir/be/betranshlp.h +++ b/ir/be/betranshlp.h @@ -22,7 +22,6 @@ * @brief be transform helper extracted from the ia32 backend. * @author Matthias Braun, Michael Beck * @date 14.06.2007 - * @version $Id$ */ #ifndef FIRM_BE_BETRANSHLP_H #define FIRM_BE_BETRANSHLP_H @@ -53,12 +52,6 @@ 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. */ @@ -91,12 +84,20 @@ void be_enqueue_preds(ir_node *node); */ void be_transform_graph(ir_graph *irg, arch_pretrans_nodes *func); +typedef bool (*upper_bits_clean_func)(const ir_node *node, ir_mode *mode); + /** - * If Mux(sel, t, f) represents an Abs return 1, if it represents -Abs return - * -1, otherwise 0 + * register a test function for be_upper_bits_clean for a specific node + * type. */ -int be_mux_is_abs(ir_node *sel, ir_node *mux_true, ir_node *mux_false); +void be_set_upper_bits_clean_function(ir_op *op, upper_bits_clean_func func); -ir_node *be_get_abs_op(ir_node *sel); +/** + * returns true if it is assured, that the upper bits of a node are "clean" + * which means for a 16 or 8 bit value, that the upper bits in the register + * are 0 for unsigned and a copy of the last significant bit for signed + * numbers. + */ +bool be_upper_bits_clean(const ir_node *node, ir_mode *mode); #endif