-/* Mips implementation of list scheduler selector */
-/* $Id$ */
+/*
+ * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ *
+ * This file is part of libFirm.
+ *
+ * This file may be distributed and/or modified under the terms of the
+ * GNU General Public License version 2 as published by the Free Software
+ * Foundation and appearing in the file LICENSE.GPL included in the
+ * packaging of this file.
+ *
+ * Licensees holding valid libFirm Professional Edition licenses may use
+ * this file in accordance with the libFirm Commercial License.
+ * Agreement provided with the Software.
+ *
+ * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+ * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+
+/**
+ * @file
+ * @brief Mips implementation of list scheduler selector
+ * @author Matthias Braun, Mehdi
+ * @version $Id$
+ */
#ifdef HAVE_CONFIG_H
-#include <config.h>
+#include "config.h"
#endif
#ifdef HAVE_STDLIB_H
#include "mips_scheduler.h"
#include "../besched_t.h"
-#include "../be.h"
+#include "be.h"
#include "../beabi.h"
#include "iredges.h"
#include "ircons.h"
#endif
+static
+int mips_to_appear_in_schedule(void *block_env, const ir_node *node)
+{
+ (void) block_env;
+
+ if(!is_mips_irn(node))
+ return -1;
+ if(is_mips_zero(node) || is_mips_Immediate(node))
+ return 0;
+
+ return 1;
+}
+
+list_sched_selector_t mips_selector;
+
/**
* Returns the reg_pressure scheduler with to_appear_in_schedule() overloaded
*/
-const list_sched_selector_t *mips_get_list_sched_selector(const void *self, list_sched_selector_t *selector)
+const list_sched_selector_t *mips_get_list_sched_selector(const void *self,
+ list_sched_selector_t *selector)
{
+ (void) self;
#if 0
memset(&mips_sched_selector, 0, sizeof(mips_sched_selector));
mips_sched_selector.init_graph = mips_scheduler_init_graph;
mips_sched_selector.finish_graph = mips_scheduler_finish_graph;
//return &mips_sched_selector;
#endif
- return selector;
+ memcpy(&mips_selector, selector, sizeof(mips_selector));
+ mips_selector.to_appear_in_schedule = mips_to_appear_in_schedule;
+
+ return &mips_selector;
}
-const ilp_sched_selector_t *mips_get_ilp_sched_selector(const void *self) {
+const ilp_sched_selector_t *mips_get_ilp_sched_selector(const void *self)
+{
+ (void) self;
return NULL;
}