42#ifndef TTA_PRE_OPTIMIZER_HH
43#define TTA_PRE_OPTIMIZER_HH
55 class InstructionReferenceManager;
87 return "optimizes away guard nagation operations, "
88 "uses opposite guards instead"; };
find Finds info of the inner loops in the program
std::set< GraphNode *, typename GraphNode::Comparator > NodeSet
std::set< GraphEdge *, typename GraphEdge::Comparator > EdgeSet
ControlFlowGraph::NodeSet tryToRemoveGuardInversingOp(DataDependenceGraph &ddg, ProgramOperation &po, TTAProgram::InstructionReferenceManager *irm, ControlFlowGraph &cfg)
void tryToPrecalcConstantAdd(DataDependenceGraph &ddg, ProgramOperation &po)
bool checkGuardReversalAllowed(DataDependenceGraph &ddg, DataDependenceGraph::EdgeSet &oEdges)
void handleControlFlowGraph(ControlFlowGraph &cfg, const TTAMachine::Machine &targetMachine)
std::string shortDescription() const
ControlFlowGraph::NodeSet tryToRemoveEq(DataDependenceGraph &ddg, ProgramOperation &po, TTAProgram::InstructionReferenceManager *irm, ControlFlowGraph &cfg)
ControlFlowGraph::NodeSet inverseGuardsOfHeads(DataDependenceGraph &ddg, DataDependenceGraph::EdgeSet &oEdges)
ControlFlowGraph::NodeSet tryToRemoveXor(DataDependenceGraph &ddg, ProgramOperation &po, TTAProgram::InstructionReferenceManager *irm, ControlFlowGraph &cfg)
void handleProcedure(TTAProgram::Procedure &procedure, const TTAMachine::Machine &targetMachine)
void handleProgram(TTAProgram::Program &program, const TTAMachine::Machine &targetMachine)
bool tryToOptimizeAddressReg(DataDependenceGraph &ddg, ProgramOperation &po)
bool cfgAllowsJumpReversal(TTAProgram::Instruction &ins, ControlFlowGraph &cfg)
void handleCFGDDG(ControlFlowGraph &cfg, DataDependenceGraph &ddg)