#pragma once
#if !defined(_M_IX86) && !defined(_M_X64)
#error This header is specific to X86 and X64 targets
#endif
#ifndef _INCLUDED_EMM
#define _INCLUDED_EMM
#ifndef __midl
#if !defined _M_IX86 && !defined _M_X64
#error This header is specific to X86 and X64 targets
#endif
#if defined (_M_CEE_PURE)
#error ERROR: EMM intrinsics not supported in the pure mode!
#else /* defined (_M_CEE_PURE) */
#include <xmmintrin.h>
typedef
union
__declspec
(intrin_type)
__declspec
(align(
16
))
{
__int8
[
16
];
__int16
[
8
];
__int32
[
4
];
__int64
[
2
];
unsigned
__int8
[
16
];
unsigned
__int16
[
8
];
unsigned
__int32
[
4
];
unsigned
__int64
[
2
];
}
;
typedef
struct
__declspec
(intrin_type)
__declspec
(align(
16
))
{
double
[
2
];
}
;
#define _MM_SHUFFLE2(x,y) (((x)<<1) | (y))
#if defined __cplusplus
extern
"C"
{
#endif /* defined __cplusplus */
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
int
(
,
);
extern
int
(
,
);
extern
int
(
,
);
extern
int
(
,
);
extern
int
(
,
);
extern
int
(
,
);
extern
int
(
,
);
extern
int
(
,
);
extern
int
(
,
);
extern
int
(
,
);
extern
int
(
,
);
extern
int
(
,
);
extern
(
);
extern
(
);
extern
(
);
extern
(
);
extern
(
);
extern
(
);
extern
(
);
extern
(
);
extern
(
,
);
extern
(
,
);
extern
int
(
);
extern
int
(
);
extern
(
,
int
);
#if defined(_M_IX86)
extern
(
);
extern
(
);
extern
(
);
#endif
extern
(
,
);
extern
(
,
);
extern
int
(
);
extern
(
,
,
int
);
extern
(
double
const
*
);
extern
(
double
const
*
);
extern
(
double
const
*
);
extern
(
double
const
*
);
extern
(
double
const
*
);
extern
(
,
double
const
*
);
extern
(
,
double
const
*
);
extern
(
double
);
extern
(
double
);
extern
(
double
,
double
);
extern
(
double
,
double
);
extern
(
void
);
extern
(
,
);
extern
void
(
double
*
,
);
extern
void
(
double
*
,
);
extern
void
(
double
*
,
);
extern
void
(
double
*
,
);
extern
void
(
double
*
,
);
extern
void
(
double
*
,
);
extern
void
(
double
*
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
#if defined(_M_IX86)
extern
(
,
);
#endif
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
#if defined(_M_IX86)
extern
(
,
);
#endif
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
#if defined(_M_IX86)
extern
(
,
);
#endif
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
int
);
#define _mm_bslli_si128 _mm_slli_si128
extern
(
,
int
);
extern
(
,
);
extern
(
,
int
);
extern
(
,
);
extern
(
,
int
);
extern
(
,
);
extern
(
,
int
);
extern
(
,
);
extern
(
,
int
);
extern
(
,
);
extern
(
,
int
);
#define _mm_bsrli_si128 _mm_srli_si128
extern
(
,
int
);
extern
(
,
);
extern
(
,
int
);
extern
(
,
);
extern
(
,
int
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
int
);
extern
int
(
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
int
(
,
int
);
extern
(
,
int
,
int
);
extern
int
(
);
extern
(
,
int
);
extern
(
,
int
);
extern
(
,
int
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
,
);
extern
(
const
*
);
extern
(
const
*
);
extern
(
const
*
);
#if defined(_M_IX86)
extern
(
,
);
#endif
extern
(
__int64
,
__int64
);
extern
(
int
,
int
,
int
,
int
);
extern
(
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
);
extern
(
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
);
#if defined(_M_IX86)
extern
(
);
#endif
extern
(
__int64
);
extern
(
int
);
extern
(
short
);
extern
(
char
);
extern
(
);
#if defined(_M_IX86)
extern
(
,
);
#endif
extern
(
int
,
int
,
int
,
int
);
extern
(
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
);
extern
(
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
);
extern
(
void
);
extern
void
(
*
,
);
extern
void
(
*
,
);
extern
void
(
*
,
);
extern
void
(
,
,
char
*
);
extern
(
);
#if defined(_M_IX86)
extern
(
);
extern
(
);
#endif
extern
void
(
double
*
,
);
extern
void
(
*
,
);
extern
void
(
void
const
*
);
extern
void
(
void
);
extern
void
(
void
);
extern
void
(
int
*
,
int
);
extern
void
(
void
);
extern
double
(
);
extern
(
);
extern
(
);
extern
(
);
extern
(
);
extern
(
);
extern
(
);
#if defined (_M_X64)
extern __int64 _mm_cvtsd_si64(__m128d);
extern __int64 _mm_cvttsd_si64(__m128d);
extern __m128d _mm_cvtsi64_sd(__m128d, __int64);
extern __m128i _mm_cvtsi64_si128(__int64);
extern __int64 _mm_cvtsi128_si64(__m128i);
/* Alternate intrinsic name definitions */
#define _mm_stream_si64 _mm_stream_si64x
#endif /* defined (_M_X64) */
#if defined __cplusplus
};
#endif /* defined __cplusplus */
#endif /* defined (_M_CEE_PURE) */
#endif /* __midl */
#endif /* _INCLUDED_EMM */