// Copyright (C) 2013 Davis E. King (davis@dlib.net) // License: Boost Software License See LICENSE.txt for the full license. #ifndef DLIB_SIMd_CHECK_Hh_ #define DLIB_SIMd_CHECK_Hh_ //#define DLIB_DO_NOT_USE_SIMD // figure out which SIMD instructions we can use. #ifndef DLIB_DO_NOT_USE_SIMD #if defined(_MSC_VER) #ifdef __AVX__ #ifndef DLIB_HAVE_SSE2 #define DLIB_HAVE_SSE2 #endif #ifndef DLIB_HAVE_SSE3 #define DLIB_HAVE_SSE3 #endif #ifndef DLIB_HAVE_SSE41 #define DLIB_HAVE_SSE41 #endif #ifndef DLIB_HAVE_AVX #define DLIB_HAVE_AVX #endif #endif #if (defined( _M_X64) || defined(_M_IX86_FP) && _M_IX86_FP >= 2) && !defined(DLIB_HAVE_SSE2) #define DLIB_HAVE_SSE2 #endif #else #ifdef __SSE2__ #ifndef DLIB_HAVE_SSE2 #define DLIB_HAVE_SSE2 #endif #endif #ifdef __SSSE3__ #ifndef DLIB_HAVE_SSE3 #define DLIB_HAVE_SSE3 #endif #endif #ifdef __SSE4_1__ #ifndef DLIB_HAVE_SSE41 #define DLIB_HAVE_SSE41 #endif #endif #ifdef __AVX__ #ifndef DLIB_HAVE_AVX #define DLIB_HAVE_AVX #endif #endif #ifdef __AVX2__ #ifndef DLIB_HAVE_AVX2 #define DLIB_HAVE_AVX2 #endif #endif #ifdef __ALTIVEC__ #ifndef DLIB_HAVE_ALTIVEC #define DLIB_HAVE_ALTIVEC #endif #endif #ifdef __VSX__ #ifndef DLIB_HAVE_VSX #define DLIB_HAVE_VSX #endif #endif #ifdef __VEC__ // __VEC__ = 10206 #ifndef DLIB_HAVE_POWER_VEC // vector and vec_ intrinsics #define DLIB_HAVE_POWER_VEC #endif #endif #ifdef __ARM_NEON #ifndef DLIB_HAVE_NEON #define DLIB_HAVE_NEON #endif #endif #endif #endif // ---------------------------------------------------------------------------------------- #ifdef DLIB_HAVE_ALTIVEC #include <altivec.h> #endif #ifdef DLIB_HAVE_SSE2 #include <xmmintrin.h> #include <emmintrin.h> #include <mmintrin.h> #endif #ifdef DLIB_HAVE_SSE3 #include <pmmintrin.h> // SSE3 #include <tmmintrin.h> #endif #ifdef DLIB_HAVE_SSE41 #include <smmintrin.h> // SSE4 #endif #ifdef DLIB_HAVE_AVX #include <immintrin.h> // AVX #endif #ifdef DLIB_HAVE_AVX2 #include <immintrin.h> // AVX // #include <avx2intrin.h> #endif #ifdef DLIB_HAVE_NEON #include <arm_neon.h> // ARM NEON #endif #endif // DLIB_SIMd_CHECK_Hh_