56 fatal(
"unable to open SimPoint profile_file");
96 if (map_itr ==
bbMap.end()){
108 BBInfo& info = map_itr->second;
119 for (
auto map_itr =
bbMap.begin(); map_itr !=
bbMap.end();
121 BBInfo& info = map_itr->second;
122 if (info.
count != 0) {
123 counts.push_back(std::make_pair(info.
id, info.
count));
127 std::sort(counts.begin(), counts.end());
131 for (
auto cnt_itr = counts.begin(); cnt_itr != counts.end();
134 <<
":" << cnt_itr->second <<
" ";
Addr instAddr() const
Returns the memory address of the instruction this PC points to.
ProbeListenerArg generates a listener for the class of Arg and the class type T which is the class co...
ProbeListenerObject(const ProbeListenerObjectParams ¶ms)
void connectListener(Args &&...args)
virtual void init()
init() is called after all C++ SimObjects have been created and all ports are connected.
uint64_t intervalDrift
Excess inst count from previous interval.
void profile(const std::pair< SimpleThread *, StaticInstPtr > &)
Profile basic blocks for SimPoints.
OutputStream * simpointStream
Pointer to SimPoint BBV output stream.
std::unordered_map< BasicBlockRange, BBInfo > bbMap
Hash table containing all previously seen basic blocks.
uint64_t currentBBVInstCount
inst count in current basic block
SimPoint(const SimPointParams ¶ms)
const uint64_t intervalSize
SimPoint profiling interval size in instructions.
uint64_t intervalCount
Inst count in current basic block.
virtual void regProbeListeners()
Register probe listeners for this object.
BasicBlockRange currentBBV
Currently executing basic block.
The SimpleThread object provides a combination of the ThreadState object and the ThreadContext interf...
const PCStateBase & pcState() const override
bool isLastMicroop() const
#define fatal(...)
This implements a cprintf based fatal() function.
Copyright (c) 2024 Arm Limited All rights reserved.
RefCountingPtr< StaticInst > StaticInstPtr
uint64_t insts
Num of static insts in BB.
uint64_t count
Accumulated dynamic inst count executed by BB.