TCE  1.21
Public Member Functions | Private Attributes | List of all members
PreBypassBasicBlockScheduler Class Reference

#include <PreBypassBasicBlockScheduler.hh>

Inheritance diagram for PreBypassBasicBlockScheduler:
Inheritance graph
Collaboration diagram for PreBypassBasicBlockScheduler:
Collaboration graph

Public Member Functions

 PreBypassBasicBlockScheduler (InterPassData &data, DataDependenceGraphBuilder &ddgBuilder)
 
virtual std::string shortDescription () const
 
virtual DataDependenceGraphBuilderddgBuilder ()
 
- Public Member Functions inherited from BasicBlockScheduler
 BasicBlockScheduler (InterPassData &data, SoftwareBypasser *bypasser=NULL, CopyingDelaySlotFiller *delaySlotFiller=NULL, RegisterRenamer *registerRenamer=NULL)
 
virtual ~BasicBlockScheduler ()
 
virtual void handleDDG (DataDependenceGraph &ddg, SimpleResourceManager &rm, const TTAMachine::Machine &targetMachine)
 
virtual std::string longDescription () const
 
virtual MoveNodeSelectorcreateSelector (TTAProgram::BasicBlock &bb, const TTAMachine::Machine &machine)
 
- Public Member Functions inherited from BBSchedulerController
 BBSchedulerController (InterPassData &data, SoftwareBypasser *bypasser=NULL, CopyingDelaySlotFiller *delaySlotFiller=NULL, DataDependenceGraph *bigDDG=NULL)
 
virtual ~BBSchedulerController ()
 
virtual void handleBasicBlock (TTAProgram::BasicBlock &bb, const TTAMachine::Machine &targetMachine, TTAProgram::InstructionReferenceManager &irm, BasicBlockNode *bbn=NULL)
 
virtual void handleControlFlowGraph (ControlFlowGraph &cfg, const TTAMachine::Machine &targetMachine)
 
virtual void handleProcedure (TTAProgram::Procedure &procedure, const TTAMachine::Machine &targetMachine)
 
virtual void handleProgram (TTAProgram::Program &program, const TTAMachine::Machine &targetMachine)
 
virtual void executeDDGPass (TTAProgram::BasicBlock &bb, const TTAMachine::Machine &targetMachine, TTAProgram::InstructionReferenceManager &irm, std::vector< DDGPass *> ddgPasses, BasicBlockNode *bbn=NULL)
 
virtual void handleCFGDDG (ControlFlowGraph &cfg, DataDependenceGraph &ddg, const TTAMachine::Machine &targetMachine)
 
- Public Member Functions inherited from BasicBlockPass
 BasicBlockPass (InterPassData &data)
 
virtual ~BasicBlockPass ()
 
virtual bool executeLoopPass (TTAProgram::BasicBlock &bb, const TTAMachine::Machine &targetMachine, TTAProgram::InstructionReferenceManager &irm, std::vector< DDGPass *> ddgPasses, BasicBlockNode *bbn=NULL)
 
- Public Member Functions inherited from SchedulerPass
 SchedulerPass (InterPassData &data)
 
virtual ~SchedulerPass ()
 
InterPassDatainterPassData ()
 
- Public Member Functions inherited from ControlFlowGraphPass
 ControlFlowGraphPass (InterPassData &data)
 
virtual ~ControlFlowGraphPass ()
 
void executeBasicBlockPass (ControlFlowGraph &cfg, const TTAMachine::Machine &targetMachine, BasicBlockPass &bbPass)
 
- Public Member Functions inherited from ProcedurePass
 ProcedurePass (InterPassData &data)
 
virtual ~ProcedurePass ()
 
- Public Member Functions inherited from ProgramPass
 ProgramPass (InterPassData &data)
 
virtual ~ProgramPass ()
 
- Public Member Functions inherited from DDGPass
 DDGPass (InterPassData &data)
 
virtual ~DDGPass ()
 

Private Attributes

DataDependenceGraphBuilderddgBuilder_
 

Additional Inherited Members

- Static Public Member Functions inherited from BasicBlockPass
static void copyRMToBB (SimpleResourceManager &rm, TTAProgram::BasicBlock &bb, const TTAMachine::Machine &targetMachine, TTAProgram::InstructionReferenceManager &irm, int lastCycle=-1)
 
- Static Public Member Functions inherited from ProcedurePass
static void copyCfgToProcedure (TTAProgram::Procedure &procedure, ControlFlowGraph &cfg)
 
static void executeControlFlowGraphPass (TTAProgram::Procedure &procedure, const TTAMachine::Machine &targetmachine, ControlFlowGraphPass &cfgp)
 
- Static Public Member Functions inherited from ProgramPass
static void executeProcedurePass (TTAProgram::Program &program, const TTAMachine::Machine &targetMachine, ProcedurePass &procedurePass)
 
