From cc17bcffee39476e86e56460bbe2ce8dc24f85a9 Mon Sep 17 00:00:00 2001 From: Joseph Greathouse Date: Tue, 13 Apr 2021 21:38:32 -0500 Subject: [PATCH] Update GWS tests for gfx1030 gfx10 GPUs such as gfx1030 need new assembly code to test the GWS. Removed scalar stores and added proper usage of DLC and VSCNT waits. Removed gfx9-specific assembler meta-values. Change-Id: I2bbdb77692ace2dba10997f721ba9decaa9be82a [ROCm/ROCR-Runtime commit: c1c46d9c9702446cfa07aaa21e1d668ebd83b5b0] --- .../tests/kfdtest/src/KFDGWSTest.cpp | 38 +++++++++++++++++-- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/projects/rocr-runtime/tests/kfdtest/src/KFDGWSTest.cpp b/projects/rocr-runtime/tests/kfdtest/src/KFDGWSTest.cpp index 111e5e186d..12ed9a16cf 100644 --- a/projects/rocr-runtime/tests/kfdtest/src/KFDGWSTest.cpp +++ b/projects/rocr-runtime/tests/kfdtest/src/KFDGWSTest.cpp @@ -27,11 +27,11 @@ #include "Dispatch.hpp" /* Shader to initialize gws counter to 1*/ -const char* gfx9_GwsInit = +const char* gfx9_10_GwsInit = "\ shader GwsInit\n\ -asic(GFX9)\n\ type(CS)\n\ +wave_size(32)\n\ s_mov_b32 m0, 0\n\ s_nop 0\n\ s_load_dword s16, s[0:1], 0x0 glc\n\ @@ -71,6 +71,30 @@ type(CS)\n\ end\n\ "; +const char* gfx10_AtomicIncrease = +"\ +shader AtomicIncrease\n\ +asic(GFX10)\n\ +type(CS)\n\ +wave_size(32)\n\ +/* Assume src address in s0, s1 */\n\ + s_mov_b32 m0, 0\n\ + s_mov_b32 exec_lo, 0x1\n\ + v_mov_b32 v0, s0\n\ + v_mov_b32 v1, s1\n\ + ds_gws_sema_p gds:1 offset0:0\n\ + s_waitcnt 0\n\ + flat_load_dword v2, v[0:1] glc:1 dlc:1\n\ + s_waitcnt 0\n\ + v_add_nc_u32 v2, v2, 1\n\ + flat_store_dword v[0:1], v2\n\ + s_waitcnt_vscnt null, 0\n\ + ds_gws_sema_v gds:1 offset0:0\n\ + s_waitcnt 0\n\ + s_endpgm\n\ + end\n\ +"; + void KFDGWSTest::SetUp() { ROUTINE_START @@ -138,14 +162,20 @@ TEST_F(KFDGWSTest, Semaphore) { EXPECT_EQ(0, firstGWS); m_pIsaGen = IsaGenerator::Create(m_FamilyId); - m_pIsaGen->CompileShader(gfx9_GwsInit, "GwsInit", isaBuffer); + m_pIsaGen->CompileShader(gfx9_10_GwsInit, "GwsInit", isaBuffer); Dispatch dispatch0(isaBuffer); buffer.Fill(numResources, 0, 4); dispatch0.SetArgs(buffer.As(), NULL); dispatch0.Submit(queue); dispatch0.Sync(); - m_pIsaGen->CompileShader(gfx9_AtomicIncrease, "AtomicIncrease", isaBuffer); + const char *pAtomicIncrease; + if (m_FamilyId <= FAMILY_AL) + pAtomicIncrease = gfx9_AtomicIncrease; + else + pAtomicIncrease = gfx10_AtomicIncrease; + + m_pIsaGen->CompileShader(pAtomicIncrease, "AtomicIncrease", isaBuffer); Dispatch dispatch(isaBuffer); dispatch.SetArgs(buffer.As(), NULL);