From: Andreas Beckmann Date: Mon, 4 Feb 2019 23:39:59 +0000 (+0000) Subject: add support for a GENERIC cpu type that uses llvm defaults X-Git-Tag: archive/raspbian/1.6-3+rpi1~1^2^2~6 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=8b6f4bea910dae36f9e04cba817bc61f98eb806f;p=pocl.git add support for a GENERIC cpu type that uses llvm defaults Gbp-Pq: Name generic-cpu.patch --- diff --git a/cmake/LLVM.cmake b/cmake/LLVM.cmake index 3b511a0..0ffdb9b 100644 --- a/cmake/LLVM.cmake +++ b/cmake/LLVM.cmake @@ -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() diff --git a/lib/CL/devices/basic/basic.c b/lib/CL/devices/basic/basic.c index ee3c6ca..84b1b7a 100644 --- a/lib/CL/devices/basic/basic.c +++ b/lib/CL/devices/basic/basic.c @@ -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 = ""; diff --git a/lib/CL/pocl_llvm_build.cc b/lib/CL/pocl_llvm_build.cc index c2b4244..57ae983 100644 --- a/lib/CL/pocl_llvm_build.cc +++ b/lib/CL/pocl_llvm_build.cc @@ -840,7 +840,7 @@ kernel_library kernellib += getX86KernelLibName(); else #endif - kernellib += device->llvm_cpu; + kernellib += device->llvm_cpu ? device->llvm_cpu : "GENERIC"; } kernellib += ".bc"; diff --git a/lib/kernel/host/CMakeLists.txt b/lib/kernel/host/CMakeLists.txt index b4f86ef..ffb9e63 100644 --- a/lib/kernel/host/CMakeLists.txt +++ b/lib/kernel/host/CMakeLists.txt @@ -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}