]> git.proxmox.com Git - ceph.git/blame - ceph/cmake/modules/SIMDExt.cmake
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / cmake / modules / SIMDExt.cmake
CommitLineData
11fdf7f2 1# detect SIMD extensions
7c673cae
FG
2#
3# HAVE_ARMV8_CRC
4# HAVE_ARMV8_SIMD
5# HAVE_ARM_NEON
6# HAVE_INTEL_SSE
7# HAVE_INTEL_SSE2
8# HAVE_INTEL_SSE3
9# HAVE_INTEL_SSSE3
10# HAVE_INTEL_PCLMUL
11# HAVE_INTEL_SSE4_1
12# HAVE_INTEL_SSE4_2
13#
14# SIMD_COMPILE_FLAGS
15#
16
17if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64")
18 set(HAVE_ARM 1)
11fdf7f2 19 include(CheckCCompilerFlag)
7c673cae 20
11fdf7f2 21 check_c_compiler_flag(-march=armv8-a+crc+crypto HAVE_ARMV8_CRC_CRYPTO_INTRINSICS)
7c673cae 22 if(HAVE_ARMV8_CRC_CRYPTO_INTRINSICS)
11fdf7f2
TL
23 set(ARMV8_CRC_COMPILE_FLAGS "-march=armv8-a+crc+crypto")
24 set(HAVE_ARMV8_CRC TRUE)
25 set(HAVE_ARMV8_CRYPTO TRUE)
26 else()
27 check_c_compiler_flag(-march=armv8-a+crc HAVE_ARMV8_CRC)
28 check_c_compiler_flag(-march=armv8-a+crypto HAVE_ARMV8_CRYPTO)
29 if(HAVE_ARMV8_CRC)
30 set(ARMV8_CRC_COMPILE_FLAGS "-march=armv8-a+crc")
31 elseif(HAVE_ARMV8_CRYPTO)
32 set(ARMV8_CRC_COMPILE_FLAGS "-march=armv8-a+crypto")
33 endif()
7c673cae
FG
34 endif()
35
36 CHECK_C_COMPILER_FLAG(-march=armv8-a+simd HAVE_ARMV8_SIMD)
37 if(HAVE_ARMV8_SIMD)
38 set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -march=armv8-a+simd")
39 endif()
40
41elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm|ARM")
42 set(HAVE_ARM 1)
43 CHECK_C_COMPILER_FLAG(-mfpu=neon HAVE_ARM_NEON)
44 if(HAVE_ARM_NEON)
45 set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mfpu=neon")
46 endif()
47
48elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i686|amd64|x86_64|AMD64")
49 set(HAVE_INTEL 1)
31f18b77
FG
50 if(CMAKE_SYSTEM_PROCESSOR MATCHES "i686|amd64|x86_64|AMD64")
51 CHECK_C_COMPILER_FLAG(-msse HAVE_INTEL_SSE)
52 if(HAVE_INTEL_SSE)
53 set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse")
54 endif()
55 if(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64|x86_64|AMD64")
56 CHECK_C_COMPILER_FLAG(-msse2 HAVE_INTEL_SSE2)
57 if(HAVE_INTEL_SSE2)
58 set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse2")
59 endif()
60 CHECK_C_COMPILER_FLAG(-msse3 HAVE_INTEL_SSE3)
61 if(HAVE_INTEL_SSE3)
62 set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse3")
63 endif()
64 CHECK_C_COMPILER_FLAG(-mssse3 HAVE_INTEL_SSSE3)
65 if(HAVE_INTEL_SSSE3)
66 set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mssse3")
67 endif()
68 CHECK_C_COMPILER_FLAG(-mpclmul HAVE_INTEL_PCLMUL)
69 if(HAVE_INTEL_PCLMUL)
70 set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mpclmul")
71 endif()
72 CHECK_C_COMPILER_FLAG(-msse4.1 HAVE_INTEL_SSE4_1)
73 if(HAVE_INTEL_SSE4_1)
74 set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse4.1")
75 endif()
76 CHECK_C_COMPILER_FLAG(-msse4.2 HAVE_INTEL_SSE4_2)
77 if(HAVE_INTEL_SSE4_2)
78 set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse4.2")
79 endif()
80 endif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64|x86_64|AMD64")
81 endif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686|amd64|x86_64|AMD64")
11fdf7f2
TL
82elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(powerpc|ppc)64|(powerpc|ppc)64le")
83 if(CMAKE_SYSTEM_PROCESSOR MATCHES "(powerpc|ppc)64le")
84 set(HAVE_PPC64LE 1)
85 message(STATUS " we are ppc64le")
86 else()
87 set(HAVE_PPC64 1)
88 message(STATUS " we are ppc64")
89 endif(CMAKE_SYSTEM_PROCESSOR MATCHES "(powerpc|ppc)64le")
7c673cae
FG
90 CHECK_C_COMPILER_FLAG("-maltivec" HAS_ALTIVEC)
91 if(HAS_ALTIVEC)
92 message(STATUS " HAS_ALTIVEC yes")
f67539c2 93 add_compile_options(-maltivec)
7c673cae
FG
94 endif()
95 CHECK_C_COMPILER_FLAG("-mcpu=power8" HAVE_POWER8)
96 if(HAVE_POWER8)
97 message(STATUS " HAVE_POWER8 yes")
98 endif()
99endif()