2016-09-02 06:38:21 +00:00
|
|
|
# detect SIMD extentions
|
|
|
|
#
|
|
|
|
# ARM_NEON_FLAGS
|
|
|
|
#
|
|
|
|
# HAVE_ARMV8_CRC
|
|
|
|
# HAVE_NEON
|
|
|
|
# HAVE_SSE
|
|
|
|
# HAVE_SSE2
|
|
|
|
#
|
|
|
|
# INTEL_SSE4_1
|
|
|
|
# INTEL_SSE4_2
|
|
|
|
#
|
|
|
|
# SSE3_FLAGS
|
|
|
|
# SSE4_FLAGS
|
|
|
|
#
|
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64")
|
|
|
|
CHECK_C_COMPILER_FLAG(-march=armv8-a+crc HAVE_ARMV8_CRC)
|
|
|
|
if(HAVE_ARMV8_CRC)
|
2016-09-09 03:28:55 +00:00
|
|
|
set(ARM_CRC_FLAGS "-march=armv8-a+crc -DARCH_AARCH64")
|
2016-09-02 06:38:21 +00:00
|
|
|
endif()
|
|
|
|
CHECK_C_COMPILER_FLAG(-march=armv8-a+simd HAVE_NEON)
|
|
|
|
if(HAVE_NEON)
|
|
|
|
set(ARM_NEON_FLAGS "-march=armv8-a+simd -DARCH_AARCH64 -DARM_NEON")
|
|
|
|
endif()
|
|
|
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm|ARM")
|
|
|
|
CHECK_C_COMPILER_FLAG(-mfpu=neon HAVE_NEON)
|
|
|
|
if(HAVE_NEON)
|
|
|
|
set(ARM_NEON_FLAGS "-mfpu=neon -DARM_NEON")
|
|
|
|
endif()
|
|
|
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i686|amd64|x86_64|AMD64")
|
|
|
|
set(SSE3_FLAGS)
|
|
|
|
CHECK_C_COMPILER_FLAG(-msse HAVE_SSE)
|
|
|
|
if(HAVE_SSE)
|
|
|
|
set(SSE3_FLAGS "${SSE3_FLAGS} -msse -DINTEL_SSE")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
CHECK_C_COMPILER_FLAG(-msse2 HAVE_SSE2)
|
|
|
|
if(HAVE_SSE2)
|
|
|
|
set(SSE3_FLAGS "${SSE3_FLAGS} -msse2 -DINTEL_SSE2")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
CHECK_C_COMPILER_FLAG(-msse3 HAVE_SSE3)
|
|
|
|
if(HAVE_SSE3)
|
|
|
|
set(SSE3_FLAGS "${SSE3_FLAGS} -msse3 -DINTEL_SSE3")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
CHECK_C_COMPILER_FLAG(-mssse3 SUPPORTS_SSSE3)
|
|
|
|
if(SUPPORTS_SSSE3)
|
|
|
|
set(SSE3_FLAGS "${SSE3_FLAGS} -mssse3 -DINTEL_SSSE3")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# pclmul is not enabled in SSE3, otherwise we need another
|
|
|
|
# flavor or an cmake option for enabling it
|
|
|
|
|
|
|
|
set(SSE4_FLAGS ${SSE3_FLAGS})
|
|
|
|
CHECK_C_COMPILER_FLAG(-msse4.1 INTEL_SSE4_1)
|
|
|
|
if(SUPPORTS_SSE41)
|
|
|
|
set(SSE4_FLAGS "${SSE4_FLAGS} -msse41 -DINTEL_SSE4")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
CHECK_C_COMPILER_FLAG(-msse4.2 INTEL_SSE4_2)
|
|
|
|
if(SUPPORTS_SSE42)
|
|
|
|
set(SSE4_FLAGS "${SSE4_FLAGS} -msse42 -DINTEL_SSE4")
|
|
|
|
endif()
|
|
|
|
endif()
|