1/* 2 * Copyright (c) 2010-2012, 2014-2016 ARM Limited 3 * Copyright (c) 2013 Advanced Micro Devices, Inc. 4 * All rights reserved. 5 * 6 * The license below extends only to copyright in the software and shall 7 * not be construed as granting a license to any other intellectual 8 * property including but not limited to intellectual property relating --- 182 unchanged lines hidden (view full) --- 191 fpRenameLookups 192 .name(name() + ".fp_rename_lookups") 193 .desc("Number of floating rename lookups") 194 .prereq(fpRenameLookups); 195 vecRenameLookups 196 .name(name() + ".vec_rename_lookups") 197 .desc("Number of vector rename lookups") 198 .prereq(vecRenameLookups); |
199 vecPredRenameLookups 200 .name(name() + ".vec_pred_rename_lookups") 201 .desc("Number of vector predicate rename lookups") 202 .prereq(vecPredRenameLookups); |
203} 204 205template <class Impl> 206void 207DefaultRename<Impl>::regProbePoints() 208{ 209 ppRename = new ProbePointArg<DynInstPtr>(cpu->getProbeManager(), "Rename"); 210 ppSquashInRename = new ProbePointArg<SeqNumRegPair>(cpu->getProbeManager(), --- 447 unchanged lines hidden (view full) --- 658 "PC %s.\n", tid, inst->seqNum, inst->pcState()); 659 660 // Check here to make sure there are enough destination registers 661 // to rename to. Otherwise block. 662 if (!renameMap[tid]->canRename(inst->numIntDestRegs(), 663 inst->numFPDestRegs(), 664 inst->numVecDestRegs(), 665 inst->numVecElemDestRegs(), |
666 inst->numVecPredDestRegs(), |
667 inst->numCCDestRegs())) { 668 DPRINTF(Rename, "Blocking due to lack of free " 669 "physical registers to rename to.\n"); 670 blockThisCycle = true; 671 insts_to_rename.push_front(inst); 672 ++renameFullRegistersEvents; 673 674 break; --- 366 unchanged lines hidden (view full) --- 1041 break; 1042 case FloatRegClass: 1043 fpRenameLookups++; 1044 break; 1045 case VecRegClass: 1046 case VecElemClass: 1047 vecRenameLookups++; 1048 break; |
1049 case VecPredRegClass: 1050 vecPredRenameLookups++; 1051 break; |
1052 case CCRegClass: 1053 case MiscRegClass: 1054 break; 1055 1056 default: 1057 panic("Invalid register class: %d.", src_reg.classValue()); 1058 } 1059 --- 199 unchanged lines hidden (view full) --- 1259 1260 if (fromCommit->commitInfo[tid].usedROB) { 1261 freeEntries[tid].robEntries = 1262 fromCommit->commitInfo[tid].freeROBEntries; 1263 emptyROB[tid] = fromCommit->commitInfo[tid].emptyROB; 1264 } 1265 1266 DPRINTF(Rename, "[tid:%i]: Free IQ: %i, Free ROB: %i, " |
1267 "Free LQ: %i, Free SQ: %i, FreeRM %i(%i %i %i %i %i)\n", |
1268 tid, 1269 freeEntries[tid].iqEntries, 1270 freeEntries[tid].robEntries, 1271 freeEntries[tid].lqEntries, 1272 freeEntries[tid].sqEntries, 1273 renameMap[tid]->numFreeEntries(), 1274 renameMap[tid]->numFreeIntEntries(), 1275 renameMap[tid]->numFreeFloatEntries(), 1276 renameMap[tid]->numFreeVecEntries(), |
1277 renameMap[tid]->numFreePredEntries(), |
1278 renameMap[tid]->numFreeCCEntries()); 1279 1280 DPRINTF(Rename, "[tid:%i]: %i instructions not yet in ROB\n", 1281 tid, instsInProgress[tid]); 1282} 1283 1284template <class Impl> 1285bool --- 162 unchanged lines hidden --- |