#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
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. */
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;