models/processor/zesto/ZPIPE-decode/decode-DPM.cpp
void
core_decode_DPM_t::recover_decode_pipe(void)
{
  struct core_knobs_t * knobs = core->knobs;
  for(int stage=0;stage<knobs->decode.depth;stage++)
  {
    if(occupancy[stage])
      for(int i=knobs->decode.width-1;i>=0;i--)
      {
        if(pipe[stage][i])
        {
          #ifdef ZESTO_COUNTERS
          core->counters->decoder.instruction_decoder.read++; // set to zero (NOP)
          #endif
          pipe[stage][i] = NULL;
          occupancy[stage]--;
          zesto_assert(occupancy[stage] >= 0,(void)0);
        }
      }
    zesto_assert(occupancy[stage] == 0,(void)0);
  }
}
/* same as above, but blow away the entire decode pipeline */
same as above, but blow away the entire decode pipeline
same as above but blow away the entire decode pipeline
void
core_decode_DPM_t::recover_decode_pipe(void)
{
  struct core_knobs_t * knobs = core->knobs;
  for(int stage=0;stage<knobs->decode.depth;stage++)
  {
    if(occupancy[stage])
      for(int i=knobs->decode.width-1;i>=0;i--)
      {
        if(pipe[stage][i])
        {
          #ifdef ZESTO_COUNTERS
          core->counters->decoder.instruction_decoder.read++; 
          #endif
          pipe[stage][i] = NULL;
          occupancy[stage]--;
          zesto_assert(occupancy[stage] >= 0,(void)0);
        }
      }
    zesto_assert(occupancy[stage] == 0,(void)0);
  }
}
void core_decode_DPM_t :: recover_decode_pipe ( void ) { struct core_knobs_t * knobs = core -> knobs ; for ( int stage = 0 ; stage < knobs -> decode . depth ; stage ++ ) { if ( occupancy [ stage ] ) for ( int i = knobs -> decode . width - 1 ; i >= 0 ; i -- ) { if ( pipe [ stage ] [ i ] ) { #ifdef ZESTO_COUNTERS core -> counters -> decoder . instruction_decoder . read ++ ; #endif pipe [ stage ] [ i ] = NULL ; occupancy [ stage ] -- ; zesto_assert ( occupancy [ stage ] >= 0 , ( void ) 0 ) ; } } zesto_assert ( occupancy [ stage ] == 0 , ( void ) 0 ) ; } }
same as above, but blow away the entire decode pipeline
same as above but blow away the entire decode pipeline
// set to zero (NOP)