From 741261f10bb308cdc200c5dfd8eb68567349cf19 Mon Sep 17 00:00:00 2001 From: Sean Wilson Date: Tue, 27 Jun 2017 14:18:10 -0500 Subject: gpu-compute: Refactor some Event subclasses to lambdas Change-Id: Ic1332b8e8ba0afacbe591c80f4d06afbf5f04bd9 Signed-off-by: Sean Wilson Reviewed-on: https://gem5-review.googlesource.com/3922 Reviewed-by: Jason Lowe-Power Reviewed-by: Anthony Gutierrez Maintainer: Anthony Gutierrez --- src/gpu-compute/shader.cc | 38 +++++++++++++++----------------------- 1 file changed, 15 insertions(+), 23 deletions(-) (limited to 'src/gpu-compute/shader.cc') diff --git a/src/gpu-compute/shader.cc b/src/gpu-compute/shader.cc index 6d6154503..41671f85b 100644 --- a/src/gpu-compute/shader.cc +++ b/src/gpu-compute/shader.cc @@ -50,14 +50,17 @@ #include "mem/ruby/system/RubySystem.hh" #include "sim/sim_exit.hh" -Shader::Shader(const Params *p) : ClockedObject(p), - clock(p->clk_domain->clockPeriod()), cpuThread(nullptr), gpuTc(nullptr), - cpuPointer(p->cpu_pointer), tickEvent(this), timingSim(p->timing), - hsail_mode(SIMT), impl_kern_boundary_sync(p->impl_kern_boundary_sync), - separate_acquire_release(p->separate_acquire_release), coissue_return(1), - trace_vgpr_all(1), n_cu((p->CUs).size()), n_wf(p->n_wf), - globalMemSize(p->globalmem), nextSchedCu(0), sa_n(0), tick_cnt(0), - box_tick_cnt(0), start_tick_cnt(0) +Shader::Shader(const Params *p) + : ClockedObject(p), clock(p->clk_domain->clockPeriod()), + cpuThread(nullptr), gpuTc(nullptr), cpuPointer(p->cpu_pointer), + tickEvent([this]{ processTick(); }, "Shader tick", + false, Event::CPU_Tick_Pri), + timingSim(p->timing), hsail_mode(SIMT), + impl_kern_boundary_sync(p->impl_kern_boundary_sync), + separate_acquire_release(p->separate_acquire_release), coissue_return(1), + trace_vgpr_all(1), n_cu((p->CUs).size()), n_wf(p->n_wf), + globalMemSize(p->globalmem), nextSchedCu(0), sa_n(0), tick_cnt(0), + box_tick_cnt(0), start_tick_cnt(0) { cuList.resize(n_cu); @@ -317,27 +320,16 @@ Shader::ScheduleAdd(uint32_t *val,Tick when,int x) ++sa_n; } -Shader::TickEvent::TickEvent(Shader *_shader) - : Event(CPU_Tick_Pri), shader(_shader) -{ -} - void -Shader::TickEvent::process() +Shader::processTick() { - if (shader->busy()) { - shader->exec(); - shader->schedule(this, curTick() + shader->ticks(1)); + if (busy()) { + exec(); + schedule(tickEvent, curTick() + ticks(1)); } } -const char* -Shader::TickEvent::description() const -{ - return "Shader tick"; -} - void Shader::AccessMem(uint64_t address, void *ptr, uint32_t size, int cu_id, MemCmd cmd, bool suppress_func_errors) -- cgit v1.2.3