#pragma once
#if !defined(_M_IX86) && !defined(_M_X64)
#error This header is specific to X86 and X64 targets
#endif
#ifndef _INCLUDED_IMM
#define _INCLUDED_IMM
#ifndef __midl
#if defined (_M_CEE_PURE)
#error ERROR: Intel Architecture intrinsic functions not supported in the pure mode!
#else /* defined (_M_CEE_PURE) */
#include <wmmintrin.h>
#ifdef __cplusplus
extern
"C"
{
#endif /* __cplusplus */
typedef
union
__declspec
(intrin_type)
__declspec
(align(
32
))
{
float
[
8
];
}
;
typedef
struct
__declspec
(intrin_type)
__declspec
(align(
32
))
{
double
[
4
];
}
;
typedef
union
__declspec
(intrin_type)
__declspec
(align(
32
))
{
__int8
[
32
];
__int16
[
16
];
__int32
[
8
];
__int64
[
4
];
unsigned
__int8
[
32
];
unsigned
__int16
[
16
];
unsigned
__int32
[
8
];
unsigned
__int64
[
4
];
}
;
#define _CMP_EQ_OQ 0x00 /* Equal (ordered, nonsignaling) */
#define _CMP_LT_OS 0x01 /* Less-than (ordered, signaling) */
#define _CMP_LE_OS 0x02 /* Less-than-or-equal (ordered, signaling) */
#define _CMP_UNORD_Q 0x03 /* Unordered (nonsignaling) */
#define _CMP_NEQ_UQ 0x04 /* Not-equal (unordered, nonsignaling) */
#define _CMP_NLT_US 0x05 /* Not-less-than (unordered, signaling) */
#define _CMP_NLE_US 0x06 /* Not-less-than-or-equal (unordered,
signaling) */
#define _CMP_ORD_Q 0x07 /* Ordered (nonsignaling) */
#define _CMP_EQ_UQ 0x08 /* Equal (unordered, non-signaling) */
#define _CMP_NGE_US 0x09 /* Not-greater-than-or-equal (unordered,
signaling) */
#define _CMP_NGT_US 0x0A /* Not-greater-than (unordered, signaling) */
#define _CMP_FALSE_OQ 0x0B /* False (ordered, nonsignaling) */
#define _CMP_NEQ_OQ 0x0C /* Not-equal (ordered, non-signaling) */
#define _CMP_GE_OS 0x0D /* Greater-than-or-equal (ordered, signaling) */
#define _CMP_GT_OS 0x0E /* Greater-than (ordered, signaling) */
#define _CMP_TRUE_UQ 0x0F /* True (unordered, non-signaling) */
#define _CMP_EQ_OS 0x10 /* Equal (ordered, signaling) */
#define _CMP_LT_OQ 0x11 /* Less-than (ordered, nonsignaling) */
#define _CMP_LE_OQ 0x12 /* Less-than-or-equal (ordered, nonsignaling) */
#define _CMP_UNORD_S 0x13 /* Unordered (signaling) */
#define _CMP_NEQ_US 0x14 /* Not-equal (unordered, signaling) */
#define _CMP_NLT_UQ 0x15 /* Not-less-than (unordered, nonsignaling) */
#define _CMP_NLE_UQ 0x16 /* Not-less-than-or-equal (unordered,
nonsignaling) */
#define _CMP_ORD_S 0x17 /* Ordered (signaling) */
#define _CMP_EQ_US 0x18 /* Equal (unordered, signaling) */
#define _CMP_NGE_UQ 0x19 /* Not-greater-than-or-equal (unordered,
nonsignaling) */
#define _CMP_NGT_UQ 0x1A /* Not-greater-than (unordered, nonsignaling) */
#define _CMP_FALSE_OS 0x1B /* False (ordered, signaling) */
#define _CMP_NEQ_OS 0x1C /* Not-equal (ordered, signaling) */
#define _CMP_GE_OQ 0x1D /* Greater-than-or-equal (ordered,
nonsignaling) */
#define _CMP_GT_OQ 0x1E /* Greater-than (ordered, nonsignaling) */
#define _CMP_TRUE_US 0x1F /* True (unordered, signaling) */
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
,
,
const
int
);
extern
int
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
,
,
const
int
);
extern
int
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
#define _mm256_cvtss_f32(a) (_mm_cvtss_f32(_mm256_castps256_ps128(a)))
#define _mm256_cvtsd_f64(a) (_mm_cvtsd_f64(_mm256_castpd256_pd128(a)))
#define _mm256_cvtsi256_si32(a) (_mm_cvtsi128_si32(_mm256_castsi256_si128(a)))
#if defined (_M_X64)
/*
* Convert 64-bit Scalar integer in 256-bit vector to equivalent C/C++ __int64 type.
*/
// __int64 _mm256_cvtsi256_si64 (__m256i a)
#define _mm256_cvtsi256_si64(a) (_mm_cvtsi128_si64(_mm256_castsi256_si128(a)))
#endif /* defined (_M_X64) */
extern
__cdecl
(
,
const
int
);
extern
__cdecl
(
,
const
int
);
extern
__cdecl
(
,
const
int
);
extern
void
__cdecl
(
void
);
extern
void
__cdecl
(
void
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
int
);
extern
__cdecl
(
,
int
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
int
);
extern
__cdecl
(
,
int
);
extern
__cdecl
(
,
,
int
);
extern
__cdecl
(
,
,
int
);
extern
__cdecl
_mm256_permute2f128_si256
(
,
,
int
);
extern
__cdecl
(
float
const
*);
extern
__cdecl
(
float
const
*);
extern
__cdecl
(
double
const
*);
extern
__cdecl
(
const
*);
extern
__cdecl
(
const
*);
extern
__cdecl
(
,
,
int
);
extern
__cdecl
(
,
,
int
);
extern
__cdecl
(
,
,
int
);
extern
__cdecl
(
double
const
*);
extern
void
__cdecl
(
double
*,
);
extern
__cdecl
(
float
const
*);
extern
void
__cdecl
(
float
*,
);
extern
__cdecl
(
double
const
*);
extern
void
__cdecl
(
double
*,
);
extern
__cdecl
(
float
const
*);
extern
void
__cdecl
(
float
*,
);
extern
__cdecl
(
const
*);
extern
void
__cdecl
(
*,
);
extern
__cdecl
(
const
*);
extern
void
__cdecl
(
*,
);
#define _mm256_loadu2_m128(/* float const* */ hiaddr, \
/* float const* */ loaddr) \
_mm256_set_m128(_mm_loadu_ps(hiaddr), _mm_loadu_ps(loaddr))
#define _mm256_loadu2_m128d(/* double const* */ hiaddr, \
/* double const* */ loaddr) \
_mm256_set_m128d(_mm_loadu_pd(hiaddr), _mm_loadu_pd(loaddr))
#define _mm256_loadu2_m128i(/* __m128i const* */ hiaddr, \
/* __m128i const* */ loaddr) \
_mm256_set_m128i(_mm_loadu_si128(hiaddr), _mm_loadu_si128(loaddr))
#define _mm256_storeu2_m128(/* float* */ hiaddr, /* float* */ loaddr, \
/* __m256 */ a) \
do { \
__m256 _a = (a); /* reference a only once in macro body */ \
_mm_storeu_ps((loaddr), _mm256_castps256_ps128(_a)); \
_mm_storeu_ps((hiaddr), _mm256_extractf128_ps(_a, 0x1)); \
} while (0)
#define _mm256_storeu2_m128d(/* double* */ hiaddr, /* double* */ loaddr, \
/* __m256d */ a) \
do { \
__m256d _a = (a); /* reference a only once in macro body */ \
_mm_storeu_pd((loaddr), _mm256_castpd256_pd128(_a)); \
_mm_storeu_pd((hiaddr), _mm256_extractf128_pd(_a, 0x1)); \
} while (0)
#define _mm256_storeu2_m128i(/* __m128i* */ hiaddr, /* __m128i* */ loaddr, \
/* __m256i */ a) \
do { \
__m256i _a = (a); /* reference a only once in macro body */ \
_mm_storeu_si128((loaddr), _mm256_castsi256_si128(_a)); \
_mm_storeu_si128((hiaddr), _mm256_extractf128_si256(_a, 0x1)); \
} while (0)
extern
__cdecl
(
double
const
*,
);
extern
void
__cdecl
(
double
*,
,
);
extern
__cdecl
(
double
const
*,
);
extern
void
__cdecl
(
double
*,
,
);
extern
__cdecl
(
float
const
*,
);
extern
void
__cdecl
(
float
*,
,
);
extern
__cdecl
(
float
const
*,
);
extern
void
__cdecl
(
float
*,
,
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
const
*);
extern
void
__cdecl
(
*,
);
extern
void
__cdecl
(
double
*,
);
extern
void
__cdecl
(
float
*,
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
,
int
);
#define _mm256_ceil_pd(val) _mm256_round_pd((val), _MM_FROUND_CEIL)
#define _mm256_floor_pd(val) _mm256_round_pd((val), _MM_FROUND_FLOOR)
extern
__cdecl
(
,
int
);
#define _mm256_ceil_ps(val) _mm256_round_ps((val), _MM_FROUND_CEIL)
#define _mm256_floor_ps(val) _mm256_round_ps((val), _MM_FROUND_FLOOR)
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
int
__cdecl
(
,
);
#define _mm256_test_all_zeros(mask, val) \
_mm256_testz_si256((mask), (val))
extern
int
__cdecl
(
,
);
#define _mm256_test_all_ones(val) \
_mm256_testc_si256((val), _mm256_cmpeq_epi32((val),(val)))
extern
int
__cdecl
(
,
);
#define _mm256_test_mix_ones_zeros(mask, val) \
_mm256_testnzc_si256((mask), (val))
extern
int
__cdecl
(
,
);
extern
int
__cdecl
(
,
);
extern
int
__cdecl
(
,
);
extern
int
__cdecl
(
,
);
extern
int
__cdecl
(
,
);
extern
int
__cdecl
(
,
);
extern
int
__cdecl
(
,
);
extern
int
__cdecl
(
,
);
extern
int
__cdecl
(
,
);
extern
int
__cdecl
(
,
);
extern
int
__cdecl
(
,
);
extern
int
__cdecl
(
,
);
extern
int
__cdecl
(
);
extern
int
__cdecl
(
);
extern
__cdecl
(
void
);
extern
__cdecl
(
void
);
extern
__cdecl
(
void
);
extern
__cdecl
(
double
,
double
,
double
,
double
);
extern
__cdecl
(
float
,
float
,
float
,
float
,
float
,
float
,
float
,
float
);
extern
__cdecl
(
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
);
extern
__cdecl
(
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
);
extern
__cdecl
(
int
,
int
,
int
,
int
,
int
,
int
,
int
,
int
);
extern
__cdecl
(
__int64
,
__int64
,
__int64
,
__int64
);
#define _mm256_set_m128(/* __m128 */ hi, /* __m128 */ lo) \
_mm256_insertf128_ps(_mm256_castps128_ps256(lo), (hi), 0x1)
#define _mm256_set_m128d(/* __m128d */ hi, /* __m128d */ lo) \
_mm256_insertf128_pd(_mm256_castpd128_pd256(lo), (hi), 0x1)
#define _mm256_set_m128i(/* __m128i */ hi, /* __m128i */ lo) \
_mm256_insertf128_si256(_mm256_castsi128_si256(lo), (hi), 0x1)
extern
__cdecl
(
double
,
double
,
double
,
double
);
extern
__cdecl
(
float
,
float
,
float
,
float
,
float
,
float
,
float
,
float
);
extern
__cdecl
(
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
,
char
);
extern
__cdecl
(
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
,
short
);
extern
__cdecl
(
int
,
int
,
int
,
int
,
int
,
int
,
int
,
int
);
extern
__cdecl
(
__int64
,
__int64
,
__int64
,
__int64
);
#define _mm256_setr_m128(lo, hi) _mm256_set_m128((hi), (lo))
#define _mm256_setr_m128d(lo, hi) _mm256_set_m128d((hi), (lo))
#define _mm256_setr_m128i(lo, hi) _mm256_set_m128i((hi), (lo))
extern
__cdecl
(
double
);
extern
__cdecl
(
float
);
extern
__cdecl
(
char
);
extern
__cdecl
(
short
);
extern
__cdecl
(
int
);
extern
__cdecl
(
long
long
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
,
const
int
);
extern
__cdecl
(
,
int
);
#define _mm_undefined_ps _mm_setzero_ps
#define _mm_undefined_pd _mm_setzero_pd
#define _mm_undefined_si128 _mm_setzero_si128
#define _mm256_undefined_ps _mm256_setzero_ps
#define _mm256_undefined_pd _mm256_setzero_pd
#define _mm256_undefined_si256 _mm256_setzero_si256
#define _XCR_XFEATURE_ENABLED_MASK 0
extern
unsigned
__int64
__cdecl
(
unsigned
int
);
extern
void
__cdecl
(
unsigned
int
,
unsigned
__int64
);
extern
void
__cdecl
(
void
*,
unsigned
__int64
);
#if defined (_M_X64)
extern void __cdecl _xsave64(void *, unsigned __int64);
#endif /* defined (_M_X64) */
extern
void
__cdecl
(
void
*,
unsigned
__int64
);
#if defined (_M_X64)
extern void __cdecl _xsaveopt64(void *, unsigned __int64);
#endif /* defined (_M_X64) */
extern
void
__cdecl
(
void
*,
unsigned
__int64
);
#if defined (_M_X64)
extern void __cdecl _xsavec64(void *, unsigned __int64);
#endif /* defined (_M_X64) */
extern
void
__cdecl
(
void
const
*,
unsigned
__int64
);
#if defined (_M_X64)
extern void __cdecl _xrstor64(void const *, unsigned __int64);
#endif /* defined (_M_X64) */
extern
void
__cdecl
(
void
*,
unsigned
__int64
);
#if defined (_M_X64)
extern void __cdecl _xsaves64(void *, unsigned __int64);
#endif /* defined (_M_X64) */
extern
void
__cdecl
(
void
const
*,
unsigned
__int64
);
#if defined (_M_X64)
extern void __cdecl _xrstors64(void const *, unsigned __int64);
#endif /* defined (_M_X64) */
extern
void
__cdecl
(
void
*);
#if defined (_M_X64)
extern void __cdecl _fxsave64(void *);
#endif /* defined (_M_X64) */
extern
void
__cdecl
(
void
const
*);
#if defined (_M_X64)
extern void __cdecl _fxrstor64(void const *);
#endif /* defined (_M_X64) */
extern
int
__cdecl
(
unsigned
short
*);
extern
int
__cdecl
(
unsigned
int
*);
#if defined (_M_X64)
extern int __cdecl _rdrand64_step(unsigned __int64 *);
#endif /* defined (_M_X64) */
#if defined (_M_X64)
/*
* Return the value of the FS/GS segment base register.
*/
extern unsigned int __cdecl _readfsbase_u32();
extern unsigned int __cdecl _readgsbase_u32();
extern unsigned __int64 __cdecl _readfsbase_u64();
extern unsigned __int64 __cdecl _readgsbase_u64();
/*
* Write the value to the FS/GS segment base register.
*/
extern void __cdecl _writefsbase_u32(unsigned int);
extern void __cdecl _writegsbase_u32(unsigned int);
extern void __cdecl _writefsbase_u64(unsigned __int64);
extern void __cdecl _writegsbase_u64(unsigned __int64);
#endif /* defined (_M_X64) */
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
,
const
int
);
#define _mm256_bslli_epi128 _mm256_slli_si256
extern
__cdecl
(
,
const
int
);
#define _mm256_bsrli_epi128 _mm256_srli_si256
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
int
);
extern
__cdecl
(
,
int
);
extern
__cdecl
(
,
int
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
int
);
extern
__cdecl
(
,
int
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
int
);
extern
__cdecl
(
,
int
);
extern
__cdecl
(
,
int
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
,
,
);
extern
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
const
int
);
extern
__cdecl
(
,
const
int
);
extern
__cdecl
(
,
const
int
);
extern
__cdecl
(
,
const
int
);
extern
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
_mm256_broadcastsi128_si256
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
int
__cdecl
(
);
extern
__cdecl
(
int
const
* ,
);
extern
__cdecl
(
__int64
const
* ,
);
extern
void
__cdecl
(
int
* ,
,
);
extern
void
__cdecl
(
__int64
* ,
,
);
extern
__cdecl
(
int
const
* ,
);
extern
__cdecl
(
__int64
const
* ,
);
extern
void
__cdecl
(
int
* ,
,
);
extern
void
__cdecl
(
__int64
* ,
,
);
extern
__cdecl
_mm256_permutevar8x32_epi32
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
const
int
);
extern
__cdecl
(
,
const
int
);
extern
__cdecl
_mm256_permute2x128_si256
(
,
,
const
int
);
extern
__cdecl
(
const
*);
extern
__cdecl
(
,
double
const
* ,
,
,
const
int
);
extern
__cdecl
(
,
float
const
* ,
,
,
const
int
);
extern
__cdecl
(
,
double
const
* ,
,
,
const
int
);
extern
__cdecl
(
,
float
const
* ,
,
,
const
int
);
extern
__cdecl
(
,
double
const
* ,
,
,
const
int
);
extern
__cdecl
(
,
float
const
* ,
,
,
const
int
);
extern
__cdecl
(
,
double
const
* ,
,
,
const
int
);
extern
__cdecl
(
,
float
const
* ,
,
,
const
int
);
extern
__cdecl
_mm256_mask_i32gather_epi32
(
,
int
const
* ,
,
,
const
int
);
extern
__cdecl
_mm256_mask_i32gather_epi64
(
,
__int64
const
* ,
,
,
const
int
);
extern
__cdecl
_mm256_mask_i64gather_epi32
(
,
int
const
* ,
,
,
const
int
);
extern
__cdecl
_mm256_mask_i64gather_epi64
(
,
__int64
const
* ,
,
,
const
int
);
extern
__cdecl
(
,
int
const
* ,
,
,
const
int
);
extern
__cdecl
(
,
__int64
const
* ,
,
,
const
int
);
extern
__cdecl
(
,
int
const
* ,
,
,
const
int
);
extern
__cdecl
(
,
__int64
const
* ,
,
,
const
int
);
extern
__cdecl
(
double
const
* ,
,
const
int
);
extern
__cdecl
(
float
const
* ,
,
const
int
);
extern
__cdecl
(
double
const
* ,
,
const
int
);
extern
__cdecl
(
float
const
* ,
,
const
int
);
extern
__cdecl
(
double
const
* ,
,
const
int
);
extern
__cdecl
(
float
const
* ,
,
const
int
);
extern
__cdecl
(
double
const
* ,
,
const
int
);
extern
__cdecl
(
float
const
* ,
,
const
int
);
extern
__cdecl
(
int
const
* ,
,
const
int
);
extern
__cdecl
(
__int64
const
* ,
,
const
int
);
extern
__cdecl
(
int
const
* ,
,
const
int
);
extern
__cdecl
(
__int64
const
* ,
,
const
int
);
extern
__cdecl
(
int
const
* ,
,
const
int
);
extern
__cdecl
(
__int64
const
* ,
,
const
int
);
extern
__cdecl
(
int
const
* ,
,
const
int
);
extern
__cdecl
(
__int64
const
* ,
,
const
int
);
#define _mm_loadu_si16(p) _mm_cvtsi32_si128(*(unsigned short const*)(p))
#define _mm_storeu_si16(p, a) (void)(*(short*)(p) = (short)_mm_cvtsi128_si32((a)))
#define _mm_loadu_si32(p) _mm_cvtsi32_si128(*(unsigned int const*)(p))
#define _mm_storeu_si32(p, a) (void)(*(int*)(p) = _mm_cvtsi128_si32((a)))
#define _mm_loadu_si64(p) _mm_loadl_epi64((__m128i const*)(p))
#define _mm_storeu_si64(p, a) (_mm_storel_epi64((__m128i*)(p), (a)))
extern
unsigned
int
(
unsigned
int
,
unsigned
int
,
unsigned
int
);
extern
unsigned
int
(
unsigned
int
);
extern
unsigned
int
(
unsigned
int
);
extern
unsigned
int
(
unsigned
int
);
extern
unsigned
int
(
unsigned
int
,
unsigned
int
);
extern
unsigned
int
(
unsigned
int
,
unsigned
int
,
unsigned
int
* );
extern
unsigned
int
(
unsigned
int
,
unsigned
int
);
extern
unsigned
int
(
unsigned
int
,
unsigned
int
);
extern
unsigned
int
(
unsigned
int
,
const
unsigned
int
);
extern
int
(
int
,
unsigned
int
);
extern
unsigned
int
(
unsigned
int
,
unsigned
int
);
extern
unsigned
int
(
unsigned
int
,
unsigned
int
);
#if defined (_M_X64)
extern unsigned __int64 _bextr_u64(unsigned __int64 /* src */,
unsigned int /* start_bit */,
unsigned int /* len_in_bits */);
extern unsigned __int64 _blsi_u64(unsigned __int64);
extern unsigned __int64 _blsmsk_u64(unsigned __int64);
extern unsigned __int64 _blsr_u64(unsigned __int64);
extern unsigned __int64 _bzhi_u64(unsigned __int64 /* src */,
unsigned int /* index */);
extern unsigned __int64 _mulx_u64(unsigned __int64 /* src1 */,
unsigned __int64 /* src2 */,
unsigned __int64 * /* high_bits */);
extern unsigned __int64 _pdep_u64(unsigned __int64 /* src */,
unsigned __int64 /* mask */);
extern unsigned __int64 _pext_u64(unsigned __int64 /* src */,
unsigned __int64 /* mask */);
extern unsigned __int64 _rorx_u64(unsigned __int64 /* src */,
const unsigned int /* shift_count */);
extern __int64 _sarx_i64(__int64 /* src */,
unsigned int /* shift_count */);
extern unsigned __int64 _shlx_u64(unsigned __int64 /* src */,
unsigned int /* shift_count */);
extern unsigned __int64 _shrx_u64(unsigned __int64 /* src */,
unsigned int /* shift_count */);
#endif /* defined (_M_X64) */
extern
unsigned
int
(
unsigned
int
);
#if defined (_M_X64)
extern unsigned __int64 _lzcnt_u64(unsigned __int64);
#endif /* defined (_M_X64) */
extern
unsigned
int
(
unsigned
int
);
#if defined (_M_X64)
extern unsigned __int64 _tzcnt_u64(unsigned __int64);
#endif /* defined (_M_X64) */
extern
void
__cdecl
(
unsigned
int
,
void
* );
extern
void
(
long
volatile
*,
long
);
extern
void
(
void
*
volatile
*,
void
*);
extern
long
_InterlockedExchange_HLEAcquire
(
long
volatile
*,
long
);
extern
long
_InterlockedExchange_HLERelease
(
long
volatile
*,
long
);
extern
void
*
_InterlockedExchangePointer_HLEAcquire
(
void
*
volatile
*,
void
*);
extern
void
*
_InterlockedExchangePointer_HLERelease
(
void
*
volatile
*,
void
*);
extern
long
_InterlockedCompareExchange_HLEAcquire
(
long
volatile
*,
long
,
long
);
extern
long
_InterlockedCompareExchange_HLERelease
(
long
volatile
*,
long
,
long
);
extern
__int64
_InterlockedCompareExchange64_HLEAcquire
(
__int64
volatile
*,
__int64
,
__int64
);
extern
__int64
_InterlockedCompareExchange64_HLERelease
(
__int64
volatile
*,
__int64
,
__int64
);
extern
void
*
_InterlockedCompareExchangePointer_HLEAcquire
(
void
*
volatile
*,
void
*,
void
*);
extern
void
*
_InterlockedCompareExchangePointer_HLERelease
(
void
*
volatile
*,
void
*,
void
*);
extern
long
_InterlockedExchangeAdd_HLEAcquire
(
long
volatile
*,
long
);
extern
long
_InterlockedExchangeAdd_HLERelease
(
long
volatile
*,
long
);
extern
long
_InterlockedAnd_HLEAcquire
(
long
volatile
*,
long
);
extern
long
_InterlockedAnd_HLERelease
(
long
volatile
*,
long
);
extern
long
_InterlockedOr_HLEAcquire
(
long
volatile
*,
long
);
extern
long
_InterlockedOr_HLERelease
(
long
volatile
*,
long
);
extern
long
_InterlockedXor_HLEAcquire
(
long
volatile
*,
long
);
extern
long
_InterlockedXor_HLERelease
(
long
volatile
*,
long
);
extern
unsigned
char
_interlockedbittestandset_HLEAcquire
(
long
*,
long
);
extern
unsigned
char
_interlockedbittestandset_HLERelease
(
long
*,
long
);
extern
unsigned
char
_interlockedbittestandreset_HLEAcquire
(
long
*,
long
);
extern
unsigned
char
_interlockedbittestandreset_HLERelease
(
long
*,
long
);
#if defined(_M_X64)
extern void _Store64_HLERelease(__int64 volatile *,__int64);
extern __int64 _InterlockedExchange64_HLEAcquire(__int64 volatile *,__int64);
extern __int64 _InterlockedExchange64_HLERelease(__int64 volatile *,__int64);
extern __int64 _InterlockedExchangeAdd64_HLEAcquire(__int64 volatile *,__int64);
extern __int64 _InterlockedExchangeAdd64_HLERelease(__int64 volatile *,__int64);
extern __int64 _InterlockedAnd64_HLEAcquire(__int64 volatile *,__int64);
extern __int64 _InterlockedAnd64_HLERelease(__int64 volatile *,__int64);
extern __int64 _InterlockedOr64_HLEAcquire(__int64 volatile *,__int64);
extern __int64 _InterlockedOr64_HLERelease(__int64 volatile *,__int64);
extern __int64 _InterlockedXor64_HLEAcquire(__int64 volatile *,__int64);
extern __int64 _InterlockedXor64_HLERelease(__int64 volatile *,__int64);
extern unsigned char _interlockedbittestandset64_HLEAcquire(__int64 *,__int64);
extern unsigned char _interlockedbittestandset64_HLERelease(__int64 *,__int64);
extern unsigned char _interlockedbittestandreset64_HLEAcquire(__int64 *,__int64);
extern unsigned char _interlockedbittestandreset64_HLERelease(__int64 *,__int64);
#endif /* defined (_M_X64) */
#define _XBEGIN_STARTED (~0u)
#define _XABORT_EXPLICIT (1 << 0)
#define _XABORT_RETRY (1 << 1)
#define _XABORT_CONFLICT (1 << 2)
#define _XABORT_CAPACITY (1 << 3)
#define _XABORT_DEBUG (1 << 4)
#define _XABORT_NESTED (1 << 5)
#define _XABORT_CODE(x) ((unsigned char)(((x) >> 24) & 0xFF))
extern
unsigned
int
__cdecl
(
void
);
extern
void
__cdecl
(
void
);
extern
void
__cdecl
(
const
unsigned
int
);
extern
unsigned
char
__cdecl
(
void
);
extern
int
__cdecl
(
unsigned
short
*);
extern
int
__cdecl
(
unsigned
int
*);
#if defined(_M_X64)
extern int __cdecl _rdseed64_step(unsigned __int64 *);
#endif /* defined (_M_X64) */
extern
unsigned
char
__cdecl
(
unsigned
char
,
unsigned
int
,
unsigned
int
,
unsigned
int
* );
#if defined(_M_X64)
extern unsigned char __cdecl _addcarryx_u64(unsigned char /*c_in*/,
unsigned __int64 /*src1*/,
unsigned __int64 /*src2*/,
unsigned __int64 * /*out*/);
#endif /* defined (_M_X64) */
extern
unsigned
short
__cdecl
(
void
const
*);
extern
unsigned
int
__cdecl
(
void
const
*);
extern
unsigned
__int64
__cdecl
(
void
const
*);
#define _loadbe_i16(be_ptr) ((short) _load_be_u16(be_ptr))
#define _loadbe_i32(be_ptr) ((int) _load_be_u32(be_ptr))
#define _loadbe_i64(be_ptr) ((__int64)_load_be_u64(be_ptr))
extern
void
__cdecl
(
void
*,
unsigned
short
);
extern
void
__cdecl
(
void
*,
unsigned
int
);
extern
void
__cdecl
(
void
*,
unsigned
__int64
);
#define _storebe_i16(be_ptr, val) _store_be_u16(be_ptr, (unsigned short)(val))
#define _storebe_i32(be_ptr, val) _store_be_u32(be_ptr, (unsigned int)(val))
#define _storebe_i64(be_ptr, val) _store_be_u64(be_ptr, (unsigned __int64)(__int64)(val))
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
,
const
int
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
);
extern
__cdecl
(
,
,
);
extern
void
*
__cdecl
(
const
void
*,
);
extern
void
*
__cdecl
(
const
void
*,
const
void
*,
);
extern
void
*
__cdecl
(
const
void
*,
const
void
*);
extern
void
*
__cdecl
(
const
void
*);
extern
void
__cdecl
(
const
void
**,
const
void
*);
extern
void
__cdecl
(
const
void
*);
extern
void
__cdecl
(
const
void
*);
extern
void
__cdecl
(
const
void
*,
);
extern
void
*
__cdecl
(
const
void
**,
const
void
*);
extern
const
void
*
__cdecl
(
const
void
*);
extern
const
void
*
__cdecl
(
const
void
*);
extern
__cdecl
(
,
int
,
const
int
);
extern
__cdecl
(
,
int
,
const
int
);
extern
__cdecl
(
,
int
,
const
int
);
#if defined(_M_X64)
extern __m256i __cdecl _mm256_insert_epi64(__m256i /* dst */, __int64 /* src */, const int /* index */);
#endif // defined (_M_X64)
extern
int
__cdecl
(
,
const
int
);
extern
int
__cdecl
(
,
const
int
);
extern
int
__cdecl
(
,
const
int
);
#if defined(_M_X64)
extern __int64 __cdecl _mm256_extract_epi64(__m256i /* src */, const int /* index */);
#endif // defined (_M_X64)
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
__cdecl
(
);
extern
unsigned
int
__cdecl
(
void
);
extern
void
__cdecl
(
unsigned
int
);
#if defined(_M_X64)
extern void __cdecl _ptwrite64(unsigned __int64);
#endif // defined (_M_X64)
extern
void
__cdecl
(
unsigned
int
);
extern
unsigned
int
__cdecl
(
void
);
extern
void
__cdecl
(
void
);
extern
void
__cdecl
(
void
*);
extern
void
__cdecl
(
unsigned
int
,
void
*);
extern
void
__cdecl
(
unsigned
int
,
void
*);
extern
void
__cdecl
(
void
);
extern
void
__cdecl
(
void
*);
extern
void
*
__cdecl
(
void
*);
#if defined(_M_X64)
extern void __cdecl _incsspq (unsigned __int64);
extern unsigned __int64 __cdecl _rdsspq (void);
extern void __cdecl _wrssq (unsigned __int64, void *);
extern void __cdecl _wrussq(unsigned __int64, void *);
#endif
#if defined __cplusplus
};
#endif /* defined __cplusplus */
#include <zmmintrin.h>
#endif /* defined (_M_CEE_PURE) */
#endif /* __midl */
#endif /* _INCLUDED_IMM */