add BUILD_AVX2 definition, enable non-AVX2 building selectively

This commit is contained in:
Konstantinos Margaritis
2021-02-15 13:46:30 +02:00
committed by Konstantinos Margaritis
parent c078d355b6
commit 814045201f
5 changed files with 87 additions and 70 deletions

View File

@@ -28,6 +28,9 @@ if (BUILD_AVX512VBMI)
endif ()
if (FAT_RUNTIME)
if (NOT DEFINED(BUILD_AVX2))
set(BUILD_AVX2 TRUE)
endif ()
# test the highest level microarch to make sure everything works
if (BUILD_AVX512)
if (BUILD_AVX512VBMI)
@@ -35,8 +38,10 @@ if (FAT_RUNTIME)
else ()
set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} ${SKYLAKE_FLAG}")
endif (BUILD_AVX512VBMI)
else ()
elseif (BUILD_AVX2)
set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} -march=core-avx2")
elseif ()
set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} -march=core-i7")
endif ()
else (NOT FAT_RUNTIME)
# if not fat runtime, then test given cflags
@@ -99,23 +104,23 @@ if (FAT_RUNTIME)
if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_SSSE3)
message(FATAL_ERROR "SSSE3 support required to build fat runtime")
endif ()
if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_AVX2)
if ((ARCH_IA32 OR ARCH_X86_64) AND BUILD_AVX2 AND NOT HAVE_AVX2)
message(FATAL_ERROR "AVX2 support required to build fat runtime")
endif ()
if ((ARCH_IA32 OR ARCH_X86_64) AND BUILD_AVX512 AND NOT HAVE_AVX512)
message(FATAL_ERROR "AVX512 support requested but not supported")
endif ()
if (BUILD_AVX512VBMI AND NOT HAVE_AVX512VBMI)
if ((ARCH_IA32 OR ARCH_X86_64) AND BUILD_AVX512VBMI AND NOT HAVE_AVX512VBMI)
message(FATAL_ERROR "AVX512VBMI support requested but not supported")
endif ()
else (NOT FAT_RUNTIME)
if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_AVX2)
if ((ARCH_IA32 OR ARCH_X86_64) AND NOT BUILD_AVX2)
message(STATUS "Building without AVX2 support")
endif ()
if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_AVX512)
message(STATUS "Building without AVX512 support")
endif ()
if (ARCH_IA32 OR ARCH_X86_64 AND NOT HAVE_AVX512VBMI)
if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_AVX512VBMI)
message(STATUS "Building without AVX512VBMI support")
endif ()
if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_SSSE3)

View File

@@ -27,6 +27,9 @@
/* Define if building "fat" runtime. */
#cmakedefine FAT_RUNTIME
/* Define if building AVX2 in the fat runtime. */
#cmakedefine BUILD_AVX2
/* Define if building AVX-512 in the fat runtime. */
#cmakedefine BUILD_AVX512