Go to the documentation of this file.
34 #ifndef TTA_LOOP_PROLOG_AND_EPILOG_BUILDER_HH
35 #define TTA_LOOP_PROLOG_AND_EPILOG_BUILDER_HH
46 class InstructionReferenceManager;
60 int endCycle = -1,
bool createEpilog =
true);
virtual int build(DataDependenceGraph &ddg, SimpleResourceManager &rm, ControlFlowGraph &cfg, BasicBlockNode &loopBBN, int endCycle=-1, bool createEpilog=true)
virtual ~LoopPrologAndEpilogBuilder()
BasicBlockNode * addPrologFromRM(SimpleResourceManager &prologRM, SimpleResourceManager &loopRM, ControlFlowGraph &cfg, BasicBlockNode &loopBBN)
void moveJumpDestination(TTAProgram::InstructionReferenceManager &irm, BasicBlockNode &tail, BasicBlockNode &dst, ControlFlowEdge &jumpEdge)
bool optimizeEpilog(TTAProgram::BasicBlock &epilog)
void addPrologIntoCfg(ControlFlowGraph &cfg, BasicBlockNode &prologBBN, BasicBlockNode &loopBBN)
BasicBlockNode * addEpilogFromRM(SimpleResourceManager &prologEpilogRM, int ii, ControlFlowGraph &cfg, BasicBlockNode &loopBBN)
bool optimizeProlog(TTAProgram::BasicBlock &prolog)
void addEpilogIntoCfg(ControlFlowGraph &cfg, BasicBlockNode &epilogBBN, BasicBlockNode &loopBBN)
LoopPrologAndEpilogBuilder()