1/* 2 * Copyright (c) 2012-2014 ARM Limited 3 * All rights reserved. 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 27 unchanged lines hidden (view full) --- 36 * 37 * Authors: Dam Sunwoo 38 * Curtis Dunham 39 */ 40 41#ifndef __CPU_SIMPLE_PROBES_SIMPOINT_HH__ 42#define __CPU_SIMPLE_PROBES_SIMPOINT_HH__ 43 |
44#include <unordered_map> 45 |
46#include "cpu/simple_thread.hh" 47#include "params/SimPoint.hh" 48#include "sim/probe/probe.hh" 49 50/** 51 * Probe for SimPoints BBV generation 52 */ 53 54/** 55 * Start and end address of basic block for SimPoint profiling. 56 * This structure is used to look up the hash table of BBVs. 57 * - first: PC of first inst in basic block 58 * - second: PC of last inst in basic block 59 */ 60typedef std::pair<Addr, Addr> BasicBlockRange; 61 62/** Overload hash function for BasicBlockRange type */ |
63namespace std { |
64template <> 65struct hash<BasicBlockRange> 66{ 67 public: 68 size_t operator()(const BasicBlockRange &bb) const { 69 return hash<Addr>()(bb.first + bb.second); 70 } 71}; |
72} |
73 74class SimPoint : public ProbeListenerObject 75{ 76 public: 77 SimPoint(const SimPointParams *params); 78 virtual ~SimPoint(); 79 80 virtual void init(); --- 24 unchanged lines hidden (view full) --- 105 uint64_t id; 106 /** Num of static insts in BB */ 107 uint64_t insts; 108 /** Accumulated dynamic inst count executed by BB */ 109 uint64_t count; 110 }; 111 112 /** Hash table containing all previously seen basic blocks */ |
113 std::unordered_map<BasicBlockRange, BBInfo> bbMap; |
114 /** Currently executing basic block */ 115 BasicBlockRange currentBBV; 116 /** inst count in current basic block */ 117 uint64_t currentBBVInstCount; 118}; 119 120#endif // __CPU_SIMPLE_PROBES_SIMPOINT_HH__ |