123456789101112131415161718192021222324252627282930313233 |
- #pragma once
- #if defined(__clang__) && (defined(__x86_64__) || defined(__i386__))
- /* Clang-compatible compiler, targeting x86/x86-64 */
- #include <x86intrin.h>
- #elif defined(_MSC_VER)
- /* Microsoft C/C++-compatible compiler */
- #include <intrin.h>
- #if _MSC_VER <= 1900
- #define _mm256_extract_epi64(X, Y) (((uint64_t*)&X)[Y])
- #endif
- #elif defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
- /* GCC-compatible compiler, targeting x86/x86-64 */
- #include <x86intrin.h>
- #elif defined(__GNUC__) && defined(__ARM_NEON__)
- /* GCC-compatible compiler, targeting ARM with NEON */
- #include <arm_neon.h>
- #elif defined(__GNUC__) && defined(__IWMMXT__)
- /* GCC-compatible compiler, targeting ARM with WMMX */
- #include <mmintrin.h>
- #elif (defined(__GNUC__) || defined(__xlC__)) && \
- (defined(__VEC__) || defined(__ALTIVEC__))
- /* XLC or GCC-compatible compiler, targeting PowerPC with VMX/VSX */
- #include <altivec.h>
- /* We need to undef those tokens defined by <altivec.h> to avoid conflicts
- with the C++ types. => Can still use __bool/__vector */
- #undef bool
- #undef vector
- #undef pixel
- #elif defined(__GNUC__) && defined(__SPE__)
- /* GCC-compatible compiler, targeting PowerPC with SPE */
- #include <spe.h>
- #endif
|