From 81058189afc08007334978d9b76e5a2911bb13f6 Mon Sep 17 00:00:00 2001 From: Michael Boyer Date: Fri, 25 Jun 2021 18:34:47 -0500 Subject: [PATCH] arch-vega,arch-gcn3: Implement S_MEMTIME instruction Change-Id: I3e286eb6ff8af4097ad03d4066be79f73d938cea Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/53603 Maintainer: Matt Sinclair Reviewed-by: Matt Sinclair Tested-by: kokoro --- src/arch/amdgpu/gcn3/insts/instructions.cc | 6 +++++- src/arch/amdgpu/vega/insts/instructions.cc | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/arch/amdgpu/gcn3/insts/instructions.cc b/src/arch/amdgpu/gcn3/insts/instructions.cc index 56a541c52f..8c51af5187 100644 --- a/src/arch/amdgpu/gcn3/insts/instructions.cc +++ b/src/arch/amdgpu/gcn3/insts/instructions.cc @@ -5316,6 +5316,8 @@ namespace Gcn3ISA Inst_SMEM__S_MEMTIME::Inst_SMEM__S_MEMTIME(InFmt_SMEM *iFmt) : Inst_SMEM(iFmt, "s_memtime") { + // s_memtime does not issue a memory request + setFlag(ALU); } // Inst_SMEM__S_MEMTIME Inst_SMEM__S_MEMTIME::~Inst_SMEM__S_MEMTIME() @@ -5326,7 +5328,9 @@ namespace Gcn3ISA void Inst_SMEM__S_MEMTIME::execute(GPUDynInstPtr gpuDynInst) { - panicUnimplemented(); + ScalarOperandU64 sdst(gpuDynInst, instData.SDATA); + sdst = (ScalarRegU64)gpuDynInst->computeUnit()->curCycle(); + sdst.write(); } Inst_SMEM__S_MEMREALTIME::Inst_SMEM__S_MEMREALTIME(InFmt_SMEM *iFmt) diff --git a/src/arch/amdgpu/vega/insts/instructions.cc b/src/arch/amdgpu/vega/insts/instructions.cc index f17e8b79fe..877bb0960a 100644 --- a/src/arch/amdgpu/vega/insts/instructions.cc +++ b/src/arch/amdgpu/vega/insts/instructions.cc @@ -5920,6 +5920,8 @@ namespace VegaISA Inst_SMEM__S_MEMTIME::Inst_SMEM__S_MEMTIME(InFmt_SMEM *iFmt) : Inst_SMEM(iFmt, "s_memtime") { + // s_memtime does not issue a memory request + setFlag(ALU); } // Inst_SMEM__S_MEMTIME Inst_SMEM__S_MEMTIME::~Inst_SMEM__S_MEMTIME() @@ -5931,7 +5933,9 @@ namespace VegaISA void Inst_SMEM__S_MEMTIME::execute(GPUDynInstPtr gpuDynInst) { - panicUnimplemented(); + ScalarOperandU64 sdst(gpuDynInst, instData.SDATA); + sdst = (ScalarRegU64)gpuDynInst->computeUnit()->curCycle(); + sdst.write(); } // execute // --- Inst_SMEM__S_MEMREALTIME class methods ---