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>
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;
}
/*