diff options
author | Tanya Lattner <tonic@nondot.org> | 2004-07-30 23:36:10 +0000 |
---|---|---|
committer | Tanya Lattner <tonic@nondot.org> | 2004-07-30 23:36:10 +0000 |
commit | 0a88d2d8b96aa02449afb94761d67c3b59aade5c (patch) | |
tree | 461c5847de85d1398be010d0f526e44b64a9c173 /lib/CodeGen/ModuloScheduling/ModuloScheduling.h | |
parent | 88f8f9226f5e62ad50acf7683d9c2691aa190103 (diff) |
Updated ModuloScheduling. It makes it all the wya through register allocation on the new code!!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15351 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/ModuloScheduling/ModuloScheduling.h')
-rw-r--r-- | lib/CodeGen/ModuloScheduling/ModuloScheduling.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/CodeGen/ModuloScheduling/ModuloScheduling.h b/lib/CodeGen/ModuloScheduling/ModuloScheduling.h index cc4c51514d..8510e5f01a 100644 --- a/lib/CodeGen/ModuloScheduling/ModuloScheduling.h +++ b/lib/CodeGen/ModuloScheduling/ModuloScheduling.h @@ -89,13 +89,18 @@ namespace llvm { void predIntersect(std::vector<MSchedGraphNode*> &CurrentSet, std::vector<MSchedGraphNode*> &IntersectResult); void succIntersect(std::vector<MSchedGraphNode*> &CurrentSet, std::vector<MSchedGraphNode*> &IntersectResult); - void reconstructLoop(const MachineBasicBlock*); + void reconstructLoop(MachineBasicBlock*); //void saveValue(const MachineInstr*, const std::set<Value*>&, std::vector<Value*>*); - void writePrologues(std::vector<MachineBasicBlock *> &prologues, const MachineBasicBlock *origBB, std::vector<BasicBlock*> &llvm_prologues); + void writePrologues(std::vector<MachineBasicBlock *> &prologues, MachineBasicBlock *origBB, std::vector<BasicBlock*> &llvm_prologues, std::map<const Value*, std::pair<const MSchedGraphNode*, int> > &valuesToSave, std::map<Value*, std::map<int, std::vector<Value*> > > &newValues, std::map<Value*, MachineBasicBlock*> &newValLocation); - void writeEpilogues(std::vector<MachineBasicBlock *> &epilogues, const MachineBasicBlock *origBB, std::vector<BasicBlock*> &llvm_epilogues); + void writeEpilogues(std::vector<MachineBasicBlock *> &epilogues, const MachineBasicBlock *origBB, std::vector<BasicBlock*> &llvm_epilogues, std::map<const Value*, std::pair<const MSchedGraphNode*, int> > &valuesToSave,std::map<Value*, std::map<int, std::vector<Value*> > > &newValues, std::map<Value*, MachineBasicBlock*> &newValLocation); + + + void writeKernel(BasicBlock *llvmBB, MachineBasicBlock *machineBB, std::map<const Value*, std::pair<const MSchedGraphNode*, int> > &valuesToSave, std::map<Value*, std::map<int, std::vector<Value*> > > &newValues, std::map<Value*, MachineBasicBlock*> &newValLocation); + + void removePHIs(const MachineBasicBlock *origBB, std::vector<MachineBasicBlock *> &prologues, std::vector<MachineBasicBlock *> &epilogues, MachineBasicBlock *kernelBB, std::map<Value*, MachineBasicBlock*> &newValLocation); public: ModuloSchedulingPass(TargetMachine &targ) : target(targ) {} |