decode_impl.hh (3967:1f1dff08a596) decode_impl.hh (3970:d54945bab95d)
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{
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();
431 std::list<unsigned>::iterator threads = activeThreads->begin();
432 std::list<unsigned>::iterator end = activeThreads->end();
432
433
433 while (threads != (*activeThreads).end()) {
434 if (!skidBuffer[*threads++].empty())
434 while (threads != end) {
435 unsigned tid = *threads++;
436 if (!skidBuffer[tid].empty())
435 return false;
436 }
437
438 return true;
439}
440
441template<class Impl>
442void
443DefaultDecode<Impl>::updateStatus()
444{
445 bool any_unblocking = false;
446
437 return false;
438 }
439
440 return true;
441}
442
443template<class Impl>
444void
445DefaultDecode<Impl>::updateStatus()
446{
447 bool any_unblocking = false;
448
447 std::list<unsigned>::iterator threads = (*activeThreads).begin();
449 std::list<unsigned>::iterator threads = activeThreads->begin();
450 std::list<unsigned>::iterator end = activeThreads->end();
448
451
449 threads = (*activeThreads).begin();
450
451 while (threads != (*activeThreads).end()) {
452 while (threads != end) {
452 unsigned tid = *threads++;
453
454 if (decodeStatus[tid] == Unblocking) {
455 any_unblocking = true;
456 break;
457 }
458 }
459

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

596DefaultDecode<Impl>::tick()
597{
598 wroteToTimeBuffer = false;
599
600 bool status_change = false;
601
602 toRenameIndex = 0;
603
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
604 std::list<unsigned>::iterator threads = (*activeThreads).begin();
605 std::list<unsigned>::iterator threads = activeThreads->begin();
606 std::list<unsigned>::iterator end = activeThreads->end();
605
606 sortInsts();
607
608 //Check stall and squash signals.
607
608 sortInsts();
609
610 //Check stall and squash signals.
609 while (threads != (*activeThreads).end()) {
610 unsigned tid = *threads++;
611 while (threads != end) {
612 unsigned tid = *threads++;
611
612 DPRINTF(Decode,"Processing [tid:%i]\n",tid);
613 status_change = checkSignalsAndUpdate(tid) || status_change;
614
615 decode(status_change, tid);
616 }
617
618 if (status_change) {

--- 209 unchanged lines hidden ---
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 ---