committing ilp based spilling
[libfirm] / ir / be / belistsched.h
index 455789d..d8cb004 100644 (file)
@@ -7,14 +7,11 @@
 #ifndef _FIRM_LIST_SCHED
 #define _FIRM_LIST_SCHED
 
-#include "irgraph.h"
-#include "irnode.h"
-
-#include "pset.h"
-#include "pmap.h"
-#include "list.h"
+#include "firm_types.h"
 
+#include "benodesets.h"
 #include "bearch_t.h"
+#include "be.h"
 
 typedef struct _list_sched_selector_t list_sched_selector_t;
 
@@ -54,7 +51,7 @@ struct _list_sched_selector_t {
         * nodes.
         * @return The chosen node.
         */
-       ir_node *(*select)(void *block_env, pset *ready_set);
+       ir_node *(*select)(void *block_env, nodeset *ready_set);
 
        /**
         * This function decides, if a node should appear in a schedule.
@@ -64,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.
@@ -96,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 */