Fix cmake error on ICX under release mode.

This commit is contained in:
Chang, Harry 2020-08-26 05:39:10 +00:00 committed by Hong, Yang A
parent 0c4c149433
commit 1bd99d9318
2 changed files with 43 additions and 10 deletions

View File

@ -133,6 +133,13 @@ CMAKE_DEPENDENT_OPTION(DISABLE_ASSERTS "Disable assert(); Asserts are enabled in
option(BUILD_AVX512 "Experimental: support avx512 in the fat runtime" option(BUILD_AVX512 "Experimental: support avx512 in the fat runtime"
OFF) OFF)
option(BUILD_AVX512VBMI "Experimental: support avx512vbmi in the fat runtime"
OFF)
if (BUILD_AVX512VBMI)
set(BUILD_AVX512 ON)
endif ()
option(WINDOWS_ICC "Use Intel C++ Compiler on Windows, default off, requires ICC to be set in project" OFF) option(WINDOWS_ICC "Use Intel C++ Compiler on Windows, default off, requires ICC to be set in project" OFF)
# TODO: per platform config files? # TODO: per platform config files?
@ -277,6 +284,7 @@ else()
set(SKYLAKE_FLAG "-xCORE-AVX512") set(SKYLAKE_FLAG "-xCORE-AVX512")
else () else ()
set(SKYLAKE_FLAG "-march=skylake-avx512") set(SKYLAKE_FLAG "-march=skylake-avx512")
set(ICELAKE_FLAG "-march=icelake-server")
endif () endif ()
endif() endif()
@ -1224,10 +1232,17 @@ else (FAT_RUNTIME)
if (BUILD_AVX512) if (BUILD_AVX512)
add_library(hs_exec_avx512 OBJECT ${hs_exec_SRCS} ${hs_exec_avx2_SRCS}) add_library(hs_exec_avx512 OBJECT ${hs_exec_SRCS} ${hs_exec_avx2_SRCS})
list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_avx512>) list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_avx512>)
set_target_properties(hs_exec_avx512 PROPERTIES if (BUILD_AVX512VBMI)
COMPILE_FLAGS "${SKYLAKE_FLAG}" set_target_properties(hs_exec_avx512 PROPERTIES
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512 ${CMAKE_MODULE_PATH}/keep.syms.in" COMPILE_FLAGS "${ICELAKE_FLAG}"
) RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512 ${CMAKE_MODULE_PATH}/keep.syms.in"
)
else ()
set_target_properties(hs_exec_avx512 PROPERTIES
COMPILE_FLAGS "${SKYLAKE_FLAG}"
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512 ${CMAKE_MODULE_PATH}/keep.syms.in"
)
endif (BUILD_AVX512VBMI)
endif (BUILD_AVX512) endif (BUILD_AVX512)
add_library(hs_exec_common OBJECT add_library(hs_exec_common OBJECT
@ -1281,11 +1296,19 @@ else (FAT_RUNTIME)
if (BUILD_AVX512) if (BUILD_AVX512)
add_library(hs_exec_shared_avx512 OBJECT ${hs_exec_SRCS} ${hs_exec_avx2_SRCS}) add_library(hs_exec_shared_avx512 OBJECT ${hs_exec_SRCS} ${hs_exec_avx2_SRCS})
list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_avx512>) list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_avx512>)
set_target_properties(hs_exec_shared_avx512 PROPERTIES if (BUILD_AVX512VBMI)
COMPILE_FLAGS "${SKYLAKE_FLAG}" set_target_properties(hs_exec_shared_avx512 PROPERTIES
POSITION_INDEPENDENT_CODE TRUE COMPILE_FLAGS "${ICELAKE_FLAG}"
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512 ${CMAKE_MODULE_PATH}/keep.syms.in" POSITION_INDEPENDENT_CODE TRUE
) RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512 ${CMAKE_MODULE_PATH}/keep.syms.in"
)
else ()
set_target_properties(hs_exec_shared_avx512 PROPERTIES
COMPILE_FLAGS "${SKYLAKE_FLAG}"
POSITION_INDEPENDENT_CODE TRUE
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512 ${CMAKE_MODULE_PATH}/keep.syms.in"
)
endif (BUILD_AVX512VBMI)
endif (BUILD_AVX512) endif (BUILD_AVX512)
add_library(hs_exec_common_shared OBJECT add_library(hs_exec_common_shared OBJECT
${hs_exec_common_SRCS} ${hs_exec_common_SRCS}

View File

@ -20,7 +20,11 @@ endif ()
if (FAT_RUNTIME) if (FAT_RUNTIME)
# test the highest level microarch to make sure everything works # test the highest level microarch to make sure everything works
if (BUILD_AVX512) if (BUILD_AVX512)
set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} ${SKYLAKE_FLAG}") if (BUILD_AVX512VBMI)
set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} ${ICELAKE_FLAG}")
else ()
set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} ${SKYLAKE_FLAG}")
endif (BUILD_AVX512VBMI)
else () else ()
set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} -march=core-avx2") set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} -march=core-avx2")
endif () endif ()
@ -80,6 +84,9 @@ if (FAT_RUNTIME)
if (BUILD_AVX512 AND NOT HAVE_AVX512) if (BUILD_AVX512 AND NOT HAVE_AVX512)
message(FATAL_ERROR "AVX512 support requested but not supported") message(FATAL_ERROR "AVX512 support requested but not supported")
endif () endif ()
if (BUILD_AVX512VBMI AND NOT HAVE_AVX512VBMI)
message(FATAL_ERROR "AVX512VBMI support requested but not supported")
endif ()
else (NOT FAT_RUNTIME) else (NOT FAT_RUNTIME)
if (NOT HAVE_AVX2) if (NOT HAVE_AVX2)
message(STATUS "Building without AVX2 support") message(STATUS "Building without AVX2 support")
@ -87,6 +94,9 @@ else (NOT FAT_RUNTIME)
if (NOT HAVE_AVX512) if (NOT HAVE_AVX512)
message(STATUS "Building without AVX512 support") message(STATUS "Building without AVX512 support")
endif () endif ()
if (NOT HAVE_AVX512VBMI)
message(STATUS "Building without AVX512VBMI support")
endif ()
if (NOT HAVE_SSSE3) if (NOT HAVE_SSSE3)
message(FATAL_ERROR "A minimum of SSSE3 compiler support is required") message(FATAL_ERROR "A minimum of SSSE3 compiler support is required")
endif () endif ()