rename_impl.hh (2980:eab855f06b79) | rename_impl.hh (3093:b09c33e66bce) |
---|---|
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; --- 341 unchanged lines hidden (view full) --- 350 351 } 352 353 // Clear the instruction list and skid buffer in case they have any 354 // insts in them. Since we support multiple ISAs, we cant just: 355 // "insts[tid].clear();" or "skidBuffer[tid].clear()" since there is 356 // a possible delay slot inst for different architectures 357 // insts[tid].clear(); | 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; --- 341 unchanged lines hidden (view full) --- 350 351 } 352 353 // Clear the instruction list and skid buffer in case they have any 354 // insts in them. Since we support multiple ISAs, we cant just: 355 // "insts[tid].clear();" or "skidBuffer[tid].clear()" since there is 356 // a possible delay slot inst for different architectures 357 // insts[tid].clear(); |
358#if THE_ISA == ALPHA_ISA 359 insts[tid].clear(); 360#else | 358#if ISA_HAS_DELAY_SLOT |
361 DPRINTF(Rename, "[tid:%i] Squashing incoming decode instructions until " 362 "[sn:%i].\n",tid, squash_seq_num); 363 ListIt ilist_it = insts[tid].begin(); 364 while (ilist_it != insts[tid].end()) { 365 if ((*ilist_it)->seqNum > squash_seq_num) { 366 (*ilist_it)->setSquashed(); 367 DPRINTF(Rename, "Squashing incoming decode instruction, " 368 "[tid:%i] [sn:%i] PC %08p.\n", tid, (*ilist_it)->seqNum, (*ilist_it)->PC); 369 } 370 ilist_it++; 371 } | 359 DPRINTF(Rename, "[tid:%i] Squashing incoming decode instructions until " 360 "[sn:%i].\n",tid, squash_seq_num); 361 ListIt ilist_it = insts[tid].begin(); 362 while (ilist_it != insts[tid].end()) { 363 if ((*ilist_it)->seqNum > squash_seq_num) { 364 (*ilist_it)->setSquashed(); 365 DPRINTF(Rename, "Squashing incoming decode instruction, " 366 "[tid:%i] [sn:%i] PC %08p.\n", tid, (*ilist_it)->seqNum, (*ilist_it)->PC); 367 } 368 ilist_it++; 369 } |
370#else 371 insts[tid].clear(); |
|
372#endif 373 374 // Clear the skid buffer in case it has any data in it. 375 // See comments above. 376 // skidBuffer[tid].clear(); | 372#endif 373 374 // Clear the skid buffer in case it has any data in it. 375 // See comments above. 376 // skidBuffer[tid].clear(); |
377#if THE_ISA == ALPHA_ISA 378 skidBuffer[tid].clear(); 379#else | 377#if ISA_HAS_DELAY_SLOT |
380 DPRINTF(Rename, "[tid:%i] Squashing incoming skidbuffer instructions " 381 "until [sn:%i].\n", tid, squash_seq_num); 382 ListIt slist_it = skidBuffer[tid].begin(); 383 while (slist_it != skidBuffer[tid].end()) { 384 if ((*slist_it)->seqNum > squash_seq_num) { 385 (*slist_it)->setSquashed(); 386 DPRINTF(Rename, "Squashing skidbuffer instruction, [tid:%i] [sn:%i]" 387 "PC %08p.\n", tid, (*slist_it)->seqNum, (*slist_it)->PC); 388 } 389 slist_it++; 390 } | 378 DPRINTF(Rename, "[tid:%i] Squashing incoming skidbuffer instructions " 379 "until [sn:%i].\n", tid, squash_seq_num); 380 ListIt slist_it = skidBuffer[tid].begin(); 381 while (slist_it != skidBuffer[tid].end()) { 382 if ((*slist_it)->seqNum > squash_seq_num) { 383 (*slist_it)->setSquashed(); 384 DPRINTF(Rename, "Squashing skidbuffer instruction, [tid:%i] [sn:%i]" 385 "PC %08p.\n", tid, (*slist_it)->seqNum, (*slist_it)->PC); 386 } 387 slist_it++; 388 } |
389#else 390 skidBuffer[tid].clear(); |
|
391#endif 392 doSquash(squash_seq_num, tid); 393} 394 395template <class Impl> 396void 397DefaultRename<Impl>::tick() 398{ --- 339 unchanged lines hidden (view full) --- 738} 739 740template <class Impl> 741void 742DefaultRename<Impl>::sortInsts() 743{ 744 int insts_from_decode = fromDecode->size; 745#ifdef DEBUG | 391#endif 392 doSquash(squash_seq_num, tid); 393} 394 395template <class Impl> 396void 397DefaultRename<Impl>::tick() 398{ --- 339 unchanged lines hidden (view full) --- 738} 739 740template <class Impl> 741void 742DefaultRename<Impl>::sortInsts() 743{ 744 int insts_from_decode = fromDecode->size; 745#ifdef DEBUG |
746#if THE_ISA == ALPHA_ISA | 746#if !ISA_HAS_DELAY_SLOT |
747 for (int i=0; i < numThreads; i++) 748 assert(insts[i].empty()); 749#endif 750#endif 751 for (int i = 0; i < insts_from_decode; ++i) { 752 DynInstPtr inst = fromDecode->insts[i]; 753 insts[inst->threadNumber].push_back(inst); 754 } --- 422 unchanged lines hidden (view full) --- 1177 1178 readFreeEntries(tid); 1179 readStallSignals(tid); 1180 1181 if (fromCommit->commitInfo[tid].squash) { 1182 DPRINTF(Rename, "[tid:%u]: Squashing instructions due to squash from " 1183 "commit.\n", tid); 1184 | 747 for (int i=0; i < numThreads; i++) 748 assert(insts[i].empty()); 749#endif 750#endif 751 for (int i = 0; i < insts_from_decode; ++i) { 752 DynInstPtr inst = fromDecode->insts[i]; 753 insts[inst->threadNumber].push_back(inst); 754 } --- 422 unchanged lines hidden (view full) --- 1177 1178 readFreeEntries(tid); 1179 readStallSignals(tid); 1180 1181 if (fromCommit->commitInfo[tid].squash) { 1182 DPRINTF(Rename, "[tid:%u]: Squashing instructions due to squash from " 1183 "commit.\n", tid); 1184 |
1185#if THE_ISA == ALPHA_ISA 1186 InstSeqNum squashed_seq_num = fromCommit->commitInfo[tid].doneSeqNum; 1187#else | 1185#if ISA_HAS_DELAY_SLOT |
1188 InstSeqNum squashed_seq_num = fromCommit->commitInfo[tid].bdelayDoneSeqNum; | 1186 InstSeqNum squashed_seq_num = fromCommit->commitInfo[tid].bdelayDoneSeqNum; |
1187#else 1188 InstSeqNum squashed_seq_num = fromCommit->commitInfo[tid].doneSeqNum; |
|
1189#endif 1190 1191 squash(squashed_seq_num, tid); 1192 1193 return true; 1194 } 1195 1196 if (fromCommit->commitInfo[tid].robSquashing) { --- 124 unchanged lines hidden --- | 1189#endif 1190 1191 squash(squashed_seq_num, tid); 1192 1193 return true; 1194 } 1195 1196 if (fromCommit->commitInfo[tid].robSquashing) { --- 124 unchanged lines hidden --- |