+#include "beschedmris.h"
+#include "beschedrss.h"
+#include "bearch_t.h"
+#include "bestat.h"
+#include "beirg_t.h"
+
+#include <libcore/lc_opts.h>
+#include <libcore/lc_opts_enum.h>
+
+DEBUG_ONLY(static firm_dbg_module_t *dbg = NULL);
+
+#define BE_SCHED_NODE(irn) (be_is_Keep(irn) || be_is_CopyKeep(irn) || be_is_RegParams(irn))
+
+enum {
+ BE_SCHED_SELECT_TRIVIAL = 0,
+ BE_SCHED_SELECT_REGPRESS = 1,
+ BE_SCHED_SELECT_MUCHNIK = 2,
+ BE_SCHED_SELECT_HEUR = 3,
+ BE_SCHED_SELECT_HMUCHNIK = 4,
+ BE_SCHED_SELECT_RANDOM = 5
+};
+
+enum {
+ BE_SCHED_PREP_NONE = 0,
+ BE_SCHED_PREP_MRIS = 2,
+ BE_SCHED_PREP_RSS = 3
+};
+
+typedef struct _list_sched_options_t {
+ int select; /**< the node selector */
+ int prep; /**< schedule preparation */
+} list_sched_options_t;
+
+static list_sched_options_t list_sched_options = {
+ BE_SCHED_SELECT_HEUR, /* mueller heuristic selector */
+ BE_SCHED_PREP_NONE, /* no scheduling preparation */
+};
+
+/* schedule selector options. */
+static const lc_opt_enum_int_items_t sched_select_items[] = {
+ { "trivial", BE_SCHED_SELECT_TRIVIAL },
+ { "random", BE_SCHED_SELECT_RANDOM },
+ { "regpress", BE_SCHED_SELECT_REGPRESS },
+ { "muchnik", BE_SCHED_SELECT_MUCHNIK },
+ { "heur", BE_SCHED_SELECT_HEUR },
+ { "hmuchnik", BE_SCHED_SELECT_HMUCHNIK },
+ { NULL, 0 }
+};
+
+/* schedule preparation options. */
+static const lc_opt_enum_int_items_t sched_prep_items[] = {
+ { "none", BE_SCHED_PREP_NONE },
+ { "mris", BE_SCHED_PREP_MRIS },
+ { "rss", BE_SCHED_PREP_RSS },
+ { NULL, 0 }
+};
+
+static lc_opt_enum_int_var_t sched_select_var = {
+ &list_sched_options.select, sched_select_items
+};
+
+static lc_opt_enum_int_var_t sched_prep_var = {
+ &list_sched_options.prep, sched_prep_items
+};