]>
Commit | Line | Data |
---|---|---|
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 | ||
17 | if(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 | ||
41 | elseif(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 | ||
48 | elseif(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 |
82 | elseif(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() | |
99 | endif() |