Date: Friday, May 28, 2021 @ 07:15:03 Author: foutrelis Revision: 949257
Remove obsolete llvm11.patch Modified: pocl/trunk/PKGBUILD Deleted: pocl/trunk/llvm11.patch --------------+ PKGBUILD | 6 llvm11.patch | 696 --------------------------------------------------------- 2 files changed, 2 insertions(+), 700 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2021-05-28 07:12:33 UTC (rev 949256) +++ PKGBUILD 2021-05-28 07:15:03 UTC (rev 949257) @@ -10,12 +10,10 @@ arch=('x86_64') url="http://portablecl.org/" license=('GPL') -source=("$pkgname-$pkgver.tar.gz::https://github.com/$pkgname/$pkgname/archive/v$pkgver.tar.gz" - llvm11.patch) +source=("$pkgname-$pkgver.tar.gz::https://github.com/$pkgname/$pkgname/archive/v$pkgver.tar.gz") depends=('clang' 'hwloc' 'opencl-icd-loader') makedepends=('llvm' 'cmake' 'opencl-headers' 'ocl-icd' 'ninja') -sha512sums=('23bb82b25a222186c001b2ed413f26253e1e0e16518e98c95173f51491e15d107e6ab1b334ffd490b41199743267d9ad64882a22fea327e17ec9604f9847fc38' - 'ef149678347c88ee3c1bfef62c0b35667b2f613cc08a90f237b6f9d1a5f3d616fe5d6513bbda36ead5969fc6d32cace7d02a3c4c6230ab5144db94a0af56db30') +sha512sums=('23bb82b25a222186c001b2ed413f26253e1e0e16518e98c95173f51491e15d107e6ab1b334ffd490b41199743267d9ad64882a22fea327e17ec9604f9847fc38') build() { cd "$pkgname-$pkgver" Deleted: llvm11.patch =================================================================== --- llvm11.patch 2021-05-28 07:12:33 UTC (rev 949256) +++ llvm11.patch 2021-05-28 07:15:03 UTC (rev 949257) @@ -1,696 +0,0 @@ -From 749a80b2c832771ef3eb6d9af39807dbad97d218 Mon Sep 17 00:00:00 2001 -From: KOLANICH <kola...@mail.ru> -Date: Mon, 3 Feb 2020 11:55:10 +0300 -Subject: [PATCH 1/6] LLVM11 support - -(cherry picked from commit 1e31e34cd1f6f9f045ca72a8a26caa8e34a43c4f) ---- - cmake/LLVM.cmake | 6 +++++- - config.h.in.cmake | 4 ++++ - include/CMakeLists.txt | 2 +- - include/_kernel.h | 24 ++++++------------------ - include/_libclang_versions_checks.h | 24 ++++++++++++++++++++++++ - include/pocl.h | 22 ++-------------------- - lib/CL/pocl_llvm_wg.cc | 4 ++-- - lib/kernel/CMakeLists.txt | 1 + - 8 files changed, 45 insertions(+), 42 deletions(-) - create mode 100644 include/_libclang_versions_checks.h - -diff --git a/cmake/LLVM.cmake b/cmake/LLVM.cmake -index 33c45750..b41e75a9 100644 ---- a/cmake/LLVM.cmake -+++ b/cmake/LLVM.cmake -@@ -37,6 +37,7 @@ else() - # search for any version - find_program(LLVM_CONFIG - NAMES -+ "llvm-config-mp-11.0" "llvm-config-11" "llvm-config110" - "llvm-config-mp-10.0" "llvm-config-10" "llvm-config100" - "llvm-config-mp-9.0" "llvm-config-9" "llvm-config90" - "llvm-config-mp-8.0" "llvm-config-8" "llvm-config80" -@@ -180,8 +181,11 @@ elseif(LLVM_VERSION MATCHES "^9[.]") - elseif(LLVM_VERSION MATCHES "^10[.]") - set(LLVM_MAJOR 10) - set(LLVM_10_0 1) -+elseif(LLVM_VERSION MATCHES "^11[.]") -+ set(LLVM_MAJOR 11) -+ set(LLVM_11_0 1) - else() -- message(FATAL_ERROR "LLVM version between 6.0 and 10.0 required, found: ${LLVM_VERSION}") -+ message(FATAL_ERROR "LLVM version between 6.0 and 11.0 required, found: ${LLVM_VERSION}") - endif() - - ############################################################# -diff --git a/config.h.in.cmake b/config.h.in.cmake -index 42c63f77..7c6c0eb4 100644 ---- a/config.h.in.cmake -+++ b/config.h.in.cmake -@@ -152,6 +152,10 @@ - - #cmakedefine LLVM_10_0 - -+#cmakedefine LLVM_11_0 -+ -+#cmakedefine LLVM_MAJOR @LLVM_VERSION_MAJOR@ -+ - #cmakedefine LLVM_BUILD_MODE_DEBUG - - #ifndef LLVM_VERSION -diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt -index 321df9d5..31883269 100644 ---- a/include/CMakeLists.txt -+++ b/include/CMakeLists.txt -@@ -27,7 +27,7 @@ add_subdirectory("CL") - - set(PRIVATE_HEADERS _enable_all_exts.h _builtin_renames.h - _kernel.h _clang_opencl.h -- _kernel_c.h _kernel_constants.h -+ _kernel_c.h _kernel_constants.h _libclang_versions_checks.h - pocl_types.h pocl_device.h pocl.h pocl_spir.h - pocl_image_types.h) - -diff --git a/include/_kernel.h b/include/_kernel.h -index 427794e3..90154648 100644 ---- a/include/_kernel.h -+++ b/include/_kernel.h -@@ -143,32 +143,20 @@ - # undef LLVM_10_0 - # define LLVM_10_0 - -+#elif (__clang_major__ == 11) -+ -+# undef LLVM_11_0 -+# define LLVM_11_0 - #else - - #error Unsupported Clang/LLVM version. - - #endif - --#ifndef LLVM_10_0 --#define LLVM_OLDER_THAN_10_0 1 -- --#ifndef LLVM_9_0 --#define LLVM_OLDER_THAN_9_0 1 -- --#ifndef LLVM_8_0 --#define LLVM_OLDER_THAN_8_0 1 -+#define CLANG_MAJOR __clang_major__ -+#include "_libclang_versions_checks.h" - --#ifndef LLVM_7_0 --#define LLVM_OLDER_THAN_7_0 1 - --#ifndef LLVM_6_0 --#define LLVM_OLDER_THAN_6_0 1 -- --#endif --#endif --#endif --#endif --#endif - - /****************************************************************************/ - -diff --git a/include/_libclang_versions_checks.h b/include/_libclang_versions_checks.h -new file mode 100644 -index 00000000..1ba0ce4d ---- /dev/null -+++ b/include/_libclang_versions_checks.h -@@ -0,0 +1,24 @@ -+ -+#if CLANG_MAJOR < 11 -+#define LLVM_OLDER_THAN_11_0 1 -+#endif -+ -+#if CLANG_MAJOR < 10 -+#define LLVM_OLDER_THAN_10_0 1 -+#endif -+ -+#if CLANG_MAJOR < 9 -+#define LLVM_OLDER_THAN_9_0 1 -+#endif -+ -+#if CLANG_MAJOR < 8 -+#define LLVM_OLDER_THAN_8_0 1 -+#endif -+ -+#if CLANG_MAJOR < 7 -+#define LLVM_OLDER_THAN_7_0 1 -+#endif -+ -+#if CLANG_MAJOR < 6 -+#define LLVM_OLDER_THAN_6_0 1 -+#endif -diff --git a/include/pocl.h b/include/pocl.h -index 1fad38cc..4c175c07 100644 ---- a/include/pocl.h -+++ b/include/pocl.h -@@ -369,25 +369,7 @@ struct _cl_command_node - cl_int ready; - }; - --#ifndef LLVM_10_0 --#define LLVM_OLDER_THAN_10_0 1 -- --#ifndef LLVM_9_0 --#define LLVM_OLDER_THAN_9_0 1 -- --#ifndef LLVM_8_0 --#define LLVM_OLDER_THAN_8_0 1 -- --#ifndef LLVM_7_0 --#define LLVM_OLDER_THAN_7_0 1 -- --#ifndef LLVM_6_0 --#define LLVM_OLDER_THAN_6_0 1 -- --#endif --#endif --#endif --#endif --#endif -+#define CLANG_MAJOR LLVM_MAJOR -+#include "_libclang_versions_checks.h" - - #endif /* POCL_H */ -diff --git a/lib/CL/pocl_llvm_wg.cc b/lib/CL/pocl_llvm_wg.cc -index b8e4ac5f..561a80ad 100644 ---- a/lib/CL/pocl_llvm_wg.cc -+++ b/lib/CL/pocl_llvm_wg.cc -@@ -625,8 +625,8 @@ int pocl_llvm_codegen(cl_device_id Device, void *Modp, char **Output, - #ifdef DUMP_LLVM_PASS_TIMINGS - llvm::reportAndResetTimings(); - #endif -- std::string O = SOS.str(); // flush -- const char *Cstr = O.c_str(); -+ auto O = SOS.str(); // flush -+ const char *Cstr = O.data(); - size_t S = O.size(); - *Output = (char *)malloc(S); - *OutputSize = S; -diff --git a/lib/kernel/CMakeLists.txt b/lib/kernel/CMakeLists.txt -index e2cfd71e..1f0c9cff 100644 ---- a/lib/kernel/CMakeLists.txt -+++ b/lib/kernel/CMakeLists.txt -@@ -229,6 +229,7 @@ add_custom_command( OUTPUT "${CMAKE_BINARY_DIR}/kernellib_hash.h" - DEPENDS ${KERNEL_BC_LIST} - "${CMAKE_SOURCE_DIR}/include/_kernel.h" - "${CMAKE_SOURCE_DIR}/include/_kernel_c.h" -+ "${CMAKE_SOURCE_DIR}/include/_libclang_versions_checks.h" - "${CMAKE_SOURCE_DIR}/include/pocl_types.h" - COMMENT "Generating SHA1 of all kernel libs..." - VERBATIM) - -From b1906c650da86bd1045472fe99e082f354592b11 Mon Sep 17 00:00:00 2001 -From: KOLANICH <kola...@mail.ru> -Date: Mon, 22 Jun 2020 15:53:45 +0300 -Subject: [PATCH 2/6] Fixing llvm11 support due to recent changes: - https://github.com/llvm/llvm-project/commit/4f04db4b5439f390c48408f9b94875810e88ffc6 - https://github.com/llvm/llvm-project/commit/a58b62b4a2b96c31b49338b262b609db746449e8 - https://github.com/llvm/llvm-project/commit/4aae4e3f48b9156755c4cfc7ad63fe2a7029d9d7 - . - -(cherry picked from commit dae742fae9978c524ec849a90d0b40a9682fb172) ---- - lib/llvmopencl/HandleSamplerInitialization.cc | 4 +++ - lib/llvmopencl/HandleSamplerInitialization.h | 1 - - lib/llvmopencl/Workgroup.cc | 35 +++++++++++++++++-- - lib/llvmopencl/WorkitemLoops.cc | 4 +++ - 4 files changed, 41 insertions(+), 3 deletions(-) - -diff --git a/lib/llvmopencl/HandleSamplerInitialization.cc b/lib/llvmopencl/HandleSamplerInitialization.cc -index 4cbc5617..5d65c48f 100644 ---- a/lib/llvmopencl/HandleSamplerInitialization.cc -+++ b/lib/llvmopencl/HandleSamplerInitialization.cc -@@ -79,7 +79,11 @@ HandleSamplerInitialization::runOnFunction(Function &F) { - - // get the type of the return value of __translate_sampler - // this may not always be opencl.sampler_t, it could be a remapped type. -+#ifdef LLVM_OLDER_THAN_11_0 - Type *type = C->getCalledValue()->getType(); -+#else -+ Type *type = C->getCalledOperand()->getType(); -+#endif - PointerType *pt = dyn_cast<PointerType>(type); - FunctionType *ft = dyn_cast<FunctionType>(pt->getPointerElementType()); - Type *rettype = ft->getReturnType(); -diff --git a/lib/llvmopencl/HandleSamplerInitialization.h b/lib/llvmopencl/HandleSamplerInitialization.h -index e8274e50..dc7539e2 100644 ---- a/lib/llvmopencl/HandleSamplerInitialization.h -+++ b/lib/llvmopencl/HandleSamplerInitialization.h -@@ -27,7 +27,6 @@ - IGNORE_COMPILER_WARNING("-Wunused-parameter") - - #include <llvm/IR/Function.h> --#include <llvm/PassAnalysisSupport.h> - #include <llvm/Pass.h> - - POP_COMPILER_DIAGS -diff --git a/lib/llvmopencl/Workgroup.cc b/lib/llvmopencl/Workgroup.cc -index 357049a1..0ae2f34c 100644 ---- a/lib/llvmopencl/Workgroup.cc -+++ b/lib/llvmopencl/Workgroup.cc -@@ -35,7 +35,9 @@ IGNORE_COMPILER_WARNING("-Wunused-parameter") - - #include <llvm/Analysis/ConstantFolding.h> - #include <llvm/IR/BasicBlock.h> -+#ifdef LLVM_OLDER_THAN_11_0 - #include <llvm/IR/CallSite.h> -+#endif - #include <llvm/IR/Constants.h> - #include <llvm/IR/DerivedTypes.h> - #include <llvm/IR/IRBuilder.h> -@@ -517,10 +519,15 @@ static void replacePrintfCalls(Value *pb, Value *pbp, Value *pbc, bool isKernel, - for (unsigned i = 0; i < j; ++i) - ops.push_back(CallInstr->getOperand(i)); - -- CallSite CS(CallInstr); - CallInst *NewCI = CallInst::Create(poclPrintf, ops); - NewCI->setCallingConv(poclPrintf->getCallingConv()); -+#ifdef LLVM_OLDER_THAN_11_0 -+ CallSite CS(CallInstr); - NewCI->setTailCall(CS.isTailCall()); -+#else -+ auto *CB = dyn_cast<CallBase>(CallInstr); -+ NewCI->setTailCall(CB->isTailCall()); -+#endif - - replaceCIMap.insert( - std::pair<CallInst *, CallInst *>(CallInstr, NewCI)); -@@ -719,7 +726,11 @@ Workgroup::createWrapper(Function *F, FunctionMapping &printfCache) { - - // needed for printf - InlineFunctionInfo IFI; -+#ifdef LLVM_OLDER_THAN_11_0 - InlineFunction(c, IFI); -+#else -+ InlineFunction(*c, IFI); -+#endif - - if (currentPoclDevice->device_side_printf) { - Function *poclPrintf = M->getFunction("__pocl_printf"); -@@ -989,7 +1000,11 @@ Workgroup::createDefaultWorkgroupLauncher(llvm::Function *F) { - new llvm::AllocaInst(ArgElementType, ParamType->getAddressSpace(), - ConstantInt::get(IntegerType::get(*C, 32), 1), - #ifndef LLVM_OLDER_THAN_10_0 -+#ifndef LLVM_OLDER_THAN_11_0 -+ llvm::Align( -+#else - llvm::MaybeAlign( -+#endif - #endif - MAX_EXTENDED_ALIGNMENT - #ifndef LLVM_OLDER_THAN_10_0 -@@ -1012,7 +1027,11 @@ Workgroup::createDefaultWorkgroupLauncher(llvm::Function *F) { - Arg = new llvm::AllocaInst(ArgElementType, ParamType->getAddressSpace(), - ElementCount, - #ifndef LLVM_OLDER_THAN_10_0 -+#ifndef LLVM_OLDER_THAN_11_0 -+ llvm::Align( -+#else - llvm::MaybeAlign( -+#endif - #endif - MAX_EXTENDED_ALIGNMENT - #ifndef LLVM_OLDER_THAN_10_0 -@@ -1213,7 +1232,11 @@ Workgroup::createArgBufferWorkgroupLauncher(Function *Func, - unwrap(ArgElementType), LLVMGetPointerAddressSpace(ParamType), - unwrap(LLVMConstInt(Int32Type, 1, 0)), - #ifndef LLVM_OLDER_THAN_10_0 -+#ifndef LLVM_OLDER_THAN_11_0 -+ llvm::Align( -+#else - llvm::MaybeAlign( -+#endif - #endif - MAX_EXTENDED_ALIGNMENT - #ifndef LLVM_OLDER_THAN_10_0 -@@ -1248,7 +1271,11 @@ Workgroup::createArgBufferWorkgroupLauncher(Function *Func, - unwrap(LLVMGetElementType(ParamType)), - LLVMGetPointerAddressSpace(ParamType), unwrap(ElementCount), - #ifndef LLVM_OLDER_THAN_10_0 -+#ifndef LLVM_OLDER_THAN_11_0 -+ llvm::Align( -+#else - llvm::MaybeAlign( -+#endif - #endif - MAX_EXTENDED_ALIGNMENT - #ifndef LLVM_OLDER_THAN_10_0 -@@ -1362,7 +1389,11 @@ Workgroup::createGridLauncher(Function *KernFunc, Function *WGFunc, - LLVMBuildRetVoid(Builder); - - InlineFunctionInfo IFI; -- InlineFunction(dyn_cast<CallInst>(llvm::unwrap(Call)), IFI); -+#ifndef LLVM_OLDER_THAN_11_0 -+ InlineFunction(*dyn_cast<CallInst>(llvm::unwrap(Call)), IFI); -+#else -+ InlineFunction(dyn_cast<CallInst>(llvm::unwrap(Call)), IFI); -+#endif - } - - /** -diff --git a/lib/llvmopencl/WorkitemLoops.cc b/lib/llvmopencl/WorkitemLoops.cc -index 69daa3fa..64294111 100644 ---- a/lib/llvmopencl/WorkitemLoops.cc -+++ b/lib/llvmopencl/WorkitemLoops.cc -@@ -990,7 +990,11 @@ WorkitemLoops::GetContextArray(llvm::Instruction *instruction, - size. */ - Alloca->setAlignment( - #ifndef LLVM_OLDER_THAN_10_0 -+#ifndef LLVM_OLDER_THAN_11_0 -+ llvm::Align( -+#else - llvm::MaybeAlign( -+#endif - #endif - CONTEXT_ARRAY_ALIGN - #ifndef LLVM_OLDER_THAN_10_0 - -From 39912829f8d36b2cfc6df996ee177bf59be47f88 Mon Sep 17 00:00:00 2001 -From: Michal Babej <michal.ba...@tuni.fi> -Date: Wed, 26 Aug 2020 01:28:43 +0300 -Subject: [PATCH 3/6] LLVM 11 fixes - -(cherry picked from commit 65b84f3fd4cd39c19f9cb87c183d9b434185b879) ---- - lib/CL/pocl_build.c | 10 ++++++++++ - lib/CL/pocl_llvm_build.cc | 4 ++++ - lib/kernel/host/CMakeLists.txt | 6 ++++++ - 3 files changed, 20 insertions(+) - -diff --git a/lib/CL/pocl_build.c b/lib/CL/pocl_build.c -index ca0258ad..a85a2b64 100644 ---- a/lib/CL/pocl_build.c -+++ b/lib/CL/pocl_build.c -@@ -263,10 +263,20 @@ process_options (const char *options, char *modded_options, char *link_options, - *requires_correctly_rounded_sqrt_div = 1; - } - } -+ - if (strstr (cl_parameters, token)) - { - /* the LLVM API call pushes the parameters directly to the - frontend without using -Xclang */ -+ -+#ifndef LLVM_OLDER_THAN_11_0 -+ // LLVM 11 has removed "-cl-denorms-are-zero" option -+ // https://reviews.llvm.org/D69878 -+ if (strncmp(token, "-cl-denorms-are-zero", 20) == 0) { -+ token = "-fdenormal-fp-math=positive-zero"; -+ } -+#endif -+ - } - else if (strstr (cl_parameters_not_yet_supported_by_clang, token)) - { -diff --git a/lib/CL/pocl_llvm_build.cc b/lib/CL/pocl_llvm_build.cc -index 6b5c8168..ed13901e 100644 ---- a/lib/CL/pocl_llvm_build.cc -+++ b/lib/CL/pocl_llvm_build.cc -@@ -52,6 +52,10 @@ IGNORE_COMPILER_WARNING("-Wstrict-aliasing") - #include "llvm/IR/Function.h" - #include "llvm/IR/Module.h" - -+#ifndef LLVM_OLDER_THAN_11_0 -+#include "llvm/Support/Host.h" -+#endif -+ - #ifdef ENABLE_RELOCATION - - #if defined(__APPLE__) -diff --git a/lib/kernel/host/CMakeLists.txt b/lib/kernel/host/CMakeLists.txt -index c9e0f6dd..6d503116 100644 ---- a/lib/kernel/host/CMakeLists.txt -+++ b/lib/kernel/host/CMakeLists.txt -@@ -300,6 +300,12 @@ set(KERNEL_CL_FLAGS - "-D__OPENCL_C_VERSION__=${HOST_DEVICE_CL_VERSION}" - ${KERNEL_CL_FLAGS}) - -+# https://bugzilla.mozilla.org/show_bug.cgi?id=1657502 -+# this *likely* shouldn't be a problem for PoCL, but needs testing -+if(LLVM_VERSION_MAJOR GREATER 10) -+ list(APPEND KERNEL_CL_FLAGS "-Wno-psabi") -+endif() -+ - separate_arguments(HOST_CLANG_FLAGS) - separate_arguments(HOST_LLC_FLAGS) - set(DEVICE_C_FLAGS "-DPOCL_DEVICE_ADDRESS_BITS=${HOST_DEVICE_ADDRESS_BITS}") - -From 980f588231de49072351c29bd5e3701eb3800504 Mon Sep 17 00:00:00 2001 -From: Michal Babej <michal.ba...@tuni.fi> -Date: Mon, 14 Sep 2020 11:23:30 +0300 -Subject: [PATCH 4/6] CUDA: LLVM 11 support - -(cherry picked from commit b1229d22f004de98dec410c6bb80c4624ab304e6) ---- - lib/CL/devices/cuda/pocl-ptx-gen.cc | 59 +++++++++++++++++++++++++++-- - 1 file changed, 56 insertions(+), 3 deletions(-) - -diff --git a/lib/CL/devices/cuda/pocl-ptx-gen.cc b/lib/CL/devices/cuda/pocl-ptx-gen.cc -index 00f9a46b..c633d83b 100644 ---- a/lib/CL/devices/cuda/pocl-ptx-gen.cc -+++ b/lib/CL/devices/cuda/pocl-ptx-gen.cc -@@ -41,6 +41,9 @@ - #include "llvm/Support/FileSystem.h" - #include "llvm/Support/TargetRegistry.h" - #include "llvm/Support/TargetSelect.h" -+#ifndef LLVM_OLDER_THAN_11_0 -+#include "llvm/Support/Alignment.h" -+#endif - #include "llvm/Target/TargetMachine.h" - #include "llvm/Target/TargetOptions.h" - #include "llvm/Transforms/IPO.h" -@@ -107,12 +110,18 @@ int pocl_ptx_gen(const char *BitcodeFilename, const char *PTXFilename, - } - } - -+#ifdef LLVM_OLDER_THAN_11_0 - llvm::StringRef Triple = - (sizeof(void *) == 8) ? "nvptx64-nvidia-cuda" : "nvptx-nvidia-cuda"; -+#else -+ std::string Triple = -+ (sizeof(void *) == 8) ? "nvptx64-nvidia-cuda" : "nvptx-nvidia-cuda"; -+#endif - - // Get NVPTX target. - const llvm::Target *Target = - llvm::TargetRegistry::lookupTarget(Triple, Error); -+ - if (!Target) { - POCL_MSG_ERR("[CUDA] ptx-gen: failed to get target\n"); - POCL_MSG_ERR("%s\n", Error.c_str()); -@@ -147,8 +156,13 @@ int pocl_ptx_gen(const char *BitcodeFilename, const char *PTXFilename, - // Run passes. - Passes.run(**Module); - -+#ifdef LLVM_OLDER_THAN_11_0 - std::string PTX = PTXStream.str(); - return pocl_write_file(PTXFilename, PTX.c_str(), PTX.size(), 0, 0); -+#else -+ llvm::StringRef PTX = PTXStream.str(); -+ return pocl_write_file(PTXFilename, PTX.data(), PTX.size(), 0, 0); -+#endif - } - - // Add the metadata needed to mark a function as a kernel in PTX. -@@ -218,12 +232,25 @@ void fixPrintF(llvm::Module *Module) { - OldPrintF->getBasicBlockList()); - - // Create i32 to hold current argument index. -+#ifdef LLVM_OLDER_THAN_11_0 - llvm::AllocaInst *ArgIndexPtr = - new llvm::AllocaInst(I32, 0, llvm::ConstantInt::get(I32, 1)); - ArgIndexPtr->insertBefore(&*NewPrintF->begin()->begin()); -+#else -+ llvm::AllocaInst *ArgIndexPtr = -+ new llvm::AllocaInst(I32, 0, llvm::ConstantInt::get(I32, 1), llvm::Align(4)); -+ ArgIndexPtr->insertBefore(&*NewPrintF->begin()->begin()); -+#endif -+ -+#ifdef LLVM_OLDER_THAN_11_0 - llvm::StoreInst *ArgIndexInit = - new llvm::StoreInst(llvm::ConstantInt::get(I32, 0), ArgIndexPtr); - ArgIndexInit->insertAfter(ArgIndexPtr); -+#else -+ llvm::StoreInst *ArgIndexInit = -+ new llvm::StoreInst(llvm::ConstantInt::get(I32, 0), ArgIndexPtr, false, llvm::Align(4)); -+ ArgIndexInit->insertAfter(ArgIndexPtr); -+#endif - - // Replace calls to _cl_va_arg with reads from new i64 array argument. - llvm::Function *VaArgFunc = Module->getFunction("__cl_va_arg"); -@@ -239,9 +266,13 @@ void fixPrintF(llvm::Module *Module) { - continue; - - // Get current argument index. -+#ifdef LLVM_OLDER_THAN_11_0 - llvm::LoadInst *ArgIndex = new llvm::LoadInst(ArgIndexPtr); - ArgIndex->insertBefore(Call); -- -+#else -+ llvm::LoadInst *ArgIndex = new llvm::LoadInst(I32, ArgIndexPtr, "poclCudaLoad", false, llvm::Align(4)); -+ ArgIndex->insertBefore(Call); -+#endif - // Get pointer to argument data. - llvm::Value *ArgOut = Call->getArgOperand(1); - llvm::GetElementPtrInst *ArgIn = -@@ -254,18 +285,29 @@ void fixPrintF(llvm::Module *Module) { - ArgOut = ArgOutBC; - - // Load argument. -+#ifdef LLVM_OLDER_THAN_11_0 - llvm::LoadInst *ArgValue = new llvm::LoadInst(ArgIn); - ArgValue->insertAfter(ArgIn); - llvm::StoreInst *ArgStore = new llvm::StoreInst(ArgValue, ArgOut); - ArgStore->insertAfter(ArgOutBC); -- -+#else -+ llvm::LoadInst *ArgValue = new llvm::LoadInst(I64, ArgIn, "poclCudaArgLoad", false, llvm::Align(8)); -+ ArgValue->insertAfter(ArgIn); -+ llvm::StoreInst *ArgStore = new llvm::StoreInst(ArgValue, ArgOut, false, llvm::Align(8)); -+ ArgStore->insertAfter(ArgOutBC); -+#endif - // Increment argument index. - llvm::BinaryOperator *Inc = llvm::BinaryOperator::Create( - llvm::BinaryOperator::Add, ArgIndex, llvm::ConstantInt::get(I32, 1)); - Inc->insertAfter(ArgIndex); -+ -+#ifdef LLVM_OLDER_THAN_11_0 - llvm::StoreInst *StoreInc = new llvm::StoreInst(Inc, ArgIndexPtr); - StoreInc->insertAfter(Inc); -- -+#else -+ llvm::StoreInst *StoreInc = new llvm::StoreInst(Inc, ArgIndexPtr, false, llvm::Align(4)); -+ StoreInc->insertAfter(Inc); -+#endif - // Remove call to _cl_va_arg. - Call->eraseFromParent(); - } -@@ -288,9 +330,15 @@ void fixPrintF(llvm::Module *Module) { - - // Allocate array for arguments. - // TODO: Deal with vector arguments. -+#ifdef LLVM_OLDER_THAN_11_0 - llvm::AllocaInst *Args = - new llvm::AllocaInst(I64, 0, llvm::ConstantInt::get(I32, NumArgs)); - Args->insertBefore(Call); -+#else -+ llvm::AllocaInst *Args = -+ new llvm::AllocaInst(I64, 0, llvm::ConstantInt::get(I32, NumArgs), llvm::Align(8)); -+ Args->insertBefore(Call); -+#endif - - // Loop over arguments (skipping format). - for (unsigned A = 0; A < NumArgs; A++) { -@@ -322,8 +370,13 @@ void fixPrintF(llvm::Module *Module) { - } - - // Store argument to i64 array. -+#ifdef LLVM_OLDER_THAN_11_0 - llvm::StoreInst *Store = new llvm::StoreInst(Arg, ArgPtr); - Store->insertBefore(Call); -+#else -+ llvm::StoreInst *Store = new llvm::StoreInst(Arg, ArgPtr, false, llvm::Align(8)); -+ Store->insertBefore(Call); -+#endif - } - - // Fix address space of undef format values. - -From 112861d721bb07147699ce9d481c47be38d05266 Mon Sep 17 00:00:00 2001 -From: Michal Babej <michal.ba...@tuni.fi> -Date: Sat, 19 Sep 2020 10:49:42 +0300 -Subject: [PATCH 5/6] LLVM 11: "-dwarf-column-info" option has been turned into - an opt-out - -(cherry picked from commit ec70212530db80ac798671042e523bc51e8c9598) ---- - lib/CL/pocl_build.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/lib/CL/pocl_build.c b/lib/CL/pocl_build.c -index a85a2b64..0e4061ce 100644 ---- a/lib/CL/pocl_build.c -+++ b/lib/CL/pocl_build.c -@@ -295,8 +295,13 @@ process_options (const char *options, char *modded_options, char *link_options, - } - else if (strncmp (token, "-g", 2) == 0) - { -+#ifdef LLVM_OLDER_THAN_11_0 - token = "-dwarf-column-info -debug-info-kind=limited " \ - "-dwarf-version=4 -debugger-tuning=gdb"; -+#else -+ token = "-debug-info-kind=limited " \ -+ "-dwarf-version=4 -debugger-tuning=gdb"; -+#endif - } - else if (strncmp (token, "-D", 2) == 0 || strncmp (token, "-I", 2) == 0) - { - -From 8e91f2aaba823fa1e3d059c9dc21a8f2a8e56dca Mon Sep 17 00:00:00 2001 -From: Michal Babej <michal.ba...@tuni.fi> -Date: Wed, 23 Sep 2020 22:06:35 +0300 -Subject: [PATCH 6/6] AMD SDK 3.0: fix SobelFilter - -with C99 and OpenCL, if conversion from float to int -without saturation is called with argument outside integer -range, behaviour is unspecified. - -SobelFilter uses convert_uchar4(float4) in OpenCL and simple -typecast in reference C code, both of which resulted in -code truncating floats to uchar range. Until LLVM 11, which -now generates x86 instructions which cause saturation. - -It seems it's not possible to specify non-saturating conversion -in OpenCL, so this patch changes both the kernel code and the -reference C code to convert with saturation. - -(cherry picked from commit de7f4088e493775f68e11fd8c694d52290438401) ---- - examples/AMDSDK3.0/amdsdk3_0.patch | 31 +++++++++++++++++++++++++----- - 1 file changed, 26 insertions(+), 5 deletions(-) - -diff --git a/examples/AMDSDK3.0/amdsdk3_0.patch b/examples/AMDSDK3.0/amdsdk3_0.patch -index 2419fc54..5f2b57fe 100644 ---- a/examples/AMDSDK3.0/amdsdk3_0.patch -+++ b/examples/AMDSDK3.0/amdsdk3_0.patch -@@ -89,10 +89,31 @@ - - - __kernel --@@ -162,4 +162,4 @@ -- -+--- a/AMD-APP-SDK-3.0/samples/opencl/cl/1.x/SobelFilter/SobelFilter.cpp 2020-09-23 14:19:55.137508386 +0300 -++++ b/AMD-APP-SDK-3.0/samples/opencl/cl/1.x/SobelFilter/SobelFilter.cpp 2020-09-23 14:22:33.230012800 +0300 -+@@ -550,8 +550,9 @@ -+ float gx2 = pow((float)gx, 2); -+ float gy2 = pow((float)gy, 2); -+ -+- -+- *(verificationOutput + i) = (cl_uchar)(sqrt(gx2 + gy2) / 2.0); -++ float tmp = sqrt(gx2 + gy2) / 2.0; -++ if (tmp > 255.0f) tmp = 255.0f; -++ *(verificationOutput + i) = (cl_uchar)(tmp); -+ } -+ -+ // if reached at the end of its row then incr k -+--- a/AMD-APP-SDK-3.0/samples/opencl/cl/1.x/SobelFilter/SobelFilter_Kernels.cl 2015-10-28 05:15:19.000000000 +0200 -++++ b/AMD-APP-SDK-3.0/samples/opencl/cl/1.x/SobelFilter/SobelFilter_Kernels.cl 2020-09-23 14:20:31.365623958 +0300 -+@@ -56,10 +56,8 @@ -+ Gy = i00 - i20 + (float4)(2)*i01 - (float4)(2)*i21 + i02 - i22; -+ -+ /* taking root of sums of squares of Gx and Gy */ -+- outputImage[c] = convert_uchar4(hypot(Gx, Gy)/(float4)(2)); -+- -++ outputImage[c] = convert_uchar4_sat(hypot(Gx, Gy)/(float4)(2)); -+ } -+- -+ } - - --- --\ No newline at end of file --+ -