@@ -9,6 +9,9 @@ elseif (HAVE_C_INTRIN_H)
99elseif (HAVE_C_ARM_NEON_H)
1010 set (INTRIN_INC_H "arm_neon.h" )
1111 set (FAT_RUNTIME OFF )
12+ elseif (HAVE_C_PPC64EL_ALTIVEC_H)
13+ set (INTRIN_INC_H "altivec.h" )
14+ set (FAT_RUNTIME OFF )
1215else ()
1316 message (FATAL_ERROR "No intrinsics header found" )
1417endif ()
@@ -85,7 +88,7 @@ if (FAT_RUNTIME)
8588 set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} ${SKYLAKE_FLAG} " )
8689 endif (BUILD_AVX512VBMI)
8790 elseif (BUILD_AVX2)
88- set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} -march=core-avx2 -mavx " )
91+ set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} -march=core-avx2 -mavx2 " )
8992 elseif ()
9093 set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} -march=core-i7 -mssse3" )
9194 endif ()
@@ -95,12 +98,12 @@ else (NOT FAT_RUNTIME)
9598endif ()
9699
97100if (ARCH_IA32 OR ARCH_X86_64)
98- # ensure we have the minimum of SSSE3 - call a SSSE3 intrinsic
101+ # ensure we have the minimum of SSE4.2 - call a SSE4.2 intrinsic
99102 CHECK_C_SOURCE_COMPILES("#include <${INTRIN_INC_H} >
100103int main() {
101104 __m128i a = _mm_set1_epi8(1);
102105 (void)_mm_shuffle_epi8(a, a);
103- }" HAVE_SSSE3 )
106+ }" HAVE_SSE42 )
104107
105108 # now look for AVX2
106109 CHECK_C_SOURCE_COMPILES("#include <${INTRIN_INC_H} >
@@ -136,13 +139,26 @@ int main(){
136139 (void)_mm512_permutexvar_epi8(idx, a);
137140}" HAVE_AVX512VBMI)
138141
139- elseif (!ARCH_ARM32 AND !ARCH_AARCH64)
142+
143+ elseif (ARCH_ARM32 OR ARCH_AARCH64)
144+ CHECK_C_SOURCE_COMPILES("#include <${INTRIN_INC_H} >
145+ int main() {
146+ int32x4_t a = vdupq_n_s32(1);
147+ (void)a;
148+ }" HAVE_NEON)
149+ elseif (ARCH_PPC64EL)
150+ CHECK_C_SOURCE_COMPILES("#include <${INTRIN_INC_H} >
151+ int main() {
152+ vector int a = vec_splat_s32(1);
153+ (void)a;
154+ }" HAVE_VSX)
155+ else ()
140156 message (FATAL_ERROR "Unsupported architecture" )
141157endif ()
142158
143159if (FAT_RUNTIME)
144- if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_SSSE3 )
145- message (FATAL_ERROR "SSSE3 support required to build fat runtime" )
160+ if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_SSE42 )
161+ message (FATAL_ERROR "SSE4.2 support required to build fat runtime" )
146162 endif ()
147163 if ((ARCH_IA32 OR ARCH_X86_64) AND BUILD_AVX2 AND NOT HAVE_AVX2)
148164 message (FATAL_ERROR "AVX2 support required to build fat runtime" )
@@ -163,12 +179,16 @@ else (NOT FAT_RUNTIME)
163179 if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_AVX512VBMI)
164180 message (STATUS "Building without AVX512VBMI support" )
165181 endif ()
166- if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_SSSE3 )
167- message (FATAL_ERROR "A minimum of SSSE3 compiler support is required" )
182+ if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_SSE42 )
183+ message (FATAL_ERROR "A minimum of SSE4.2 compiler support is required" )
168184 endif ()
169185 if ((ARCH_ARM32 OR ARCH_AARCH64) AND NOT HAVE_NEON)
170186 message (FATAL_ERROR "NEON support required for ARM support" )
171187 endif ()
188+ if (ARCH_PPPC64EL AND NOT HAVE_VSX)
189+ message (FATAL_ERROR "VSX support required for Power support" )
190+ endif ()
191+
172192endif ()
173193
174194unset (PREV_FLAGS)
0 commit comments