arch-vega: Implement S_SLEEP
This is merely copied from arch-gcn3. Change-Id: Ibd2bda37fe9adc083a35efab0f59617d386019b9 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/53883 Reviewed-by: Matt Sinclair <mattdsinclair@gmail.com> Maintainer: Matt Sinclair <mattdsinclair@gmail.com> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
committed by
Bobby Bruce
parent
23aec13f07
commit
0ae1a9d109
@@ -4608,6 +4608,8 @@ namespace VegaISA
|
||||
Inst_SOPP__S_SLEEP::Inst_SOPP__S_SLEEP(InFmt_SOPP *iFmt)
|
||||
: Inst_SOPP(iFmt, "s_sleep")
|
||||
{
|
||||
setFlag(ALU);
|
||||
setFlag(Sleep);
|
||||
} // Inst_SOPP__S_SLEEP
|
||||
|
||||
Inst_SOPP__S_SLEEP::~Inst_SOPP__S_SLEEP()
|
||||
@@ -4620,7 +4622,10 @@ namespace VegaISA
|
||||
void
|
||||
Inst_SOPP__S_SLEEP::execute(GPUDynInstPtr gpuDynInst)
|
||||
{
|
||||
panicUnimplemented();
|
||||
ScalarRegI32 simm16 = (ScalarRegI32)instData.SIMM16;
|
||||
gpuDynInst->wavefront()->setStatus(Wavefront::S_STALLED_SLEEP);
|
||||
// sleep duration is specified in multiples of 64 cycles
|
||||
gpuDynInst->wavefront()->setSleepTime(64 * simm16);
|
||||
} // execute
|
||||
// --- Inst_SOPP__S_SETPRIO class methods ---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user