# Some architectures have -march and -mcpu reversed
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()
message(STATUS " Using ${CLANG_MARCH_FLAG}")
set(CLANG_MARCH_FLAG ${CLANG_MARCH_FLAG} CACHE INTERNAL "Clang option used to specify the target cpu")
dev->llvm_cpu = pocl_get_llvm_cpu_name ();
#endif
+ if(dev->llvm_cpu && (!strcmp(dev->llvm_cpu, "GENERIC")))
+ dev->llvm_cpu = NULL;
+
#else /* No compiler, no CPU info */
dev->kernellib_name = NULL;
dev->llvm_cpu = NULL;
kernellib_fallback = kernellib;
kernellib_fallback += OCL_KERNEL_TARGET_CPU;
kernellib_fallback += ".bc";
- if (device->llvm_cpu)
- kernellib += device->llvm_cpu;
+ kernellib += device->llvm_cpu ? device->llvm_cpu : "GENERIC";
#endif
}
kernellib += ".bc";
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}