Handle load/store of misaligned vectors that are the
[oota-llvm.git] / lib / CodeGen / PostRASchedulerList.cpp
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"
26 using namespace llvm;
27
28 namespace {
29   class VISIBILITY_HIDDEN SchedulePostRATDList : public MachineFunctionPass {
30   public:
31     static char ID;
32     SchedulePostRATDList() : MachineFunctionPass((intptr_t)&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
46 bool 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
64 FunctionPass *llvm::createPostRAScheduler() {
65   return new SchedulePostRATDList();
66 }