add support for a GENERIC cpu type that uses llvm defaults
authorAndreas Beckmann <anbe@debian.org>
Mon, 4 Feb 2019 23:39:59 +0000 (23:39 +0000)
committerAndreas Beckmann <anbe@debian.org>
Mon, 4 Feb 2019 23:39:59 +0000 (23:39 +0000)
Gbp-Pq: Name generic-cpu.patch

cmake/LLVM.cmake
lib/CL/devices/basic/basic.c
lib/CL/pocl_llvm_build.cc
lib/kernel/host/CMakeLists.txt

index 3b511a0107e3ffee42a7a8cd23352a2eabeb4f16..0ffdb9b2749513f40405b566f3e448fde9615c5b 100644 (file)
@@ -711,17 +711,25 @@ endif()
 
 if(NOT DEFINED ${CLANG_MARCH_FLAG})
   message(STATUS "Checking clang -march vs. -mcpu flag")
-  custom_try_compile_clang_silent("" "return 0;" RES ${CLANG_TARGET_OPTION}${LLC_TRIPLE} -march=${LLC_HOST_CPU})
+ if(LLC_HOST_CPU STREQUAL "GENERIC" AND NOT KERNELLIB_HOST_CPU_VARIANTS STREQUAL "distro")
+  set(CLANG_MARCH_FLAG "-None=")
+ else()
+  set(LLC_HOST_CPU_TEST "${LLC_HOST_CPU}")
+  if(LLC_HOST_CPU STREQUAL "GENERIC")
+    set(LLC_HOST_CPU_TEST "${LLC_HOST_CPU_AUTO}")
+  endif()
+  custom_try_compile_clang_silent("" "return 0;" RES ${CLANG_TARGET_OPTION}${LLC_TRIPLE} -march=${LLC_HOST_CPU_TEST})
   if(NOT RES)
     set(CLANG_MARCH_FLAG "-march=")
   else()
-    custom_try_compile_clang_silent("" "return 0;" RES ${CLANG_TARGET_OPTION}${LLC_TRIPLE} -mcpu=${LLC_HOST_CPU})
+    custom_try_compile_clang_silent("" "return 0;" RES ${CLANG_TARGET_OPTION}${LLC_TRIPLE} -mcpu=${LLC_HOST_CPU_TEST})
     if(NOT RES)
       set(CLANG_MARCH_FLAG "-mcpu=")
     else()
       message(FATAL_ERROR "Could not determine whether to use -march or -mcpu with clang")
     endif()
   endif()
+ endif()
 
   set(CLANG_MARCH_FLAG ${CLANG_MARCH_FLAG} CACHE INTERNAL "Clang option used to specify the target cpu")
 endif()
index ee3c6cadf7dce92493ee1226416df1c073cfcb93..84b1b7a064e6e37bd8729b5a121e5e114500ee51 100644 (file)
@@ -350,6 +350,9 @@ pocl_init_cpu_device_infos (cl_device_id dev)
   if(dev->llvm_cpu && (!strcmp(dev->llvm_cpu, "(unknown)")))
     dev->llvm_cpu = OCL_KERNEL_TARGET_CPU;
 
+  if(dev->llvm_cpu && (!strcmp(dev->llvm_cpu, "GENERIC")))
+    dev->llvm_cpu = NULL;
+
 #else /* No compiler, no CPU info */
   dev->llvm_cpu = NULL;
   dev->llvm_target_triplet = "";
index c2b42440e37c39be407fb0afe9867a6bfd341da2..57ae983ff42b1175b1cbfd136707e141538e26de 100644 (file)
@@ -840,7 +840,7 @@ kernel_library
       kernellib += getX86KernelLibName();
     else
 #endif
-      kernellib += device->llvm_cpu;
+      kernellib += device->llvm_cpu ? device->llvm_cpu : "GENERIC";
   }
   kernellib += ".bc";
 
index b4f86ef175c489735f343172ca44b048bd79b2d6..ffb9e63b31addc2ec693b227e4b215c011ce091c 100644 (file)
@@ -224,6 +224,11 @@ else()
   set(LLC_CPUFLAGS "-mcpu=${VARIANT}")
 endif()
 
+if("${VARIANT}" STREQUAL "GENERIC")
+  set(CLANG_CPUFLAGS "")
+  set(LLC_CPUFLAGS "")
+endif()
+
 separate_arguments(CLANG_CPUFLAGS)
 separate_arguments(LLC_CPUFLAGS)
 set(CLANG_FLAGS ${HOST_CLANG_FLAGS} ${CLANG_CPUFLAGS}