+ * @param irg the firm graph to lower
+ * @param config configuration for mode_b lowerer
+ */
+FIRM_API void ir_lower_mode_b(ir_graph *irg,
+ const lower_mode_b_config_t *config);
+
+/**
+ * Creates an ir_graph pass for ir_lower_mode_b().
+ *
+ * @param name the name of this pass or NULL
+ * @param config configuration for mode_b lowerer
+ *
+ * @return the newly created ir_graph pass
+ */
+FIRM_API ir_graph_pass_t *ir_lower_mode_b_pass(const char *name,
+ const lower_mode_b_config_t *config);
+
+/**
+ * Used as callback, whenever a lowerable mux is found. The return value
+ * indicates, whether the mux should be lowered. This may be used, to lower
+ * floating point muxes, while keeping mux nodes for integers, for example.
+ *
+ * @param mux The mux node that may be lowered.
+ * @return A non-zero value indicates that the mux should be lowered.
+ */
+typedef int lower_mux_callback(ir_node* mux);
+
+/**
+ * Lowers all mux nodes in the given graph. A callback function may be
+ * given, to select the mux nodes to lower.
+ *
+ * @param irg The graph to lower mux nodes in.
+ * @param cb_func The callback function for mux selection. Can be NULL,
+ * to lower all mux nodes.