[PATCH 38/42] _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, 12 Dec 2023 15:33:19 +0000 (16:33 +0100)
determine the value at the same time as llvm_cpu, if possible

Gbp-Pq: Name 0038-_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 7748122fd9e974df68e713d7bbb50043cba4f3f4..4b2e3f54babfda793fca7a6708a71ae3e79192f8 100644 (file)
@@ -1660,13 +1660,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 0d7e924156b68d6cf06e277f12cb435a92f00775..8f08e92ad0f103121b1548efb59f81cf7b677649 100644 (file)
@@ -1053,8 +1053,10 @@ 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 */
   const char* llvm_fp_contract_mode; /* the floating point contract mde 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 257d80e8200262dfa316241cf57431f25a4a0b50..59e5780b718c35211001ac38d05b1dc8fbc856cb 100644 (file)
@@ -1006,10 +1006,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;