Lines Matching refs:head_inst
645 DefaultCommit<Impl>::squashAfter(ThreadID tid, const DynInstPtr &head_inst)
648 tid, head_inst->seqNum);
650 assert(!squashAfterInst[tid] || squashAfterInst[tid] == head_inst);
652 squashAfterInst[tid] = head_inst;
993 DynInstPtr head_inst;
1008 head_inst = rob->readHeadInst(commit_thread);
1010 ThreadID tid = head_inst->threadNumber;
1016 tid, head_inst->seqNum);
1020 if (head_inst->isSquashed()) {
1029 ppSquash->notify(head_inst);
1034 pc[tid] = head_inst->pcState();
1044 bool commit_success = commitHead(head_inst, num_committed);
1048 statCommittedInstType[tid][head_inst->opClass()]++;
1049 ppCommit->notify(head_inst);
1054 toIEW->commitInfo[tid].doneSeqNum = head_inst->seqNum;
1057 canHandleInterrupts = (!head_inst->isDelayedCommit()) &&
1064 assert(!head_inst->isStoreConditional() ||
1065 head_inst->isCompleted() ||
1066 !head_inst->readPredicate());
1069 head_inst->updateMiscRegs();
1074 cpu->checker->verify(head_inst);
1079 TheISA::advancePC(pc[tid], head_inst->staticInst);
1082 lastCommitedSeqNum[tid] = head_inst->seqNum;
1086 if (head_inst->isSquashAfter())
1087 squashAfter(tid, head_inst);
1096 squashAfter(tid, head_inst);
1102 bool onInstBoundary = !head_inst->isMicroop() ||
1103 head_inst->isLastMicroop() ||
1104 !head_inst->isDelayedCommit();
1134 squashAfter(tid, head_inst);
1138 head_inst->pcState(), tid ,head_inst->seqNum);
1154 DefaultCommit<Impl>::commitHead(const DynInstPtr &head_inst, unsigned inst_num)
1156 assert(head_inst);
1158 ThreadID tid = head_inst->threadNumber;
1162 if (!head_inst->isExecuted()) {
1169 assert(head_inst->isNonSpeculative() || head_inst->isStoreConditional()
1170 || head_inst->isMemBarrier() || head_inst->isWriteBarrier()
1171 || head_inst->isAtomic()
1172 || (head_inst->isLoad() && head_inst->strictlyOrdered()));
1178 tid, head_inst->seqNum, head_inst->pcState());
1184 tid, head_inst->seqNum);
1188 toIEW->commitInfo[tid].nonSpecSeqNum = head_inst->seqNum;
1192 head_inst->clearCanCommit();
1194 if (head_inst->isLoad() && head_inst->strictlyOrdered()) {
1197 tid, head_inst->seqNum, head_inst->pcState());
1199 toIEW->commitInfo[tid].strictlyOrderedLoad = head_inst;
1207 if (head_inst->isThreadSync()) {
1213 Fault inst_fault = head_inst->getFault();
1216 if (!head_inst->isStore() && inst_fault == NoFault) {
1217 head_inst->setCompleted();
1222 tid, head_inst->seqNum, head_inst->pcState());
1228 tid, head_inst->seqNum);
1232 head_inst->setCompleted();
1238 cpu->checker->verify(head_inst);
1254 head_inst->notAnInst() ?
1256 head_inst->staticInst);
1265 tid, head_inst->seqNum);
1266 if (head_inst->traceData) {
1268 head_inst->traceData->setFetchSeq(head_inst->seqNum);
1269 head_inst->traceData->setCPSeq(thread[tid]->numOp);
1270 head_inst->traceData->dump();
1272 delete head_inst->traceData;
1273 head_inst->traceData = NULL;
1281 updateComInstStats(head_inst);
1285 thread[tid]->profilePC = head_inst->instAddr();
1287 thread[tid]->getTC(), head_inst->staticInst);
1293 if (head_inst->isControl()) {
1295 CPA::cpa()->swAutoBegin(tc, head_inst->nextInstAddr());
1301 tid, head_inst->seqNum, head_inst->pcState());
1302 if (head_inst->traceData) {
1303 head_inst->traceData->setFetchSeq(head_inst->seqNum);
1304 head_inst->traceData->setCPSeq(thread[tid]->numOp);
1305 head_inst->traceData->dump();
1306 delete head_inst->traceData;
1307 head_inst->traceData = NULL;
1309 if (head_inst->isReturn()) {
1312 tid, head_inst->seqNum, head_inst->pcState());
1316 for (int i = 0; i < head_inst->numDestRegs(); i++) {
1317 renameMap[tid]->setEntry(head_inst->flattenedDestRegIdx(i),
1318 head_inst->renamedDestRegIdx(i));
1326 head_inst->commitTick = curTick() - head_inst->fetchTick;
1331 if (head_inst->isStore() || head_inst->isAtomic())
1540 const DynInstPtr &head_inst = rob->readHeadInst(tid);
1545 } else if (head_inst->seqNum < oldest) {