cpu: Fix bi-mode branch predictor thresholds
[gem5.git] / src / cpu / pred / bi_mode.hh
index 120a6ffd94fb59d82cce3449597b82ae49fd58d1..7b091d111c169bbb530a71e1a5a46b9141084309 100644 (file)
@@ -57,16 +57,16 @@ class BiModeBP : public BPredUnit
 {
   public:
     BiModeBP(const BiModeBPParams *params);
-    void uncondBranch(Addr pc, void * &bp_history);
-    void squash(void *bp_history);
-    bool lookup(Addr branch_addr, void * &bp_history);
-    void btbUpdate(Addr branch_addr, void * &bp_history);
-    void update(Addr branch_addr, bool taken, void *bp_history, bool squashed);
-    void retireSquashed(void *bp_history);
-    unsigned getGHR(void *bp_history) const;
+    void uncondBranch(ThreadID tid, Addr pc, void * &bp_history);
+    void squash(ThreadID tid, void *bp_history);
+    bool lookup(ThreadID tid, Addr branch_addr, void * &bp_history);
+    void btbUpdate(ThreadID tid, Addr branch_addr, void * &bp_history);
+    void update(ThreadID tid, Addr branch_addr, bool taken, void *bp_history,
+                bool squashed);
+    unsigned getGHR(ThreadID tid, void *bp_history) const;
 
   private:
-    void updateGlobalHistReg(bool taken);
+    void updateGlobalHistReg(ThreadID tid, bool taken);
 
     struct BPHistory {
         unsigned globalHistoryReg;
@@ -95,7 +95,7 @@ class BiModeBP : public BPredUnit
     // not-taken direction predictors
     std::vector<SatCounter> notTakenCounters;
 
-    unsigned globalHistoryReg;
+    std::vector<unsigned> globalHistoryReg;
     unsigned globalHistoryBits;
     unsigned historyRegisterMask;