From c1c46d9c9702446cfa07aaa21e1d668ebd83b5b0 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 --- tests/kfdtest/src/KFDGWSTest.cpp | 38 ++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/tests/kfdtest/src/KFDGWSTest.cpp b/tests/kfdtest/src/KFDGWSTest.cpp index 111e5e186d..12ed9a16cf 100644 --- a/tests/kfdtest/src/KFDGWSTest.cpp +++ b/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);