[CRT] Add __m128i, _mm_setzero_si128, and _mm_stream_si128.
[reactos.git] / sdk / include / crt / emmintrin.h
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
5 */
6
7 #pragma once
8 #ifndef _INCLUDED_EMM
9 #define _INCLUDED_EMM
10
11 #include <crtdefs.h>
12 #include <xmmintrin.h>
13
14 typedef union _DECLSPEC_INTRIN_TYPE _CRT_ALIGN(16) __m128i
15 {
16 __int8 m128i_i8[16];
17 __int16 m128i_i16[8];
18 __int32 m128i_i32[4];
19 __int64 m128i_i64[2];
20 unsigned __int8 m128i_u8[16];
21 unsigned __int16 m128i_u16[8];
22 unsigned __int32 m128i_u32[4];
23 unsigned __int64 m128i_u64[2];
24 } __m128i;
25 C_ASSERT(sizeof(__m128i) == 16);
26
27 typedef struct _DECLSPEC_INTRIN_TYPE _CRT_ALIGN(16) __m128d
28 {
29 double m128d_f64[2];
30 } __m128d;
31
32 extern __m128d _mm_load_sd(double const*);
33
34 extern int _mm_cvtsd_si32(__m128d);
35
36 extern __m128i _mm_setzero_si128(void);
37
38 extern void _mm_stream_si128(__m128i *, __m128i);
39
40
41 #endif /* _INCLUDED_EMM */