10#ifndef TTA_SIMPLE_IF_CONVERTER_HH
11#define TTA_SIMPLE_IF_CONVERTER_HH
33 class InstructionReferenceManager;
62 std::map<ProgramOperationPtr,ProgramOperationPtr>& poMapping);
117 std::pair<BasicBlockNode*,BasicBlockNode*>
successors(
132 bool ignoreLastInstruction);
find Finds info of the inner loops in the program
std::shared_ptr< ProgramOperation > ProgramOperationPtr
static ProgramOperationPtr fixTerminalPO(TTAProgram::TerminalFUPort &terminal, std::map< ProgramOperationPtr, ProgramOperationPtr > &poMapping)
std::pair< BasicBlockNode *, BasicBlockNode * > successors(BasicBlockNode &node, ControlFlowGraph &cfg)
bool writesRegister(const TTAProgram::BasicBlock &bb, int index, const TTAMachine::RegisterFile &rf, bool ignoreLastInstruction)
CandidateBlocks * detectTriangleViaFt(BasicBlockNode &bbn, BasicBlockNode &fallThruNode, BasicBlockNode &jumpDestNode, ControlFlowGraph &cfg)
bool canConvert(CandidateBlocks *candidates, ControlFlowGraph &cfg)
bool hasConditionals(TTAProgram::BasicBlock &bb)
CandidateBlocks * detectDiamond(BasicBlockNode &bbn, BasicBlockNode &fallThruNode, BasicBlockNode &jumpDestNode, ControlFlowGraph &cfg)
virtual std::string shortDescription() const
CandidateBlocks * detectTriangleViaJump(BasicBlockNode &bbn, BasicBlockNode &fallThruNode, BasicBlockNode &jumpDestNode, ControlFlowGraph &cfg)
void convert(CandidateBlocks &bblocks, ControlFlowGraph &cfg)
virtual void handleProcedure(TTAProgram::Procedure &procedure, const TTAMachine::Machine &targetMachine)
CandidateBlocks * searchCandidate(ControlFlowGraph &cfg)
void appendBB(const TTAProgram::BasicBlock &src, TTAProgram::BasicBlock &dest, TTAProgram::MoveGuard *mg, bool removeJumps)
virtual void handleProgram(TTAProgram::Program &program, const TTAMachine::Machine &targetMachine)
void addJump(TTAProgram::BasicBlock &bb, BasicBlockNode &bbn)
TTAProgram::InstructionReferenceManager * irm_
void updateCfg(CandidateBlocks &bblocks, ControlFlowGraph &cfg)
void combineBlocks(CandidateBlocks &bblocks)
static bool removeJump(TTAProgram::BasicBlock &bb)
TTAProgram::CodeGenerator * codeGenerator_
virtual void handleControlFlowGraph(ControlFlowGraph &cfg, const TTAMachine::Machine &targetMachine)
TTAProgram::MoveGuard * invg_
BasicBlockNode * succNode1_
BasicBlockNode & fallThruNode_
TTAProgram::BasicBlock & fallThruBB_
BasicBlockNode * joinNode_
TTAProgram::BasicBlock & firstBB_
TTAProgram::BasicBlock & lastBB_
BasicBlockNode & lastNode_
BasicBlockNode * succNode2_
BasicBlockNode & firstNode_
const TTAMachine::RegisterFile * grFile_
TTAProgram::BasicBlock * joinBB_
TTAProgram::BasicBlock & jumpDestBB_
TTAProgram::MoveGuard * guard_
BasicBlockNode & jumpDestNode_