12 #include <mrpt/config.h>
15 #if MRPT_ARCH_INTEL_COMPATIBLE
18 #include <emmintrin.h>
24 #if MRPT_ARCH_INTEL_COMPATIBLE
27 #include <pmmintrin.h>
28 #include <tmmintrin.h>
30 #include <immintrin.h>
36 #if defined(__SSE4_2__) || defined(__SSE4_1__)
37 #include <smmintrin.h>
41 #if MRPT_ARCH_INTEL_COMPATIBLE
42 template <
bool ALIGNED>
43 __m128i mm_load_si128(__m128i
const* ptr);
46 inline __m128i mm_load_si128<true>(__m128i
const* ptr)
48 return _mm_load_si128(ptr);
52 inline __m128i mm_load_si128<false>(__m128i
const* ptr)
54 return _mm_loadu_si128(ptr);
58 template <
int k,
typename T>
59 bool is_multiple(
const T
val)
61 return (
val & (k - 1)) == 0;