- Protected Member Functions inherited from BasicBlockScheduler
void scheduleRRMove (MoveNode &moveNode)
 
void scheduleOperation (MoveNodeGroup &moves)
 
int scheduleOperandWrites (int &cycle, MoveNodeGroup &moves)
 
bool scheduleResultReads (MoveNodeGroup &moves)
 
void scheduleMove (MoveNode &move, int earliestCycle)
 
void scheduleRRTempMoves (MoveNode &regToRegMove, MoveNode &firstMove, int lastUse)
 
void scheduleInputOperandTempMoves (MoveNode &operandMove, MoveNode &operandWrite)
 
void unschedule (MoveNode &moveNode)
 
void unscheduleInputOperandTempMoves (MoveNode &operandMove)
 
void scheduleResultReadTempMoves (MoveNode &resultMove, MoveNode &resultRead, int lastUse)
 
void unscheduleResultReadTempMoves (MoveNode &resultMove)
 
void notifyScheduled (MoveNodeGroup &moves, MoveNodeSelector &selector)
 
void ddgSnapshot (DataDependenceGraph &ddg, const std::string &name, DataDependenceGraph::DumpFileFormat format, bool final, bool resetCounter=false) const
 
MoveNodesucceedingTempMove (MoveNode &current)
 
int getTriggerOperand (const Operation &operation, const TTAMachine::Machine &machine)
 
bool tryToSwitchInputs (ProgramOperation &op)
 
MoveNodefindTrigger (ProgramOperation &po)
 
MoveNodefindTriggerFromUnit (ProgramOperation &po, TTAMachine::Unit &unit)
 
- Protected Member Functions inherited from BBSchedulerController
virtual DataDependenceGraphcreateDDGFromBB (TTAProgram::BasicBlock &bb, const TTAMachine::Machine &mach)
 
- Protected Member Functions inherited from BasicBlockPass
void ddgSnapshot (DataDependenceGraph *ddg, std::string &name, DataDependenceGraph::DumpFileFormat format, bool final)
 
- Protected Attributes inherited from BasicBlockScheduler
const TTAMachine::MachinetargetMachine_
 The target machine we are scheduling the program against. More...
 
DataDependenceGraphddg_
 DDG of the currently scheduled BB. More...
 
SimpleResourceManagerrm_
 Resource Manager of the currently scheduled BB. More...
 
std::map< const MoveNode *, DataDependenceGraph::NodeSetscheduledTempMoves_
 Stores the MoveNodes that were scheduled as temp moves during scheduling of the operand move. More...
 
SoftwareBypassersoftwareBypasser_
 The software bypasser to use to bypass registers when possible. More...
 
RegisterRenamerrenamer_
 
int bypassedCount_
 
int deadResults_
 
LLVMTCECmdLineOptionsoptions_
 

Detailed Description

A class that implements the functionality of a basic block scheduler for sequential input that has already been software bypassed.

Uses LLVM MachineInstruction info for assiting in building the DDGs.

Definition at line 45 of file PreBypassBasicBlockScheduler.hh.

Constructor & Destructor Documentation

◆ PreBypassBasicBlockScheduler()

PreBypassBasicBlockScheduler::PreBypassBasicBlockScheduler ( InterPassData data,
DataDependenceGraphBuilder ddgBuilder 
)
inline

Definition at line 47 of file PreBypassBasicBlockScheduler.hh.

48  :
50  ddgBuilder_(&ddgBuilder) {}
DataDependenceGraphBuilder * ddgBuilder_
BasicBlockScheduler(InterPassData &data, SoftwareBypasser *bypasser=NULL, CopyingDelaySlotFiller *delaySlotFiller=NULL, RegisterRenamer *registerRenamer=NULL)

Member Function Documentation

◆ ddgBuilder()

virtual DataDependenceGraphBuilder& PreBypassBasicBlockScheduler::ddgBuilder ( )
inlinevirtual

Reimplemented from BasicBlockPass.

Definition at line 56 of file PreBypassBasicBlockScheduler.hh.

References ddgBuilder_.

56  {
57  return *ddgBuilder_;
58  }
DataDependenceGraphBuilder * ddgBuilder_

◆ shortDescription()

virtual std::string PreBypassBasicBlockScheduler::shortDescription ( ) const
inlinevirtual

A short description of the pass, usually the optimization name, such as "basic block scheduler".

Returns
The description as a string.

Reimplemented from BasicBlockScheduler.

Definition at line 52 of file PreBypassBasicBlockScheduler.hh.

52  {
53  return "Basic block scheduler that works with prebypassed input.";
54  }

Member Data Documentation

◆ ddgBuilder_

DataDependenceGraphBuilder* PreBypassBasicBlockScheduler::ddgBuilder_
private

Definition at line 60 of file PreBypassBasicBlockScheduler.hh.

Referenced by ddgBuilder().


The documentation for this class was generated from the following file: