22#include <winpr/cast.h>
24#include "../../core/simd.h"
26#if defined(SSE_AVX_INTRINSICS_ENABLED)
31static inline __m128i mm_set_epu32(uint32_t val1, uint32_t val2, uint32_t val3, uint32_t val4)
33 return _mm_set_epi32(WINPR_CXX_COMPAT_CAST(int32_t, val1), WINPR_CXX_COMPAT_CAST(int32_t, val2),
34 WINPR_CXX_COMPAT_CAST(int32_t, val3),
35 WINPR_CXX_COMPAT_CAST(int32_t, val4));
39static inline __m128i mm_set_epu8(uint8_t val1, uint8_t val2, uint8_t val3, uint8_t val4,
40 uint8_t val5, uint8_t val6, uint8_t val7, uint8_t val8,
41 uint8_t val9, uint8_t val10, uint8_t val11, uint8_t val12,
42 uint8_t val13, uint8_t val14, uint8_t val15, uint8_t val16)
44 return _mm_set_epi8(WINPR_CXX_COMPAT_CAST(int8_t, val1), WINPR_CXX_COMPAT_CAST(int8_t, val2),
45 WINPR_CXX_COMPAT_CAST(int8_t, val3), WINPR_CXX_COMPAT_CAST(int8_t, val4),
46 WINPR_CXX_COMPAT_CAST(int8_t, val5), WINPR_CXX_COMPAT_CAST(int8_t, val6),
47 WINPR_CXX_COMPAT_CAST(int8_t, val7), WINPR_CXX_COMPAT_CAST(int8_t, val8),
48 WINPR_CXX_COMPAT_CAST(int8_t, val9), WINPR_CXX_COMPAT_CAST(int8_t, val10),
49 WINPR_CXX_COMPAT_CAST(int8_t, val11), WINPR_CXX_COMPAT_CAST(int8_t, val12),
50 WINPR_CXX_COMPAT_CAST(int8_t, val13), WINPR_CXX_COMPAT_CAST(int8_t, val14),
51 WINPR_CXX_COMPAT_CAST(int8_t, val15), WINPR_CXX_COMPAT_CAST(int8_t, val16));
55static inline __m128i mm_set1_epu32(uint32_t val)
57 return _mm_set1_epi32(WINPR_CXX_COMPAT_CAST(int32_t, val));
61static inline __m128i mm_set1_epu8(uint8_t val)
63 return _mm_set1_epi8(WINPR_CXX_COMPAT_CAST(int8_t, val));
67static inline __m128i LOAD_SI128(
const void* ptr)
69 const __m128i* mptr = WINPR_CXX_COMPAT_CAST(
const __m128i*, ptr);
70 return _mm_lddqu_si128(mptr);
73static inline void STORE_SI128(
void* ptr, __m128i val)
75 __m128i* mptr = WINPR_CXX_COMPAT_CAST(__m128i*, ptr);
76 _mm_storeu_si128(mptr, val);