[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, 13 Dec 2022 03:08:31 +0000 (03:08 +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 47fe0855ec2e16b56ab942fca8ca1f515105651b..1481e627c64663bf0c35cd07159da7091ff52d76 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 461009b01245e89fbe5aae7be654e9e009573939..fc9f22536d8d4f24a5f53b01f50d0724331a923e 100644 (file)
@@ -963,7 +963,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 38fe1aa009e202d0450aa315b79038a867aa609a..38de9802ed1b1e4acc042c0d6343165db19da3c9 100644 (file)
@@ -935,10 +935,8 @@ static llvm::Module *getKernelLibrary(cl_device_id device,
   kernellib += device->llvm_target_triplet;
   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;