set(HAVE_ACLE_FLAG TRUE)
endif()
else()
- if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
- if(NOT NATIVEFLAG)
+ if(NOT NATIVEFLAG)
+ if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
set(ACLEFLAG "-march=armv8-a+crc" CACHE INTERNAL "Compiler option to enable ACLE support")
endif()
endif()
endmacro()
macro(check_armv6_compiler_flag)
- if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
- if(NOT NATIVEFLAG)
+ if(NOT NATIVEFLAG)
+ if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
check_c_compiler_flag("-march=armv6" HAVE_MARCH_ARMV6)
if(HAVE_MARCH_ARMV6)
set(ARMV6FLAG "-march=armv6" CACHE INTERNAL "Compiler option to enable ARMv6 support")
endmacro()
macro(check_avx512_intrinsics)
- if(CMAKE_C_COMPILER_ID MATCHES "Intel")
- if(CMAKE_HOST_UNIX OR APPLE)
- set(AVX512FLAG "-mavx512f -mavx512dq -mavx512bw -mavx512vl")
- else()
- set(AVX512FLAG "/arch:AVX512")
- endif()
- elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
- if(NOT NATIVEFLAG)
+ if(NOT NATIVEFLAG)
+ if(CMAKE_C_COMPILER_ID MATCHES "Intel")
+ if(CMAKE_HOST_UNIX OR APPLE)
+ set(AVX512FLAG "-mavx512f -mavx512dq -mavx512bw -mavx512vl")
+ else()
+ set(AVX512FLAG "/arch:AVX512")
+ endif()
+ elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
# For CPUs that can benefit from AVX512, it seems GCC generates suboptimal
# instruction scheduling unless you specify a reasonable -mtune= target
set(AVX512FLAG "-mavx512f -mavx512dq -mavx512bw -mavx512vl")
endif()
unset(HAVE_CASCADE_LAKE)
endif()
+ elseif(MSVC)
+ set(AVX512FLAG "/arch:AVX512")
endif()
- elseif(MSVC)
- set(AVX512FLAG "/arch:AVX512")
endif()
# Check whether compiler supports AVX512 intrinsics
set(CMAKE_REQUIRED_FLAGS "${AVX512FLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
endmacro()
macro(check_avx512vnni_intrinsics)
- if(CMAKE_C_COMPILER_ID MATCHES "Intel")
- if(CMAKE_HOST_UNIX OR APPLE)
- set(AVX512VNNIFLAG "-mavx512f -mavx512dq -mavx512bw -mavx512vl -mavx512vnni")
- else()
- set(AVX512VNNIFLAG "/arch:AVX512")
- endif()
- elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
- if(NOT NATIVEFLAG)
+ if(NOT NATIVEFLAG)
+ if(CMAKE_C_COMPILER_ID MATCHES "Intel")
+ if(CMAKE_HOST_UNIX OR APPLE)
+ set(AVX512VNNIFLAG "-mavx512f -mavx512dq -mavx512bw -mavx512vl -mavx512vnni")
+ else()
+ set(AVX512VNNIFLAG "/arch:AVX512")
+ endif()
+ elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
set(AVX512VNNIFLAG "-mavx512f -mavx512dq -mavx512bw -mavx512vl -mavx512vnni")
if(NOT MSVC)
check_c_compiler_flag("-mtune=cascadelake" HAVE_CASCADE_LAKE)
endif()
unset(HAVE_CASCADE_LAKE)
endif()
+ elseif(MSVC)
+ set(AVX512VNNIFLAG "/arch:AVX512")
endif()
- elseif(MSVC)
- set(AVX512VNNIFLAG "/arch:AVX512")
endif()
-
# Check whether compiler supports AVX512vnni intrinsics
set(CMAKE_REQUIRED_FLAGS "${AVX512VNNIFLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
check_c_source_compiles(
endmacro()
macro(check_avx2_intrinsics)
- if(CMAKE_C_COMPILER_ID MATCHES "Intel")
- if(CMAKE_HOST_UNIX OR APPLE)
+ if(NOT NATIVEFLAG)
+ if(CMAKE_C_COMPILER_ID MATCHES "Intel")
+ if(CMAKE_HOST_UNIX OR APPLE)
+ set(AVX2FLAG "-mavx2")
+ else()
+ set(AVX2FLAG "/arch:AVX2")
+ endif()
+ elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
set(AVX2FLAG "-mavx2")
- else()
+ elseif(MSVC)
set(AVX2FLAG "/arch:AVX2")
endif()
- elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
- if(NOT NATIVEFLAG)
- set(AVX2FLAG "-mavx2")
- endif()
- elseif(MSVC)
- set(AVX2FLAG "/arch:AVX2")
endif()
# Check whether compiler supports AVX2 intrinics
set(CMAKE_REQUIRED_FLAGS "${AVX2FLAG} ${NATIVEFLAG} ${ZNOLTOFLAG}")
endmacro()
macro(check_neon_compiler_flag)
- if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
- if(NOT NATIVEFLAG)
+ if(NOT NATIVEFLAG)
+ if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
if("${ARCH}" MATCHES "aarch64")
set(NEONFLAG "-march=armv8-a+simd")
else()
endmacro()
macro(check_neon_ld4_intrinsics)
- if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
- if(NOT NATIVEFLAG)
+ if(NOT NATIVEFLAG)
+ if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
if("${ARCH}" MATCHES "aarch64")
set(NEONFLAG "-march=armv8-a+simd")
else()
endmacro()
macro(check_pclmulqdq_intrinsics)
- if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
- if(NOT NATIVEFLAG)
+ if(NOT NATIVEFLAG)
+ if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
set(PCLMULFLAG "-mpclmul")
endif()
endif()
endmacro()
macro(check_vpclmulqdq_intrinsics)
- if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
- if(NOT NATIVEFLAG)
+ if(NOT NATIVEFLAG)
+ if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
set(VPCLMULFLAG "-mvpclmulqdq -mavx512f")
endif()
endif()
endmacro()
macro(check_power8_intrinsics)
- if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
- if(NOT NATIVEFLAG)
+ if(NOT NATIVEFLAG)
+ if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
set(POWER8FLAG "-mcpu=power8")
endif()
endif()
endmacro()
macro(check_rvv_intrinsics)
- if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
- if(NOT NATIVEFLAG)
+ if(NOT NATIVEFLAG)
+ if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
set(RISCVFLAG "-march=rv64gcv")
endif()
endif()
endmacro()
macro(check_power9_intrinsics)
- if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
- if(NOT NATIVEFLAG)
+ if(NOT NATIVEFLAG)
+ if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
set(POWER9FLAG "-mcpu=power9")
endif()
endif()
endmacro()
macro(check_sse2_intrinsics)
- if(CMAKE_C_COMPILER_ID MATCHES "Intel")
- if(CMAKE_HOST_UNIX OR APPLE)
- set(SSE2FLAG "-msse2")
- else()
- set(SSE2FLAG "/arch:SSE2")
- endif()
- elseif(MSVC)
- if(NOT "${ARCH}" MATCHES "x86_64")
- set(SSE2FLAG "/arch:SSE2")
- endif()
- elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
- if(NOT NATIVEFLAG)
+ if(NOT NATIVEFLAG)
+ if(CMAKE_C_COMPILER_ID MATCHES "Intel")
+ if(CMAKE_HOST_UNIX OR APPLE)
+ set(SSE2FLAG "-msse2")
+ else()
+ set(SSE2FLAG "/arch:SSE2")
+ endif()
+ elseif(MSVC)
+ if(NOT "${ARCH}" MATCHES "x86_64")
+ set(SSE2FLAG "/arch:SSE2")
+ endif()
+ elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
set(SSE2FLAG "-msse2")
endif()
endif()
endmacro()
macro(check_ssse3_intrinsics)
- if(CMAKE_C_COMPILER_ID MATCHES "Intel")
- if(CMAKE_HOST_UNIX OR APPLE)
- set(SSSE3FLAG "-mssse3")
- else()
- set(SSSE3FLAG "/arch:SSSE3")
- endif()
- elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
- if(NOT NATIVEFLAG)
+ if(NOT NATIVEFLAG)
+ if(CMAKE_C_COMPILER_ID MATCHES "Intel")
+ if(CMAKE_HOST_UNIX OR APPLE)
+ set(SSSE3FLAG "-mssse3")
+ else()
+ set(SSSE3FLAG "/arch:SSSE3")
+ endif()
+ elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
set(SSSE3FLAG "-mssse3")
endif()
endif()
endmacro()
macro(check_sse42_intrinsics)
- if(CMAKE_C_COMPILER_ID MATCHES "Intel")
- if(CMAKE_HOST_UNIX OR APPLE)
- set(SSE42FLAG "-msse4.2")
- else()
- set(SSE42FLAG "/arch:SSE4.2")
- endif()
- elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
- if(NOT NATIVEFLAG)
+ if(NOT NATIVEFLAG)
+ if(CMAKE_C_COMPILER_ID MATCHES "Intel")
+ if(CMAKE_HOST_UNIX OR APPLE)
+ set(SSE42FLAG "-msse4.2")
+ else()
+ set(SSE42FLAG "/arch:SSE4.2")
+ endif()
+ elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
set(SSE42FLAG "-msse4.2")
endif()
endif()