simpoint.hh (10381:ab8b8601b6ff) | simpoint.hh (11168:f98eb2da15a4) |
---|---|
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 | 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 "base/hashmap.hh" | 44#include <unordered_map> 45 |
45#include "cpu/simple_thread.hh" 46#include "params/SimPoint.hh" 47#include "sim/probe/probe.hh" 48 49/** 50 * Probe for SimPoints BBV generation 51 */ 52 53/** 54 * Start and end address of basic block for SimPoint profiling. 55 * This structure is used to look up the hash table of BBVs. 56 * - first: PC of first inst in basic block 57 * - second: PC of last inst in basic block 58 */ 59typedef std::pair<Addr, Addr> BasicBlockRange; 60 61/** Overload hash function for BasicBlockRange type */ | 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 */ |
62__hash_namespace_begin | 63namespace std { |
63template <> 64struct hash<BasicBlockRange> 65{ 66 public: 67 size_t operator()(const BasicBlockRange &bb) const { 68 return hash<Addr>()(bb.first + bb.second); 69 } 70}; | 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}; |
71__hash_namespace_end | 72} |
72 73class SimPoint : public ProbeListenerObject 74{ 75 public: 76 SimPoint(const SimPointParams *params); 77 virtual ~SimPoint(); 78 79 virtual void init(); --- 24 unchanged lines hidden (view full) --- 104 uint64_t id; 105 /** Num of static insts in BB */ 106 uint64_t insts; 107 /** Accumulated dynamic inst count executed by BB */ 108 uint64_t count; 109 }; 110 111 /** Hash table containing all previously seen basic blocks */ | 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 */ |
112 m5::hash_map<BasicBlockRange, BBInfo> bbMap; | 113 std::unordered_map<BasicBlockRange, BBInfo> bbMap; |
113 /** Currently executing basic block */ 114 BasicBlockRange currentBBV; 115 /** inst count in current basic block */ 116 uint64_t currentBBVInstCount; 117}; 118 119#endif // __CPU_SIMPLE_PROBES_SIMPOINT_HH__ | 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__ |