#pragma once
#if !defined(_M_IX86) && !defined(_M_X64)
#error This header is specific to X86 and X64 targets
#endif
#ifndef _INCLUDED_NMM
#define _INCLUDED_NMM
#ifndef __midl
#if defined (_M_CEE_PURE)
#error ERROR: EMM intrinsics not supported in the pure mode!
#else /* defined (_M_CEE_PURE) */
#include <smmintrin.h>
#if __cplusplus
extern
"C"
{
#endif /* __cplusplus */
#define _SIDD_UBYTE_OPS 0x00
#define _SIDD_UWORD_OPS 0x01
#define _SIDD_SBYTE_OPS 0x02
#define _SIDD_SWORD_OPS 0x03
#define _SIDD_CMP_EQUAL_ANY 0x00
#define _SIDD_CMP_RANGES 0x04
#define _SIDD_CMP_EQUAL_EACH 0x08
#define _SIDD_CMP_EQUAL_ORDERED 0x0C
#define _SIDD_POSITIVE_POLARITY 0x00
#define _SIDD_NEGATIVE_POLARITY 0x10
#define _SIDD_MASKED_POSITIVE_POLARITY 0x20
#define _SIDD_MASKED_NEGATIVE_POLARITY 0x30
#define _SIDD_LEAST_SIGNIFICANT 0x00
#define _SIDD_MOST_SIGNIFICANT 0x40
#define _SIDD_BIT_MASK 0x00
#define _SIDD_UNIT_MASK 0x40
extern
(
,
,
const
int
);
extern
int
(
,
,
const
int
);
extern
(
,
int
,
,
int
,
const
int
);
extern
int
(
,
int
,
,
int
,
const
int
);
extern
int
(
,
,
const
int
);
extern
int
(
,
,
const
int
);
extern
int
(
,
,
const
int
);
extern
int
(
,
,
const
int
);
extern
int
(
,
,
const
int
);
extern
int
(
,
int
,
,
int
,
const
int
);
extern
int
(
,
int
,
,
int
,
const
int
);
extern
int
(
,
int
,
,
int
,
const
int
);
extern
int
(
,
int
,
,
int
,
const
int
);
extern
int
(
,
int
,
,
int
,
const
int
);
extern
(
,
);
extern
int
(
unsigned
int
);
#if defined (_M_X64)
extern __int64 _mm_popcnt_u64(unsigned __int64 /* v */);
#endif /* defined (_M_X64) */
extern
unsigned
int
(
unsigned
int
,
unsigned
char
);
extern
unsigned
int
(
unsigned
int
,
unsigned
short
);
extern
unsigned
int
(
unsigned
int
,
unsigned
int
);
#if defined (_M_X64)
extern unsigned __int64 _mm_crc32_u64(unsigned __int64 /* crc */, unsigned __int64 /* v */);
#endif /* defined (_M_X64) */
#if defined __cplusplus
};
#endif /* defined __cplusplus */
#endif /* defined (_M_CEE_PURE) */
#endif /* __midl */
#endif /* _INCLUDED_NMM */