Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/continuous_integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ jobs:
git config --global --add safe.directory '*'
apt-get update
apt-get install -y build-essential cmake g++-11 g++-12 python3-pip libgtest-dev libgmock-dev
pip3 install --user pytest
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 10 --slave /usr/bin/g++ g++ /usr/bin/g++-11 --slave /usr/bin/gcov gcov /usr/bin/gcov-11
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 20 --slave /usr/bin/g++ g++ /usr/bin/g++-12 --slave /usr/bin/gcov gcov /usr/bin/gcov-12

Expand Down
6 changes: 6 additions & 0 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,15 @@ install(FILES ${TEST_DIR}/run_install.sh RENAME run_tests.sh

#add_subdirectory(parser)

# legacy tests
add_test(NAME legacy-tests COMMAND "${TEST_BINARY_DIR}/run.sh")

if(AQLPROFILE_BUILD_TESTS)
add_subdirectory(integration)
enable_testing()
endif()

if(AQLPROFILE_BUILD_TESTS)
add_subdirectory(pm4-packets-regression-tests)
enable_testing()
endif()
78 changes: 78 additions & 0 deletions test/pm4-packets-regression-tests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
cmake_minimum_required(VERSION 3.10)
project(builder_dump CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -w -g -DDEBUG_TRACE")

# Set paths (adjust these as needed or pass as -DAQLPROFILE_ROOT=... etc.)
set(AQLPROFILE_ROOT ${PROJECT_SOURCE_DIR}/../..)
set(ROCM_PATH /opt/rocm)

include_directories(
${AQLPROFILE_ROOT}/src
${AQLPROFILE_ROOT}
${AQLPROFILE_ROOT}/gfxip/gfx9
${AQLPROFILE_ROOT}/gfxip
${ROCM_PATH}/include
)

set(FACTORY_SRC_FILES
${AQLPROFILE_ROOT}/src/core/pm4_factory.cpp
${AQLPROFILE_ROOT}/src/core/gfx9_factory.cpp
${AQLPROFILE_ROOT}/src/core/gfx908_factory.cpp
${AQLPROFILE_ROOT}/src/core/gfx90a_factory.cpp
${AQLPROFILE_ROOT}/src/core/gfx940_factory.cpp
${AQLPROFILE_ROOT}/src/core/gfx10_factory.cpp
${AQLPROFILE_ROOT}/src/core/gfx11_factory.cpp
${AQLPROFILE_ROOT}/src/core/gfx12_factory.cpp
)

set(IP_DISCOVERY_SRC_FILES
${AQLPROFILE_ROOT}/src/core/vega20_reg_init.cpp
${AQLPROFILE_ROOT}/src/core/navi_reg_init.cpp
${AQLPROFILE_ROOT}/src/core/parse_ip_discovery.cpp
${AQLPROFILE_ROOT}/src/core/ip_offset_table_init.cpp
)

add_executable(builder_dump
${AQLPROFILE_ROOT}/src/util/hsa_rsrc_factory.cpp
generate_dump/builder_dump.cpp
${FACTORY_SRC_FILES}
${IP_DISCOVERY_SRC_FILES}
)

target_link_libraries(builder_dump
${ROCM_PATH}/lib/libhsa-runtime64.so
)


find_program(PYTHON3_EXECUTABLE python3)
find_program(PYTEST_EXECUTABLE pytest)

set(CPP_EXECUTABLE builder_dump)

if(PYTHON3_EXECUTABLE AND PYTEST_EXECUTABLE)
add_test(
NAME pm4-packets-regression
COMMAND bash -c "${PYTHON3_EXECUTABLE} -u run_regression_tests.py"
)
set_tests_properties(pm4-packets-regression PROPERTIES
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
TIMEOUT 30
LABELS "regression-tests"
)
endif()


file(MAKE_DIRECTORY ${TEST_BINARY_DIR}/pm4-packets-regression-tests)

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test_packets.py
${TEST_BINARY_DIR}/pm4-packets-regression-tests/test_packets.py COPYONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/run_regression_tests.py
${TEST_BINARY_DIR}/pm4-packets-regression-tests/run_regression_tests.py COPYONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/conftest.py
${TEST_BINARY_DIR}/pm4-packets-regression-tests/conftest.py COPYONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/pytest.ini
${TEST_BINARY_DIR}/pm4-packets-regression-tests/pytest.ini COPYONLY)
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/baselines
DESTINATION ${TEST_BINARY_DIR}/pm4-packets-regression-tests)

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
--------------------SPM DEBUG_TRACE for SPM_CPC_dump.txt--------------------
'BuildWriteUConfigRegPacket' size(3) : c0017900 00000200 e0000000
'BuildBarrierCommand' size(2) : c0004600 00000407
'BuildWriteUConfigRegPacket' size(3) : c0017900 00001808 00000000
'BuildWriteUConfigRegPacket' size(3) : c0017900 00001c80 02710000
'BuildWriteUConfigRegPacket' size(3) : c0017900 00001c81 00000000
'BuildWriteUConfigRegPacket' size(3) : c0017900 00001c82 00000000
'BuildWriteUConfigRegPacket' size(3) : c0017900 00001c83 00000000
'BuildWriteUConfigRegPacket' size(3) : c0017900 0000e982 0000000f
'BuildWriteUConfigRegPacket' size(3) : c0017900 00000200 00000000
Segmentation fault (core dumped)
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
--------------------SQTT DEBUG_TRACE--------------------
'BuildWriteUConfigRegPacket' size(3) : c0017900 00000200 e0000000
'BuildWritePConfigRegPacket' size(6) : c0044000 00000005 00000000 00000000 0000d9f4 00000000
'BuildWriteUConfigRegPacket' size(3) : c0017900 00000200 40000000
'BuildWriteUConfigRegPacket' size(3) : c0017900 000019e9 00000000
'BuildWriteUConfigRegPacket' size(3) : c0017900 000019e8 00000000
'BuildWriteUConfigRegPacket' size(3) : c0017900 000019ed 00030003
'BuildWriteUConfigRegPacket' size(3) : c0017900 000019ee 0c080683
'BuildWriteUConfigRegPacket' size(3) : c0017900 000019ec a0423941
'BuildWriteUConfigRegPacket' size(3) : c0017900 00000200 40010000
'BuildWriteUConfigRegPacket' size(3) : c0017900 000019e9 00000100
'BuildWriteUConfigRegPacket' size(3) : c0017900 000019e8 00000000
'BuildWriteUConfigRegPacket' size(3) : c0017900 000019ed 00030003
'BuildWriteUConfigRegPacket' size(3) : c0017900 000019ee 0f0007ff
'BuildWriteUConfigRegPacket' size(3) : c0017900 000019ec a0423941
'BuildWriteUConfigRegPacket' size(3) : c0017900 00000200 40020000
'BuildWriteUConfigRegPacket' size(3) : c0017900 000019e9 00000100
'BuildWriteUConfigRegPacket' size(3) : c0017900 000019e8 00000001
'BuildWriteUConfigRegPacket' size(3) : c0017900 000019ed 00030003
'BuildWriteUConfigRegPacket' size(3) : c0017900 000019ee 0f0007ff
'BuildWriteUConfigRegPacket' size(3) : c0017900 000019ec a0423941
'BuildWriteUConfigRegPacket' size(3) : c0017900 00000200 40000000
'BuildWriteShRegPacket' size(3) : c0017600 0000021e 00000001
'BuildWriteUConfigRegPacket' size(3) : c0017900 00000200 e0000000
'BuildBarrierCommand' size(2) : c0004600 00000407
'BuildWriteUConfigRegPacket' size(3) : c0017900 00000342 434f5200
'BuildWriteUConfigRegPacket' size(3) : c0017900 00000342 00080201
'BuildWriteUConfigRegPacket' size(3) : c0017900 00000200 e0000000
'BuildBarrierCommand' size(2) : c0004600 00000407
'BuildWriteUConfigRegPacket' size(3) : c0017900 00000200 e0000000
'BuildWriteShRegPacket' size(3) : c0017600 0000021e 00000000
'BuildWaitRegMemCommand' size(7) : c0053c00 00000003 0000d9f4 00000000 00000000 000003fc 00000010
'BuildWriteUConfigRegPacket' size(3) : c0017900 000019ec a0423940
'BuildWaitRegMemCommand' size(7) : c0053c00 00000003 0000d9f4 00000000 00000000 02000000 00000010
'BuildWriteUConfigRegPacket' size(3) : c0017900 00000200 40000000
'BuildCopyRegDataPacket' size(6) : c0044000 00100200 0000d9f4 00000000 00000000 00000000
'BuildCopyRegDataPacket' size(6) : c0044000 00100200 0000d9fa 00000000 00000004 00000000
'BuildCopyRegDataPacket' size(6) : c0044000 00100200 0000d9ef 00000000 00000008 00000000
'BuildWriteUConfigRegPacket' size(3) : c0017900 00000200 40010000
'BuildCopyRegDataPacket' size(6) : c0044000 00100200 0000d9f4 00000000 00000010 00000000
'BuildCopyRegDataPacket' size(6) : c0044000 00100200 0000d9fa 00000000 00000014 00000000
'BuildCopyRegDataPacket' size(6) : c0044000 00100200 0000d9ef 00000000 00000018 00000000
'BuildWriteUConfigRegPacket' size(3) : c0017900 00000200 40020000
'BuildCopyRegDataPacket' size(6) : c0044000 00100200 0000d9f4 00000000 00000020 00000000
'BuildCopyRegDataPacket' size(6) : c0044000 00100200 0000d9fa 00000000 00000024 00000000
'BuildCopyRegDataPacket' size(6) : c0044000 00100200 0000d9ef 00000000 00000028 00000000
'BuildWriteUConfigRegPacket' size(3) : c0017900 00000200 e0000000
'BuildCacheFlushPacket' size(8) : c0065800 00000000 00000000 00000000 00000000 00000000 00000010 00018000
'BuildBarrierCommand' size(2) : c0004600 00000407
----------------------------------------------------------------------------------------------------

