From: Andreas Beckmann Date: Sat, 9 Apr 2022 13:28:42 +0000 (+0200) Subject: [PATCH 38/42] _cl_device_id: add const char* kernellib_name X-Git-Tag: archive/raspbian/4.0-3+rpi1^2~12 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=2a4792363e6ed3fe7204a08615763f14253974b2;p=pocl.git [PATCH 38/42] _cl_device_id: add const char* kernellib_name 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 --- diff --git a/lib/CL/devices/common.c b/lib/CL/devices/common.c index 7748122..4b2e3f5 100644 --- a/lib/CL/devices/common.c +++ b/lib/CL/devices/common.c @@ -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 diff --git a/lib/CL/pocl_cl.h b/lib/CL/pocl_cl.h index 0d7e924..8f08e92 100644 --- a/lib/CL/pocl_cl.h +++ b/lib/CL/pocl_cl.h @@ -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. */ diff --git a/lib/CL/pocl_llvm_build.cc b/lib/CL/pocl_llvm_build.cc index 257d80e..59e5780 100644 --- a/lib/CL/pocl_llvm_build.cc +++ b/lib/CL/pocl_llvm_build.cc @@ -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;