pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/parallel/pocl



Module Name:    pkgsrc
Committed By:   adam
Date:           Fri May  9 06:05:19 UTC 2025

Modified Files:
        pkgsrc/parallel/pocl: Makefile distinfo
Added Files:
        pkgsrc/parallel/pocl/patches: patch-cmake_LLVM.cmake
            patch-include___kernel.h patch-lib_CL_pocl__llvm__metadata.cc
            patch-lib_CL_pocl__llvm__utils.cc
            patch-lib_llvmopencl_CMakeLists.txt
            patch-lib_llvmopencl_DebugHelpers.cc
            patch-lib_llvmopencl_Flatten.cc
            patch-lib_llvmopencl_FlattenBarrierSubs.cc
            patch-lib_llvmopencl_FlattenGlobals.cc
            patch-lib_llvmopencl_LLVMUtils.cc
            patch-lib_llvmopencl_MinLegalVecSize.cc
            patch-lib_llvmopencl_OptimizeWorkItemFuncCalls.cc
            patch-lib_llvmopencl_VariableUniformityAnalysis.cc
            patch-lib_llvmopencl_Workgroup.cc
            patch-lib_llvmopencl_WorkitemHandler.cc
            patch-lib_llvmopencl_linker.cpp

Log Message:
pocl: add LLVM 19 support


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 pkgsrc/parallel/pocl/Makefile
cvs rdiff -u -r1.10 -r1.11 pkgsrc/parallel/pocl/distinfo
cvs rdiff -u -r0 -r1.1 pkgsrc/parallel/pocl/patches/patch-cmake_LLVM.cmake \
    pkgsrc/parallel/pocl/patches/patch-include___kernel.h \
    pkgsrc/parallel/pocl/patches/patch-lib_CL_pocl__llvm__metadata.cc \
    pkgsrc/parallel/pocl/patches/patch-lib_CL_pocl__llvm__utils.cc \
    pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_CMakeLists.txt \
    pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_DebugHelpers.cc \
    pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_Flatten.cc \
    pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_FlattenBarrierSubs.cc \
    pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_FlattenGlobals.cc \
    pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_LLVMUtils.cc \
    pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_MinLegalVecSize.cc \
    pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_OptimizeWorkItemFuncCalls.cc \
    pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_VariableUniformityAnalysis.cc \
    pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_Workgroup.cc \
    pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_WorkitemHandler.cc \
    pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_linker.cpp

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/parallel/pocl/Makefile
diff -u pkgsrc/parallel/pocl/Makefile:1.24 pkgsrc/parallel/pocl/Makefile:1.25
--- pkgsrc/parallel/pocl/Makefile:1.24  Tue Apr 22 16:07:26 2025
+++ pkgsrc/parallel/pocl/Makefile       Fri May  9 06:05:18 2025
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.24 2025/04/22 16:07:26 nia Exp $
+# $NetBSD: Makefile,v 1.25 2025/05/09 06:05:18 adam Exp $
 
 DISTNAME=      pocl-6.0
 PKGREVISION=   4
