X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firopt_t.h;h=effa924e3e43f6ec8d2c80812b53c9c6c544cad7;hb=3c3425a50a1d721b74a015c6812257e32feeac85;hp=db63ff4daf84f7703fa3fa973659bfb6fa515244;hpb=038d0fd9cc1240ae223b6578c7df4558ca8a125a;p=libfirm diff --git a/ir/ir/iropt_t.h b/ir/ir/iropt_t.h index db63ff4da..effa924e3 100644 --- a/ir/ir/iropt_t.h +++ b/ir/ir/iropt_t.h @@ -21,7 +21,6 @@ * @file * @brief iropt --- optimizations intertwined with IR construction -- private header. * @author Martin Trapp, Christian Schaefer, Goetz Lindenmaier, Michael Beck - * @version $Id$ */ #ifndef FIRM_IR_IROPT_T_H #define FIRM_IR_IROPT_T_H @@ -121,14 +120,24 @@ static inline ir_tarval *value_of(const ir_node *n) } /** - * Sets the default operations for an ir_op_ops. - * - * @param code the opcode for the default operation - * @param ops the operations initialized - * - * @return - * The operations. + * returns true if a value becomes zero when converted to mode @p mode + */ +bool ir_zero_when_converted(const ir_node *node, ir_mode *dest_mode); + +int ir_mux_is_abs(const ir_node *sel, const ir_node *mux_false, + const ir_node *mux_true); + +ir_node *ir_get_abs_op(const ir_node *sel, ir_node *mux_false, + ir_node *mux_true); + +/** + * return true if the Mux node will be optimized away. This can be used for + * the if-conversion callback. Allowing these Muxes should be always safe, even + * if the backend cannot handle them. */ -ir_op_ops *firm_set_default_operations(unsigned code, ir_op_ops *ops); +bool ir_is_optimizable_mux(const ir_node *sel, const ir_node *mux_false, + const ir_node *mux_true); + +void ir_register_opt_node_ops(void); #endif