void SamplerSMARTS::nextMode(bool rotate, FlowID fid, EmuMode mod){ if (rotate){ fetchNextMode(); I(next_mode != EmuInit); //If in live mode and warmup is to be forced if(BootLoader::genwarm > 0 && next_mode == EmuTiming) { BootLoader::genwarm--; setMode(EmuWarmup, fid); //setMode(EmuDetail, fid); } else if(BootLoader::live_warmup > 0 && next_mode == EmuTiming) { BootLoader::live_warmup--; //BootLoader::sample_count++; setMode(EmuDetail, fid); //setMode(EmuRabbit, fid); } else { setMode(next_mode, fid); } I(mode == next_mode); if (next_mode == EmuRabbit){ setModeNativeRabbit(); } setNextSwitch(getNextSwitch() + sequence_size[sequence_pos]); }else{ I(0); } }
void SamplerSMARTS::nextMode(bool rotate, FlowID fid, EmuMode mod){ if (rotate){ fetchNextMode(); I(next_mode != EmuInit); setMode(next_mode, fid); I(mode == next_mode); if (next_mode == EmuRabbit){ setModeNativeRabbit(); } setNextSwitch(getNextSwitch() + sequence_size[sequence_pos]); }else{ I(0); } }
SamplerSMARTS::SamplerSMARTS(const char *iname, const char *section, EmulInterface *emu, FlowID fid) : SamplerBase(iname, section, emu, fid) /* SamplerSMARTS constructor {{{1 */ { finished[fid] = true; // will be set to false in resumeThread finished[0] = false; nInstForcedDetail = nInstDetail==0? nInstTiming/2:nInstDetail; setNextSwitch(nInstSkip); if (nInstSkip) startRabbit(fid); std::cout << "Sampler: TBS, R:" << nInstRabbit << ", W:" << nInstWarmup << ", D:" << nInstDetail << ", T:" << nInstTiming << std::endl; std::cout << "Sampler: TBS, nInstMax:" << nInstMax << ", nInstSkip:" << nInstSkip << ", maxnsTime:" << maxnsTime << std::endl; }