Go to the documentation of this file.
48 #include "boost/tuple/tuple_comparison.hpp"
66 frontend_(frontend), instructionExecutions_(instructions) {
99 while (currentInstruction !=
109 currentInstruction = &
program.nextInstruction(*currentInstruction);
115 for (
int i = 0; i < currentInstruction->
moveCount(); ++i) {
133 (*i).first, (*i).second.get<0>(), (*i).second.get<1>());
137 currentInstruction = &
program.nextInstruction(*currentInstruction);
161 for (
int i = 0; i < instruction.
moveCount(); ++i) {
179 (*i).first, (*i).second.get<0>(),
180 (*i).second.get<1>())];
199 const std::string& rfName,
200 std::size_t concurrentWrites,
201 std::size_t concurrentReads)
const {
203 return MapTools::valueForKey<ClockCycleCount>(
205 rfName, concurrentWrites, concurrentReads));
const ExecutableInstruction & instructionAtConst(InstructionAddress address) const
UInt32 InstructionAddress
virtual TCEString name() const
const TTAProgram::Program & program() const
ClockCycleCount executionCount() const
@ SE_SIMULATION_STOPPED
Generated after simulation has stopped, temporarily or permantently, and control is being returned to...
std::map< ConcurrentRFAccess, ClockCycleCount > ConcurrentRFAccessIndex
concurrent accesses and their counts
virtual const TTAMachine::RegisterFile & registerFile() const
bool hasConditionalRegisterAccesses() const
boost::tuple< std::string, std::size_t, std::size_t > ConcurrentRFAccess
type to be used as a key for storing concurrent access info
Terminal & destination() const
RFAccessIndex accessesInInstruction_
container used in collecting register accesses in an instruction
virtual void handleEvent()
Instruction & instructionAt(InstructionAddress address) const
ClockCycleCount concurrentRegisterFileAccessCount(const std::string &rfName, std::size_t concurrentWrites, std::size_t concurrentReads) const
#define abortWithError(message)
@ SE_CYCLE_END
Generated before advancing the simulator clock at the end of a simulation cycle.
const InstructionMemory & instructionExecutions_
used to access instruction execution data
bool moveSquashed(std::size_t moveIndex) const
virtual bool isGPR() const
InstructionAddress location() const
virtual InstructionAddress lastExecutedInstruction(int coreId=-1) const
static NullInstruction & instance()
virtual ~RFAccessTracker()
RFAccessTracker(SimulatorFrontend &frontend, const InstructionMemory &instructions)
bool hasRegisterAccesses() const
SimulatorFrontend & frontend_
the simulator frontend used to access simulation data
const ConcurrentRFAccessIndex & accessDataBase() const
SimulationEventHandler & eventHandler()
ConcurrentRFAccessIndex conditionalAccesses_
conditional register file accesses are counted in this container
Terminal & source() const
CycleCount ClockCycleCount
Alias for ClockCycleCount.
find Finds info of the inner loops in the program
ConcurrentRFAccessIndex totalAccesses_
total (conditional + unconditional) register file accesses are counted in this container