|
@@ -17,6 +17,7 @@ option(USE_SSE4_1 "Enable SSE4.1" ON)
|
|
|
option(USE_SSE4_2 "Enable SSE4.2" ON)
|
|
|
option(USE_AVX "Enable AVX" ON)
|
|
|
option(USE_AVX2 "Enable AVX2" ON)
|
|
|
+option(USE_AVX512 "Enable AVX512" OFF)
|
|
|
option(USE_LZCNT "Enable LZCNT" ON)
|
|
|
option(USE_TZCNT "Enable TZCNT" ON)
|
|
|
option(USE_F16C "Enable F16C" ON)
|
|
@@ -63,7 +64,9 @@ if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows" OR "${CMAKE_SYSTEM_NAME}" STREQUAL
|
|
|
else()
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:fast") # Clang doesn't use fast math because it cannot be turned off inside a single compilation unit
|
|
|
endif()
|
|
|
- if (USE_AVX2)
|
|
|
+ if (USE_AVX512)
|
|
|
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX512")
|
|
|
+ elseif (USE_AVX2)
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX2")
|
|
|
elseif (USE_AVX)
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX")
|
|
@@ -92,7 +95,9 @@ if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows" OR "${CMAKE_SYSTEM_NAME}" STREQUAL
|
|
|
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "/LTCG")
|
|
|
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /showFilenames")
|
|
|
- if (USE_AVX2)
|
|
|
+ if (USE_AVX512)
|
|
|
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx512f -mavx512vl -mavx512dq -mavx2 -mbmi -mpopcnt -mlzcnt -mf16c")
|
|
|
+ elseif (USE_AVX2)
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2 -mbmi -mpopcnt -mlzcnt -mf16c")
|
|
|
elseif (USE_AVX)
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx -mpopcnt")
|
|
@@ -135,7 +140,9 @@ elseif ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" OR "${CMAKE_SYSTEM_NAME}" STREQU
|
|
|
# Platform specific compiler flags
|
|
|
if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64")
|
|
|
# X64
|
|
|
- if (USE_AVX2)
|
|
|
+ if (USE_AVX512)
|
|
|
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx512f -mavx512vl -mavx512dq -mavx2 -mbmi -mpopcnt -mlzcnt -mf16c")
|
|
|
+ elseif (USE_AVX2)
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2 -mbmi -mpopcnt -mlzcnt -mf16c")
|
|
|
elseif (USE_AVX)
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx -mpopcnt")
|