Go to the documentation of this file.
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"; };
std::string shortDescription() const
ControlFlowGraph::NodeSet inverseGuardsOfHeads(DataDependenceGraph &ddg, DataDependenceGraph::EdgeSet &oEdges)
std::set< BasicBlockNode *, typename BasicBlockNode ::Comparator > NodeSet
void handleControlFlowGraph(ControlFlowGraph &cfg, const TTAMachine::Machine &targetMachine)
void handleCFGDDG(ControlFlowGraph &cfg, DataDependenceGraph &ddg)
ControlFlowGraph::NodeSet tryToRemoveXor(DataDependenceGraph &ddg, ProgramOperation &po, TTAProgram::InstructionReferenceManager *irm, ControlFlowGraph &cfg)
bool checkGuardReversalAllowed(DataDependenceGraph &ddg, DataDependenceGraph::EdgeSet &oEdges)
std::set< DataDependenceEdge *, typename DataDependenceEdge ::Comparator > EdgeSet
bool cfgAllowsJumpReversal(TTAProgram::Instruction &ins, ControlFlowGraph &cfg)
bool tryToOptimizeAddressReg(DataDependenceGraph &ddg, ProgramOperation &po)
PreOptimizer(InterPassData &data)
void tryToPrecalcConstantAdd(DataDependenceGraph &ddg, ProgramOperation &po)
ControlFlowGraph::NodeSet tryToRemoveGuardInversingOp(DataDependenceGraph &ddg, ProgramOperation &po, TTAProgram::InstructionReferenceManager *irm, ControlFlowGraph &cfg)
ControlFlowGraph::NodeSet tryToRemoveEq(DataDependenceGraph &ddg, ProgramOperation &po, TTAProgram::InstructionReferenceManager *irm, ControlFlowGraph &cfg)
find Finds info of the inner loops in the program
void handleProgram(TTAProgram::Program &program, const TTAMachine::Machine &targetMachine)
void handleProcedure(TTAProgram::Procedure &procedure, const TTAMachine::Machine &targetMachine)