123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- //===----- SchedulePostRAList.cpp - list scheduler ------------------------===//
- //
- // The LLVM Compiler Infrastructure
- //
- // This file is distributed under the University of Illinois Open Source
- // License. See LICENSE.TXT for details.
- //
- //===----------------------------------------------------------------------===//
- //
- // This implements a top-down list scheduler, using standard algorithms.
- // The basic approach uses a priority queue of available nodes to schedule.
- // One at a time, nodes are taken from the priority queue (thus in priority
- // order), checked for legality to schedule, and emitted if legal.
- //
- // Nodes may not be legal to schedule either due to structural hazards (e.g.
- // pipeline or resource constraints) or because an input to the instruction has
- // not completed execution.
- //
- //===----------------------------------------------------------------------===//
- #define DEBUG_TYPE "post-RA-sched"
- #include "llvm/CodeGen/Passes.h"
- #include "llvm/CodeGen/MachineFunctionPass.h"
- #include "llvm/Support/Compiler.h"
- #include "llvm/Support/Debug.h"
- using namespace llvm;
- namespace {
- class VISIBILITY_HIDDEN SchedulePostRATDList : public MachineFunctionPass {
- public:
- static char ID;
- SchedulePostRATDList() : MachineFunctionPass(&ID) {}
- private:
- MachineFunction *MF;
- const TargetMachine *TM;
- public:
- const char *getPassName() const {
- return "Post RA top-down list latency scheduler (STUB)";
- }
- bool runOnMachineFunction(MachineFunction &Fn);
- };
- char SchedulePostRATDList::ID = 0;
- }
- bool SchedulePostRATDList::runOnMachineFunction(MachineFunction &Fn) {
- DOUT << "SchedulePostRATDList\n";
- MF = &Fn;
- TM = &MF->getTarget();
- // Loop over all of the basic blocks
- for (MachineFunction::iterator MBB = Fn.begin(), MBBe = Fn.end();
- MBB != MBBe; ++MBB)
- ;
- return true;
- }
-
- //===----------------------------------------------------------------------===//
- // Public Constructor Functions
- //===----------------------------------------------------------------------===//
- FunctionPass *llvm::createPostRAScheduler() {
- return new SchedulePostRATDList();
- }
|