From e108635de69d1eb76c420334bed3d75e882055c5 Mon Sep 17 00:00:00 2001 From: Andreas Beckmann Date: Sat, 9 Apr 2022 15:28:42 +0200 Subject: [PATCH] [PATCH 1012/1017] _cl_device_id: add const char* kernellib_name 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 | 8 +++++++- lib/CL/pocl_cl.h | 2 ++ lib/CL/pocl_llvm_build.cc | 6 ++---- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/CL/devices/common.c b/lib/CL/devices/common.c index 47fe085..1481e62 100644 --- a/lib/CL/devices/common.c +++ b/lib/CL/devices/common.c @@ -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 diff --git a/lib/CL/pocl_cl.h b/lib/CL/pocl_cl.h index 461009b..fc9f225 100644 --- a/lib/CL/pocl_cl.h +++ b/lib/CL/pocl_cl.h @@ -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. */ diff --git a/lib/CL/pocl_llvm_build.cc b/lib/CL/pocl_llvm_build.cc index 38fe1aa..38de980 100644 --- a/lib/CL/pocl_llvm_build.cc +++ b/lib/CL/pocl_llvm_build.cc @@ -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; -- 2.30.2