summaryrefslogtreecommitdiff
path: root/src/cpu/pred/2bit_local.hh
diff options
context:
space:
mode:
authorMitch Hayenga <mitch.hayenga@arm.com>2016-04-05 12:20:19 -0500
committerMitch Hayenga <mitch.hayenga@arm.com>2016-04-05 12:20:19 -0500
commitd99deff8ea296fd28b48da08aba577a1e7dfc01b (patch)
treebb8645f94f33b45b040776e5e0dd0a0d8edb306f /src/cpu/pred/2bit_local.hh
parent0fd4bb7f12d8a633f3ff0abe61d4f3a78bca6f84 (diff)
downloadgem5-d99deff8ea296fd28b48da08aba577a1e7dfc01b.tar.xz
cpu: Implement per-thread GHRs
Branch predictors that use GHRs should index them on a per-thread basis. This makes that so. This is a re-spin of fb51231 after the revert (bd1c6789).
Diffstat (limited to 'src/cpu/pred/2bit_local.hh')
-rw-r--r--src/cpu/pred/2bit_local.hh13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/cpu/pred/2bit_local.hh b/src/cpu/pred/2bit_local.hh
index 61e2dc24e..e3f87491b 100644
--- a/src/cpu/pred/2bit_local.hh
+++ b/src/cpu/pred/2bit_local.hh
@@ -66,7 +66,7 @@ class LocalBP : public BPredUnit
*/
LocalBP(const LocalBPParams *params);
- virtual void uncondBranch(Addr pc, void * &bp_history);
+ virtual void uncondBranch(ThreadID tid, Addr pc, void * &bp_history);
/**
* Looks up the given address in the branch predictor and returns
@@ -75,7 +75,7 @@ class LocalBP : public BPredUnit
* @param bp_history Pointer to any bp history state.
* @return Whether or not the branch is taken.
*/
- bool lookup(Addr branch_addr, void * &bp_history);
+ bool lookup(ThreadID tid, Addr branch_addr, void * &bp_history);
/**
* Updates the branch predictor to Not Taken if a BTB entry is
@@ -84,19 +84,20 @@ class LocalBP : public BPredUnit
* @param bp_history Pointer to any bp history state.
* @return Whether or not the branch is taken.
*/
- void btbUpdate(Addr branch_addr, void * &bp_history);
+ void btbUpdate(ThreadID tid, Addr branch_addr, void * &bp_history);
/**
* Updates the branch predictor with the actual result of a branch.
* @param branch_addr The address of the branch to update.
* @param taken Whether or not the branch was taken.
*/
- void update(Addr branch_addr, bool taken, void *bp_history, bool squashed);
+ void update(ThreadID tid, Addr branch_addr, bool taken, void *bp_history,
+ bool squashed);
- void retireSquashed(void *bp_history)
+ void retireSquashed(ThreadID tid, void *bp_history)
{ assert(bp_history == NULL); }
- void squash(void *bp_history)
+ void squash(ThreadID tid, void *bp_history)
{ assert(bp_history == NULL); }
void reset();