[PATCH 1012/1017] _cl_device_id: add const char* kernellib_name
authorAndreas Beckmann <anbe@debian.org>
Sat, 9 Apr 2022 13:28:42 +0000 (15:28 +0200)
committerAndreas Beckmann <anbe@debian.org>
Tue, 17 Jan 2023 13:11:18 +0000 (13:11 +0000)
determine the value at the same time as llvm_cpu, if possible

Gbp-Pq: Name 1012-_cl_device_id-add-const-char-kernellib_name.patch

lib/CL/devices/common.c
lib/CL/pocl_cl.h
lib/CL/pocl_llvm_build.cc

index 45c5f3a726248bc64cf519344ae535f95f003946..8d8ed87e83fc197cabe6c805ddab4e95c5954abc 100644 (file)
@@ -1584,13 +1584,19 @@ pocl_init_default_device_infos (cl_device_id dev)
 #ifdef ENABLE_LLVM
 
   dev->llvm_target_triplet = OCL_KERNEL_TARGET;
-#ifdef HOST_CPU_FORCED
+#if defined(KERNELLIB_HOST_DISTRO_VARIANTS)
+  dev->kernellib_name = pocl_get_distro_kernellib_name ();
+  dev->llvm_cpu = pocl_get_distro_cpu_name (dev->kernellib_name);
+#elif defined(HOST_CPU_FORCED)
+  dev->kernellib_name = OCL_KERNEL_TARGET_CPU;
   dev->llvm_cpu = OCL_KERNEL_TARGET_CPU;
 #else
+  dev->kernellib_name = NULL;
   dev->llvm_cpu = pocl_get_llvm_cpu_name ();
 #endif
 
 #else /* No compiler, no CPU info */
+  dev->kernellib_name = NULL;
   dev->llvm_cpu = NULL;
   dev->llvm_target_triplet = "";
 #endif
index 6945d8a2b60c291858b85ae070e6154e17d57d19..beaf881f4834413412283641efe98d39cdcf53b1 100644 (file)
@@ -1015,7 +1015,9 @@ struct _cl_device_id {
 
   void *data;
   const char* llvm_target_triplet; /* the llvm target triplet to use */
+  const char *kernellib_name;      /* the kernellib variant to use */
   const char* llvm_cpu; /* the llvm CPU variant to use */
+
   /* A running number (starting from zero) across all the device instances.
      Used for indexing arrays in data structures with device specific
      entries. */
index 7bee43124140f927f614c0753d1d3af88d5ce7e8..1b0b6a00e43c99494cf7c8c58a9dacb1f6234ed2 100644 (file)
@@ -953,10 +953,8 @@ static llvm::Module *getKernelLibrary(cl_device_id device,
 
   if (is_host) {
     kernellib += '-';
-#ifdef KERNELLIB_HOST_DISTRO_VARIANTS
-    kernellib += pocl_get_distro_kernellib_name();
-#elif defined(HOST_CPU_FORCED)
-    kernellib += OCL_KERNEL_TARGET_CPU;
+#if defined(KERNELLIB_HOST_DISTRO_VARIANTS) || defined(HOST_CPU_FORCED)
+    kernellib += device->kernellib_name;
 #else
     kernellib_fallback = kernellib;
     kernellib_fallback += OCL_KERNEL_TARGET_CPU;