committing ilp based spilling
[libfirm] / ir / be / belistsched.h
index 514ef3e..d8cb004 100644 (file)
@@ -11,6 +11,7 @@
 
 #include "benodesets.h"
 #include "bearch_t.h"
+#include "be.h"
 
 typedef struct _list_sched_selector_t list_sched_selector_t;
 
@@ -60,6 +61,23 @@ struct _list_sched_selector_t {
         */
        int (*to_appear_in_schedule)(void *block_env, const ir_node *irn);
 
+       /**
+        * Returns the execution time of node irn.
+        */
+       unsigned (*exectime)(void *block_env, const ir_node *irn);
+
+       /**
+        * Calculates the latency of executing cycle curr_cycle of node curr in cycle pred_cycle
+        * of node pred.
+        *
+        * @param block_env   The block environment.
+        * @param pred        The previous node.
+        * @param pred_cycle  The previous node execution cycle.
+        * @param curr        The current node.
+        * @param curr_cycle  The current node execution cycle.
+        */
+       unsigned (*latency)(void *block_env, const ir_node *pred, int pred_cycle, const ir_node *curr, int curr_cycle);
+
        /**
         * Called after a block has been scheduled.
         * @param env The environment.
@@ -92,9 +110,10 @@ extern const list_sched_selector_t *reg_pressure_selector;
  * Each block in the graph gets a list head to its link field being the
  * head of the schedule. You can walk this list using the functions in
  * list.h.
- * @param arch_env The architecture environment.
- * @param irg      The graph to schedule.
+ *
+ * @param birg        The backend irg.
+ * @param enable_mris Flag indicating if mris preparation should be done
  */
-void list_sched(const arch_env_t *arch_env, ir_graph *irg);
+void list_sched(const be_irg_t *birg, int enable_mris);
 
 #endif /* _FIRM_LIST_SCHED */