P4 to Git Change 1366205 by kzhuravl@kzhuravl-fiji-cl-on-lc on 2017/01/25 18:04:35

SWDEV-94644 - Make sure we are processing metadata note entry with supported n_type. Update build log and fail for not supported metadata n_type. Use constants defined in AMDGPUPTNote.h

	This change is needed for https://reviews.llvm.org/D29115

	This change is required for CL 1366203

	ReviewBoardURL: http://ocltc.amd.com/reviews/r/12223/
	Testing: lightning conformance tests locally

Affected files ...

... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprogram.cpp#31 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocprogram.cpp#54 edit


[ROCm/clr commit: 4ad12d089c]
This commit is contained in:
foreman
2017-01-25 18:12:20 -05:00
parent 4dba732b4a
commit e9d11c526f
2 changed files with 18 additions and 6 deletions
@@ -20,6 +20,7 @@
#include "hsa_ext_image.h"
#include "amd_hsa_loader.hpp"
#if defined(WITH_LIGHTNING_COMPILER)
#include "AMDGPUPTNote.h"
#include "AMDGPURuntimeMetadata.h"
#include "driver/AmdCompiler.h"
#include "libraries.amdgcn.inc"
@@ -1603,9 +1604,14 @@ LightningProgram::setKernels(
address name = (address) &note[1];
address desc = name + amd::alignUp(note->n_namesz, sizeof(int));
if (note->n_type == 7 /*NT_AMDGPU_HSA_RUNTIME_METADATA_1_0*/
&& note->n_namesz == sizeof "AMD"
&& !memcmp(name, "AMD", note->n_namesz)) {
if (note->n_type == AMDGPU::PT_NOTE::NT_AMDGPU_HSA_RUNTIME_METADATA_V_1) {
buildLog_ += "Error: object code with metadata v1 is not " \
"supported\n";
return false;
}
else if (note->n_type == AMDGPU::PT_NOTE::NT_AMDGPU_HSA_RUNTIME_METADATA
&& note->n_namesz == sizeof AMDGPU::PT_NOTE::NoteName
&& !memcmp(name, AMDGPU::PT_NOTE::NoteName, note->n_namesz)) {
std::string metadataStr((const char *) desc, (size_t) note->n_descsz);
metadata_ = new AMDGPU::RuntimeMD::Program::Metadata(metadataStr);
// We've found and loaded the runtime metadata, exit the
@@ -10,6 +10,7 @@
#include "compiler/lib/utils/options.hpp"
#include "rockernel.hpp"
#if defined(WITH_LIGHTNING_COMPILER)
#include "AMDGPUPTNote.h"
#include "libelf/gelf.h"
#include "driver/AmdCompiler.h"
#include "libraries.amdgcn.inc"
@@ -927,9 +928,14 @@ HSAILProgram::setKernels_LC(amd::option::Options *options, void* binary, size_t
address name = (address) &note[1];
address desc = name + amd::alignUp(note->n_namesz, sizeof(int));
if (note->n_type == 7 /*AMDGPU::PT_NOTE::NT_AMDGPU_HSA_RUNTIME_METADATA*/
&& note->n_namesz == sizeof "AMD"
&& !memcmp(name, "AMD", note->n_namesz)) {
if (note->n_type == AMDGPU::PT_NOTE::NT_AMDGPU_HSA_RUNTIME_METADATA_V_1) {
buildLog_ += "Error: object code with metadata v1 is not " \
"supported\n";
return false;
}
else if (note->n_type == AMDGPU::PT_NOTE::NT_AMDGPU_HSA_RUNTIME_METADATA
&& note->n_namesz == sizeof AMDGPU::PT_NOTE::NoteName
&& !memcmp(name, AMDGPU::PT_NOTE::NoteName, note->n_namesz)) {
std::string metadataStr((const char *) desc, (size_t) note->n_descsz);
metadata_ = new AMDGPU::RuntimeMD::Program::Metadata(metadataStr);
// We've found and loaded the runtime metadata, exit the