From e56f652c91c8066989ed29fde11a5313f3f5ba74 Mon Sep 17 00:00:00 2001
From: foreman
Date: Mon, 1 May 2017 15:54:18 -0500
Subject: [PATCH] P4 to Git Change 1404293 by lmoriche@lmoriche_opencl_dev2 on
2017/05/01 16:43:07
SWDEV-102726 - [OCL-LC-ROCm] Open source OpenCL Runtime
- Changes required to use the Khronos ICD sources instead of ours.
Affected files ...
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/CMakeLists.txt#3 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_gl.cpp#54 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_icd.cpp#29 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/headers/opencl2.0/CL/cl_platform.h#7 edit
... //depot/stg/opencl/drivers/opencl/runtime/CMakeLists.txt#2 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpubinary.cpp#12 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpubinary.hpp#5 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpukernel.cpp#319 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpukernel.hpp#127 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprogram.cpp#233 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuresource.cpp#239 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/object.hpp#18 edit
[ROCm/clr commit: 0af2c7043c461e7822367e0ddaccb5f3e78ed408]
---
projects/clr/rocclr/runtime/CMakeLists.txt | 9 ++++---
.../rocclr/runtime/device/cpu/cpubinary.cpp | 24 ++++++++---------
.../rocclr/runtime/device/cpu/cpubinary.hpp | 2 +-
.../rocclr/runtime/device/gpu/gpukernel.cpp | 20 +++++++-------
.../rocclr/runtime/device/gpu/gpukernel.hpp | 2 +-
.../rocclr/runtime/device/gpu/gpuprogram.cpp | 2 +-
.../rocclr/runtime/device/gpu/gpuresource.cpp | 9 +++++--
.../clr/rocclr/runtime/platform/object.hpp | 26 +++++++++++++++----
8 files changed, 59 insertions(+), 35 deletions(-)
diff --git a/projects/clr/rocclr/runtime/CMakeLists.txt b/projects/clr/rocclr/runtime/CMakeLists.txt
index 2827bbd15b..728d8cd01d 100644
--- a/projects/clr/rocclr/runtime/CMakeLists.txt
+++ b/projects/clr/rocclr/runtime/CMakeLists.txt
@@ -1,11 +1,12 @@
set(CMAKE_CXX_FLAGS "-std=c++11")
-add_definitions(-DLINUX -D__x86_64__ -D__AMD64__ -DUNIX_OS -DqLittleEndian -DAMD_LIBELF -DOPENCL_MAJOR=2 -DOPENCL_MINOR=0 -DWITH_AQL -DWITH_ONLINE_COMPILER -DATI_OS_LINUX -DATI_ARCH_X86 -DLITTLEENDIAN_CPU -DATI_BITS_64 -DATI_COMP_GCC -DWITH_HSA_DEVICE -DWITH_TARGET_AMDGCN -DOPENCL_EXPORTS -DCL_USE_DEPRECATED_OPENCL_1_1_APIS -DCL_USE_DEPRECATED_OPENCL_1_2_APIS -DCL_USE_DEPRECATED_OPENCL_2_0_APIS -DWITH_VERSION_0_8=1 -DVEGA10_ONLY=false -DWITH_LIGHTNING_COMPILER -DBSD_LIBELF)
+add_definitions(-DLINUX -D__x86_64__ -D__AMD64__ -DUNIX_OS -DqLittleEndian -DOPENCL_MAJOR=2 -DOPENCL_MINOR=0 -DWITH_AQL -DWITH_ONLINE_COMPILER -DATI_OS_LINUX -DATI_ARCH_X86 -DLITTLEENDIAN_CPU -DATI_BITS_64 -DATI_COMP_GCC -DWITH_HSA_DEVICE -DWITH_TARGET_AMDGCN -DOPENCL_EXPORTS -DCL_USE_DEPRECATED_OPENCL_1_0_APIS -DCL_USE_DEPRECATED_OPENCL_1_1_APIS -DCL_USE_DEPRECATED_OPENCL_1_2_APIS -DCL_USE_DEPRECATED_OPENCL_2_0_APIS -DVEGA10_ONLY=false -DWITH_LIGHTNING_COMPILER)
include_directories(/opt/rocm/include/hsa)
include_directories(${CMAKE_SOURCE_DIR}/runtime)
include_directories(${CMAKE_SOURCE_DIR}/api/opencl)
+include_directories(${CMAKE_SOURCE_DIR}/api/opencl/khronos)
include_directories(${CMAKE_SOURCE_DIR}/api/opencl/khronos/headers)
include_directories(${CMAKE_SOURCE_DIR}/api/opencl/khronos/headers/opencl2.0)
include_directories(${CMAKE_SOURCE_DIR}/compiler/llvm/lib/Target/AMDGPU/MCTargetDesc)
@@ -13,11 +14,13 @@ include_directories(${CMAKE_SOURCE_DIR}/compiler/driver/src)
include_directories(${CMAKE_SOURCE_DIR}/compiler/lib)
include_directories(${CMAKE_SOURCE_DIR}/compiler/lib/include)
include_directories(${CMAKE_SOURCE_DIR}/compiler/lib/backends/common)
-include_directories(${CMAKE_SOURCE_DIR}/compiler/lib/loaders/elf/utils/common)
-include_directories(${CMAKE_SOURCE_DIR}/compiler/lib/loaders/elf/utils/libelf)
include_directories(${CMAKE_SOURCE_DIR}/compiler/lib/loaders)
include_directories(${CMAKE_SOURCE_DIR}/compiler/tools)
+add_definitions(-DBSD_LIBELF)
+include_directories(${CMAKE_SOURCE_DIR}/compiler/lib/loaders/elf/utils/common)
+include_directories(${CMAKE_SOURCE_DIR}/compiler/lib/loaders/elf/utils/libelf)
+
add_subdirectory(device/rocm)
add_library(oclruntime OBJECT
diff --git a/projects/clr/rocclr/runtime/device/cpu/cpubinary.cpp b/projects/clr/rocclr/runtime/device/cpu/cpubinary.cpp
index e8cf8496c2..7e56ed7353 100644
--- a/projects/clr/rocclr/runtime/device/cpu/cpubinary.cpp
+++ b/projects/clr/rocclr/runtime/device/cpu/cpubinary.cpp
@@ -27,7 +27,7 @@ ClBinary::FeatureCheckResult ClBinary::checkFeatures() {
amd::OclElf::oclElfPlatform platform;
if (!elfIn()->getTarget(elf_target, platform)) {
LogError("Loading OCL CPU binary: incorrect format");
- return ERROR;
+ return fcERROR;
}
uint64_t chip_options = 0x0;
if (platform == amd::OclElf::COMPLIB_PLATFORM) {
@@ -35,7 +35,7 @@ ClBinary::FeatureCheckResult ClBinary::checkFeatures() {
uint32_t flag;
if (!elfIn()->getFlags(flag)) {
LogError("Loading OCL CPU binary: incorrect format");
- return ERROR;
+ return fcERROR;
}
aclTargetInfo tgtInfo = aclGetTargetInfoFromChipID(LP64_SWITCH("x86", "x86-64"), flag, NULL);
chip_options = aclGetChipOptions(tgtInfo);
@@ -43,13 +43,13 @@ ClBinary::FeatureCheckResult ClBinary::checkFeatures() {
((elf_target == EM_386) && (strcmp(LP64_SWITCH("x86", "x86-64"), "x86") != 0)) ||
((elf_target == EM_X86_64) && (strcmp(LP64_SWITCH("x86", "x86-64"), "x86-64") != 0))) {
LogError("Loading OCL CPU binary: different target");
- return ERROR;
+ return fcERROR;
}
} else {
// BIF 2.0
if ((platform != amd::OclElf::CPU_PLATFORM) || ((target & elf_target) != elf_target)) {
LogError("Loading OCL CPU binary: different target");
- return ERROR;
+ return fcERROR;
}
}
char* section;
@@ -64,11 +64,11 @@ ClBinary::FeatureCheckResult ClBinary::checkFeatures() {
if (elfIn_->getSection(amd::OclElf::LLVMIR, §ion, &sz)) {
if ((section != NULL) && (sz > 0)) {
// hasDLL being false to force recompiling
- RECOMPILE;
+ fcRECOMPILE;
}
}
}
- return OK;
+ return fcOK;
}
bool ClBinary::loadX86(Program& program, std::string& dllName, bool& hasDLL) {
@@ -79,11 +79,11 @@ bool ClBinary::loadX86(Program& program, std::string& dllName, bool& hasDLL) {
dllName = tempName + "." WINDOWS_SWITCH("dll", MACOS_SWITCH("dyld", "so"));
switch (checkFeatures()) {
- case ERROR:
+ case fcERROR:
return false;
- case RECOMPILE:
+ case fcRECOMPILE:
return true;
- case OK:
+ case fcOK:
// Fallthrough
break;
}
@@ -143,11 +143,11 @@ bool ClBinary::loadX86JIT(Program& program, bool& hasJITBinary) {
hasJITBinary = false;
switch (checkFeatures()) {
- case ERROR:
+ case fcERROR:
return false;
- case RECOMPILE:
+ case fcRECOMPILE:
return true;
- case OK:
+ case fcOK:
// Fallthrough
break;
}
diff --git a/projects/clr/rocclr/runtime/device/cpu/cpubinary.hpp b/projects/clr/rocclr/runtime/device/cpu/cpubinary.hpp
index 79ce0bdc34..96bb4eb88b 100644
--- a/projects/clr/rocclr/runtime/device/cpu/cpubinary.hpp
+++ b/projects/clr/rocclr/runtime/device/cpu/cpubinary.hpp
@@ -56,7 +56,7 @@ class ClBinary : public device::ClBinary {
bool storeX86Asm(const char* buffer, size_t size);
private:
- enum FeatureCheckResult { ERROR, RECOMPILE, OK };
+ enum FeatureCheckResult { fcERROR, fcRECOMPILE, fcOK };
FeatureCheckResult checkFeatures();
diff --git a/projects/clr/rocclr/runtime/device/gpu/gpukernel.cpp b/projects/clr/rocclr/runtime/device/gpu/gpukernel.cpp
index 1d3cb4c136..663098a07e 100644
--- a/projects/clr/rocclr/runtime/device/gpu/gpukernel.cpp
+++ b/projects/clr/rocclr/runtime/device/gpu/gpukernel.cpp
@@ -29,7 +29,7 @@ const MetaDataConst ArgState[ArgStateTotal] = {
// Name Type Properties
// Kernel description (special properties)
{"memory:compilerwrite", KernelArg::PrivateFixed, {0, 0, 0, 0, 0, 0, 0}},
- {"uniqueid:", KernelArg::None, {0, 0, 0, 0, 0, 0, 0}},
+ {"uniqueid:", KernelArg::NoType, {0, 0, 0, 0, 0, 0, 0}},
{"memory:private:", KernelArg::PrivateSize, {0, 0, 0, 0, 0, 0, 0}},
{"memory:local:", KernelArg::LocalSize, {0, 0, 0, 0, 0, 0, 0}},
{"memory:hwprivate:", KernelArg::HwPrivateSize, {0, 0, 0, 0, 0, 0, 0}},
@@ -37,8 +37,8 @@ const MetaDataConst ArgState[ArgStateTotal] = {
{"memory:hwlocal:", KernelArg::HwLocalSize, {0, 0, 0, 0, 0, 0, 0}},
{"memory:64bitABI", KernelArg::ABI64Bit, {0, 0, 0, 0, 0, 0, 0}},
{"limitgroupsize", KernelArg::Wavefront, {0, 0, 0, 0, 0, 0, 0}},
- {"function:", KernelArg::None, {1, 1, 0, 0, 0, 0, 0}},
- {"intrinsic:", KernelArg::None, {1, 0, 0, 0, 0, 0, 0}},
+ {"function:", KernelArg::NoType, {1, 1, 0, 0, 0, 0, 0}},
+ {"intrinsic:", KernelArg::NoType, {1, 0, 0, 0, 0, 0, 0}},
{"error:", KernelArg::ErrorMessage, {0, 0, 0, 0, 0, 0, 0}},
{"warning:", KernelArg::WarningMessage, {0, 0, 0, 0, 0, 0, 0}},
{"printf_fmt:", KernelArg::PrintfFormatStr, {0, 0, 0, 0, 0, 0, 0}},
@@ -312,13 +312,13 @@ CalImageReference::~CalImageReference() {
}
KernelArg::KernelArg()
- : type_(KernelArg::None),
+ : type_(KernelArg::NoType),
size_(0),
cbIdx_(0),
cbPos_(0),
index_(0),
alignment_(1),
- dataType_(KernelArg::None) {
+ dataType_(KernelArg::NoType) {
name_ = "";
buf_ = "";
memory_.value_ = 0;
@@ -349,7 +349,7 @@ KernelArg& KernelArg::operator=(const KernelArg& data) {
bool KernelArg::isCbNeeded() const {
//! \note not a safe way
- bool result = ((type_ > None) && (type_ < Sampler)) ? true : false;
+ bool result = ((type_ > NoType) && (type_ < Sampler)) ? true : false;
if ((type_ == Sampler) && (location_ == 0)) {
// Sampler is defined outside the kernel
result = true;
@@ -359,7 +359,7 @@ bool KernelArg::isCbNeeded() const {
size_t KernelArg::size(bool gpuLayer) const {
switch (type_) {
- case None:
+ case NoType:
return 0;
case PointerConst:
case PointerHwConst:
@@ -507,7 +507,7 @@ clk_value_type_t KernelArg::type() const {
return T_SAMPLER;
case PointerPrivate:
case PointerHwPrivate:
- case None:
+ case NoType:
default:
return T_VOID;
}
@@ -2188,7 +2188,7 @@ bool NullKernel::parseArguments(const std::string& metaData, uint* uavRefCount)
break;
}
- arg.type_ = KernelArg::None;
+ arg.type_ = KernelArg::NoType;
// Loop through all available metadata types
for (uint i = 0; i < ArgStateTotal; ++i) {
@@ -2196,7 +2196,7 @@ bool NullKernel::parseArguments(const std::string& metaData, uint* uavRefCount)
// Find the name tag
if (expect(metaData, &pos, ArgState[i].typeName_)) {
switch (ArgState[i].type_) {
- case KernelArg::None:
+ case KernelArg::NoType:
// Process next ...
continue;
case KernelArg::Reflection: {
diff --git a/projects/clr/rocclr/runtime/device/gpu/gpukernel.hpp b/projects/clr/rocclr/runtime/device/gpu/gpukernel.hpp
index 1e0fd7f6f2..bfd1ad2d01 100644
--- a/projects/clr/rocclr/runtime/device/gpu/gpukernel.hpp
+++ b/projects/clr/rocclr/runtime/device/gpu/gpukernel.hpp
@@ -128,7 +128,7 @@ struct KernelArg : public amd::HeapObject {
public:
//! \enum Kernel argument type
enum ArgumentType {
- None = 0,
+ NoType = 0,
PointerGlobal,
Value,
Image,
diff --git a/projects/clr/rocclr/runtime/device/gpu/gpuprogram.cpp b/projects/clr/rocclr/runtime/device/gpu/gpuprogram.cpp
index d56c1cc219..2afff29701 100644
--- a/projects/clr/rocclr/runtime/device/gpu/gpuprogram.cpp
+++ b/projects/clr/rocclr/runtime/device/gpu/gpuprogram.cpp
@@ -951,7 +951,7 @@ bool NullProgram::initGlobalData(const std::string& source, size_t start) {
failed = true;
}
} break;
- case KernelArg::None:
+ case KernelArg::NoType:
default:
break;
}
diff --git a/projects/clr/rocclr/runtime/device/gpu/gpuresource.cpp b/projects/clr/rocclr/runtime/device/gpu/gpuresource.cpp
index e4dc2982ae..21286f81ea 100644
--- a/projects/clr/rocclr/runtime/device/gpu/gpuresource.cpp
+++ b/projects/clr/rocclr/runtime/device/gpu/gpuresource.cpp
@@ -1,6 +1,13 @@
// Copyright (c) 2008 Advanced Micro Devices, Inc. All rights reserved.
//
+#if defined(ATI_OS_WIN)
+#define WIN32_LEAN_AND_MEAN 1
+#include
+#endif
+#include
+#include "GL/glATIInternal.h"
+
#include "platform/program.hpp"
#include "platform/kernel.hpp"
#include "os/os.hpp"
@@ -13,8 +20,6 @@
#include "device/gpu/gputimestamp.hpp"
#include "thread/atomic.hpp"
#include "hsa_ext_image.h"
-#include
-#include "GL/glATIInternal.h"
#include
#include
diff --git a/projects/clr/rocclr/runtime/platform/object.hpp b/projects/clr/rocclr/runtime/platform/object.hpp
index 2593bd1571..8ab1b68c6c 100644
--- a/projects/clr/rocclr/runtime/platform/object.hpp
+++ b/projects/clr/rocclr/runtime/platform/object.hpp
@@ -9,8 +9,10 @@
#include "os/alloc.hpp"
#include "thread/monitor.hpp"
#include "utils/util.hpp"
+#include
-#define CL_TYPES_DO(F) \
+
+#define KHR_CL_TYPES_DO(F) \
/* OpenCL type Runtime type */ \
F(cl_context, Context) \
F(cl_event, Event) \
@@ -19,21 +21,26 @@
F(cl_program, Program) \
F(cl_device_id, Device) \
F(cl_mem, Memory) \
- F(cl_sampler, Sampler) \
+ F(cl_sampler, Sampler)
+
+#define AMD_CL_TYPES_DO(F) \
F(cl_counter_amd, Counter) \
F(cl_perfcounter_amd, PerfCounter) \
F(cl_threadtrace_amd, ThreadTrace) \
F(cl_file_amd, LiquidFlashFile)
+
+#define CL_TYPES_DO(F) \
+ KHR_CL_TYPES_DO(F) \
+ AMD_CL_TYPES_DO(F)
+
// Forward declare ::cl_* types and amd::Class types
//
#define DECLARE_CL_TYPES(CL, AMD) \
namespace amd { \
class AMD; \
- } \
- typedef struct _##CL { \
- } * CL;
+ }
CL_TYPES_DO(DECLARE_CL_TYPES);
@@ -41,6 +48,15 @@ CL_TYPES_DO(DECLARE_CL_TYPES);
struct KHRicdVendorDispatchRec;
+#define DECLARE_CL_TYPES(CL, AMD) \
+ typedef struct _##CL { \
+ struct KHRicdVendorDispatchRec* dispatch; \
+ } * CL;
+
+AMD_CL_TYPES_DO(DECLARE_CL_TYPES);
+
+#undef DECLARE_CL_TYPES
+
namespace amd {
// Define the cl_*_type tokens for type checking.