diff --git a/rocclr/runtime/device/device.cpp b/rocclr/runtime/device/device.cpp index ade4bb3358..9fc3b37191 100644 --- a/rocclr/runtime/device/device.cpp +++ b/rocclr/runtime/device/device.cpp @@ -1052,7 +1052,8 @@ Program::initClBinary(char* binaryIn, size_t size) aclBinaryOptions binOpts = {0}; binOpts.struct_size = sizeof(binOpts); binOpts.elfclass - = (info().arch_id == aclX64 || info().arch_id == aclAMDIL64) + = (info().arch_id == aclX64 || info().arch_id == aclAMDIL64 || + info().arch_id == aclHSAIL64) ? ELFCLASS64 : ELFCLASS32; binOpts.bitness = ELFDATA2LSB; binOpts.alloc = &::malloc; diff --git a/rocclr/runtime/device/gpu/gpuprogram.cpp b/rocclr/runtime/device/gpu/gpuprogram.cpp index c477183204..b788cb76a4 100644 --- a/rocclr/runtime/device/gpu/gpuprogram.cpp +++ b/rocclr/runtime/device/gpu/gpuprogram.cpp @@ -2298,5 +2298,20 @@ HSAILProgram::fillResListWithKernels( } } +const aclTargetInfo & +HSAILProgram::info(const char * str) { + acl_error err; + std::string arch = GPU_TARGET_INFO_ARCH; + if (dev().settings().use64BitPtr_) { + arch += "64"; + } + info_ = aclGetTargetInfo(arch.c_str(), ( str && str[0] == '\0' ? + dev().hwInfo()->targetName_ : str ), &err); + if (err != ACL_SUCCESS) { + LogWarning("aclGetTargetInfo failed"); + } + return info_; +} + } // namespace gpu diff --git a/rocclr/runtime/device/gpu/gpuprogram.hpp b/rocclr/runtime/device/gpu/gpuprogram.hpp index 2cc57f7ea3..8945c5383f 100644 --- a/rocclr/runtime/device/gpu/gpuprogram.hpp +++ b/rocclr/runtime/device/gpu/gpuprogram.hpp @@ -460,9 +460,7 @@ protected: //! Release the Binary virtual void releaseClBinary(); - virtual const aclTargetInfo & info(const char * str = "") { - return info_; - } + virtual const aclTargetInfo & info(const char * str = ""); virtual bool isElf(const char* bin) const { return amd::isElfMagic(bin);