22#include <winpr/cast.h>
24#include "../../core/simd.h"
26#if defined(SSE_AVX_INTRINSICS_ENABLED)
30static inline __m128i mm_set_epu32(uint32_t val1, uint32_t val2, uint32_t val3, uint32_t val4)
32 return _mm_set_epi32(WINPR_CXX_COMPAT_CAST(int32_t, val1), WINPR_CXX_COMPAT_CAST(int32_t, val2),
33 WINPR_CXX_COMPAT_CAST(int32_t, val3),
34 WINPR_CXX_COMPAT_CAST(int32_t, val4));
37static inline __m128i mm_set_epu8(uint8_t val1, uint8_t val2, uint8_t val3, uint8_t val4,
38 uint8_t val5, uint8_t val6, uint8_t val7, uint8_t val8,
39 uint8_t val9, uint8_t val10, uint8_t val11, uint8_t val12,
40 uint8_t val13, uint8_t val14, uint8_t val15, uint8_t val16)
42 return _mm_set_epi8(WINPR_CXX_COMPAT_CAST(int8_t, val1), WINPR_CXX_COMPAT_CAST(int8_t, val2),
43 WINPR_CXX_COMPAT_CAST(int8_t, val3), WINPR_CXX_COMPAT_CAST(int8_t, val4),
44 WINPR_CXX_COMPAT_CAST(int8_t, val5), WINPR_CXX_COMPAT_CAST(int8_t, val6),
45 WINPR_CXX_COMPAT_CAST(int8_t, val7), WINPR_CXX_COMPAT_CAST(int8_t, val8),
46 WINPR_CXX_COMPAT_CAST(int8_t, val9), WINPR_CXX_COMPAT_CAST(int8_t, val10),
47 WINPR_CXX_COMPAT_CAST(int8_t, val11), WINPR_CXX_COMPAT_CAST(int8_t, val12),
48 WINPR_CXX_COMPAT_CAST(int8_t, val13), WINPR_CXX_COMPAT_CAST(int8_t, val14),
49 WINPR_CXX_COMPAT_CAST(int8_t, val15), WINPR_CXX_COMPAT_CAST(int8_t, val16));
52static inline __m128i mm_set1_epu32(uint32_t val)
54 return _mm_set1_epi32(WINPR_CXX_COMPAT_CAST(int32_t, val));
57static inline __m128i mm_set1_epu8(uint8_t val)
59 return _mm_set1_epi8(WINPR_CXX_COMPAT_CAST(int8_t, val));
62static inline __m128i LOAD_SI128(
const void* ptr)
64 const __m128i* mptr = WINPR_CXX_COMPAT_CAST(
const __m128i*, ptr);
65 return _mm_lddqu_si128(mptr);
68static inline void STORE_SI128(
void* ptr, __m128i val)
70 __m128i* mptr = WINPR_CXX_COMPAT_CAST(__m128i*, ptr);
71 _mm_storeu_si128(mptr, val);