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; --- 414 unchanged lines hidden (view full) --- 423 // fetch past its skidbuffer 424 assert(skidBuffer[tid].size() <= skidBufferMax); 425} 426 427template<class Impl> 428bool 429DefaultDecode<Impl>::skidsEmpty() 430{ |
431 std::list<unsigned>::iterator threads = activeThreads->begin(); 432 std::list<unsigned>::iterator end = activeThreads->end(); |
433 |
434 while (threads != end) { 435 unsigned tid = *threads++; 436 if (!skidBuffer[tid].empty()) |
437 return false; 438 } 439 440 return true; 441} 442 443template<class Impl> 444void 445DefaultDecode<Impl>::updateStatus() 446{ 447 bool any_unblocking = false; 448 |
449 std::list<unsigned>::iterator threads = activeThreads->begin(); 450 std::list<unsigned>::iterator end = activeThreads->end(); |
451 |
452 while (threads != end) { |
453 unsigned tid = *threads++; 454 455 if (decodeStatus[tid] == Unblocking) { 456 any_unblocking = true; 457 break; 458 } 459 } 460 --- 136 unchanged lines hidden (view full) --- 597DefaultDecode<Impl>::tick() 598{ 599 wroteToTimeBuffer = false; 600 601 bool status_change = false; 602 603 toRenameIndex = 0; 604 |
605 std::list<unsigned>::iterator threads = activeThreads->begin(); 606 std::list<unsigned>::iterator end = activeThreads->end(); |
607 608 sortInsts(); 609 610 //Check stall and squash signals. |
611 while (threads != end) { 612 unsigned tid = *threads++; |
613 614 DPRINTF(Decode,"Processing [tid:%i]\n",tid); 615 status_change = checkSignalsAndUpdate(tid) || status_change; 616 617 decode(status_change, tid); 618 } 619 620 if (status_change) { --- 209 unchanged lines hidden --- |