From 68b0743d3daf2c82c67f7a7b8d14e459e5e9b9cb Mon Sep 17 00:00:00 2001 From: Sean Keely Date: Tue, 27 Oct 2020 16:17:08 -0500 Subject: [PATCH] ROCm 3.9.0 updates --- src/CMakeLists.txt | 6 ++-- src/core/inc/amd_gpu_agent.h | 3 +- src/core/runtime/amd_gpu_agent.cpp | 11 +++++-- src/core/runtime/hsa.cpp | 4 +++ src/core/runtime/isa.cpp | 5 +++- src/core/util/flag.h | 7 +++++ src/image/blit_kernel.cpp | 8 ++++++ src/image/blit_src/CMakeLists.txt | 2 +- src/image/device_info.cpp | 1 + src/image/hsa_ext_image.cpp | 46 ++++++++++++++++++++++++++++++ src/inc/amd_hsa_elf.h | 2 ++ src/libamdhsacode/amd_hsa_code.cpp | 6 ++++ src/loader/executable.cpp | 2 +- src/loader/loaders.cpp | 6 ++++ src/loader/loaders.hpp | 2 +- 15 files changed, 101 insertions(+), 10 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9de7842a7..373c2e202 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -393,9 +393,9 @@ set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE 1) set (CPACK_COMPONENTS_ALL binary dev) set ( CPACK_PACKAGE_NAME "hsa-rocr-dev" ) -set ( CPACK_PACKAGE_VENDOR "AMD" ) +set ( CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc." ) set ( CPACK_PACKAGE_VERSION ${PACKAGE_VERSION_STRING} ) -set ( CPACK_PACKAGE_CONTACT "Advanced Micro Devices Inc." ) +set ( CPACK_PACKAGE_CONTACT "Advanced Micro Devices, Inc." ) set ( CPACK_PACKAGE_DESCRIPTION_SUMMARY "AMD Heterogeneous System Architecture HSA - Linux HSA Runtime for Boltzmann (ROCm) platforms" ) set ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md" ) @@ -404,6 +404,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/post_install DEBIAN/postinst @ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/pre_remove DEBIAN/prerm @ONLY) # Debian package specific variables +set ( CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT" ) set ( CPACK_DEBIAN_PACKAGE_DEPENDS "hsakmt-roct" ) set ( CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/RadeonOpenCompute/ROCR-Runtime" ) set ( CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "DEBIAN/postinst;DEBIAN/prerm" ) @@ -415,6 +416,7 @@ set ( CPACK_DEBIAN_PACKAGE_REPLACES "hsa-ext-rocr-dev" ) set ( CPACK_DEBIAN_PACKAGE_CONFLICTS "hsa-ext-rocr-dev" ) ## RPM package specific variables +set ( CPACK_RPM_FILE_NAME "RPM-DEFAULT" ) set ( CPACK_RPM_PACKAGE_DEPENDS "hsakmt-roct" ) # Declare that this package will replace functionality provided by hsa-ext-rocr-dev package diff --git a/src/core/inc/amd_gpu_agent.h b/src/core/inc/amd_gpu_agent.h index 91c1119c9..b86f706d7 100644 --- a/src/core/inc/amd_gpu_agent.h +++ b/src/core/inc/amd_gpu_agent.h @@ -502,7 +502,8 @@ class GpuAgent : public GpuAgentInt { lazy_ptr& GetPcieBlit(const core::Agent& dst_agent, const core::Agent& src_agent); // Bind the Blit object that will drive the copy operation - lazy_ptr& GetBlitObject(const core::Agent& dst_agent, const core::Agent& src_agent); + lazy_ptr& GetBlitObject(const core::Agent& dst_agent, const core::Agent& src_agent, + const size_t size); // @brief Alternative aperture base address. Only on KV. uintptr_t ape1_base_; diff --git a/src/core/runtime/amd_gpu_agent.cpp b/src/core/runtime/amd_gpu_agent.cpp index 1cb61fc7f..468d1142d 100644 --- a/src/core/runtime/amd_gpu_agent.cpp +++ b/src/core/runtime/amd_gpu_agent.cpp @@ -645,7 +645,7 @@ hsa_status_t GpuAgent::DmaCopy(void* dst, core::Agent& dst_agent, std::vector& dep_signals, core::Signal& out_signal) { // Bind the Blit object that will drive this copy operation - lazy_ptr& blit = GetBlitObject(dst_agent, src_agent); + lazy_ptr& blit = GetBlitObject(dst_agent, src_agent, size); if (profiling_enabled()) { // Track the agent so we could translate the resulting timestamp to system @@ -1188,7 +1188,7 @@ uint64_t GpuAgent::TranslateTime(uint64_t tick) { uint64_t system_tick = 0; double ratio = double(t1_.SystemClockCounter - t0_.SystemClockCounter) / double(t1_.GPUClockCounter - t0_.GPUClockCounter); - system_tick = uint64_t(ratio * double(int64_t(tick - t1_.GPUClockCounter))) + t1_.SystemClockCounter; + system_tick = uint64_t(int64_t(ratio * double(int64_t(tick - t1_.GPUClockCounter)))) + t1_.SystemClockCounter; // tick predates HSA startup - extrapolate with fixed clock ratio if (tick < t0_.GPUClockCounter) { @@ -1354,7 +1354,7 @@ lazy_ptr& GpuAgent::GetPcieBlit(const core::Agent& dst_agent, } lazy_ptr& GpuAgent::GetBlitObject(const core::Agent& dst_agent, - const core::Agent& src_agent) { + const core::Agent& src_agent, const size_t size) { // At this point it is guaranteed that one of // the two devices is a GPU, potentially both assert(((src_agent.device_type() == core::Agent::kAmdGpuDevice) || @@ -1363,6 +1363,11 @@ lazy_ptr& GpuAgent::GetBlitObject(const core::Agent& dst_agent, // Determine if Src and Dst devices are same if ((src_agent.public_handle().handle) == (dst_agent.public_handle().handle)) { + // If the copy is very small then cache flush overheads can dominate. + // Choose a (potentially) SDMA enabled engine to avoid cache flushing. + if (size < core::Runtime::runtime_singleton_->flag().force_sdma_size()) { + return blits_[BlitDevToHost]; + } return blits_[BlitDevToDev]; } diff --git a/src/core/runtime/hsa.cpp b/src/core/runtime/hsa.cpp index 705613a69..c7cccd797 100644 --- a/src/core/runtime/hsa.cpp +++ b/src/core/runtime/hsa.cpp @@ -1888,6 +1888,10 @@ static std::string ConvertOldTargetNameToNew( NewName = "amdgcn-amd-amdhsa--gfx1011"; else if (OldName == "AMD:AMDGPU:10:1:2") NewName = "amdgcn-amd-amdhsa--gfx1012"; + else if (OldName == "AMD:AMDGPU:10:3:0") + NewName = "amdgcn-amd-amdhsa--gfx1030"; + else if (OldName == "AMD:AMDGPU:10:3:1") + NewName = "amdgcn-amd-amdhsa--gfx1031"; else assert(false && "Unhandled target"); diff --git a/src/core/runtime/isa.cpp b/src/core/runtime/isa.cpp index 68a3fb208..ca23abb01 100755 --- a/src/core/runtime/isa.cpp +++ b/src/core/runtime/isa.cpp @@ -236,7 +236,10 @@ const IsaRegistry::IsaMap IsaRegistry::GetSupportedIsas() { ISAREG_ENTRY_GEN(10, 1, 1, true, false) ISAREG_ENTRY_GEN(10, 1, 2, false, false) ISAREG_ENTRY_GEN(10, 1, 2, true, false) - + ISAREG_ENTRY_GEN(10, 3, 0, false, false) + ISAREG_ENTRY_GEN(10, 3, 0, true, false) + ISAREG_ENTRY_GEN(10, 3, 1, false, false) + ISAREG_ENTRY_GEN(10, 3, 1, true, false) return supported_isas; } diff --git a/src/core/util/flag.h b/src/core/util/flag.h index f43c6da32..f3b4141c9 100644 --- a/src/core/util/flag.h +++ b/src/core/util/flag.h @@ -121,6 +121,9 @@ class Flag { var = os::GetEnvVar("HSA_LOADER_ENABLE_MMAP_URI"); loader_enable_mmap_uri_ = (var == "1") ? true : false; + + var = os::GetEnvVar("HSA_FORCE_SDMA_SIZE"); + force_sdma_size_ = var.empty() ? 1024 * 1024 : atoi(var.c_str()); } bool check_flat_scratch() const { return check_flat_scratch_; } @@ -165,6 +168,8 @@ class Flag { bool loader_enable_mmap_uri() const { return loader_enable_mmap_uri_; } + size_t force_sdma_size() const { return force_sdma_size_; } + private: bool check_flat_scratch_; bool enable_vm_fault_message_; @@ -193,6 +198,8 @@ class Flag { std::string tools_lib_names_; + size_t force_sdma_size_; + DISALLOW_COPY_AND_ASSIGN(Flag); }; diff --git a/src/image/blit_kernel.cpp b/src/image/blit_kernel.cpp index c8ab67ac5..7b08a32ff 100644 --- a/src/image/blit_kernel.cpp +++ b/src/image/blit_kernel.cpp @@ -83,6 +83,8 @@ extern uint8_t ocl_blit_object_gfx908[]; extern uint8_t ocl_blit_object_gfx1010[]; extern uint8_t ocl_blit_object_gfx1011[]; extern uint8_t ocl_blit_object_gfx1012[]; +extern uint8_t ocl_blit_object_gfx1030[]; +extern uint8_t ocl_blit_object_gfx1031[]; // Arguments inserted by OCL compiler, all zero here. struct OCLHiddenArgs { @@ -1005,6 +1007,12 @@ hsa_status_t BlitKernel::GetPatchedBlitObject(const char* agent_name, case 1012: *blit_code_object = ocl_blit_object_gfx1012; break; + case 1030: + *blit_code_object = ocl_blit_object_gfx1030; + break; + case 1031: + *blit_code_object = ocl_blit_object_gfx1031; + break; default: return HSA_STATUS_ERROR_INVALID_ISA_NAME; } diff --git a/src/image/blit_src/CMakeLists.txt b/src/image/blit_src/CMakeLists.txt index c3e2838a0..623a7f1c4 100644 --- a/src/image/blit_src/CMakeLists.txt +++ b/src/image/blit_src/CMakeLists.txt @@ -75,7 +75,7 @@ set( XNACK_DEVS ${XNACK_DEVS} CACHE STRING "XNACK targets" FORCE ) # Determine the target devices if not specified if (NOT DEFINED TARGET_DEVICES) - set (TARGET_DEVICES "gfx700;gfx701;gfx702;gfx801;gfx802;gfx803;gfx900;gfx902;gfx904;gfx906;gfx908;gfx1010;gfx1011;gfx1012") + set (TARGET_DEVICES "gfx700;gfx701;gfx702;gfx801;gfx802;gfx803;gfx900;gfx902;gfx904;gfx906;gfx908;gfx1010;gfx1011;gfx1012;gfx1030;gfx1031") endif() set( TARGET_DEVICES ${TARGET_DEVICES} CACHE STRING "Build targets" FORCE ) diff --git a/src/image/device_info.cpp b/src/image/device_info.cpp index 355d51f90..fec0a5849 100755 --- a/src/image/device_info.cpp +++ b/src/image/device_info.cpp @@ -181,6 +181,7 @@ uint32_t DevIDToAddrLibFamily(uint32_t dev_id) { switch (minor_ver) { case 0: case 1: // Navi + case 3: switch (step) { case 0: case 1: diff --git a/src/image/hsa_ext_image.cpp b/src/image/hsa_ext_image.cpp index 7fb43a106..c2d23d19c 100644 --- a/src/image/hsa_ext_image.cpp +++ b/src/image/hsa_ext_image.cpp @@ -42,8 +42,24 @@ #include "image_runtime.h" #include "image/inc/hsa_ext_image_impl.h" +#include "core/inc/exceptions.h" namespace rocr { + +namespace AMD { +hsa_status_t handleException(); + +template static __forceinline T handleExceptionT() { + handleException(); + abort(); + return T(); +} +} // namespace amd + +#define TRY try { +#define CATCH } catch(...) { return AMD::handleException(); } +#define CATCHRET(RETURN_TYPE) } catch(...) { return AMD::handleExceptionT(); } + namespace image { //---------------------------------------------------------------------------// @@ -88,6 +104,7 @@ static void enforceDefaultPitch(hsa_agent_t agent, hsa_status_t hsa_amd_image_get_info_max_dim(hsa_agent_t agent, hsa_agent_info_t attribute, void* value) { + TRY; if (agent.handle == 0) { return HSA_STATUS_ERROR_INVALID_AGENT; } @@ -97,12 +114,14 @@ hsa_status_t hsa_amd_image_get_info_max_dim(hsa_agent_t agent, hsa_agent_info_t } return ImageRuntime::instance()->GetImageInfoMaxDimension(agent, attribute, value); + CATCH; } hsa_status_t hsa_ext_image_get_capability(hsa_agent_t agent, hsa_ext_image_geometry_t image_geometry, const hsa_ext_image_format_t* image_format, uint32_t* capability_mask) { + TRY; if (agent.handle == 0) { return HSA_STATUS_ERROR_INVALID_AGENT; } @@ -115,12 +134,14 @@ hsa_status_t hsa_ext_image_get_capability(hsa_agent_t agent, return ImageRuntime::instance()->GetImageCapability(agent, *image_format, image_geometry, *capability_mask); + CATCH; } hsa_status_t hsa_ext_image_data_get_info(hsa_agent_t agent, const hsa_ext_image_descriptor_t* image_descriptor, hsa_access_permission_t access_permission, hsa_ext_image_data_info_t* image_data_info) { + TRY; if (agent.handle == 0) { return HSA_STATUS_ERROR_INVALID_AGENT; } @@ -133,12 +154,14 @@ hsa_status_t hsa_ext_image_data_get_info(hsa_agent_t agent, return ImageRuntime::instance()->GetImageSizeAndAlignment( agent, *image_descriptor, HSA_EXT_IMAGE_DATA_LAYOUT_OPAQUE, 0, 0, *image_data_info); + CATCH; } hsa_status_t hsa_ext_image_create(hsa_agent_t agent, const hsa_ext_image_descriptor_t* image_descriptor, const void* image_data, hsa_access_permission_t access_permission, hsa_ext_image_t* image) { + TRY; if (agent.handle == 0) { return HSA_STATUS_ERROR_INVALID_AGENT; } @@ -150,19 +173,23 @@ hsa_status_t hsa_ext_image_create(hsa_agent_t agent, return ImageRuntime::instance()->CreateImageHandle( agent, *image_descriptor, image_data, access_permission, HSA_EXT_IMAGE_DATA_LAYOUT_OPAQUE, 0, 0, *image); + CATCH; } hsa_status_t hsa_ext_image_destroy(hsa_agent_t agent, hsa_ext_image_t image) { + TRY; if (agent.handle == 0) { return HSA_STATUS_ERROR_INVALID_AGENT; } return ImageRuntime::instance()->DestroyImageHandle(image); + CATCH; } hsa_status_t hsa_ext_image_copy(hsa_agent_t agent, hsa_ext_image_t src_image, const hsa_dim3_t* src_offset, hsa_ext_image_t dst_image, const hsa_dim3_t* dst_offset, const hsa_dim3_t* range) { + TRY; if (agent.handle == 0) { return HSA_STATUS_ERROR_INVALID_AGENT; } @@ -174,11 +201,13 @@ hsa_status_t hsa_ext_image_copy(hsa_agent_t agent, hsa_ext_image_t src_image, return ImageRuntime::instance()->CopyImage(src_image, dst_image, *src_offset, *dst_offset, *range); + CATCH; } hsa_status_t hsa_ext_image_import(hsa_agent_t agent, const void* src_memory, size_t src_row_pitch, size_t src_slice_pitch, hsa_ext_image_t dst_image, const hsa_ext_image_region_t* image_region) { + TRY; if (agent.handle == 0) { return HSA_STATUS_ERROR_INVALID_AGENT; } @@ -189,11 +218,13 @@ hsa_status_t hsa_ext_image_import(hsa_agent_t agent, const void* src_memory, siz return ImageRuntime::instance()->CopyBufferToImage(src_memory, src_row_pitch, src_slice_pitch, dst_image, *image_region); + CATCH; } hsa_status_t hsa_ext_image_export(hsa_agent_t agent, hsa_ext_image_t src_image, void* dst_memory, size_t dst_row_pitch, size_t dst_slice_pitch, const hsa_ext_image_region_t* image_region) { + TRY; if (agent.handle == 0) { return HSA_STATUS_ERROR_INVALID_AGENT; } @@ -204,10 +235,12 @@ hsa_status_t hsa_ext_image_export(hsa_agent_t agent, hsa_ext_image_t src_image, return ImageRuntime::instance()->CopyImageToBuffer(src_image, dst_memory, dst_row_pitch, dst_slice_pitch, *image_region); + CATCH; } hsa_status_t hsa_ext_image_clear(hsa_agent_t agent, hsa_ext_image_t image, const void* data, const hsa_ext_image_region_t* image_region) { + TRY; if (agent.handle == 0) { return HSA_STATUS_ERROR_INVALID_AGENT; } @@ -217,11 +250,13 @@ hsa_status_t hsa_ext_image_clear(hsa_agent_t agent, hsa_ext_image_t image, const } return ImageRuntime::instance()->FillImage(image, data, *image_region); + CATCH; }; hsa_status_t hsa_ext_sampler_create(hsa_agent_t agent, const hsa_ext_sampler_descriptor_t* sampler_descriptor, hsa_ext_sampler_t* sampler) { + TRY; if (agent.handle == 0) { return HSA_STATUS_ERROR_INVALID_AGENT; } @@ -231,14 +266,17 @@ hsa_status_t hsa_ext_sampler_create(hsa_agent_t agent, } return ImageRuntime::instance()->CreateSamplerHandle(agent, *sampler_descriptor, *sampler); + CATCH; } hsa_status_t hsa_ext_sampler_destroy(hsa_agent_t agent, hsa_ext_sampler_t sampler) { + TRY; if (agent.handle == 0) { return HSA_STATUS_ERROR_INVALID_AGENT; } return ImageRuntime::instance()->DestroySamplerHandle(sampler); + CATCH; } hsa_status_t hsa_ext_image_get_capability_with_layout(hsa_agent_t agent, @@ -246,6 +284,7 @@ hsa_status_t hsa_ext_image_get_capability_with_layout(hsa_agent_t agent, const hsa_ext_image_format_t* image_format, hsa_ext_image_data_layout_t image_data_layout, uint32_t* capability_mask) { + TRY; if (agent.handle == 0) { return HSA_STATUS_ERROR_INVALID_AGENT; } @@ -259,6 +298,7 @@ hsa_status_t hsa_ext_image_get_capability_with_layout(hsa_agent_t agent, return ImageRuntime::instance()->GetImageCapability(agent, *image_format, image_geometry, *capability_mask); + CATCH; } hsa_status_t hsa_ext_image_data_get_info_with_layout( @@ -266,6 +306,7 @@ hsa_status_t hsa_ext_image_data_get_info_with_layout( hsa_access_permission_t access_permission, hsa_ext_image_data_layout_t image_data_layout, size_t image_data_row_pitch, size_t image_data_slice_pitch, hsa_ext_image_data_info_t* image_data_info) { + TRY; if (agent.handle == 0) { return HSA_STATUS_ERROR_INVALID_AGENT; } @@ -282,12 +323,14 @@ hsa_status_t hsa_ext_image_data_get_info_with_layout( return ImageRuntime::instance()->GetImageSizeAndAlignment( agent, *image_descriptor, image_data_layout, image_data_row_pitch, image_data_slice_pitch, *image_data_info); + CATCH; } hsa_status_t hsa_ext_image_create_with_layout( hsa_agent_t agent, const hsa_ext_image_descriptor_t* image_descriptor, const void* image_data, hsa_access_permission_t access_permission, hsa_ext_image_data_layout_t image_data_layout, size_t image_data_row_pitch, size_t image_data_slice_pitch, hsa_ext_image_t* image) { + TRY; if (agent.handle == 0) { return HSA_STATUS_ERROR_INVALID_AGENT; } @@ -302,6 +345,7 @@ hsa_status_t hsa_ext_image_create_with_layout( return ImageRuntime::instance()->CreateImageHandle( agent, *image_descriptor, image_data, access_permission, image_data_layout, image_data_row_pitch, image_data_slice_pitch, *image); + CATCH; } hsa_status_t hsa_amd_image_create(hsa_agent_t agent, @@ -309,6 +353,7 @@ hsa_status_t hsa_amd_image_create(hsa_agent_t agent, const hsa_amd_image_descriptor_t* image_layout, const void* image_data, hsa_access_permission_t access_permission, hsa_ext_image_t* image) { + TRY; if (agent.handle == 0) { return HSA_STATUS_ERROR_INVALID_AGENT; } @@ -319,6 +364,7 @@ hsa_status_t hsa_amd_image_create(hsa_agent_t agent, return ImageRuntime::instance()->CreateImageHandleWithLayout( agent, *image_descriptor, image_layout, image_data, access_permission, *image); + CATCH; } void LoadImage(core::ImageExtTableInternal* image_api, diff --git a/src/inc/amd_hsa_elf.h b/src/inc/amd_hsa_elf.h index 40ef07cc4..377f771e3 100644 --- a/src/inc/amd_hsa_elf.h +++ b/src/inc/amd_hsa_elf.h @@ -71,6 +71,8 @@ #define EF_AMDGPU_MACH_AMDGCN_GFX1010_LC 0x033 #define EF_AMDGPU_MACH_AMDGCN_GFX1011_LC 0x034 #define EF_AMDGPU_MACH_AMDGCN_GFX1012_LC 0x035 +#define EF_AMDGPU_MACH_AMDGCN_GFX1030_LC 0x036 +#define EF_AMDGPU_MACH_AMDGCN_GFX1031_LC 0x037 #define EF_AMDGPU_XNACK_LC 0x100 #define EF_AMDGPU_SRAM_ECC_LC 0x200 diff --git a/src/libamdhsacode/amd_hsa_code.cpp b/src/libamdhsacode/amd_hsa_code.cpp index edf4e04ef..3a911ee59 100644 --- a/src/libamdhsacode/amd_hsa_code.cpp +++ b/src/libamdhsacode/amd_hsa_code.cpp @@ -586,6 +586,10 @@ namespace code { NewName = "amdgcn-amd-amdhsa--gfx1011"; else if (OldName == "AMD:AMDGPU:10:1:2") NewName = "amdgcn-amd-amdhsa--gfx1012"; + else if (OldName == "AMD:AMDGPU:10:3:0") + NewName = "amdgcn-amd-amdhsa--gfx1030"; + else if (OldName == "AMD:AMDGPU:10:3:1") + NewName = "amdgcn-amd-amdhsa--gfx1031"; else assert(false && "Unhandled target"); @@ -641,6 +645,8 @@ namespace code { case EF_AMDGPU_MACH_AMDGCN_GFX1010_LC: isaName += "gfx1010"; break; case EF_AMDGPU_MACH_AMDGCN_GFX1011_LC: isaName += "gfx1011"; break; case EF_AMDGPU_MACH_AMDGCN_GFX1012_LC: isaName += "gfx1012"; break; + case EF_AMDGPU_MACH_AMDGCN_GFX1030_LC: isaName += "gfx1030"; break; + case EF_AMDGPU_MACH_AMDGCN_GFX1031_LC: isaName += "gfx1031"; break; default: return false; } diff --git a/src/loader/executable.cpp b/src/loader/executable.cpp index 6ca46154b..0d6ce72eb 100644 --- a/src/loader/executable.cpp +++ b/src/loader/executable.cpp @@ -207,7 +207,7 @@ static void RemoveCodeObjectInfoFromDebugMap(link_map* map) { map->l_next->l_prev = map->l_prev; } - delete map->l_name; + free(map->l_name); memset(map, 0, sizeof(link_map)); } diff --git a/src/loader/loaders.cpp b/src/loader/loaders.cpp index 2c8dad0e1..4b3a884d3 100644 --- a/src/loader/loaders.cpp +++ b/src/loader/loaders.cpp @@ -96,6 +96,8 @@ namespace loader { gfx1010.handle = 1010; gfx1011.handle = 1011; gfx1012.handle = 1012; + gfx1030.handle = 1030; + gfx1031.handle = 1031; } hsa_isa_t OfflineLoaderContext::IsaFromName(const char *name) @@ -133,6 +135,10 @@ namespace loader { return gfx1011; } else if (sname == "AMD:AMDGPU:10:1:2") { return gfx1012; + } else if (sname == "AMD:AMDGPU:10:3:0") { + return gfx1030; + } else if (sname == "AMD:AMDGPU:10:3:1") { + return gfx1031; } assert(0); diff --git a/src/loader/loaders.hpp b/src/loader/loaders.hpp index 728d6d083..4f9a917d1 100644 --- a/src/loader/loaders.hpp +++ b/src/loader/loaders.hpp @@ -57,7 +57,7 @@ namespace loader { hsa_isa_t invalid; hsa_isa_t gfx700, gfx701, gfx800, gfx801, gfx802, gfx803, gfx804, gfx810; hsa_isa_t gfx900, gfx901, gfx902, gfx903, gfx908; - hsa_isa_t gfx1010, gfx1011, gfx1012; + hsa_isa_t gfx1010, gfx1011, gfx1012, gfx1030, gfx1031; std::ostream& out; typedef std::set PointerSet; PointerSet pointers;