rob_impl.hh (7717:f166f8bd8818) rob_impl.hh (7720:65d338a8dba4)
1/*
2 * Copyright (c) 2004-2006 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

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

199}
200
201template <class Impl>
202void
203ROB<Impl>::insertInst(DynInstPtr &inst)
204{
205 assert(inst);
206
1/*
2 * Copyright (c) 2004-2006 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

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

199}
200
201template <class Impl>
202void
203ROB<Impl>::insertInst(DynInstPtr &inst)
204{
205 assert(inst);
206
207 DPRINTF(ROB, "Adding inst PC %#x to the ROB.\n", inst->readPC());
207 DPRINTF(ROB, "Adding inst PC %s to the ROB.\n", inst->pcState());
208
209 assert(numInstsInROB != numEntries);
210
211 ThreadID tid = inst->threadNumber;
212
213 instList[tid].push_back(inst);
214
215 //Set Up head iterator if this is the 1st instruction in the ROB

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

242 // Get the head ROB instruction.
243 InstIt head_it = instList[tid].begin();
244
245 DynInstPtr head_inst = (*head_it);
246
247 assert(head_inst->readyToCommit());
248
249 DPRINTF(ROB, "[tid:%u]: Retiring head instruction, "
208
209 assert(numInstsInROB != numEntries);
210
211 ThreadID tid = inst->threadNumber;
212
213 instList[tid].push_back(inst);
214
215 //Set Up head iterator if this is the 1st instruction in the ROB

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

242 // Get the head ROB instruction.
243 InstIt head_it = instList[tid].begin();
244
245 DynInstPtr head_inst = (*head_it);
246
247 assert(head_inst->readyToCommit());
248
249 DPRINTF(ROB, "[tid:%u]: Retiring head instruction, "
250 "instruction PC %#x,[sn:%lli]\n", tid, head_inst->readPC(),
250 "instruction PC %s, [sn:%lli]\n", tid, head_inst->pcState(),
251 head_inst->seqNum);
252
253 --numInstsInROB;
254 --threadEntries[tid];
255
256 head_inst->clearInROB();
257 head_inst->setCommitted();
258

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

333 bool robTailUpdate = false;
334
335 for (int numSquashed = 0;
336 numSquashed < squashWidth &&
337 squashIt[tid] != instList[tid].end() &&
338 (*squashIt[tid])->seqNum > squashedSeqNum[tid];
339 ++numSquashed)
340 {
251 head_inst->seqNum);
252
253 --numInstsInROB;
254 --threadEntries[tid];
255
256 head_inst->clearInROB();
257 head_inst->setCommitted();
258

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

333 bool robTailUpdate = false;
334
335 for (int numSquashed = 0;
336 numSquashed < squashWidth &&
337 squashIt[tid] != instList[tid].end() &&
338 (*squashIt[tid])->seqNum > squashedSeqNum[tid];
339 ++numSquashed)
340 {
341 DPRINTF(ROB, "[tid:%u]: Squashing instruction PC %#x, seq num %i.\n",
341 DPRINTF(ROB, "[tid:%u]: Squashing instruction PC %s, seq num %i.\n",
342 (*squashIt[tid])->threadNumber,
342 (*squashIt[tid])->threadNumber,
343 (*squashIt[tid])->readPC(),
343 (*squashIt[tid])->pcState(),
344 (*squashIt[tid])->seqNum);
345
346 // Mark the instruction as squashed, and ready to commit so that
347 // it can drain out of the pipeline.
348 (*squashIt[tid])->setSquashed();
349
350 (*squashIt[tid])->setCanCommit();
351

--- 174 unchanged lines hidden ---
344 (*squashIt[tid])->seqNum);
345
346 // Mark the instruction as squashed, and ready to commit so that
347 // it can drain out of the pipeline.
348 (*squashIt[tid])->setSquashed();
349
350 (*squashIt[tid])->setCanCommit();
351

--- 174 unchanged lines hidden ---