From 45f57ff2c235b9fd2f2f7ddf6fde434097b15f8f Mon Sep 17 00:00:00 2001 From: Kyle Roarty Date: Wed, 23 Sep 2020 22:25:02 -0500 Subject: [PATCH] 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 --- src/arch/gcn3/insts/instructions.cc | 2 ++ 1 file changed, 2 insertions(+) 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))); -- 2.30.2