From: Kyle Roarty Date: Thu, 24 Sep 2020 03:25:02 +0000 (-0500) Subject: gpu-compute: set exec_mask for permute,bpermute instructions X-Git-Tag: develop-gem5-snapshot~719 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=45f57ff2c235b9fd2f2f7ddf6fde434097b15f8f;p=gem5.git gpu-compute: set exec_mask for permute,bpermute instructions This change sets gpuDynInst->exec_mask for permute and bpermute instructions, fixing a bug where they would never write their data. permute and bpermute instructions are load instructions that write to a VGPR. Because of that, they use gpuDynInst->exec_mask when checking what lanes should write to the VGPR. gpuDynInst->exec_mask gets set to wf->execMask() as that is what other load instructions that write to VGPRs do. Change-Id: Ie443283488cbd2ab9c17fc255e7cc44418353419 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/35036 Reviewed-by: Matt Sinclair Reviewed-by: Anthony Gutierrez Maintainer: Matt Sinclair Maintainer: Anthony Gutierrez Tested-by: kokoro --- diff --git a/src/arch/gcn3/insts/instructions.cc b/src/arch/gcn3/insts/instructions.cc index 296dbadf1..b5011675e 100644 --- a/src/arch/gcn3/insts/instructions.cc +++ b/src/arch/gcn3/insts/instructions.cc @@ -32522,6 +32522,7 @@ namespace Gcn3ISA { Wavefront *wf = gpuDynInst->wavefront(); gpuDynInst->execUnitId = wf->execUnitId; + gpuDynInst->exec_mask = wf->execMask(); gpuDynInst->latency.init(gpuDynInst->computeUnit()); gpuDynInst->latency.set(gpuDynInst->computeUnit() ->cyclesToTicks(Cycles(24))); @@ -32593,6 +32594,7 @@ namespace Gcn3ISA { Wavefront *wf = gpuDynInst->wavefront(); gpuDynInst->execUnitId = wf->execUnitId; + gpuDynInst->exec_mask = wf->execMask(); gpuDynInst->latency.init(gpuDynInst->computeUnit()); gpuDynInst->latency.set(gpuDynInst->computeUnit() ->cyclesToTicks(Cycles(24)));