#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 */