summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRico Amslinger <rico.amslinger@informatik.uni-augsburg.de>2017-08-24 15:07:44 +0200
committerRico Amslinger <rico.amslinger@informatik.uni-augsburg.de>2017-09-06 07:39:11 +0000
commit725b19a8154fa557ab3057f07d7cd3c6d798789d (patch)
tree014dd92e03bbb9927302fc2e71931893df9bae69
parent29d7c72b89949199653ab05f5bbb298c733b08b7 (diff)
downloadgem5-725b19a8154fa557ab3057f07d7cd3c6d798789d.tar.xz
cpu: Fix bi-mode branch predictor thresholds
When different sizes were set for the choice and global saturation counter (e.g. ex5_big), the threshold calculation used the wrong size. Thus the branch predictor always predicted "not taken" for choice > global. Change-Id: I076549ff1482e2280cef24a0d16b7bb2122d4110 Reviewed-on: https://gem5-review.googlesource.com/4560 Reviewed-by: Curtis Dunham <curtis.dunham@arm.com> Maintainer: Jason Lowe-Power <jason@lowepower.com>
-rw-r--r--src/cpu/pred/bi_mode.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/cpu/pred/bi_mode.cc b/src/cpu/pred/bi_mode.cc
index 69af4584a..e8fda7387 100644
--- a/src/cpu/pred/bi_mode.cc
+++ b/src/cpu/pred/bi_mode.cc
@@ -68,8 +68,8 @@ BiModeBP::BiModeBP(const BiModeBPParams *params)
globalHistoryMask = globalPredictorSize - 1;
choiceThreshold = (ULL(1) << (choiceCtrBits - 1)) - 1;
- takenThreshold = (ULL(1) << (choiceCtrBits - 1)) - 1;
- notTakenThreshold = (ULL(1) << (choiceCtrBits - 1)) - 1;
+ takenThreshold = (ULL(1) << (globalCtrBits - 1)) - 1;
+ notTakenThreshold = (ULL(1) << (globalCtrBits - 1)) - 1;
}
/*