Add pass creating for loop inversion, unrolling, peeling and mux lowering.
[libfirm] / ir / opt / loop.c
index 7aceb2d..74ac01b 100644 (file)
@@ -39,6 +39,7 @@
 #include "array_t.h"   /* automatic array */
 #include "beutil.h"            /* get_block */
 #include "irloop_t.h"  /* set_irn_loop*/
+#include "irpass.h"
 
 #if 0
        #include "irdump_t.h"
@@ -1581,6 +1582,18 @@ void do_loop_peeling(ir_graph *irg)
 
 }
 
+ir_graph_pass_t *loop_inversion_pass(const char *name) {
+       return def_graph_pass(name ? name : "loop_inversion", do_loop_inversion);
+}
+
+ir_graph_pass_t *loop_unroll_pass(const char *name) {
+       return def_graph_pass(name ? name : "loop_unroll", do_loop_unrolling);
+}
+
+ir_graph_pass_t *loop_peeling_pass(const char *name) {
+       return def_graph_pass(name ? name : "loop_peeling", do_loop_peeling);
+}
+
 void firm_init_loop_opt(void)
 {
        FIRM_DBG_REGISTER(dbg, "firm.opt.loop");