PostRASchedulerList.cpp revision 26f8c27c34b44f7d87de74d1de2128c1a02855bf
1//===----- SchedulePostRAList.cpp - list scheduler ------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This implements a top-down list scheduler, using standard algorithms. 11// The basic approach uses a priority queue of available nodes to schedule. 12// One at a time, nodes are taken from the priority queue (thus in priority 13// order), checked for legality to schedule, and emitted if legal. 14// 15// Nodes may not be legal to schedule either due to structural hazards (e.g. 16// pipeline or resource constraints) or because an input to the instruction has 17// not completed execution. 18// 19//===----------------------------------------------------------------------===// 20 21#define DEBUG_TYPE "post-RA-sched" 22#include "llvm/CodeGen/Passes.h" 23#include "llvm/CodeGen/MachineFunctionPass.h" 24#include "llvm/Support/Compiler.h" 25#include "llvm/Support/Debug.h" 26using namespace llvm; 27 28namespace { 29 class VISIBILITY_HIDDEN SchedulePostRATDList : public MachineFunctionPass { 30 public: 31 static char ID; 32 SchedulePostRATDList() : MachineFunctionPass(&ID) {} 33 private: 34 MachineFunction *MF; 35 const TargetMachine *TM; 36 public: 37 const char *getPassName() const { 38 return "Post RA top-down list latency scheduler (STUB)"; 39 } 40 41 bool runOnMachineFunction(MachineFunction &Fn); 42 }; 43 char SchedulePostRATDList::ID = 0; 44} 45 46bool SchedulePostRATDList::runOnMachineFunction(MachineFunction &Fn) { 47 DOUT << "SchedulePostRATDList\n"; 48 MF = &Fn; 49 TM = &MF->getTarget(); 50 51 // Loop over all of the basic blocks 52 for (MachineFunction::iterator MBB = Fn.begin(), MBBe = Fn.end(); 53 MBB != MBBe; ++MBB) 54 ; 55 56 return true; 57} 58 59 60//===----------------------------------------------------------------------===// 61// Public Constructor Functions 62//===----------------------------------------------------------------------===// 63 64FunctionPass *llvm::createPostRAScheduler() { 65 return new SchedulePostRATDList(); 66} 67