commit_impl.hh (10231:cb2e6950956d) commit_impl.hh (10328:867b536a68be)
1/*
2 * Copyright (c) 2010-2013 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

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

1330 "squashed, skipping.\n",
1331 inst->pcState(), inst->seqNum, tid);
1332 }
1333 }
1334}
1335
1336template <class Impl>
1337void
1/*
2 * Copyright (c) 2010-2013 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

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

1330 "squashed, skipping.\n",
1331 inst->pcState(), inst->seqNum, tid);
1332 }
1333 }
1334}
1335
1336template <class Impl>
1337void
1338DefaultCommit<Impl>::skidInsert()
1339{
1340 DPRINTF(Commit, "Attempting to any instructions from rename into "
1341 "skidBuffer.\n");
1342
1343 for (int inst_num = 0; inst_num < fromRename->size; ++inst_num) {
1344 DynInstPtr inst = fromRename->insts[inst_num];
1345
1346 if (!inst->isSquashed()) {
1347 DPRINTF(Commit, "Inserting PC %s [sn:%i] [tid:%i] into ",
1348 "skidBuffer.\n", inst->pcState(), inst->seqNum,
1349 inst->threadNumber);
1350 skidBuffer.push(inst);
1351 } else {
1352 DPRINTF(Commit, "Instruction PC %s [sn:%i] [tid:%i] was "
1353 "squashed, skipping.\n",
1354 inst->pcState(), inst->seqNum, inst->threadNumber);
1355 }
1356 }
1357}
1358
1359template <class Impl>
1360void
1361DefaultCommit<Impl>::markCompletedInsts()
1362{
1363 // Grab completed insts out of the IEW instruction queue, and mark
1364 // instructions completed within the ROB.
1365 for (int inst_num = 0;
1366 inst_num < fromIEW->size && fromIEW->insts[inst_num];
1367 ++inst_num)
1368 {

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

1375
1376 // Mark the instruction as ready to commit.
1377 fromIEW->insts[inst_num]->setCanCommit();
1378 }
1379 }
1380}
1381
1382template <class Impl>
1338DefaultCommit<Impl>::markCompletedInsts()
1339{
1340 // Grab completed insts out of the IEW instruction queue, and mark
1341 // instructions completed within the ROB.
1342 for (int inst_num = 0;
1343 inst_num < fromIEW->size && fromIEW->insts[inst_num];
1344 ++inst_num)
1345 {

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

1352
1353 // Mark the instruction as ready to commit.
1354 fromIEW->insts[inst_num]->setCanCommit();
1355 }
1356 }
1357}
1358
1359template <class Impl>
1383bool
1384DefaultCommit<Impl>::robDoneSquashing()
1385{
1386 list<ThreadID>::iterator threads = activeThreads->begin();
1387 list<ThreadID>::iterator end = activeThreads->end();
1388
1389 while (threads != end) {
1390 ThreadID tid = *threads++;
1391
1392 if (!rob->isDoneSquashing(tid))
1393 return false;
1394 }
1395
1396 return true;
1397}
1398
1399template <class Impl>
1400void
1401DefaultCommit<Impl>::updateComInstStats(DynInstPtr &inst)
1402{
1403 ThreadID tid = inst->threadNumber;
1404
1405 if (!inst->isMicroop() || inst->isLastMicroop())
1406 instsCommitted[tid]++;
1407 opsCommitted[tid]++;

--- 151 unchanged lines hidden ---
1360void
1361DefaultCommit<Impl>::updateComInstStats(DynInstPtr &inst)
1362{
1363 ThreadID tid = inst->threadNumber;
1364
1365 if (!inst->isMicroop() || inst->isLastMicroop())
1366 instsCommitted[tid]++;
1367 opsCommitted[tid]++;

--- 151 unchanged lines hidden ---