/gem5/src/cpu/pred/ |
H A D | 2bit_local.cc | 76 bool taken; local 87 taken = getPrediction(counter_val); 89 return taken; 93 LocalBP::update(ThreadID tid, Addr branch_addr, bool taken, void *bp_history, argument 110 if (taken) { 111 DPRINTF(Fetch, "Branch updated as taken.\n"); 114 DPRINTF(Fetch, "Branch updated as not taken.\n");
|
H A D | multiperspective_perceptron_tage.cc | 53 MPP_TAGE::handleTAGEUpdate(Addr branch_pc, bool taken, argument 58 if (bi->longestMatchPred != taken) { 61 ctrUpdate(gtable[bi->altBank][bi->altBankIndex].ctr, taken, 65 baseUpdate(branch_pc, taken, bi); 70 ctrUpdate(gtable[bi->hitBank][bi->hitBankIndex].ctr, taken, 78 baseUpdate(branch_pc, taken, bi); 82 (bi->longestMatchPred == taken) && 89 MPP_TAGE::handleAllocAndUReset(bool alloc, bool taken, argument 111 gtable[i][bi->tableIndices[i]].ctr = taken ? 0 : -1; 178 MPP_TAGE::adjustAlloc(bool & alloc, bool taken, boo argument 187 updateHistories( ThreadID tid, Addr branch_pc, bool taken, TAGEBase::BranchInfo* b, bool speculative, const StaticInstPtr &inst, Addr target) argument 207 updatePathAndGlobalHistory( ThreadHistory& tHist, int brtype, bool taken, Addr branch_pc, Addr target) argument 333 gUpdate(Addr branch_pc, bool taken, int64_t hist, std::vector<int> & length, std::vector<int8_t> * tab, int nbr, int logs, std::vector<int8_t> & w, StatisticalCorrector::BranchInfo* bi) argument 447 updatePartial(ThreadID tid, MPPTAGEBranchInfo &bi, bool taken) argument 471 updateHistories(ThreadID tid, MPPTAGEBranchInfo &bi, bool taken) argument 559 condBranchUpdate(ThreadID tid, Addr branch_pc, bool taken, StatisticalCorrector::BranchInfo *bi, Addr corrTarget, bool bias_bit, int hitBank, int altBank, int64_t phist) argument 600 update(ThreadID tid, Addr instPC, bool taken, void *bp_history, bool squashed, const StaticInstPtr & inst, Addr corrTarget) argument [all...] |
H A D | tage_sc_l_64KB.cc | 142 const StaticInstPtr &inst, bool taken, BranchInfo* tage_bi, 155 + taken; 156 sh->updateLocalHistory(2, branch_pc, taken, branch_pc & 15); 157 sh->updateLocalHistory(3, branch_pc, taken); 160 StatisticalCorrector::scHistoryUpdate(branch_pc, inst, taken, tage_bi, 166 bool taken, BranchInfo* bi, int64_t phist) 171 gUpdate((pc << 1) + bi->predBeforeSC, taken, sh->bwHist, bwm, 174 gUpdate(pc, taken, phist, pm, 177 gUpdate(pc, taken, sh->getLocalHistory(1, pc), lm, 180 gUpdate(pc, taken, s 141 scHistoryUpdate(Addr branch_pc, const StaticInstPtr &inst, bool taken, BranchInfo* tage_bi, Addr corrTarget) argument 165 gUpdates(ThreadID tid, Addr pc, bool taken, BranchInfo* bi, int64_t phist) argument 216 handleAllocAndUReset( bool alloc, bool taken, TAGEBase::BranchInfo* bi, int nrand) argument 264 handleTAGEUpdate(Addr branch_pc, bool taken, TAGEBase::BranchInfo* bi) argument [all...] |
H A D | ltage.cc | 78 DPRINTF(LTage, "Predict for %lx: taken?:%d, loopTaken?:%d, " 94 LTAGE::update(ThreadID tid, Addr branch_pc, bool taken, void* bp_history, argument 107 tage->squash(tid, taken, bi->tageBranchInfo, corrTarget); 118 DPRINTF(LTage, "Updating tables for branch:%lx; taken?:%d\n", 119 branch_pc, taken); 120 tage->updateStats(taken, bi->tageBranchInfo); 122 loopPredictor->updateStats(taken, bi->lpBranchInfo); 124 loopPredictor->condBranchUpdate(tid, branch_pc, taken, 127 tage->condBranchUpdate(tid, branch_pc, taken, bi->tageBranchInfo, 131 tage->updateHistories(tid, branch_pc, taken, b [all...] |
H A D | tage_sc_l_8KB.hh | 62 bool alloc, bool taken, TAGEBase::BranchInfo* bi, int nrand) override; 65 Addr branch_pc, bool taken, TAGEBase::BranchInfo* bi) override; 102 Addr branch_pc, const StaticInstPtr &inst, bool taken, 105 void gUpdates(ThreadID tid, Addr pc, bool taken, BranchInfo* bi,
|
H A D | tage_sc_l_8KB.cc | 105 const StaticInstPtr &inst, bool taken, BranchInfo *tage_bi, 116 sh->globalHist = (sh->globalHist << 1) + taken; 119 StatisticalCorrector::scHistoryUpdate(branch_pc, inst, taken, tage_bi, 124 TAGE_SC_L_8KB_StatisticalCorrector::gUpdates(ThreadID tid, Addr pc, bool taken, argument 128 gUpdate(pc, taken, sh->globalHist, gm, ggehl, gnb, logGnb, wg, bi); 129 gUpdate(pc, taken, sh->bwHist, bwm, bwgehl, bwnb, logBwnb, wbw, bi); 130 gUpdate(pc, taken, sh->getLocalHistory(1, pc), lm, lgehl, lnb, logLnb, wl, 132 gUpdate(pc, taken, sh->imliCount, im, igehl, inb, logInb, wi, bi); 190 bool alloc, bool taken, TAGEBase::BranchInfo* bi, int nrand) 214 gtable[i][bi->tableIndices[i]].ctr = taken 104 scHistoryUpdate(Addr branch_pc, const StaticInstPtr &inst, bool taken, BranchInfo *tage_bi, Addr corrTarget) argument 189 handleAllocAndUReset( bool alloc, bool taken, TAGEBase::BranchInfo* bi, int nrand) argument 258 handleTAGEUpdate(Addr branch_pc, bool taken, TAGEBase::BranchInfo* bi) argument [all...] |
H A D | bi_mode.cc | 68 * everything is set to taken. I.e., its choice predictor 69 * chooses the taken array and the taken array predicts taken. 97 * register and a branch's PC is used to index into both the taken 98 * and not-taken predictors, which both present a prediction. The 154 BiModeBP::update(ThreadID tid, Addr branchAddr, bool taken, void *bpHistory, 164 globalHistoryReg[tid] = (history->globalHistoryReg << 1) | taken; 178 // if the taken array's prediction was used, update it 179 if (taken) { [all...] |
H A D | tage.cc | 56 TAGE::update(ThreadID tid, Addr branch_pc, bool taken, void* bp_history, argument 69 tage->squash(tid, taken, tage_bi, corrTarget); 75 DPRINTF(Tage, "Updating tables for branch:%lx; taken?:%d\n", 76 branch_pc, taken); 77 tage->updateStats(taken, bi->tageBranchInfo); 78 tage->condBranchUpdate(tid, branch_pc, taken, tage_bi, nrand, 83 tage->updateHistories(tid, branch_pc, taken, tage_bi, false, inst,
|
H A D | bi_mode.hh | 44 * branch predictor that has three seprate history arrays: a taken array, a 45 * not-taken array, and a choice array. The taken/not-taken arrays are indexed 47 * the PC only. Because the taken/not-taken arrays use the same index, they must 52 * pattern. By separating the predictors into taken/not-taken arrays, and using 64 void update(ThreadID tid, Addr branch_addr, bool taken, void *bp_history, 68 void updateGlobalHistReg(ThreadID tid, bool taken); [all...] |
H A D | multiperspective_perceptron_tage_8KB.cc | 105 MPP_StatisticalCorrector_8KB::gUpdates(ThreadID tid, Addr pc, bool taken, argument 110 gUpdate((pc << 1) + bi->predBeforeSC, taken, sh->globalHist << 11, 113 gUpdate(pc, taken, sh->getLocalHistory(1, pc), 116 gUpdate(pc, taken, sh->getHistoryStackEntry(), 122 const StaticInstPtr &inst, bool taken, 133 sh->globalHist = (sh->globalHist << 1) + taken; 135 sh->updateHistoryStack(corrTarget, taken, inst->isCall(), 138 StatisticalCorrector::scHistoryUpdate(branch_pc, inst, taken, bi, 121 scHistoryUpdate(Addr branch_pc, const StaticInstPtr &inst, bool taken, StatisticalCorrector::BranchInfo *bi, Addr corrTarget) argument
|
H A D | multiperspective_perceptron_tage_8KB.hh | 67 void gUpdates(ThreadID tid, Addr pc, bool taken, 69 void scHistoryUpdate(Addr branch_pc, const StaticInstPtr &inst, bool taken,
|
H A D | tage_sc_l_64KB.hh | 63 bool alloc, bool taken, TAGEBase::BranchInfo* bi, int nrand) override; 66 Addr branch_pc, bool taken, TAGEBase::BranchInfo* bi) override; 121 void scHistoryUpdate(Addr branch_pc, const StaticInstPtr &inst, bool taken, 124 void gUpdates(ThreadID tid, Addr pc, bool taken, BranchInfo* bi,
|
H A D | multiperspective_perceptron_tage.hh | 66 void handleTAGEUpdate(Addr branch_pc, bool taken, TAGEBase::BranchInfo* bi) 68 void handleAllocAndUReset(bool alloc, bool taken, TAGEBase::BranchInfo* bi, 76 void adjustAlloc(bool & alloc, bool taken, bool pred_taken) override; 77 void updateHistories(ThreadID tid, Addr branch_pc, bool taken, 82 bool taken, Addr branch_pc, Addr target); 124 void updateHistoryStack(Addr target, bool taken, bool is_call, argument 130 (truncated_target >> 5) ^ taken); 168 void condBranchUpdate(ThreadID tid, Addr branch_pc, bool taken, 177 Addr branch_pc, bool taken, int64_t hist, std::vector<int> & length, 217 void updatePartial(ThreadID tid, MPPTAGEBranchInfo &bi, bool taken); [all...] |
H A D | multiperspective_perceptron_tage_64KB.cc | 114 MPP_StatisticalCorrector_64KB::gUpdates(ThreadID tid, Addr pc, bool taken, argument 119 gUpdate((pc << 1) + bi->predBeforeSC, taken, sh->globalHist << 11, 122 gUpdate(pc, taken, sh->getLocalHistory(1, pc), 125 gUpdate(pc, taken, sh->getLocalHistory(2, pc), 128 gUpdate(pc, taken, sh->getLocalHistory(3, pc) << 11, 131 gUpdate(pc, taken, sh->getHistoryStackEntry(), 137 const StaticInstPtr &inst, bool taken, 148 sh->globalHist = (sh->globalHist << 1) + taken; 149 sh->updateLocalHistory(2, branch_pc, taken, 151 sh->updateLocalHistory(3, branch_pc, taken); 136 scHistoryUpdate(Addr branch_pc, const StaticInstPtr &inst, bool taken, StatisticalCorrector::BranchInfo *bi, Addr corrTarget) argument [all...] |
H A D | tage_sc_l.cc | 231 ThreadHistory& tHist, int brtype, bool taken, Addr branch_pc, Addr target) 234 int tmp = ((branch_pc ^ (branch_pc >> instShiftAmt))) ^ taken; 237 if ((brtype == 3) & taken) { 266 ThreadID tid, Addr branch_pc, bool taken, TAGEBase::BranchInfo* b, 281 updatePathAndGlobalHistory(tHist, brtype, taken, branch_pc, target); 283 DPRINTF(TageSCL, "Updating global histories with branch:%lx; taken?:%d, " 284 "path Hist: %x; pointer:%d\n", branch_pc, taken, tHist.pathHist, 289 TAGE_SC_L_TAGE::squash(ThreadID tid, bool taken, TAGEBase::BranchInfo *bi, argument 296 TAGE_SC_L_TAGE::adjustAlloc(bool & alloc, bool taken, bool pred_taken) argument 299 if ((taken 230 updatePathAndGlobalHistory( ThreadHistory& tHist, int brtype, bool taken, Addr branch_pc, Addr target) argument 265 updateHistories( ThreadID tid, Addr branch_pc, bool taken, TAGEBase::BranchInfo* b, bool speculative, const StaticInstPtr &inst, Addr target) argument 413 update(ThreadID tid, Addr branch_pc, bool taken, void *bp_history, bool squashed, const StaticInstPtr & inst, Addr corrTarget) argument [all...] |
H A D | statistical_corrector.cc | 202 StatisticalCorrector::gUpdate(Addr branch_pc, bool taken, int64_t hist, argument 212 ctrUpdate(tab[i][index], taken, scCountersWidth); 217 ctrUpdate(w[getIndUpds(branch_pc)], ((percsum >= 0) == taken), 289 const StaticInstPtr &inst, bool taken, BranchInfo * tage_bi, 300 if (!taken) { 311 (taken & (corrTarget < branch_pc)); 312 scHistory->updateLocalHistory(1, branch_pc, taken); 318 bool taken, BranchInfo *bi, Addr corrTarget, bool b, int hitBank, 328 ctrUpdate(secondH, (bi->predBeforeSC == taken), 336 ctrUpdate(firstH, (bi->predBeforeSC == taken), 288 scHistoryUpdate(Addr branch_pc, const StaticInstPtr &inst, bool taken, BranchInfo * tage_bi, Addr corrTarget) argument 317 condBranchUpdate(ThreadID tid, Addr branch_pc, bool taken, BranchInfo *bi, Addr corrTarget, bool b, int hitBank, int altBank, int64_t phist) argument 376 updateStats(bool taken, BranchInfo *bi) argument [all...] |
H A D | tage_sc_l.hh | 100 ThreadID tid, Addr branch_pc, bool taken, TAGEBase::BranchInfo* b, 111 void squash(ThreadID tid, bool taken, TAGEBase::BranchInfo *bi, 115 ThreadHistory & tHist, int brtype, bool taken, 118 void adjustAlloc(bool & alloc, bool taken, bool pred_taken) override; 120 virtual void handleAllocAndUReset(bool alloc, bool taken, 126 Addr branch_pc, bool taken, TAGEBase::BranchInfo* bi) override = 0; 159 void update(ThreadID tid, Addr branch_addr, bool taken, void *bp_history,
|
H A D | loop_predictor.cc | 157 LoopPredictor::specLoopUpdate(bool taken, BranchInfo* bi) argument 161 if (taken != ltable[index].dir) { 177 LoopPredictor::loopUpdate(Addr pc, bool taken, BranchInfo* bi, bool tage_pred) argument 183 if (taken != bi->loopPred) { 209 if (taken != (useDirectionBit ? ltable[idx].dir : true)) { 217 ltable[idx].dir = taken; // ignored if no useDirectionBit 241 } else if (useDirectionBit ? (bi->predTaken != taken) : taken) { 243 //try to allocate an entry on taken branch 252 ltable[idx].dir = !taken; // ignore 316 updateStats(bool taken, BranchInfo* bi) argument 326 condBranchUpdate(ThreadID tid, Addr branch_pc, bool taken, bool tage_pred, BranchInfo* bi, unsigned instShiftAmt) argument [all...] |
H A D | tage_base.hh | 223 * @param taken Actual branch outcome. 227 static void ctrUpdate(T & ctr, bool taken, int nbits); 250 * @param taken The actual branch outcome. 254 void baseUpdate(Addr pc, bool taken, BranchInfo* bi); 272 * @param taken Actual branch outcome. 276 void update(ThreadID tid, Addr branch_pc, bool taken, BranchInfo* bi); 285 * @param taken (Predicted) branch direction. 291 ThreadID tid, Addr branch_pc, bool taken, BranchInfo* b, 302 * @param taken The correct branch outcome. 310 ThreadID tid, bool taken, BranchInf [all...] |
H A D | statistical_corrector.hh | 56 inline void ctrUpdate(T & ctr, bool taken, int nbits) { argument 59 if (taken) { 102 int ordinal, Addr branch_pc, bool taken, Addr extraXor = 0) 108 int64_t hist = (localHistories[idx][entry] << 1) + taken; 246 Addr branch_pc, bool taken, int64_t hist, std::vector<int> & length, 256 Addr branch_pc, const StaticInstPtr &inst , bool taken, 259 virtual void gUpdates( ThreadID tid, Addr pc, bool taken, BranchInfo* bi, 264 void updateStats(bool taken, BranchInfo *bi); 266 virtual void condBranchUpdate(ThreadID tid, Addr branch_pc, bool taken, 101 updateLocalHistory( int ordinal, Addr branch_pc, bool taken, Addr extraXor = 0) argument
|
H A D | tage_base.cc | 256 TAGEBase::ctrUpdate(T & ctr, bool taken, int nbits) argument 259 if (taken) { 269 template void TAGEBase::ctrUpdate(int8_t & ctr, bool taken, int nbits); 270 template void TAGEBase::ctrUpdate(int & ctr, bool taken, int nbits); 297 TAGEBase::baseUpdate(Addr pc, bool taken, BranchInfo* bi) argument 301 if (taken) { 424 DPRINTF(Tage, "Predict for %lx: taken?:%d, tagePred:%d, altPred:%d\n", 433 TAGEBase::adjustAlloc(bool & alloc, bool taken, bool pred_taken) argument 439 TAGEBase::handleAllocAndUReset(bool alloc, bool taken, BranchInfo* bi, argument 473 gtable[i][bi->tableIndices[i]].ctr = (taken) 509 condBranchUpdate(ThreadID tid, Addr branch_pc, bool taken, BranchInfo* bi, int nrand, Addr corrTarget, bool pred, bool preAdjustAlloc) argument 550 handleTAGEUpdate(Addr branch_pc, bool taken, BranchInfo* bi) argument 583 updateHistories(ThreadID tid, Addr branch_pc, bool taken, BranchInfo* bi, bool speculative, const StaticInstPtr &inst, Addr target) argument 624 squash(ThreadID tid, bool taken, TAGEBase::BranchInfo *bi, Addr target) argument 657 updateStats(bool taken, BranchInfo* bi) argument [all...] |
H A D | multiperspective_perceptron_tage_64KB.hh | 70 void gUpdates(ThreadID tid, Addr pc, bool taken, 72 void scHistoryUpdate(Addr branch_pc, const StaticInstPtr &inst, bool taken,
|
H A D | loop_predictor.hh | 179 * @param taken The actual branch outcome. 189 * @param taken The predicted branch outcome. 193 void specLoopUpdate(bool taken, BranchInfo* bi); 198 * @param taken Actual branch outcome. 204 void condBranchUpdate(ThreadID tid, Addr branch_pc, bool taken, 218 * @result the prediction, true if taken 226 * @param taken Actual branch outcome 230 void updateStats(bool taken, BranchInfo* bi);
|
H A D | ltage.hh | 70 void update(ThreadID tid, Addr branch_addr, bool taken, void *bp_history,
|
H A D | tage.hh | 89 void update(ThreadID tid, Addr branch_addr, bool taken, void *bp_history,
|