@@ -7,7 +7,7 @@ MASTER_SITES=   ${MASTER_SITE_GITHUB:=pocl
 GITHUB_TAG=    v${PKGVERSION_NOREV}
 
 MAINTAINER=    pkgsrc-users%NetBSD.org@localhost
-HOMEPAGE=      http://portablecl.org/
+HOMEPAGE=      https://portablecl.org/
 COMMENT=       Portable implementation of the OpenCL standard
 LICENSE=       mit
 

Index: pkgsrc/parallel/pocl/distinfo
diff -u pkgsrc/parallel/pocl/distinfo:1.10 pkgsrc/parallel/pocl/distinfo:1.11
--- pkgsrc/parallel/pocl/distinfo:1.10  Sat Aug  3 09:54:16 2024
+++ pkgsrc/parallel/pocl/distinfo       Fri May  9 06:05:18 2025
@@ -1,7 +1,23 @@
-$NetBSD: distinfo,v 1.10 2024/08/03 09:54:16 nia Exp $
+$NetBSD: distinfo,v 1.11 2025/05/09 06:05:18 adam Exp $
 
 BLAKE2s (pocl-6.0.tar.gz) = 41c872fa3c88593a4f9eecc1788cabb68b0c34906ec9d88ab545f449f3a0ce75
 SHA512 (pocl-6.0.tar.gz) = a24efadbbb81c810cd5c4bbb8abfa75b9bbdfeca786e8471dd75d40a78024d04c1b5c5a7114e75e1eb70a1b6a3756bb47ba741de0f1c4d1416fbce4688d62cc0
 Size (pocl-6.0.tar.gz) = 2466652 bytes
+SHA1 (patch-cmake_LLVM.cmake) = 4c056279c8cc9dd4cbf9d7e9eda2940f0090fc2c
+SHA1 (patch-include___kernel.h) = 4b99b4c70772583a869313539fb843ac4e09b3d0
 SHA1 (patch-lib_CL_clReleaseCommandBufferKHR.c) = e7ff54e189527b58ff719c51e0d365b3096a7607
 SHA1 (patch-lib_CL_devices_proxy_pocl__proxy.c) = 774f4a9425c7d5f2820d4c8858a90ce8299b8897
+SHA1 (patch-lib_CL_pocl__llvm__metadata.cc) = 123c43656130e86ec242012b05654aed320e2ac6
+SHA1 (patch-lib_CL_pocl__llvm__utils.cc) = 2dbc7848bebb9b8d37bffb8b367c465982a0d746
+SHA1 (patch-lib_llvmopencl_CMakeLists.txt) = 7e7dcb754a097496cc76c65c10a4d20d857f3ade
+SHA1 (patch-lib_llvmopencl_DebugHelpers.cc) = 01638488299b5f409d9f1c3478862647b0d9d0f7
+SHA1 (patch-lib_llvmopencl_Flatten.cc) = 8775190c709326d2629b6572244d0e1f319023e9
+SHA1 (patch-lib_llvmopencl_FlattenBarrierSubs.cc) = fdc2d1da22ed23dea333f5a6b465d15a635c7283
+SHA1 (patch-lib_llvmopencl_FlattenGlobals.cc) = b828b0263117c910b6cd1502543cf5791379a9d4
+SHA1 (patch-lib_llvmopencl_LLVMUtils.cc) = 6c665e1dde05357bc9461048172d3fe8013eb302
+SHA1 (patch-lib_llvmopencl_MinLegalVecSize.cc) = b7dd9c3df472eb81754e046b2169b8f1b7013d48
+SHA1 (patch-lib_llvmopencl_OptimizeWorkItemFuncCalls.cc) = 9f61cb59e614a22c72b1d289d87cf038b81a07b2
+SHA1 (patch-lib_llvmopencl_VariableUniformityAnalysis.cc) = be800311ff41a322e4b64eba513b50568b4c7cbe
+SHA1 (patch-lib_llvmopencl_Workgroup.cc) = 258e7b75b7ea9478f7c956744716a7367a8cbbf8
+SHA1 (patch-lib_llvmopencl_WorkitemHandler.cc) = 8b8ccf078250a6378c6f8125692cc6d46abe1364
+SHA1 (patch-lib_llvmopencl_linker.cpp) = 94b313e8639870fd06af84e9ad1257c5eb171867

Added files:

Index: pkgsrc/parallel/pocl/patches/patch-cmake_LLVM.cmake
diff -u /dev/null pkgsrc/parallel/pocl/patches/patch-cmake_LLVM.cmake:1.1
--- /dev/null   Fri May  9 06:05:19 2025
+++ pkgsrc/parallel/pocl/patches/patch-cmake_LLVM.cmake Fri May  9 06:05:18 2025
@@ -0,0 +1,19 @@
+$NetBSD: patch-cmake_LLVM.cmake,v 1.1 2025/05/09 06:05:18 adam Exp $
+
+Support LLVM 19.
+
+--- cmake/LLVM.cmake.orig      2025-05-03 06:02:25.986630878 +0000
++++ cmake/LLVM.cmake
+@@ -185,8 +185,11 @@ elseif(LLVM_VERSION MATCHES "^17[.]")
+ elseif(LLVM_VERSION MATCHES "^18[.]")
+   set(LLVM_MAJOR 18)
+   set(LLVM_18_0 1)
++elseif(LLVM_VERSION MATCHES "^19[.]")
++  set(LLVM_MAJOR 19)
++  set(LLVM_19_0 1)
+ else()
+-  message(FATAL_ERROR "LLVM version between 14.0 and 18.0 required, found: ${LLVM_VERSION}")
++  message(FATAL_ERROR "LLVM version between 14.0 and 19.0 required, found: ${LLVM_VERSION}")
+ endif()
+ 
+ #############################################################
Index: pkgsrc/parallel/pocl/patches/patch-include___kernel.h
diff -u /dev/null pkgsrc/parallel/pocl/patches/patch-include___kernel.h:1.1
--- /dev/null   Fri May  9 06:05:19 2025
+++ pkgsrc/parallel/pocl/patches/patch-include___kernel.h       Fri May  9 06:05:18 2025
@@ -0,0 +1,18 @@
+$NetBSD: patch-include___kernel.h,v 1.1 2025/05/09 06:05:18 adam Exp $
+
+Support LLVM 19.
+
+--- include/_kernel.h.orig     2025-05-03 06:04:20.489478228 +0000
++++ include/_kernel.h
+@@ -143,6 +143,11 @@
+ #undef LLVM_18_0
+ #define LLVM_18_0
+ 
++#elif (__clang_major__ == 19)
++
++#undef LLVM_19_0
++#define LLVM_19_0
++
+ #else
+ 
+ #error Unsupported Clang/LLVM version.
Index: pkgsrc/parallel/pocl/patches/patch-lib_CL_pocl__llvm__metadata.cc
diff -u /dev/null pkgsrc/parallel/pocl/patches/patch-lib_CL_pocl__llvm__metadata.cc:1.1
--- /dev/null   Fri May  9 06:05:19 2025
+++ pkgsrc/parallel/pocl/patches/patch-lib_CL_pocl__llvm__metadata.cc   Fri May  9 06:05:18 2025
@@ -0,0 +1,53 @@
+$NetBSD: patch-lib_CL_pocl__llvm__metadata.cc,v 1.1 2025/05/09 06:05:18 adam Exp $
+
+Support LLVM 19.
+
+--- lib/CL/pocl_llvm_metadata.cc.orig  2024-06-18 12:15:45.000000000 +0000
++++ lib/CL/pocl_llvm_metadata.cc
+@@ -52,10 +52,10 @@ using namespace llvm;
+ static inline bool is_image_type(const llvm::Type &t) {
+   if (t.isPointerTy() && t.getPointerElementType()->isStructTy()) {
+     llvm::StringRef name = t.getPointerElementType()->getStructName();
+-    if (name.startswith("opencl.image2d_") ||
+-        name.startswith("opencl.image3d_") ||
+-        name.startswith("opencl.image1d_") ||
+-        name.startswith("struct._pocl_image"))
++    if (name.starts_with("opencl.image2d_") ||
++        name.starts_with("opencl.image3d_") ||
++        name.starts_with("opencl.image1d_") ||
++        name.starts_with("struct._pocl_image"))
+       return true;
+   }
+   return false;
+@@ -64,7 +64,7 @@ static inline bool is_image_type(const l
+ static inline bool is_sampler_type(const llvm::Type &t) {
+   if (t.isPointerTy() && t.getPointerElementType()->isStructTy()) {
+     llvm::StringRef name = t.getPointerElementType()->getStructName();
+-    if (name.startswith("opencl.sampler_t"))
++    if (name.starts_with("opencl.sampler_t"))
+       return true;
+   }
+   return false;
+@@ -79,8 +79,8 @@ static inline bool is_image_type(struct
+     llvm::StringRef name(ArgInfo.type_name);
+     if ((has_arg_meta & POCL_HAS_KERNEL_ARG_ACCESS_QUALIFIER) &&
+         (ArgInfo.access_qualifier != CL_KERNEL_ARG_ACCESS_NONE)) {
+-      if (name.startswith("image2d_") || name.startswith("image3d_") ||
+-          name.startswith("image1d_") || name.startswith("_pocl_image"))
++      if (name.starts_with("image2d_") || name.starts_with("image3d_") ||
++          name.starts_with("image1d_") || name.starts_with("_pocl_image"))
+         return true;
+     }
+   }
+@@ -91,10 +91,7 @@ static inline bool is_sampler_type(struc
+                                    cl_bitfield has_arg_meta) {
+   assert(has_arg_meta & POCL_HAS_KERNEL_ARG_TYPE_NAME);
+   llvm::StringRef name(ArgInfo.type_name);
+-  if (name.equals("sampler_t"))
+-    return true;
+-  else
+-    return false;
++  return name == "sampler_t";
+ }
+ #endif
+ 
Index: pkgsrc/parallel/pocl/patches/patch-lib_CL_pocl__llvm__utils.cc
diff -u /dev/null pkgsrc/parallel/pocl/patches/patch-lib_CL_pocl__llvm__utils.cc:1.1
--- /dev/null   Fri May  9 06:05:19 2025
+++ pkgsrc/parallel/pocl/patches/patch-lib_CL_pocl__llvm__utils.cc      Fri May  9 06:05:18 2025
@@ -0,0 +1,86 @@
+$NetBSD: patch-lib_CL_pocl__llvm__utils.cc,v 1.1 2025/05/09 06:05:18 adam Exp $
+
+Support LLVM 19.
+
+--- lib/CL/pocl_llvm_utils.cc.orig     2025-05-03 06:22:51.273436819 +0000
++++ lib/CL/pocl_llvm_utils.cc
+@@ -257,11 +257,17 @@ const char *pocl_get_distro_kernellib_va
+   StringMap<bool> Features;
+
+ #if defined(__i386__) || defined(__x86_64__)
++
++#if LLVM_MAJOR < 19
+   if (!llvm::sys::getHostCPUFeatures(Features)) {
+     POCL_MSG_WARN("LLVM can't get host CPU flags!\n");
+     return NULL;
+   }
+ #else
++  Features = llvm::sys::getHostCPUFeatures();
++#endif
++
++#else
+   return pocl_get_llvm_cpu_name();
+ #endif
+
+@@ -295,11 +301,16 @@ const char *pocl_get_distro_cpu_name(con
+   StringMap<bool> Features;
+
+ #if defined(__i386__) || defined(__x86_64__)
++#if LLVM_MAJOR < 19
+   if (!llvm::sys::getHostCPUFeatures(Features)) {
+     POCL_MSG_WARN("LLVM can't get host CPU flags!\n");
+     return NULL;
+   }
+ #else
++   Features = llvm::sys::getHostCPUFeatures();
++ #endif
++
++#else
+   return pocl_get_llvm_cpu_name();
+ #endif
+
+@@ -327,24 +338,35 @@ int pocl_bitcode_is_triple(const char *b
+ // TODO this should be fixed to not require LLVM eventually,
+ // so that LLVM-less builds also report FMA correctly.
+ int cpu_has_fma() {
+-  StringMap<bool> features;
+-  bool res = llvm::sys::getHostCPUFeatures(features);
+-  return ((res && (features["fma"] || features["fma4"])) ? 1 : 0);
++  StringMap<bool> Features;
++#if LLVM_MAJOR < 19
++  bool Res = llvm::sys::getHostCPUFeatures(Features);
++#else
++  const bool Res = true;
++  Features = llvm::sys::getHostCPUFeatures();
++#endif
++  return ((Res && (Features["fma"] || Features["fma4"])) ? 1 : 0);
+ }
+
+ #define VECWIDTH(x)                                                            \
+   std::min(std::max((lane_width / (unsigned)(sizeof(x))), 1U), 16U)
+
+ void cpu_setup_vector_widths(cl_device_id dev) {
+-  StringMap<bool> features;
+-  bool res = llvm::sys::getHostCPUFeatures(features);
++  StringMap<bool> Features;
++  bool Res = true;
++#if LLVM_MAJOR < 19
++  Res = llvm::sys::getHostCPUFeatures(Features);
++#else
++  Features = llvm::sys::getHostCPUFeatures();
++#endif
++
+   unsigned lane_width = 1;
+-  if (res) {
+-    if ((features["sse"]) || (features["neon"]))
++  if (Res) {
++    if ((Features["sse"]) || (Features["neon"]))
+       lane_width = 16;
+-    if (features["avx"])
++    if (Features["avx"])
+       lane_width = 32;
+-    if (features["avx512f"])
++    if (Features["avx512f"])
+       lane_width = 64;
+   }
+   dev->native_vector_width_in_bits = lane_width * 8;
Index: pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_CMakeLists.txt
diff -u /dev/null pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_CMakeLists.txt:1.1
--- /dev/null   Fri May  9 06:05:19 2025
+++ pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_CMakeLists.txt    Fri May  9 06:05:18 2025
@@ -0,0 +1,15 @@
+$NetBSD: patch-lib_llvmopencl_CMakeLists.txt,v 1.1 2025/05/09 06:05:18 adam Exp $
+
+Support LLVM 19.
+
+--- lib/llvmopencl/CMakeLists.txt.orig 2025-05-03 06:28:23.578043394 +0000
++++ lib/llvmopencl/CMakeLists.txt
+@@ -35,8 +35,6 @@ set(LLVMPASSES_SOURCES "AllocasToEntry.c
+                        "Barrier.h"
+                        "BarrierTailReplication.cc"
+                        "BarrierTailReplication.h"
+-                       "BreakConstantGEPs.cpp"
+-                       "BreakConstantGEPs.h"
+                        "CanonicalizeBarriers.cc"
+                        "CanonicalizeBarriers.h"
+                        "DebugHelpers.cc"
Index: pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_DebugHelpers.cc
diff -u /dev/null pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_DebugHelpers.cc:1.1
--- /dev/null   Fri May  9 06:05:19 2025
+++ pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_DebugHelpers.cc   Fri May  9 06:05:18 2025
@@ -0,0 +1,24 @@
+$NetBSD: patch-lib_llvmopencl_DebugHelpers.cc,v 1.1 2025/05/09 06:05:18 adam Exp $
+
+Support LLVM 19.
+
+--- lib/llvmopencl/DebugHelpers.cc.orig        2025-05-03 06:32:07.508288902 +0000
++++ lib/llvmopencl/DebugHelpers.cc
+@@ -82,13 +82,13 @@ static void printBasicBlock(
+   s << ",label=\"" << b->getName().str() << ":\\n";
+
+   // The work-item loop control structures.
+-  if (b->getName().startswith("pregion_for_cond")) {
++  if (b->getName().starts_with("pregion_for_cond")) {
+     s << "wi-loop branch\\n";
+-  } else if (b->getName().startswith("pregion_for_inc")) {
++  } else if (b->getName().starts_with("pregion_for_inc")) {
+     s << "local_id_* increment\\n";
+-  } else if (b->getName().startswith("pregion_for_init")) {
++  } else if (b->getName().starts_with("pregion_for_init")) {
+     s << "wi-loop init\\n";
+-  } else if (b->getName().startswith("pregion_for_end")) {
++  } else if (b->getName().starts_with("pregion_for_end")) {
+     s << "wi-loop exit\\n";
+   } else {
+     // analyze the contents of the BB
Index: pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_Flatten.cc
diff -u /dev/null pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_Flatten.cc:1.1
--- /dev/null   Fri May  9 06:05:19 2025
+++ pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_Flatten.cc        Fri May  9 06:05:18 2025
@@ -0,0 +1,14 @@
+$NetBSD: patch-lib_llvmopencl_Flatten.cc,v 1.1 2025/05/09 06:05:18 adam Exp $
+
+Support LLVM 19.
+
+--- lib/llvmopencl/Flatten.cc.orig     2025-05-03 06:33:52.040026650 +0000
++++ lib/llvmopencl/Flatten.cc
+@@ -74,7 +74,7 @@ static bool flattenAll(Module &M) {
+
+   for (llvm::Module::iterator i = M.begin(), e = M.end(); i != e; ++i) {
+     llvm::Function *f = &*i;
+-    if (f->isDeclaration() || f->getName().startswith("__pocl_print") ||
++    if (f->isDeclaration() || f->getName().starts_with("__pocl_print") ||
+         AuxFuncs.find(f->getName().str()) != AuxFuncs.end())
+       continue;
Index: pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_FlattenBarrierSubs.cc
diff -u /dev/null pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_FlattenBarrierSubs.cc:1.1
--- /dev/null   Fri May  9 06:05:19 2025
+++ pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_FlattenBarrierSubs.cc     Fri May  9 06:05:18 2025
@@ -0,0 +1,15 @@
+$NetBSD: patch-lib_llvmopencl_FlattenBarrierSubs.cc,v 1.1 2025/05/09 06:05:18 adam Exp $
+
+Support LLVM 19.
+
+--- lib/llvmopencl/FlattenBarrierSubs.cc.orig  2025-05-03 06:34:58.933958001 +0000
++++ lib/llvmopencl/FlattenBarrierSubs.cc
+@@ -71,7 +71,7 @@ static bool recursivelyInlineBarrierUser
+       CallInst *CallInstr = dyn_cast<CallInst>(Instr);
+       Function *Callee = CallInstr->getCalledFunction();
+
+-      if ((Callee == nullptr) ||  Callee->getName().startswith("llvm."))
++      if ((Callee == nullptr) ||  Callee->getName().starts_with("llvm."))
+         continue;
+
+       if (llvm::isa<pocl::Barrier>(CallInstr))
Index: pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_FlattenGlobals.cc
diff -u /dev/null pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_FlattenGlobals.cc:1.1
--- /dev/null   Fri May  9 06:05:19 2025
+++ pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_FlattenGlobals.cc Fri May  9 06:05:18 2025
@@ -0,0 +1,15 @@
+$NetBSD: patch-lib_llvmopencl_FlattenGlobals.cc,v 1.1 2025/05/09 06:05:18 adam Exp $
+
+Support LLVM 19.
+
+--- lib/llvmopencl/FlattenGlobals.cc.orig      2025-05-03 06:29:36.030212660 +0000
++++ lib/llvmopencl/FlattenGlobals.cc
+@@ -111,7 +111,7 @@ static bool flattenGlobals(Module &M) {
+     llvm::Function *f = &*i;
+     if (f->isDeclaration())
+       continue;
+-    if (f->getName().equals(barrier)) {
++    if (f->getName() == barrier) {
+       f->removeFnAttr(Attribute::NoInline);
+       f->removeFnAttr(Attribute::OptimizeNone);
+       f->addFnAttr(Attribute::AlwaysInline);
Index: pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_LLVMUtils.cc
diff -u /dev/null pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_LLVMUtils.cc:1.1
--- /dev/null   Fri May  9 06:05:19 2025
+++ pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_LLVMUtils.cc      Fri May  9 06:05:18 2025
@@ -0,0 +1,49 @@
+$NetBSD: patch-lib_llvmopencl_LLVMUtils.cc,v 1.1 2025/05/09 06:05:18 adam Exp $
+
+Support LLVM 19.
+
+--- lib/llvmopencl/LLVMUtils.cc.orig   2024-06-18 12:15:45.000000000 +0000
++++ lib/llvmopencl/LLVMUtils.cc
+@@ -37,7 +37,6 @@ IGNORE_COMPILER_WARNING("-Wunused-parame
+ #include "AllocasToEntry.h"
+ #include "AutomaticLocals.h"
+ #include "BarrierTailReplication.h"
+-#include "BreakConstantGEPs.h"
+ #include "CanonicalizeBarriers.h"
+ #include "DebugHelpers.h"
+ #include "Flatten.hh"
+@@ -250,7 +249,7 @@ isAutomaticLocal(llvm::Function *F, llvm
+   std::string FuncName = F->getName().str();
+   if (!llvm::isa<llvm::PointerType>(Var.getType()) || Var.isConstant())
+     return false;
+-  if (Var.getName().startswith(FuncName + ".")) {
++  if (Var.getName().starts_with(FuncName + ".")) {
+     assert(isGVarUsedByFunction(&Var, F) == true);
+     return true;
+   }
+@@ -421,7 +420,7 @@ bool isKernelToProcess(const llvm::Funct
+     return false;
+   if (!F.hasName())
+     return false;
+-  if (F.getName().startswith("@llvm"))
++  if (F.getName().starts_with("@llvm"))
+     return false;
+
+   NamedMDNode *kernels = m->getNamedMetadata("opencl.kernels");
+@@ -456,7 +455,7 @@ void removeUnreachableSwitchCases(llvm::
+   for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI) {
+     BasicBlock *BB = &*FI;
+
+-    if (BB->hasName() && BB->getName().startswith("default.unreachable")) {
++    if (BB->hasName() && BB->getName().starts_with("default.unreachable")) {
+ #ifdef DEBUG_UNREACHABLE_SWITCH_REMOVAL
+       std::cerr << "##################################################\n";
+       std::cerr << "### converting unreachable block: " << (void *)BB << "\n";
+@@ -578,7 +577,6 @@ void registerPassBuilderPasses(llvm::Pas
+   AllocasToEntry::registerWithPB(PB);
+   AutomaticLocals::registerWithPB(PB);
+   BarrierTailReplication::registerWithPB(PB);
+-  BreakConstantGEPs::registerWithPB(PB);
+   CanonicalizeBarriers::registerWithPB(PB);
+   FlattenAll::registerWithPB(PB);
+   FlattenBarrierSubs::registerWithPB(PB);
Index: pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_MinLegalVecSize.cc
diff -u /dev/null pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_MinLegalVecSize.cc:1.1
--- /dev/null   Fri May  9 06:05:19 2025
+++ pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_MinLegalVecSize.cc        Fri May  9 06:05:18 2025
@@ -0,0 +1,33 @@
+$NetBSD: patch-lib_llvmopencl_MinLegalVecSize.cc,v 1.1 2025/05/09 06:05:18 adam Exp $
+
+Support LLVM 19.
+
+--- lib/llvmopencl/MinLegalVecSize.cc.orig     2025-05-03 06:41:11.677977719 +0000
++++ lib/llvmopencl/MinLegalVecSize.cc
+@@ -133,7 +133,7 @@ static uint64_t getAndFixLargestVecSize(
+       if (Callee == nullptr)
+         continue;
+
+-      if (Callee->hasName() && Callee->getName().startswith("llvm."))
++      if (Callee->hasName() && Callee->getName().starts_with("llvm."))
+         continue;
+
+       Calls.push_back(Callee);
+@@ -188,7 +188,7 @@ static bool fixMinVecSize(Module &M) {
+     llvm::Function *F = &*i;
+     if (F->isDeclaration())
+       continue;
+-    if (F->hasName() && F->getName().startswith("llvm."))
++    if (F->hasName() && F->getName().starts_with("llvm."))
+       continue;
+
+     // AttributeSet Attrs;
+@@ -219,7 +219,7 @@ static bool fixMinVecSize(Module &M) {
+     llvm::Function *F = &*i;
+     if (F->isDeclaration())
+       continue;
+-    if (F->hasName() && F->getName().startswith("llvm."))
++    if (F->hasName() && F->getName().starts_with("llvm."))
+       continue;
+     if (pocl::isKernelToProcess(*F))
+       continue;
Index: pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_OptimizeWorkItemFuncCalls.cc
diff -u /dev/null pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_OptimizeWorkItemFuncCalls.cc:1.1
--- /dev/null   Fri May  9 06:05:19 2025
+++ pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_OptimizeWorkItemFuncCalls.cc      Fri May  9 06:05:18 2025
@@ -0,0 +1,22 @@
+$NetBSD: patch-lib_llvmopencl_OptimizeWorkItemFuncCalls.cc,v 1.1 2025/05/09 06:05:18 adam Exp $
+
+Support LLVM 19.
+
+--- lib/llvmopencl/OptimizeWorkItemFuncCalls.cc.orig   2025-05-03 06:41:48.048591095 +0000
++++ lib/llvmopencl/OptimizeWorkItemFuncCalls.cc
+@@ -52,13 +52,13 @@ static bool optimizeWorkItemFuncCalls(Fu
+   // Let's avoid reoptimizing pocl_printf in the kernel compiler. It should
+   // be optimized already in the bitcode library, and we do not want to
+   // aggressively inline it to the kernel, causing compile time expansion.
+-  if (F.getName().startswith("__pocl_print") &&
++  if (F.getName().starts_with("__pocl_print") &&
+       !F.hasFnAttribute(Attribute::OptimizeNone)) {
+     F.addFnAttr(Attribute::OptimizeNone);
+     F.addFnAttr(Attribute::NoInline);
+   }
+
+-  if (F.getName().startswith("_") || F.hasFnAttribute(Attribute::OptimizeNone))
++  if (F.getName().starts_with("_") || F.hasFnAttribute(Attribute::OptimizeNone))
+     return false;
+
+   // Find calls to WI functions and unify them to a single call in the
Index: pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_VariableUniformityAnalysis.cc
diff -u /dev/null pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_VariableUniformityAnalysis.cc:1.1
--- /dev/null   Fri May  9 06:05:19 2025
+++ pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_VariableUniformityAnalysis.cc     Fri May  9 06:05:19 2025
@@ -0,0 +1,17 @@
+$NetBSD: patch-lib_llvmopencl_VariableUniformityAnalysis.cc,v 1.1 2025/05/09 06:05:19 adam Exp $
+
+Support LLVM 19.
+
+--- lib/llvmopencl/VariableUniformityAnalysis.cc.orig  2025-05-03 06:42:36.209606048 +0000
++++ lib/llvmopencl/VariableUniformityAnalysis.cc
+@@ -339,8 +339,8 @@ bool VariableUniformityAnalysisResult::i
+         CallInst *CallInstr = dyn_cast<CallInst>(user);
+         Function *Callee = CallInstr->getCalledFunction();
+         if (Callee != nullptr &&
+-            (Callee->getName().startswith("llvm.lifetime.end") ||
+-             Callee->getName().startswith("llvm.lifetime.start"))) {
++            (Callee->getName().starts_with("llvm.lifetime.end") ||
++             Callee->getName().starts_with("llvm.lifetime.start"))) {
+ #ifdef DEBUG_UNIFORMITY_ANALYSIS
+           std::cerr << "### alloca is used by llvm.lifetime" << std::endl;
+           user->dump();
Index: pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_Workgroup.cc
diff -u /dev/null pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_Workgroup.cc:1.1
--- /dev/null   Fri May  9 06:05:19 2025
+++ pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_Workgroup.cc      Fri May  9 06:05:19 2025
@@ -0,0 +1,48 @@
+$NetBSD: patch-lib_llvmopencl_Workgroup.cc,v 1.1 2025/05/09 06:05:19 adam Exp $
+
+Support LLVM 19.
+
+--- lib/llvmopencl/Workgroup.cc.orig   2025-05-03 06:43:51.271687868 +0000
++++ lib/llvmopencl/Workgroup.cc
+@@ -249,7 +249,7 @@ bool WorkgroupImpl::runOnModule(Module &
+     // linker's switch --wrap=symbol, where calls to the "symbol" are replaced
+     // with "__wrap_symbol" at link time.  These functions may not be referenced
+     // until final link and being deleted by LLVM optimizations before it.
+-    if (!i->isDeclaration() && !i->getName().startswith("__wrap_"))
++    if (!i->isDeclaration() && !i->getName().starts_with("__wrap_"))
+       i->setLinkage(Function::InternalLinkage);
+   }
+
+@@ -467,11 +467,11 @@ static bool callsPrintf(Function *F) {
+         continue;
+       Function *callee = CallInstr->getCalledFunction();
+
+-      if (callee->getName().startswith("llvm."))
++      if (callee->getName().starts_with("llvm."))
+         continue;
+-      if (callee->getName().equals("_cl_printf"))
++      if (callee->getName() == "_cl_printf")
+         return true;
+-      if (callee->getName().equals("__pocl_printf"))
++      if (callee->getName() == "__pocl_printf")
+         return true;
+       if (callsPrintf(callee))
+         return true;
+@@ -568,7 +568,7 @@ static void replacePrintfCalls(Value *pb
+       if (oldF == nullptr)
+         continue;
+
+-      if (oldF->getName().equals("_cl_printf")) {
++      if (oldF->getName() == "_cl_printf") {
+         ops.clear();
+         ops.push_back(pb);
+         ops.push_back(pbp);
+@@ -598,7 +598,7 @@ static void replacePrintfCalls(Value *pb
+         replaceCIMap.insert(
+             std::pair<CallInst *, CallInst *>(CallInstr, NewCI));
+       } else {
+-        if (!oldF->getName().startswith("llvm."))
++        if (!oldF->getName().starts_with("llvm."))
+           callsToCheck.push_back(CallInstr);
+       }
+     }
Index: pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_WorkitemHandler.cc
diff -u /dev/null pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_WorkitemHandler.cc:1.1
--- /dev/null   Fri May  9 06:05:19 2025
+++ pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_WorkitemHandler.cc        Fri May  9 06:05:19 2025
@@ -0,0 +1,15 @@
+$NetBSD: patch-lib_llvmopencl_WorkitemHandler.cc,v 1.1 2025/05/09 06:05:19 adam Exp $
+
+Support LLVM 19.
+
+--- lib/llvmopencl/WorkitemHandler.cc.orig     2024-06-18 12:15:45.000000000 +0000
++++ lib/llvmopencl/WorkitemHandler.cc
+@@ -179,7 +179,7 @@ bool WorkitemHandler::fixUndominatedVari
+               StringRef baseName;
+               std::pair< StringRef, StringRef > pieces = 
+                 operand->getName().rsplit('.');
+-              if (pieces.second.startswith("pocl_"))
++              if (pieces.second.starts_with("pocl_"))
+                 baseName = pieces.first;
+               else
+                 baseName = operand->getName();
Index: pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_linker.cpp
diff -u /dev/null pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_linker.cpp:1.1
--- /dev/null   Fri May  9 06:05:19 2025
+++ pkgsrc/parallel/pocl/patches/patch-lib_llvmopencl_linker.cpp        Fri May  9 06:05:19 2025
@@ -0,0 +1,41 @@
+$NetBSD: patch-lib_llvmopencl_linker.cpp,v 1.1 2025/05/09 06:05:19 adam Exp $
+
+Support LLVM 19.
+
+--- lib/llvmopencl/linker.cpp.orig     2025-05-03 06:36:30.822749420 +0000
++++ lib/llvmopencl/linker.cpp
+@@ -121,7 +121,7 @@ static void fixCallingConv(llvm::Module
+         CallInst *CallInstr = dyn_cast<CallInst>(Instr);
+         Function *Callee = CallInstr->getCalledFunction();
+
+-        if ((Callee == nullptr) || Callee->getName().startswith("llvm.") ||
++        if ((Callee == nullptr) || Callee->getName().starts_with("llvm.") ||
+             Callee->isDeclaration())
+           continue;
+
+@@ -434,9 +434,9 @@ int link(llvm::Module *Program, const ll
+       if (copy_func_callgraph(r, Lib, Program, vvm)) {
+         Function *f = Program->getFunction(r);
+
+-        if (f->getName().equals("__to_local") ||
+-            f->getName().equals("__to_global") ||
+-            f->getName().equals("__to_private")) {
++        if (f->getName() == "__to_local" ||
++            f->getName() == "__to_global" ||
++            f->getName() == "__to_private") {
+
+           // Special handling for the AS cast built-ins: They do not use
+           // type mangling, which complicates the CPU implementation which
+@@ -478,9 +478,9 @@ int link(llvm::Module *Program, const ll
+             (f->isDeclaration() &&
+              // A target might want to expose the C99 printf in case not supporting
+              // the OpenCL 1.2 printf.
+-             !f->getName().equals("printf") &&
+-             !f->getName().equals(pocl_sampler_handler) &&
+-             !f->getName().startswith(llvm_intrins))
++             f->getName() != "printf" &&
++             f->getName() != pocl_sampler_handler &&
++             !f->getName().starts_with(llvm_intrins))
+            ) {
+           Log.append("Cannot find symbol ");
+           Log.append(r.str());



Home | Main Index | Thread Index | Old Index