From 0de4de09076cbffbd8dc958ed09f6353e457bd04 Mon Sep 17 00:00:00 2001
From: foreman
Date: Wed, 31 Aug 2016 00:13:59 -0400
Subject: [PATCH] P4 to Git Change 1309005 by lmoriche@lmoriche_opencl_dev on
2016/08/31 00:08:03
SWDEV-94644 - Generate a relocatable PCH for opencl-c.h. Use -isysroot to point to $(LLVM_BIN)/../../include where opencl-c.h should be installed.
Affected files ...
... //depot/stg/opencl/drivers/opencl/make/amdgcn.git/headers/build/Makefile.headers#8 edit
... //depot/stg/opencl/drivers/opencl/make/amdgcn.git/irif/build/Makefile.irif#5 edit
... //depot/stg/opencl/drivers/opencl/make/amdgcn.git/ockl/build/Makefile.ockl#6 edit
... //depot/stg/opencl/drivers/opencl/make/amdgcn.git/oclc/build/Makefile.oclc#8 edit
... //depot/stg/opencl/drivers/opencl/make/amdgcn.git/ocml/build/Makefile.ocml#6 edit
... //depot/stg/opencl/drivers/opencl/make/amdgcn.git/opencl/build/Makefile.opencl#8 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/roccompiler.cpp#12 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocprogram.cpp#20 edit
[ROCm/clr commit: 1d6b47602d57e69fa52a86d7b606106d8fd978f8]
---
.../runtime/device/rocm/roccompiler.cpp | 52 ++++++++++++++++++-
.../rocclr/runtime/device/rocm/rocprogram.cpp | 48 -----------------
2 files changed, 51 insertions(+), 49 deletions(-)
diff --git a/projects/clr/rocclr/runtime/device/rocm/roccompiler.cpp b/projects/clr/rocclr/runtime/device/rocm/roccompiler.cpp
index ad733f1475..c9457e78d9 100644
--- a/projects/clr/rocclr/runtime/device/rocm/roccompiler.cpp
+++ b/projects/clr/rocclr/runtime/device/rocm/roccompiler.cpp
@@ -20,6 +20,15 @@
#include "utils/options.hpp"
#include
+#if defined(ATI_OS_LINUX)
+#include
+#include
+#endif // defined(ATI_OS_LINUX)
+
+#if defined(WITH_LIGHTNING_COMPILER)
+static std::string llvmBin_(amd::Os::getEnvironment("LLVM_BIN"));
+#endif // defined(WITH_LIGHTNING_COMPILER)
+
//CLC_IN_PROCESS_CHANGE
extern int openclFrontEnd(const char* cmdline, std::string*, std::string* typeInfo = NULL);
@@ -167,8 +176,9 @@ HSAILProgram::compileImpl_LC(const std::string& sourceCode,
return false;
}
- driverOptions.append(" -Xclang -include-pch -Xclang " + pch->Name());
+ driverOptions.append(" -include-pch " + pch->Name());
driverOptions.append(" -Xclang -fno-validate-pch");
+ driverOptions.append(" -isysroot " + llvmBin_ + "/../../include");
driverOptions.append(hsailOptions(options));
if (clVer >= 200) {
@@ -356,5 +366,45 @@ HSAILProgram::compileImpl(const std::string& sourceCode,
return true;
#endif // !defined(WITH_LIGHTNING_COMPILER)
}
+
+#if defined(WITH_LIGHTNING_COMPILER)
+#if defined(ATI_OS_LINUX)
+static pthread_once_t once = PTHREAD_ONCE_INIT;
+
+static void
+checkLLVM_BIN()
+{
+ if (llvmBin_.empty()) {
+ Dl_info info;
+ if (dladdr((const void*)&amd::Device::init, &info)) {
+ llvmBin_ = dirname(strdup(info.dli_fname));
+ size_t pos = llvmBin_.rfind("lib");
+ if (pos != std::string::npos) {
+ llvmBin_.replace(pos, 3, "bin");
+ }
+ }
+ }
+#if defined(DEBUG)
+ std::string clangExe(llvmBin_ + "/clang");
+ struct stat buf;
+ if (stat(clangExe.c_str(), &buf)) {
+ std::string msg("Could not find the Clang binary in " + llvmBin_);
+ LogWarning(msg.c_str());
+ }
+#endif // defined(DEBUG)
}
+#endif // defined(ATI_OS_LINUX)
+
+std::auto_ptr
+HSAILProgram::newCompilerInstance()
+{
+#if defined(ATI_OS_LINUX)
+ pthread_once(&once, checkLLVM_BIN);
+#endif // defined(ATI_OS_LINUX)
+ return std::auto_ptr(
+ amd::opencl_driver::CompilerFactory().CreateAMDGPUCompiler(llvmBin_));
+}
+#endif // defined(WITH_LIGHTNING_COMPILER)
+
+} // namespace roc
#endif // WITHOUT_GPU_BACKEND
diff --git a/projects/clr/rocclr/runtime/device/rocm/rocprogram.cpp b/projects/clr/rocclr/runtime/device/rocm/rocprogram.cpp
index c63c3da7fb..f61690152e 100644
--- a/projects/clr/rocclr/runtime/device/rocm/rocprogram.cpp
+++ b/projects/clr/rocclr/runtime/device/rocm/rocprogram.cpp
@@ -44,11 +44,6 @@
#include
#include
-#if defined(ATI_OS_LINUX)
-#include
-#include
-#endif // defined(ATI_OS_LINUX)
-
#endif // WITHOUT_HSA_BACKEND
namespace roc {
@@ -1489,49 +1484,6 @@ namespace roc {
}
return hsailOptions;
}
-
-#if defined(WITH_LIGHTNING_COMPILER)
-
-static std::string llvmBin_(amd::Os::getEnvironment("LLVM_BIN"));
-
-#if defined(ATI_OS_LINUX)
-static pthread_once_t once = PTHREAD_ONCE_INIT;
-
-static void
-checkLLVM_BIN()
-{
- if (llvmBin_.empty()) {
- Dl_info info;
- if (dladdr((const void*)&amd::Device::init, &info)) {
- llvmBin_ = dirname(strdup(info.dli_fname));
- size_t pos = llvmBin_.rfind("lib");
- if (pos != std::string::npos) {
- llvmBin_.replace(pos, 3, "bin");
- }
- }
- }
-#if defined(DEBUG)
- std::string clangExe(llvmBin_ + "/clang");
- struct stat buf;
- if (stat(clangExe.c_str(), &buf)) {
- std::string msg("Could not find the Clang binary in " + llvmBin_);
- LogWarning(msg.c_str());
- }
-#endif // defined(DEBUG)
-}
-#endif // defined(ATI_OS_LINUX)
-
-std::auto_ptr
-HSAILProgram::newCompilerInstance()
-{
-#if defined(ATI_OS_LINUX)
- pthread_once(&once, checkLLVM_BIN);
-#endif // defined(ATI_OS_LINUX)
- return std::auto_ptr(
- amd::opencl_driver::CompilerFactory().CreateAMDGPUCompiler(llvmBin_));
-}
-#endif // defined(WITH_LIGHTNING_COMPILER)
-
#endif // WITHOUT_HSA_BACKEND
} // namespace roc