# Node ID f14a633b3ac81f14c82ebedc4af60d9360a8069c # Parent 01a0e9fbaad4274aa1d11b7bf1919a52816f38dd diff --git a/src/arch/hsail/insts/decl.hh b/src/arch/hsail/insts/decl.hh --- a/src/arch/hsail/insts/decl.hh +++ b/src/arch/hsail/insts/decl.hh @@ -941,7 +941,11 @@ initiateAcc(GPUDynInstPtr gpuDynInst) { Wavefront *wave = gpuDynInst->wavefront(); - wave->computeUnit->injectGlobalMemFence(gpuDynInst); + Request* req = new Request(0, 0, 0, 0, + wave->computeUnit->masterId(), 0, + gpuDynInst->wfDynId, -1); + gpuDynInst->setRequestFlags(req, true); + wave->computeUnit->injectGlobalMemFence(gpuDynInst, false, req); } void @@ -963,6 +967,7 @@ gpuDynInst->kern_id = w->kern_id; gpuDynInst->cu_id = w->computeUnit->cu_id; + gpuDynInst->s_type = SEG_GLOBAL; gpuDynInst->memoryOrder = getGenericMemoryOrder(memFenceMemOrder); gpuDynInst->scope = diff --git a/src/gpu-compute/compute_unit.hh b/src/gpu-compute/compute_unit.hh --- a/src/gpu-compute/compute_unit.hh +++ b/src/gpu-compute/compute_unit.hh @@ -300,8 +300,7 @@ virtual void init(); void sendRequest(GPUDynInstPtr gpuDynInst, int index, PacketPtr pkt); void sendSyncRequest(GPUDynInstPtr gpuDynInst, int index, PacketPtr pkt); - void injectGlobalMemFence(GPUDynInstPtr gpuDynInst, - bool kernelLaunch=true, + void injectGlobalMemFence(GPUDynInstPtr gpuDynInst, bool kernelLaunch, RequestPtr req=nullptr); void handleMemPacket(PacketPtr pkt, int memport_index); bool processTimingPacket(PacketPtr pkt);