rename_impl.hh (13601:f5c84915eb7f) rename_impl.hh (13610:5d5404ac6288)
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);
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);
199}
200
201template <class Impl>
202void
203DefaultRename<Impl>::regProbePoints()
204{
205 ppRename = new ProbePointArg<DynInstPtr>(cpu->getProbeManager(), "Rename");
206 ppSquashInRename = new ProbePointArg<SeqNumRegPair>(cpu->getProbeManager(),

--- 447 unchanged lines hidden (view full) ---

654 "PC %s.\n", tid, inst->seqNum, inst->pcState());
655
656 // Check here to make sure there are enough destination registers
657 // to rename to. Otherwise block.
658 if (!renameMap[tid]->canRename(inst->numIntDestRegs(),
659 inst->numFPDestRegs(),
660 inst->numVecDestRegs(),
661 inst->numVecElemDestRegs(),
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(),
662 inst->numCCDestRegs())) {
663 DPRINTF(Rename, "Blocking due to lack of free "
664 "physical registers to rename to.\n");
665 blockThisCycle = true;
666 insts_to_rename.push_front(inst);
667 ++renameFullRegistersEvents;
668
669 break;

--- 366 unchanged lines hidden (view full) ---

1036 break;
1037 case FloatRegClass:
1038 fpRenameLookups++;
1039 break;
1040 case VecRegClass:
1041 case VecElemClass:
1042 vecRenameLookups++;
1043 break;
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;
1044 case CCRegClass:
1045 case MiscRegClass:
1046 break;
1047
1048 default:
1049 panic("Invalid register class: %d.", src_reg.classValue());
1050 }
1051

--- 199 unchanged lines hidden (view full) ---

1251
1252 if (fromCommit->commitInfo[tid].usedROB) {
1253 freeEntries[tid].robEntries =
1254 fromCommit->commitInfo[tid].freeROBEntries;
1255 emptyROB[tid] = fromCommit->commitInfo[tid].emptyROB;
1256 }
1257
1258 DPRINTF(Rename, "[tid:%i]: Free IQ: %i, Free ROB: %i, "
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, "
1259 "Free LQ: %i, Free SQ: %i, FreeRM %i(%i %i %i %i)\n",
1267 "Free LQ: %i, Free SQ: %i, FreeRM %i(%i %i %i %i %i)\n",
1260 tid,
1261 freeEntries[tid].iqEntries,
1262 freeEntries[tid].robEntries,
1263 freeEntries[tid].lqEntries,
1264 freeEntries[tid].sqEntries,
1265 renameMap[tid]->numFreeEntries(),
1266 renameMap[tid]->numFreeIntEntries(),
1267 renameMap[tid]->numFreeFloatEntries(),
1268 renameMap[tid]->numFreeVecEntries(),
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(),
1269 renameMap[tid]->numFreeCCEntries());
1270
1271 DPRINTF(Rename, "[tid:%i]: %i instructions not yet in ROB\n",
1272 tid, instsInProgress[tid]);
1273}
1274
1275template <class Impl>
1276bool

--- 162 unchanged lines hidden ---
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 ---