option(BUILD_AVX512 "Enabling support for AVX512" OFF)
option(BUILD_AVX512VBMI "Enabling support for AVX512VBMI" OFF)
-set(SKYLAKE_FLAG "-march=skylake-avx512")
-set(ICELAKE_FLAG "-march=icelake-server")
+set(SKYLAKE_ARCH "skylake-avx512")
+set(ICELAKE_ARCH "icelake-server")
+set(SKYLAKE_FLAG "-march=${SKYLAKE_ARCH}")
+set(ICELAKE_FLAG "-march=${ICELAKE_ARCH}")
if (NOT FAT_RUNTIME)
if (BUILD_AVX512VBMI)
message (STATUS "AVX512VBMI implies AVX512, enabling BUILD_AVX512")
set(BUILD_AVX512 ON)
+ set(BUILD_AVX2 ON)
set(ARCH_C_FLAGS "${ICELAKE_FLAG}")
set(ARCH_CXX_FLAGS "${ICELAKE_FLAG}")
- endif ()
- if (BUILD_AVX512)
+ set(X86_ARCH "${ICELAKE_ARCH}")
+ elseif (BUILD_AVX512)
message (STATUS "AVX512 implies AVX2, enabling BUILD_AVX2")
set(BUILD_AVX2 ON)
set(ARCH_C_FLAGS "${SKYLAKE_FLAG}")
set(ARCH_CXX_FLAGS "${SKYLAKE_FLAG}")
- endif ()
- if (BUILD_AVX2)
+ set(X86_ARCH "${SKYLAKE_ARCH}")
+ elseif (BUILD_AVX2)
message (STATUS "Enabling BUILD_AVX2")
set(ARCH_C_FLAGS "-mavx2")
set(ARCH_CXX_FLAGS "-mavx2")
+ set(X86_ARCH "core-avx2")
else()
set(ARCH_C_FLAGS "-msse4.2")
set(ARCH_CXX_FLAGS "-msse4.2")
+ set(X86_ARCH "core-i7")
endif()
else()
set(BUILD_AVX512VBMI ON)
set(BUILD_AVX2 ON)
set(ARCH_C_FLAGS "-msse4.2")
set(ARCH_CXX_FLAGS "-msse4.2")
+ set(X86_ARCH "x86-64-v2")
endif()
set(CMAKE_REQUIRED_FLAGS "${ARCH_C_FLAGS}")