Lines Matching refs:bi

68         BranchInfo* bi, int hitBank, int altBank) const
70 return (bi->predBeforeSC + (((hitBank+1)/4)<<4) + (bi->highConf<<1) +
71 (bi->lowConf <<2) +((altBank!=0)<<3)) & ((1<<logBias) -1);
76 ThreadID tid, Addr branch_pc, BranchInfo* bi, int & lsum, int64_t phist)
125 BranchInfo* bi, int64_t phist)
128 gUpdate(pc, taken, sh->globalHist, gm, ggehl, gnb, logGnb, wg, bi);
129 gUpdate(pc, taken, sh->bwHist, bwm, bwgehl, bwnb, logBwnb, wbw, bi);
131 bi);
132 gUpdate(pc, taken, sh->imliCount, im, igehl, inb, logInb, wi, bi);
190 bool alloc, bool taken, TAGEBase::BranchInfo* bi, int nrand)
201 for (int I = calcDep(bi); I < nHistoryTables; I += 2) {
209 if (gtable[i][bi->tableIndices[i]].u == 0) {
210 gtable[i][bi->tableIndices[i]].u =
213 gtable[i][bi->tableIndices[i]].tag = bi->tableTags[i];
214 gtable[i][bi->tableIndices[i]].ctr = taken ? 0 : -1;
223 int8_t ctr = gtable[i][bi->tableIndices[i]].ctr;
224 if ((gtable[i][bi->tableIndices[i]].u == 1) &
227 gtable[i][bi->tableIndices[i]].u = 0;
259 TAGEBase::BranchInfo* bi)
261 if (bi->hitBank > 0) {
262 if (abs (2 * gtable[bi->hitBank][bi->hitBankIndex].ctr + 1) == 1) {
263 if (bi->longestMatchPred != taken) { // acts as a protection
264 if (bi->altBank > 0) {
265 int8_t ctr = gtable[bi->altBank][bi->altBankIndex].ctr;
267 gtable[bi->altBank][bi->altBankIndex].u = 0;
271 ctrUpdate(gtable[bi->altBank][bi->altBankIndex].ctr, taken,
273 ctr = gtable[bi->altBank][bi->altBankIndex].ctr;
275 gtable[bi->altBank][bi->altBankIndex].u = 0;
278 if (bi->altBank == 0) {
279 baseUpdate(branch_pc, taken, bi);
285 if (abs (2 * gtable[bi->hitBank][bi->hitBankIndex].ctr + 1) == 1) {
286 gtable[bi->hitBank][bi->hitBankIndex].u = 0;
289 ctrUpdate(gtable[bi->hitBank][bi->hitBankIndex].ctr, taken,
293 if (abs (2 * gtable[bi->hitBank][bi->hitBankIndex].ctr + 1) == 1) {
294 gtable[bi->hitBank][bi->hitBankIndex].u = 0;
297 if (bi->altTaken == taken) {
298 if (bi->altBank > 0) {
299 int8_t ctr = gtable[bi->altBank][bi->altBankIndex].ctr;
301 if (gtable[bi->hitBank][bi->hitBankIndex].u == 1) {
302 if (bi->longestMatchPred == taken) {
303 gtable[bi->hitBank][bi->hitBankIndex].u = 0;
310 baseUpdate(branch_pc, taken, bi);
313 if ((bi->longestMatchPred != bi->altTaken) &&
314 (bi->longestMatchPred == taken) &&
315 (gtable[bi->hitBank][bi->hitBankIndex].u < (1 << tagTableUBits) -1)) {
316 gtable[bi->hitBank][bi->hitBankIndex].u++;