31 #ifndef __CPU_PRED_INDIRECT_HH__
32 #define __CPU_PRED_INDIRECT_HH__
36 #include "arch/isa_traits.hh"
37 #include "config/the_isa.hh"
44 unsigned num_sets,
unsigned num_ways,
45 unsigned tag_bits,
unsigned path_len,
46 unsigned inst_shift,
unsigned num_threads);
97 #endif // __CPU_PRED_INDIRECT_HH__
std::vector< ThreadInfo > threadInfo
const unsigned pathLength
std::vector< std::vector< IPredEntry > > targetCache
Addr getTag(Addr br_addr)
Addr getSetIndex(Addr br_addr, unsigned ghr, ThreadID tid)
void commit(InstSeqNum seq_num, ThreadID tid)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
int16_t ThreadID
Thread index/ID type.
void recordIndirect(Addr br_addr, Addr tgt_addr, InstSeqNum seq_num, ThreadID tid)
GenericISA::SimplePCState< MachInst > PCState
void recordTarget(InstSeqNum seq_num, unsigned ghr, const TheISA::PCState &target, ThreadID tid)
IndirectPredictor(bool hash_ghr, bool hash_targets, unsigned num_sets, unsigned num_ways, unsigned tag_bits, unsigned path_len, unsigned inst_shift, unsigned num_threads)
std::deque< HistoryEntry > pathHist
HistoryEntry(Addr br_addr, Addr tgt_addr, InstSeqNum seq_num)
bool lookup(Addr br_addr, unsigned ghr, TheISA::PCState &br_target, ThreadID tid)
void squash(InstSeqNum seq_num, ThreadID tid)