53 changes: 53 additions & 0 deletions test/pm4-packets-regression-tests/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import sys
import pytest


def pytest_addoption(parser):
parser.addoption("--gfx-name", action="store", default=None, help="GFX architecture name to filter tests")


@pytest.fixture(scope="session")
def gfx_name(pytestconfig):
gfx_name = pytestconfig.getoption("gfx_name")
if gfx_name is None:
raise pytest.UsageError("--gfx-name is required to run these tests")
return gfx_name


def pytest_generate_tests(metafunc):
# If any of the dump file parameters are present, require --gfx-name
needs_gfx = (
"pmc_dump_file_name" in metafunc.fixturenames or
"sqtt_dump_file_name" in metafunc.fixturenames or
"spm_dump_file_name" in metafunc.fixturenames
)
if needs_gfx:
gfx_name = metafunc.config.getoption("gfx_name")
if gfx_name is None:
raise pytest.UsageError("--gfx-name is required to run these tests")

if "pmc_dump_file_name" in metafunc.fixturenames:
from test_packets import pmc_dump_file_names
file_names = pmc_dump_file_names(gfx_name)
if not file_names:
metafunc.parametrize("pmc_dump_file_name", ["__NO_PMC_FILES__"])
else:
metafunc.parametrize("pmc_dump_file_name", file_names)

if "sqtt_dump_file_name" in metafunc.fixturenames:
from test_packets import sqtt_dump_file_names
file_names = sqtt_dump_file_names(gfx_name)
if not file_names:
metafunc.parametrize("sqtt_dump_file_name", ["__NO_SQTT_FILES__"])
else:
metafunc.parametrize("sqtt_dump_file_name", file_names)

if "spm_dump_file_name" in metafunc.fixturenames:
from test_packets import spm_dump_file_names
file_names = spm_dump_file_names(gfx_name)
if not file_names:
metafunc.parametrize("spm_dump_file_name", ["__NO_SPM_FILES__"])
else:
metafunc.parametrize("spm_dump_file_name", file_names)


Loading