Reactos
at master 1034 lines 46 kB view raw
1 2#pragma once 3#define __INTRIN_H_ 4 5#ifndef RC_INVOKED 6 7#include <vcruntime.h> 8#include <intrin0.inl.h> 9#include <setjmp.h> 10#include <stddef.h> 11 12#if defined(_M_IX86) || defined(_M_X64) 13#include <immintrin.h> 14//#include <ammintrin.h> 15#include <xmmintrin.h> // native headers: immintrin.h -> wmmintrin.h -> nmmintrin.h -> smmintrin.h -> tmmintrin.h -> pmmintrin.h -> emmintrin.h 16#endif /* _M_IX86 || _M_X64 */ 17 18#if defined(_M_IX86) 19//#include <mm3dnow.h> 20#endif /* _M_IX86 */ 21 22#if defined(_M_ARM) 23//#include <arm_neon.h> 24#include <armintr.h> 25#endif /* _M_ARM */ 26 27#if defined(_M_ARM64) 28#include <arm64intr.h> 29//#include <arm64_neon.h> 30#endif /* _M_ARM64 */ 31 32#if defined(__cplusplus) 33extern "C" { 34#endif 35 36void* _AddressOfReturnAddress(void); 37unsigned char _BitScanForward(unsigned long * _Index, unsigned long _Mask); 38unsigned char _BitScanReverse(unsigned long * _Index, unsigned long _Mask); 39long _InterlockedAnd(_Interlocked_operand_ long volatile * _Value, long _Mask); 40short _InterlockedAnd16(_Interlocked_operand_ short volatile * _Value, short _Mask); 41char _InterlockedAnd8(_Interlocked_operand_ char volatile * _Value, char _Mask); 42long __cdecl _InterlockedCompareExchange(_Interlocked_operand_ long volatile * _Destination, long _Exchange, long _Comparand); 43short _InterlockedCompareExchange16(_Interlocked_operand_ short volatile * _Destination, short _Exchange, short _Comparand); 44__int64 _InterlockedCompareExchange64(_Interlocked_operand_ __int64 volatile * _Destination, __int64 _Exchange, __int64 _Comparand); 45char _InterlockedCompareExchange8(_Interlocked_operand_ char volatile * _Destination, char _Exchange, char _Comparand); 46void * _InterlockedCompareExchangePointer(_Interlocked_operand_ void * volatile * _Destination, void * _Exchange, void * _Comparand); 47long __cdecl _InterlockedDecrement(_Interlocked_operand_ long volatile * _Addend); 48short _InterlockedDecrement16(_Interlocked_operand_ short volatile * _Addend); 49long __cdecl _InterlockedExchange(_Interlocked_operand_ long volatile * _Target, long _Value); 50short _InterlockedExchange16(_Interlocked_operand_ short volatile * _Target, short _Value); 51char _InterlockedExchange8(_Interlocked_operand_ char volatile * _Target, char _Value); 52long __cdecl _InterlockedExchangeAdd(_Interlocked_operand_ long volatile * _Addend, long _Value); 53short _InterlockedExchangeAdd16(_Interlocked_operand_ short volatile * _Addend, short _Value); 54char _InterlockedExchangeAdd8(_Interlocked_operand_ char volatile * _Addend, char _Value); 55void * _InterlockedExchangePointer(_Interlocked_operand_ void * volatile * _Target, void * _Value); 56long __cdecl _InterlockedIncrement(_Interlocked_operand_ long volatile * _Addend); 57short _InterlockedIncrement16(_Interlocked_operand_ short volatile * _Addend); 58long _InterlockedOr(_Interlocked_operand_ long volatile * _Value, long _Mask); 59short _InterlockedOr16(_Interlocked_operand_ short volatile * _Value, short _Mask); 60char _InterlockedOr8(_Interlocked_operand_ char volatile * _Value, char _Mask); 61long _InterlockedXor(_Interlocked_operand_ long volatile * _Value, long _Mask); 62short _InterlockedXor16(_Interlocked_operand_ short volatile * _Value, short _Mask); 63char _InterlockedXor8(_Interlocked_operand_ char volatile * _Value, char _Mask); 64void _ReadBarrier(void); 65void _ReadWriteBarrier(void); 66void * _ReturnAddress(void); 67void _WriteBarrier(void); 68void __code_seg(const char *); 69void __cdecl __debugbreak(void); 70__declspec(noreturn) void __fastfail(unsigned int); 71void __nop(void); 72__int64 __cdecl _abs64(__int64); 73unsigned char _bittest(long const *, long); 74unsigned char _bittestandcomplement(long *, long); 75unsigned char _bittestandreset(long *, long); 76unsigned char _bittestandset(long *, long); 77_Check_return_ unsigned __int64 __cdecl _byteswap_uint64(_In_ unsigned __int64); 78_Check_return_ unsigned long __cdecl _byteswap_ulong(_In_ unsigned long); 79_Check_return_ unsigned short __cdecl _byteswap_ushort(_In_ unsigned short); 80void __cdecl _disable(void); 81void __cdecl _enable(void); 82unsigned char _interlockedbittestandreset(long volatile *, long); 83unsigned char _interlockedbittestandset(long volatile *, long); 84_Check_return_ unsigned long __cdecl _lrotl(_In_ unsigned long, _In_ int); 85_Check_return_ unsigned long __cdecl _lrotr(_In_ unsigned long, _In_ int); 86_Check_return_ unsigned int __cdecl _rotl(_In_ unsigned int _Value, _In_ int _Shift); 87_Check_return_ unsigned short __cdecl _rotl16(_In_ unsigned short _Value, _In_ unsigned char _Shift); 88_Check_return_ unsigned __int64 __cdecl _rotl64(_In_ unsigned __int64 _Value, _In_ int _Shift); 89_Check_return_ unsigned char __cdecl _rotl8(_In_ unsigned char _Value, _In_ unsigned char _Shift); 90_Check_return_ unsigned int __cdecl _rotr(_In_ unsigned int _Value, _In_ int _Shift); 91_Check_return_ unsigned short __cdecl _rotr16(_In_ unsigned short _Value, _In_ unsigned char _Shift); 92_Check_return_ unsigned __int64 __cdecl _rotr64(_In_ unsigned __int64 _Value, _In_ int _Shift); 93_Check_return_ unsigned char __cdecl _rotr8(_In_ unsigned char _Value, _In_ unsigned char _Shift); 94 95#if defined(_M_IX86) || defined(_M_X64) 96 97void __cpuid(int[4], int); 98void __cpuidex(int[4], int, int); 99__int64 __emul(int, int); 100unsigned __int64 __emulu(unsigned int, unsigned int); 101unsigned int __getcallerseflags(void); 102void __halt(void); 103unsigned char __inbyte(unsigned short); 104void __inbytestring(unsigned short, unsigned char *, unsigned long); 105unsigned long __indword(unsigned short); 106void __indwordstring(unsigned short, unsigned long *, unsigned long); 107void __int2c(void); 108void __invlpg(void *); 109unsigned short __inword(unsigned short); 110void __inwordstring(unsigned short, unsigned short *, unsigned long); 111void __lidt(void *); 112unsigned __int64 __ll_lshift(unsigned __int64, int); 113__int64 __ll_rshift(__int64, int); 114unsigned int __lzcnt(unsigned int); 115unsigned short __lzcnt16(unsigned short); 116void __movsb(unsigned char *, unsigned char const *, size_t); 117void __movsd(unsigned long *, unsigned long const *, size_t); 118void __movsw(unsigned short *, unsigned short const *, size_t); 119void __nvreg_restore_fence(void); 120void __nvreg_save_fence(void); 121void __outbyte(unsigned short, unsigned char); 122void __outbytestring(unsigned short, unsigned char *, unsigned long); 123void __outdword(unsigned short, unsigned long); 124void __outdwordstring(unsigned short, unsigned long *, unsigned long); 125void __outword(unsigned short, unsigned short); 126void __outwordstring(unsigned short, unsigned short *, unsigned long); 127unsigned int __popcnt(unsigned int); 128unsigned short __popcnt16(unsigned short); 129unsigned __int64 __rdtsc(void); 130unsigned __int64 __rdtscp(unsigned int *); 131unsigned __int64 __readmsr(unsigned long); 132unsigned __int64 __readpmc(unsigned long); 133unsigned long __segmentlimit(unsigned long); 134void __sidt(void *); 135void _sgdt(void *); 136void __stosb(unsigned char *, unsigned char, size_t); 137void __stosd(unsigned long *, unsigned long, size_t); 138void __stosw(unsigned short *, unsigned short, size_t); 139void __svm_clgi(void); 140void __svm_invlpga(void *, int); 141void __svm_skinit(int); 142void __svm_stgi(void); 143void __svm_vmload(size_t); 144void __svm_vmrun(size_t); 145void __svm_vmsave(size_t); 146void __ud2(void); 147unsigned __int64 __ull_rshift(unsigned __int64, int); 148void __vmx_off(void); 149void __vmx_vmptrst(unsigned __int64 *); 150void __wbinvd(void); 151void __writemsr(unsigned long, unsigned __int64); 152int __cdecl _inp(unsigned short); 153unsigned long __cdecl _inpd(unsigned short); 154unsigned short __cdecl _inpw(unsigned short); 155void _m_prefetch(void *); 156void _m_prefetchw(volatile const void *); 157 158void _mm_mfence(void); 159void _mm_lfence(void); 160void _mm_sfence(void); 161void _mm_pause(void); 162 163#if 0 164__m128i _mm_abs_epi16(__m128i); 165__m128i _mm_abs_epi32(__m128i); 166__m128i _mm_abs_epi8(__m128i); 167__m64 _mm_abs_pi16(__m64); 168__m64 _mm_abs_pi32(__m64); 169__m64 _mm_abs_pi8(__m64); 170__m128i _mm_add_epi16(__m128i, __m128i); 171__m128i _mm_add_epi32(__m128i, __m128i); 172__m128i _mm_add_epi64(__m128i, __m128i); 173__m128i _mm_add_epi8(__m128i, __m128i); 174__m128d _mm_add_pd(__m128d, __m128d); 175__m128 _mm_add_ps(__m128, __m128); 176__m128d _mm_add_sd(__m128d, __m128d); 177__m128 _mm_add_ss(__m128, __m128); 178__m128i _mm_adds_epi16(__m128i, __m128i); 179__m128i _mm_adds_epi8(__m128i, __m128i); 180__m128i _mm_adds_epu16(__m128i, __m128i); 181__m128i _mm_adds_epu8(__m128i, __m128i); 182__m128d _mm_addsub_pd(__m128d, __m128d); 183__m128 _mm_addsub_ps(__m128, __m128); 184__m128i _mm_alignr_epi8(__m128i, __m128i, int); 185__m64 _mm_alignr_pi8(__m64, __m64, int); 186__m128d _mm_and_pd(__m128d, __m128d); 187__m128 _mm_and_ps(__m128, __m128); 188__m128i _mm_and_si128(__m128i, __m128i); 189__m128d _mm_andnot_pd(__m128d, __m128d); 190__m128 _mm_andnot_ps(__m128, __m128); 191__m128i _mm_andnot_si128(__m128i, __m128i); 192__m128i _mm_avg_epu16(__m128i, __m128i); 193__m128i _mm_avg_epu8(__m128i, __m128i); 194__m128i _mm_blend_epi16(__m128i, __m128i, int); 195__m128d _mm_blend_pd(__m128d, __m128d, int); 196__m128 _mm_blend_ps(__m128, __m128, int); 197__m128i _mm_blendv_epi8(__m128i, __m128i, __m128i); 198__m128d _mm_blendv_pd(__m128d, __m128d, __m128d); 199__m128 _mm_blendv_ps(__m128, __m128, __m128); 200void _mm_clflush(void const *); 201__m128i _mm_cmpeq_epi16(__m128i, __m128i); 202__m128i _mm_cmpeq_epi32(__m128i, __m128i); 203__m128i _mm_cmpeq_epi64(__m128i, __m128i); 204__m128i _mm_cmpeq_epi8(__m128i, __m128i); 205__m128d _mm_cmpeq_pd(__m128d, __m128d); 206__m128 _mm_cmpeq_ps(__m128, __m128); 207__m128d _mm_cmpeq_sd(__m128d, __m128d); 208__m128 _mm_cmpeq_ss(__m128, __m128); 209int _mm_cmpestra(__m128i, int, __m128i, int, int); 210int _mm_cmpestrc(__m128i, int, __m128i, int, int); 211int _mm_cmpestri(__m128i, int, __m128i, int, int); 212__m128i _mm_cmpestrm(__m128i, int, __m128i, int, int); 213int _mm_cmpestro(__m128i, int, __m128i, int, int); 214int _mm_cmpestrs(__m128i, int, __m128i, int, int); 215int _mm_cmpestrz(__m128i, int, __m128i, int, int); 216__m128d _mm_cmpge_pd(__m128d, __m128d); 217__m128 _mm_cmpge_ps(__m128, __m128); 218__m128d _mm_cmpge_sd(__m128d, __m128d); 219__m128 _mm_cmpge_ss(__m128, __m128); 220__m128i _mm_cmpgt_epi16(__m128i, __m128i); 221__m128i _mm_cmpgt_epi32(__m128i, __m128i); 222__m128i _mm_cmpgt_epi64(__m128i, __m128i); 223__m128i _mm_cmpgt_epi8(__m128i, __m128i); 224__m128d _mm_cmpgt_pd(__m128d, __m128d); 225__m128 _mm_cmpgt_ps(__m128, __m128); 226__m128d _mm_cmpgt_sd(__m128d, __m128d); 227__m128 _mm_cmpgt_ss(__m128, __m128); 228int _mm_cmpistra(__m128i, __m128i, int); 229int _mm_cmpistrc(__m128i, __m128i, int); 230int _mm_cmpistri(__m128i, __m128i, int); 231__m128i _mm_cmpistrm(__m128i, __m128i, int); 232int _mm_cmpistro(__m128i, __m128i, int); 233int _mm_cmpistrs(__m128i, __m128i, int); 234int _mm_cmpistrz(__m128i, __m128i, int); 235__m128d _mm_cmple_pd(__m128d, __m128d); 236__m128 _mm_cmple_ps(__m128, __m128); 237__m128d _mm_cmple_sd(__m128d, __m128d); 238__m128 _mm_cmple_ss(__m128, __m128); 239__m128i _mm_cmplt_epi16(__m128i, __m128i); 240__m128i _mm_cmplt_epi32(__m128i, __m128i); 241__m128i _mm_cmplt_epi8(__m128i, __m128i); 242__m128d _mm_cmplt_pd(__m128d, __m128d); 243__m128 _mm_cmplt_ps(__m128, __m128); 244__m128d _mm_cmplt_sd(__m128d, __m128d); 245__m128 _mm_cmplt_ss(__m128, __m128); 246__m128d _mm_cmpneq_pd(__m128d, __m128d); 247__m128 _mm_cmpneq_ps(__m128, __m128); 248__m128d _mm_cmpneq_sd(__m128d, __m128d); 249__m128 _mm_cmpneq_ss(__m128, __m128); 250__m128d _mm_cmpnge_pd(__m128d, __m128d); 251__m128 _mm_cmpnge_ps(__m128, __m128); 252__m128d _mm_cmpnge_sd(__m128d, __m128d); 253__m128 _mm_cmpnge_ss(__m128, __m128); 254__m128d _mm_cmpngt_pd(__m128d, __m128d); 255__m128 _mm_cmpngt_ps(__m128, __m128); 256__m128d _mm_cmpngt_sd(__m128d, __m128d); 257__m128 _mm_cmpngt_ss(__m128, __m128); 258__m128d _mm_cmpnle_pd(__m128d, __m128d); 259__m128 _mm_cmpnle_ps(__m128, __m128); 260__m128d _mm_cmpnle_sd(__m128d, __m128d); 261__m128 _mm_cmpnle_ss(__m128, __m128); 262__m128d _mm_cmpnlt_pd(__m128d, __m128d); 263__m128 _mm_cmpnlt_ps(__m128, __m128); 264__m128d _mm_cmpnlt_sd(__m128d, __m128d); 265__m128 _mm_cmpnlt_ss(__m128, __m128); 266__m128d _mm_cmpord_pd(__m128d, __m128d); 267__m128 _mm_cmpord_ps(__m128, __m128); 268__m128d _mm_cmpord_sd(__m128d, __m128d); 269__m128 _mm_cmpord_ss(__m128, __m128); 270__m128d _mm_cmpunord_pd(__m128d, __m128d); 271__m128 _mm_cmpunord_ps(__m128, __m128); 272__m128d _mm_cmpunord_sd(__m128d, __m128d); 273__m128 _mm_cmpunord_ss(__m128, __m128); 274int _mm_comieq_sd(__m128d, __m128d); 275int _mm_comieq_ss(__m128, __m128); 276int _mm_comige_sd(__m128d, __m128d); 277int _mm_comige_ss(__m128, __m128); 278int _mm_comigt_sd(__m128d, __m128d); 279int _mm_comigt_ss(__m128, __m128); 280int _mm_comile_sd(__m128d, __m128d); 281int _mm_comile_ss(__m128, __m128); 282int _mm_comilt_sd(__m128d, __m128d); 283int _mm_comilt_ss(__m128, __m128); 284int _mm_comineq_sd(__m128d, __m128d); 285int _mm_comineq_ss(__m128, __m128); 286unsigned int _mm_crc32_u16(unsigned int, unsigned short); 287unsigned int _mm_crc32_u32(unsigned int, unsigned int); 288unsigned int _mm_crc32_u8(unsigned int, unsigned char); 289__m128 _mm_cvt_si2ss(__m128, int); 290int _mm_cvt_ss2si(__m128); 291__m128i _mm_cvtepi16_epi32(__m128i); 292__m128i _mm_cvtepi16_epi64(__m128i); 293__m128i _mm_cvtepi32_epi64(__m128i); 294__m128d _mm_cvtepi32_pd(__m128i); 295__m128 _mm_cvtepi32_ps(__m128i); 296__m128i _mm_cvtepi8_epi16(__m128i); 297__m128i _mm_cvtepi8_epi32(__m128i); 298__m128i _mm_cvtepi8_epi64(__m128i); 299__m128i _mm_cvtepu16_epi32(__m128i); 300__m128i _mm_cvtepu16_epi64(__m128i); 301__m128i _mm_cvtepu32_epi64(__m128i); 302__m128i _mm_cvtepu8_epi16(__m128i); 303__m128i _mm_cvtepu8_epi32(__m128i); 304__m128i _mm_cvtepu8_epi64(__m128i); 305__m128i _mm_cvtpd_epi32(__m128d); 306__m128 _mm_cvtpd_ps(__m128d); 307__m128i _mm_cvtps_epi32(__m128); 308__m128d _mm_cvtps_pd(__m128); 309int _mm_cvtsd_si32(__m128d); 310__m128 _mm_cvtsd_ss(__m128, __m128d); 311int _mm_cvtsi128_si32(__m128i); 312__m128d _mm_cvtsi32_sd(__m128d, int); 313__m128i _mm_cvtsi32_si128(int); 314__m128d _mm_cvtss_sd(__m128d, __m128); 315int _mm_cvtt_ss2si(__m128); 316__m128i _mm_cvttpd_epi32(__m128d); 317__m128i _mm_cvttps_epi32(__m128); 318int _mm_cvttsd_si32(__m128d); 319__m128d _mm_div_pd(__m128d, __m128d); 320__m128 _mm_div_ps(__m128, __m128); 321__m128d _mm_div_sd(__m128d, __m128d); 322__m128 _mm_div_ss(__m128, __m128); 323__m128d _mm_dp_pd(__m128d, __m128d, int); 324__m128 _mm_dp_ps(__m128, __m128, int); 325int _mm_extract_epi16(__m128i, int); 326int _mm_extract_epi32(__m128i, int); 327int _mm_extract_epi8(__m128i, int); 328int _mm_extract_ps(__m128, int); 329__m128i _mm_extract_si64(__m128i, __m128i); 330__m128i _mm_extracti_si64(__m128i, int, int); 331unsigned int _mm_getcsr(void); 332__m128i _mm_hadd_epi16(__m128i, __m128i); 333__m128i _mm_hadd_epi32(__m128i, __m128i); 334__m128d _mm_hadd_pd(__m128d, __m128d); 335__m64 _mm_hadd_pi16(__m64, __m64); 336__m64 _mm_hadd_pi32(__m64, __m64); 337__m128 _mm_hadd_ps(__m128, __m128); 338__m128i _mm_hadds_epi16(__m128i, __m128i); 339__m64 _mm_hadds_pi16(__m64, __m64); 340__m128i _mm_hsub_epi16(__m128i, __m128i); 341__m128i _mm_hsub_epi32(__m128i, __m128i); 342__m128d _mm_hsub_pd(__m128d, __m128d); 343__m64 _mm_hsub_pi16(__m64, __m64); 344__m64 _mm_hsub_pi32(__m64, __m64); 345__m128 _mm_hsub_ps(__m128, __m128); 346__m128i _mm_hsubs_epi16(__m128i, __m128i); 347__m64 _mm_hsubs_pi16(__m64, __m64); 348__m128i _mm_insert_epi16(__m128i, int, int); 349__m128i _mm_insert_epi32(__m128i, int, int); 350__m128i _mm_insert_epi8(__m128i, int, int); 351__m128 _mm_insert_ps(__m128, __m128, int); 352__m128i _mm_insert_si64(__m128i, __m128i); 353__m128i _mm_inserti_si64(__m128i, __m128i, int, int); 354__m128i _mm_lddqu_si128(__m128i const *); 355__m128d _mm_load1_pd(double const *); 356__m128d _mm_load_pd(double const *); 357__m128 _mm_load_ps(float const *); 358__m128 _mm_load_ps1(float const *); 359__m128d _mm_load_sd(double const *); 360__m128i _mm_load_si128(__m128i const *); 361__m128 _mm_load_ss(float const *); 362__m128d _mm_loaddup_pd(double const *); 363__m128d _mm_loadh_pd(__m128d, double const *); 364__m128 _mm_loadh_pi(__m128, __m64 const *); 365__m128i _mm_loadl_epi64(__m128i const *); 366__m128d _mm_loadl_pd(__m128d, double const *); 367__m128 _mm_loadl_pi(__m128, __m64 const *); 368__m128d _mm_loadr_pd(double const *); 369__m128 _mm_loadr_ps(float const *); 370__m128d _mm_loadu_pd(double const *); 371__m128 _mm_loadu_ps(float const *); 372__m128i _mm_loadu_si128(__m128i const *); 373__m128i _mm_madd_epi16(__m128i, __m128i); 374__m128i _mm_maddubs_epi16(__m128i, __m128i); 375__m64 _mm_maddubs_pi16(__m64, __m64); 376void _mm_maskmoveu_si128(__m128i, __m128i, _Out_writes_bytes_(16) char *); 377__m128i _mm_max_epi16(__m128i, __m128i); 378__m128i _mm_max_epi32(__m128i, __m128i); 379__m128i _mm_max_epi8(__m128i, __m128i); 380__m128i _mm_max_epu16(__m128i, __m128i); 381__m128i _mm_max_epu32(__m128i, __m128i); 382__m128i _mm_max_epu8(__m128i, __m128i); 383__m128d _mm_max_pd(__m128d, __m128d); 384__m128 _mm_max_ps(__m128, __m128); 385__m128d _mm_max_sd(__m128d, __m128d); 386__m128 _mm_max_ss(__m128, __m128); 387__m128i _mm_min_epi16(__m128i, __m128i); 388__m128i _mm_min_epi32(__m128i, __m128i); 389__m128i _mm_min_epi8(__m128i, __m128i); 390__m128i _mm_min_epu16(__m128i, __m128i); 391__m128i _mm_min_epu32(__m128i, __m128i); 392__m128i _mm_min_epu8(__m128i, __m128i); 393__m128d _mm_min_pd(__m128d, __m128d); 394__m128 _mm_min_ps(__m128, __m128); 395__m128d _mm_min_sd(__m128d, __m128d); 396__m128 _mm_min_ss(__m128, __m128); 397__m128i _mm_minpos_epu16(__m128i); 398void _mm_monitor(void const *, unsigned int, unsigned int); 399__m128i _mm_move_epi64(__m128i); 400__m128d _mm_move_sd(__m128d, __m128d); 401__m128 _mm_move_ss(__m128, __m128); 402__m128d _mm_movedup_pd(__m128d); 403__m128 _mm_movehdup_ps(__m128); 404__m128 _mm_movehl_ps(__m128, __m128); 405__m128 _mm_moveldup_ps(__m128); 406__m128 _mm_movelh_ps(__m128, __m128); 407int _mm_movemask_epi8(__m128i); 408int _mm_movemask_pd(__m128d); 409int _mm_movemask_ps(__m128); 410__m64 _mm_movepi64_pi64(__m128i); 411__m128i _mm_movpi64_epi64(__m64); 412__m128i _mm_mpsadbw_epu8(__m128i, __m128i, int); 413__m128i _mm_mul_epi32(__m128i, __m128i); 414__m128i _mm_mul_epu32(__m128i, __m128i); 415__m128d _mm_mul_pd(__m128d, __m128d); 416__m128 _mm_mul_ps(__m128, __m128); 417__m128d _mm_mul_sd(__m128d, __m128d); 418__m128 _mm_mul_ss(__m128, __m128); 419__m128i _mm_mulhi_epi16(__m128i, __m128i); 420__m128i _mm_mulhi_epu16(__m128i, __m128i); 421__m128i _mm_mulhrs_epi16(__m128i, __m128i); 422__m64 _mm_mulhrs_pi16(__m64, __m64); 423__m128i _mm_mullo_epi16(__m128i, __m128i); 424__m128i _mm_mullo_epi32(__m128i, __m128i); 425void _mm_mwait(unsigned int, unsigned int); 426__m128d _mm_or_pd(__m128d, __m128d); 427__m128 _mm_or_ps(__m128, __m128); 428__m128i _mm_or_si128(__m128i, __m128i); 429__m128i _mm_packs_epi16(__m128i, __m128i); 430__m128i _mm_packs_epi32(__m128i, __m128i); 431__m128i _mm_packus_epi16(__m128i, __m128i); 432__m128i _mm_packus_epi32(__m128i, __m128i); 433int _mm_popcnt_u32(unsigned int); 434void _mm_prefetch(_In_ char const *, _In_ int); 435__m128 _mm_rcp_ps(__m128); 436__m128 _mm_rcp_ss(__m128); 437__m128d _mm_round_pd(__m128d, int); 438__m128 _mm_round_ps(__m128, int); 439__m128d _mm_round_sd(__m128d, __m128d, int); 440__m128 _mm_round_ss(__m128, __m128, int); 441__m128 _mm_rsqrt_ps(__m128); 442__m128 _mm_rsqrt_ss(__m128); 443__m128i _mm_sad_epu8(__m128i, __m128i); 444__m128i _mm_set1_epi16(short); 445__m128i _mm_set1_epi32(int); 446__m128i _mm_set1_epi8(char); 447__m128d _mm_set1_pd(double); 448__m128i _mm_set_epi16(short, short, short, short, short, short, short, short); 449__m128i _mm_set_epi32(int, int, int, int); 450__m128i _mm_set_epi8(char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char); 451__m128d _mm_set_pd(double, double); 452__m128 _mm_set_ps(float, float, float, float); 453__m128 _mm_set_ps1(float); 454__m128d _mm_set_sd(double); 455__m128 _mm_set_ss(float); 456void _mm_setcsr(unsigned int); 457__m128i _mm_setl_epi64(__m128i); 458__m128i _mm_setr_epi16(short, short, short, short, short, short, short, short); 459__m128i _mm_setr_epi32(int, int, int, int); 460__m128i _mm_setr_epi8(char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char); 461__m128d _mm_setr_pd(double, double); 462__m128 _mm_setr_ps(float, float, float, float); 463__m128d _mm_setzero_pd(void); 464__m128 _mm_setzero_ps(void); 465__m128i _mm_setzero_si128(void); 466__m128i _mm_shuffle_epi32(__m128i, int); 467__m128i _mm_shuffle_epi8(__m128i, __m128i); 468__m128d _mm_shuffle_pd(__m128d, __m128d, int); 469__m64 _mm_shuffle_pi8(__m64, __m64); 470__m128 _mm_shuffle_ps(__m128, __m128, unsigned int); 471__m128i _mm_shufflehi_epi16(__m128i, int); 472__m128i _mm_shufflelo_epi16(__m128i, int); 473__m128i _mm_sign_epi16(__m128i, __m128i); 474__m128i _mm_sign_epi32(__m128i, __m128i); 475__m128i _mm_sign_epi8(__m128i, __m128i); 476__m64 _mm_sign_pi16(__m64, __m64); 477__m64 _mm_sign_pi32(__m64, __m64); 478__m64 _mm_sign_pi8(__m64, __m64); 479__m128i _mm_sll_epi16(__m128i, __m128i); 480__m128i _mm_sll_epi32(__m128i, __m128i); 481__m128i _mm_sll_epi64(__m128i, __m128i); 482__m128i _mm_slli_epi16(__m128i, int); 483__m128i _mm_slli_epi32(__m128i, int); 484__m128i _mm_slli_epi64(__m128i, int); 485__m128i _mm_slli_si128(__m128i, int); 486__m128d _mm_sqrt_pd(__m128d); 487__m128 _mm_sqrt_ps(__m128); 488__m128d _mm_sqrt_sd(__m128d, __m128d); 489__m128 _mm_sqrt_ss(__m128); 490__m128i _mm_sra_epi16(__m128i, __m128i); 491__m128i _mm_sra_epi32(__m128i, __m128i); 492__m128i _mm_srai_epi16(__m128i, int); 493__m128i _mm_srai_epi32(__m128i, int); 494__m128i _mm_srl_epi16(__m128i, __m128i); 495__m128i _mm_srl_epi32(__m128i, __m128i); 496__m128i _mm_srl_epi64(__m128i, __m128i); 497__m128i _mm_srli_epi16(__m128i, int); 498__m128i _mm_srli_epi32(__m128i, int); 499__m128i _mm_srli_epi64(__m128i, int); 500__m128i _mm_srli_si128(__m128i, int); 501void _mm_store1_pd(double *, __m128d); 502void _mm_store_pd(double *, __m128d); 503void _mm_store_ps(float *, __m128); 504void _mm_store_ps1(float *, __m128); 505void _mm_store_sd(double *, __m128d); 506void _mm_store_si128(__m128i *, __m128i); 507void _mm_store_ss(float *, __m128); 508void _mm_storeh_pd(double *, __m128d); 509void _mm_storeh_pi(__m64 *, __m128); 510void _mm_storel_epi64(__m128i *, __m128i); 511void _mm_storel_pd(double *, __m128d); 512void _mm_storel_pi(__m64 *, __m128); 513void _mm_storer_pd(double *, __m128d); 514void _mm_storer_ps(float *, __m128); 515void _mm_storeu_pd(double *, __m128d); 516void _mm_storeu_ps(float *, __m128); 517void _mm_storeu_si128(__m128i *, __m128i); 518__m128i _mm_stream_load_si128(__m128i *); 519void _mm_stream_pd(double *, __m128d); 520void _mm_stream_ps(float *, __m128); 521void _mm_stream_sd(double *, __m128d); 522void _mm_stream_si128(__m128i *, __m128i); 523void _mm_stream_si32(int *, int); 524void _mm_stream_ss(float *, __m128); 525__m128i _mm_sub_epi16(__m128i, __m128i); 526__m128i _mm_sub_epi32(__m128i, __m128i); 527__m128i _mm_sub_epi64(__m128i, __m128i); 528__m128i _mm_sub_epi8(__m128i, __m128i); 529__m128d _mm_sub_pd(__m128d, __m128d); 530__m128 _mm_sub_ps(__m128, __m128); 531__m128d _mm_sub_sd(__m128d, __m128d); 532__m128 _mm_sub_ss(__m128, __m128); 533__m128i _mm_subs_epi16(__m128i, __m128i); 534__m128i _mm_subs_epi8(__m128i, __m128i); 535__m128i _mm_subs_epu16(__m128i, __m128i); 536__m128i _mm_subs_epu8(__m128i, __m128i); 537int _mm_testc_si128(__m128i, __m128i); 538int _mm_testnzc_si128(__m128i, __m128i); 539int _mm_testz_si128(__m128i, __m128i); 540int _mm_ucomieq_sd(__m128d, __m128d); 541int _mm_ucomieq_ss(__m128, __m128); 542int _mm_ucomige_sd(__m128d, __m128d); 543int _mm_ucomige_ss(__m128, __m128); 544int _mm_ucomigt_sd(__m128d, __m128d); 545int _mm_ucomigt_ss(__m128, __m128); 546int _mm_ucomile_sd(__m128d, __m128d); 547int _mm_ucomile_ss(__m128, __m128); 548int _mm_ucomilt_sd(__m128d, __m128d); 549int _mm_ucomilt_ss(__m128, __m128); 550int _mm_ucomineq_sd(__m128d, __m128d); 551int _mm_ucomineq_ss(__m128, __m128); 552__m128i _mm_unpackhi_epi16(__m128i, __m128i); 553__m128i _mm_unpackhi_epi32(__m128i, __m128i); 554__m128i _mm_unpackhi_epi64(__m128i, __m128i); 555__m128i _mm_unpackhi_epi8(__m128i, __m128i); 556__m128d _mm_unpackhi_pd(__m128d, __m128d); 557__m128 _mm_unpackhi_ps(__m128, __m128); 558__m128i _mm_unpacklo_epi16(__m128i, __m128i); 559__m128i _mm_unpacklo_epi32(__m128i, __m128i); 560__m128i _mm_unpacklo_epi64(__m128i, __m128i); 561__m128i _mm_unpacklo_epi8(__m128i, __m128i); 562__m128d _mm_unpacklo_pd(__m128d, __m128d); 563__m128 _mm_unpacklo_ps(__m128, __m128); 564__m128d _mm_xor_pd(__m128d, __m128d); 565__m128 _mm_xor_ps(__m128, __m128); 566__m128i _mm_xor_si128(__m128i, __m128i); 567#endif // 0 568 569int __cdecl _outp(unsigned short, int); 570unsigned long __cdecl _outpd(unsigned short, unsigned long); 571unsigned short __cdecl _outpw(unsigned short, unsigned short); 572int __cdecl inp(unsigned short); 573unsigned long __cdecl inpd(unsigned short); 574unsigned short __cdecl inpw(unsigned short); 575int __cdecl outp(unsigned short, int); 576unsigned long __cdecl outpd(unsigned short, unsigned long); 577unsigned short __cdecl outpw(unsigned short, unsigned short); 578 579#endif /* _M_IX86 || _M_X64 */ 580 581#if defined(_M_IX86) 582 583long _InterlockedAddLargeStatistic(_Interlocked_operand_ __int64 volatile * _Addend, long _Value); 584void __addfsbyte(unsigned long, unsigned char); 585void __addfsdword(unsigned long, unsigned long); 586void __addfsword(unsigned long, unsigned short); 587void __incfsbyte(unsigned long); 588void __incfsdword(unsigned long); 589void __incfsword(unsigned long); 590unsigned long __readcr0(void); 591unsigned long __readcr2(void); 592unsigned long __readcr3(void); 593unsigned long __readcr4(void); 594unsigned long __readcr8(void); 595unsigned int __readdr(unsigned int); 596unsigned int __readeflags(void); 597unsigned char __readfsbyte(unsigned long); 598unsigned long __readfsdword(unsigned long); 599unsigned short __readfsword(unsigned long); 600void __writecr0(unsigned int); 601void __writecr3(unsigned int); 602void __writecr4(unsigned int); 603void __writecr8(unsigned int); 604void __writedr(unsigned int, unsigned int); 605void __writeeflags(unsigned int); 606void __writefsbyte(unsigned long, unsigned char); 607void __writefsdword(unsigned long, unsigned long); 608void __writefsword(unsigned long, unsigned short); 609void _m_empty(void); 610void _m_femms(void); 611 612#if 0 613__m64 _m_from_float(float); 614__m64 _m_from_int(int); 615void _m_maskmovq(__m64, __m64, _Out_writes_bytes_(8) char *); 616__m64 _m_packssdw(__m64, __m64); 617__m64 _m_packsswb(__m64, __m64); 618__m64 _m_packuswb(__m64, __m64); 619__m64 _m_paddb(__m64, __m64); 620__m64 _m_paddd(__m64, __m64); 621__m64 _m_paddsb(__m64, __m64); 622__m64 _m_paddsw(__m64, __m64); 623__m64 _m_paddusb(__m64, __m64); 624__m64 _m_paddusw(__m64, __m64); 625__m64 _m_paddw(__m64, __m64); 626__m64 _m_pand(__m64, __m64); 627__m64 _m_pandn(__m64, __m64); 628__m64 _m_pavgb(__m64, __m64); 629__m64 _m_pavgusb(__m64, __m64); 630__m64 _m_pavgw(__m64, __m64); 631__m64 _m_pcmpeqb(__m64, __m64); 632__m64 _m_pcmpeqd(__m64, __m64); 633__m64 _m_pcmpeqw(__m64, __m64); 634__m64 _m_pcmpgtb(__m64, __m64); 635__m64 _m_pcmpgtd(__m64, __m64); 636__m64 _m_pcmpgtw(__m64, __m64); 637int _m_pextrw(__m64, int); 638__m64 _m_pf2id(__m64); 639__m64 _m_pf2iw(__m64); 640__m64 _m_pfacc(__m64, __m64); 641__m64 _m_pfadd(__m64, __m64); 642__m64 _m_pfcmpeq(__m64, __m64); 643__m64 _m_pfcmpge(__m64, __m64); 644__m64 _m_pfcmpgt(__m64, __m64); 645__m64 _m_pfmax(__m64, __m64); 646__m64 _m_pfmin(__m64, __m64); 647__m64 _m_pfmul(__m64, __m64); 648__m64 _m_pfnacc(__m64, __m64); 649__m64 _m_pfpnacc(__m64, __m64); 650__m64 _m_pfrcp(__m64); 651__m64 _m_pfrcpit1(__m64, __m64); 652__m64 _m_pfrcpit2(__m64, __m64); 653__m64 _m_pfrsqit1(__m64, __m64); 654__m64 _m_pfrsqrt(__m64); 655__m64 _m_pfsub(__m64, __m64); 656__m64 _m_pfsubr(__m64, __m64); 657__m64 _m_pi2fd(__m64); 658__m64 _m_pi2fw(__m64); 659__m64 _m_pinsrw(__m64, int, int); 660__m64 _m_pmaddwd(__m64, __m64); 661__m64 _m_pmaxsw(__m64, __m64); 662__m64 _m_pmaxub(__m64, __m64); 663__m64 _m_pminsw(__m64, __m64); 664__m64 _m_pminub(__m64, __m64); 665int _m_pmovmskb(__m64); 666__m64 _m_pmulhrw(__m64, __m64); 667__m64 _m_pmulhuw(__m64, __m64); 668__m64 _m_pmulhw(__m64, __m64); 669__m64 _m_pmullw(__m64, __m64); 670__m64 _m_por(__m64, __m64); 671__m64 _m_psadbw(__m64, __m64); 672__m64 _m_pshufw(__m64, int); 673__m64 _m_pslld(__m64, __m64); 674__m64 _m_pslldi(__m64, int); 675__m64 _m_psllq(__m64, __m64); 676__m64 _m_psllqi(__m64, int); 677__m64 _m_psllw(__m64, __m64); 678__m64 _m_psllwi(__m64, int); 679__m64 _m_psrad(__m64, __m64); 680__m64 _m_psradi(__m64, int); 681__m64 _m_psraw(__m64, __m64); 682__m64 _m_psrawi(__m64, int); 683__m64 _m_psrld(__m64, __m64); 684__m64 _m_psrldi(__m64, int); 685__m64 _m_psrlq(__m64, __m64); 686__m64 _m_psrlqi(__m64, int); 687__m64 _m_psrlw(__m64, __m64); 688__m64 _m_psrlwi(__m64, int); 689__m64 _m_psubb(__m64, __m64); 690__m64 _m_psubd(__m64, __m64); 691__m64 _m_psubsb(__m64, __m64); 692__m64 _m_psubsw(__m64, __m64); 693__m64 _m_psubusb(__m64, __m64); 694__m64 _m_psubusw(__m64, __m64); 695__m64 _m_psubw(__m64, __m64); 696__m64 _m_pswapd(__m64); 697__m64 _m_punpckhbw(__m64, __m64); 698__m64 _m_punpckhdq(__m64, __m64); 699__m64 _m_punpckhwd(__m64, __m64); 700__m64 _m_punpcklbw(__m64, __m64); 701__m64 _m_punpckldq(__m64, __m64); 702__m64 _m_punpcklwd(__m64, __m64); 703__m64 _m_pxor(__m64, __m64); 704float _m_to_float(__m64); 705int _m_to_int(__m64); 706__m64 _mm_add_si64(__m64, __m64); 707__m128 _mm_cvt_pi2ps(__m128, __m64); 708__m64 _mm_cvt_ps2pi(__m128); 709__m64 _mm_cvtpd_pi32(__m128d); 710__m128d _mm_cvtpi32_pd(__m64); 711__m64 _mm_cvtt_ps2pi(__m128); 712__m64 _mm_cvttpd_pi32(__m128d); 713__m64 _mm_mul_su32(__m64, __m64); 714__m128i _mm_set1_epi64(__m64); 715__m64 _mm_set1_pi16(short); 716__m64 _mm_set1_pi32(int); 717__m64 _mm_set1_pi8(char); 718__m128i _mm_set_epi64(__m64, __m64); 719__m64 _mm_set_pi16(short, short, short, short); 720__m64 _mm_set_pi32(int, int); 721__m64 _mm_set_pi8(char, char, char, char, char, char, char, char); 722__m128i _mm_setr_epi64(__m64, __m64); 723__m64 _mm_setr_pi16(short, short, short, short); 724__m64 _mm_setr_pi32(int, int); 725__m64 _mm_setr_pi8(char, char, char, char, char, char, char, char); 726__m64 _mm_setzero_si64(void); 727void _mm_stream_pi(__m64 *, __m64); 728__m64 _mm_sub_si64(__m64, __m64); 729#endif // 0 730 731#endif /* _M_IX86 */ 732 733#if defined(_M_X64) 734 735unsigned char _BitScanForward64(unsigned long * _Index, unsigned __int64 _Mask); 736unsigned char _BitScanReverse64(unsigned long * _Index, unsigned __int64 _Mask); 737short _InterlockedAnd16_np(short volatile * _Value, short _Mask); 738__int64 _InterlockedAnd64_np(__int64 volatile * _Value, __int64 _Mask); 739char _InterlockedAnd8_np(char volatile * _Value, char _Mask); 740long _InterlockedAnd_np(long volatile * _Value, long _Mask); 741unsigned char _InterlockedCompareExchange128(_Interlocked_operand_ __int64 volatile * _Destination, __int64 _ExchangeHigh, __int64 _ExchangeLow, __int64 * _ComparandResult); 742unsigned char _InterlockedCompareExchange128_np(__int64 volatile * _Destination, __int64 _ExchangeHigh, __int64 _ExchangeLow, __int64 * _ComparandResult); 743short _InterlockedCompareExchange16_np(short volatile * _Destination, short _Exchange, short _Comparand); 744__int64 _InterlockedCompareExchange64_np(__int64 volatile * _Destination, __int64 _Exchange, __int64 _Comparand); 745void * _InterlockedCompareExchangePointer_np(void * volatile * _Destination, void * _Exchange, void * _Comparand); 746long _InterlockedCompareExchange_np(long volatile * _Destination, long _Exchange, long _Comparand); 747short _InterlockedOr16_np(short volatile * _Value, short _Mask); 748__int64 _InterlockedOr64_np(__int64 volatile * _Value, __int64 _Mask); 749char _InterlockedOr8_np(char volatile * _Value, char _Mask); 750long _InterlockedOr_np(long volatile * _Value, long _Mask); 751short _InterlockedXor16_np(short volatile * _Value, short _Mask); 752__int64 _InterlockedXor64_np(__int64 volatile * _Value, __int64 _Mask); 753char _InterlockedXor8_np(char volatile * _Value, char _Mask); 754long _InterlockedXor_np(long volatile * _Value, long _Mask); 755void __addgsbyte(unsigned long, unsigned char); 756void __addgsdword(unsigned long, unsigned long); 757void __addgsqword(unsigned long, unsigned __int64); 758void __addgsword(unsigned long, unsigned short); 759void __faststorefence(void); 760void __incgsbyte(unsigned long); 761void __incgsdword(unsigned long); 762void __incgsqword(unsigned long); 763void __incgsword(unsigned long); 764unsigned __int64 __lzcnt64(unsigned __int64); 765void __movsq(unsigned long long *, unsigned long long const *, size_t); 766__int64 __mulh(__int64, __int64); 767__int64 _mul128(__int64 _Multiplier, __int64 _Multiplicand, __int64 * _HighProduct); 768unsigned __int64 _umul128(unsigned __int64 _Multiplier, unsigned __int64 _Multiplicand, unsigned __int64 * _HighProduct); 769unsigned __int64 __popcnt64(unsigned __int64); 770unsigned __int64 __readcr0(void); 771unsigned __int64 __readcr2(void); 772unsigned __int64 __readcr3(void); 773unsigned __int64 __readcr4(void); 774unsigned __int64 __readcr8(void); 775unsigned __int64 __readdr(unsigned int); 776unsigned __int64 __readeflags(void); 777unsigned char __readgsbyte(unsigned long); 778unsigned long __readgsdword(unsigned long); 779unsigned __int64 __readgsqword(unsigned long); 780unsigned short __readgsword(unsigned long); 781unsigned __int64 __shiftleft128(unsigned __int64 _LowPart, unsigned __int64 _HighPart, unsigned char _Shift); 782unsigned __int64 __shiftright128(unsigned __int64 _LowPart, unsigned __int64 _HighPart, unsigned char _Shift); 783void __stosq(unsigned __int64 *, unsigned __int64, size_t); 784unsigned __int64 __umulh(unsigned __int64, unsigned __int64); 785unsigned char __vmx_on(unsigned __int64 *); 786unsigned char __vmx_vmclear(unsigned __int64 *); 787unsigned char __vmx_vmlaunch(void); 788unsigned char __vmx_vmptrld(unsigned __int64 *); 789unsigned char __vmx_vmread(size_t, size_t *); 790unsigned char __vmx_vmresume(void); 791unsigned char __vmx_vmwrite(size_t, size_t); 792void __writecr0(unsigned __int64); 793void __writecr3(unsigned __int64); 794void __writecr4(unsigned __int64); 795void __writecr8(unsigned __int64); 796void __writedr(unsigned int, unsigned __int64); 797void __writeeflags(unsigned __int64); 798void __writegsbyte(unsigned long, unsigned char); 799void __writegsdword(unsigned long, unsigned long); 800void __writegsqword(unsigned long, unsigned __int64); 801void __writegsword(unsigned long, unsigned short); 802unsigned char _bittest64(__int64 const *, __int64); 803unsigned char _bittestandcomplement64(__int64 *, __int64); 804unsigned char _bittestandreset64(__int64 *, __int64); 805unsigned char _bittestandset64(__int64 *, __int64); 806unsigned char _interlockedbittestandreset64(__int64 volatile *, __int64); 807unsigned char _interlockedbittestandset64(__int64 volatile *, __int64); 808unsigned __int64 _mm_crc32_u64(unsigned __int64, unsigned __int64); 809#if 0 810__int64 _mm_cvtsd_si64(__m128d); 811__int64 _mm_cvtsd_si64x(__m128d); 812__int64 _mm_cvtsi128_si64(__m128i); 813__int64 _mm_cvtsi128_si64x(__m128i); 814__m128d _mm_cvtsi64_sd(__m128d, __int64); 815__m128i _mm_cvtsi64_si128(__int64); 816__m128 _mm_cvtsi64_ss(__m128, __int64); 817__m128d _mm_cvtsi64x_sd(__m128d, __int64); 818__m128i _mm_cvtsi64x_si128(__int64); 819__m128 _mm_cvtsi64x_ss(__m128, __int64); 820__int64 _mm_cvtss_si64(__m128); 821__int64 _mm_cvtss_si64x(__m128); 822__int64 _mm_cvttsd_si64(__m128d); 823__int64 _mm_cvttsd_si64x(__m128d); 824__int64 _mm_cvttss_si64(__m128); 825__int64 _mm_cvttss_si64x(__m128); 826__int64 _mm_extract_epi64(__m128i, int); 827__m128i _mm_insert_epi64(__m128i, __int64, int); 828__int64 _mm_popcnt_u64(unsigned __int64); 829__m128i _mm_set1_epi64x(__int64); 830__m128i _mm_set_epi64x(__int64, __int64); 831void _mm_stream_si64x(__int64 *, __int64); 832#endif 833#endif /* _M_X64 */ 834 835#if defined(_M_ARM) || defined(_M_X64) 836 837__int64 _InterlockedAnd64(_Interlocked_operand_ __int64 volatile * _Value, __int64 _Mask); 838__int64 _InterlockedDecrement64(_Interlocked_operand_ __int64 volatile * _Addend); 839__int64 _InterlockedExchange64(_Interlocked_operand_ __int64 volatile * _Target, __int64 _Value); 840__int64 _InterlockedExchangeAdd64(_Interlocked_operand_ __int64 volatile * _Addend, __int64 _Value); 841__int64 _InterlockedIncrement64(_Interlocked_operand_ __int64 volatile * _Addend); 842__int64 _InterlockedOr64(_Interlocked_operand_ __int64 volatile * _Value, __int64 _Mask); 843__int64 _InterlockedXor64(_Interlocked_operand_ __int64 volatile * _Value, __int64 _Mask); 844 845#endif /* _M_ARM || _M_X64 */ 846 847#if defined(_M_ARM) 848 849int _AddSatInt(int, int); 850double _CopyDoubleFromInt64(__int64); 851float _CopyFloatFromInt32(__int32); 852__int32 _CopyInt32FromFloat(float); 853__int64 _CopyInt64FromDouble(double); 854unsigned int _CountLeadingOnes(unsigned long); 855unsigned int _CountLeadingOnes64(unsigned __int64); 856unsigned int _CountLeadingSigns(long); 857unsigned int _CountLeadingSigns64(__int64); 858unsigned int _CountLeadingZeros(unsigned long); 859unsigned int _CountLeadingZeros64(unsigned __int64); 860unsigned int _CountOneBits(unsigned long); 861unsigned int _CountOneBits64(unsigned __int64); 862int _DAddSatInt(int, int); 863int _DSubSatInt(int, int); 864long _InterlockedAdd(_Interlocked_operand_ long volatile * _Addend, long _Value); 865__int64 _InterlockedAdd64(_Interlocked_operand_ __int64 volatile * _Addend, __int64 _Value); 866__int64 _InterlockedAdd64_acq(__int64 volatile * _Addend, __int64 _Value); 867__int64 _InterlockedAdd64_nf(__int64 volatile * _Addend, __int64 _Value); 868__int64 _InterlockedAdd64_rel(__int64 volatile * _Addend, __int64 _Value); 869long _InterlockedAdd_acq(long volatile * _Addend, long _Value); 870long _InterlockedAdd_nf(long volatile * _Addend, long _Value); 871long _InterlockedAdd_rel(long volatile * _Addend, long _Value); 872short _InterlockedAnd16_acq(short volatile * _Value, short _Mask); 873short _InterlockedAnd16_nf(short volatile * _Value, short _Mask); 874short _InterlockedAnd16_rel(short volatile * _Value, short _Mask); 875__int64 _InterlockedAnd64_acq(__int64 volatile * _Value, __int64 _Mask); 876__int64 _InterlockedAnd64_nf(__int64 volatile * _Value, __int64 _Mask); 877__int64 _InterlockedAnd64_rel(__int64 volatile * _Value, __int64 _Mask); 878char _InterlockedAnd8_acq(char volatile * _Value, char _Mask); 879char _InterlockedAnd8_nf(char volatile * _Value, char _Mask); 880char _InterlockedAnd8_rel(char volatile * _Value, char _Mask); 881long _InterlockedAnd_acq(long volatile * _Value, long _Mask); 882long _InterlockedAnd_nf(long volatile * _Value, long _Mask); 883long _InterlockedAnd_rel(long volatile * _Value, long _Mask); 884short _InterlockedCompareExchange16_acq(short volatile * _Destination, short _Exchange, short _Comparand); 885short _InterlockedCompareExchange16_nf(short volatile * _Destination, short _Exchange, short _Comparand); 886short _InterlockedCompareExchange16_rel(short volatile * _Destination, short _Exchange, short _Comparand); 887__int64 _InterlockedCompareExchange64_acq(__int64 volatile * _Destination, __int64 _Exchange, __int64 _Comparand); 888__int64 _InterlockedCompareExchange64_nf(__int64 volatile * _Destination, __int64 _Exchange, __int64 _Comparand); 889__int64 _InterlockedCompareExchange64_rel(__int64 volatile * _Destination, __int64 _Exchange, __int64 _Comparand); 890char _InterlockedCompareExchange8_acq(char volatile * _Destination, char _Exchange, char _Comparand); 891char _InterlockedCompareExchange8_nf(char volatile * _Destination, char _Exchange, char _Comparand); 892char _InterlockedCompareExchange8_rel(char volatile * _Destination, char _Exchange, char _Comparand); 893void * _InterlockedCompareExchangePointer_acq(void * volatile * _Destination, void * _Exchange, void * _Comparand); 894void * _InterlockedCompareExchangePointer_nf(void * volatile * _Destination, void * _Exchange, void * _Comparand); 895void * _InterlockedCompareExchangePointer_rel(void * volatile * _Destination, void * _Exchange, void * _Comparand); 896long _InterlockedCompareExchange_acq(long volatile * _Destination, long _Exchange, long _Comparand); 897long _InterlockedCompareExchange_nf(long volatile * _Destination, long _Exchange, long _Comparand); 898long _InterlockedCompareExchange_rel(long volatile * _Destination, long _Exchange, long _Comparand); 899short _InterlockedDecrement16_acq(short volatile * _Addend); 900short _InterlockedDecrement16_nf(short volatile * _Addend); 901short _InterlockedDecrement16_rel(short volatile * _Addend); 902__int64 _InterlockedDecrement64_acq(__int64 volatile * _Addend); 903__int64 _InterlockedDecrement64_nf(__int64 volatile * _Addend); 904__int64 _InterlockedDecrement64_rel(__int64 volatile * _Addend); 905long _InterlockedDecrement_acq(long volatile * _Addend); 906long _InterlockedDecrement_nf(long volatile * _Addend); 907long _InterlockedDecrement_rel(long volatile * _Addend); 908short _InterlockedExchange16_acq(short volatile * _Target, short _Value); 909short _InterlockedExchange16_nf(short volatile * _Target, short _Value); 910__int64 _InterlockedExchange64_acq(__int64 volatile * _Target, __int64 _Value); 911__int64 _InterlockedExchange64_nf(__int64 volatile * _Target, __int64 _Value); 912char _InterlockedExchange8_acq(char volatile * _Target, char _Value); 913char _InterlockedExchange8_nf(char volatile * _Target, char _Value); 914short _InterlockedExchangeAdd16_acq(short volatile * _Addend, short _Value); 915short _InterlockedExchangeAdd16_nf(short volatile * _Addend, short _Value); 916short _InterlockedExchangeAdd16_rel(short volatile * _Addend, short _Value); 917__int64 _InterlockedExchangeAdd64_acq(__int64 volatile * _Addend, __int64 _Value); 918__int64 _InterlockedExchangeAdd64_nf(__int64 volatile * _Addend, __int64 _Value); 919__int64 _InterlockedExchangeAdd64_rel(__int64 volatile * _Addend, __int64 _Value); 920char _InterlockedExchangeAdd8_acq(char volatile * _Addend, char _Value); 921char _InterlockedExchangeAdd8_nf(char volatile * _Addend, char _Value); 922char _InterlockedExchangeAdd8_rel(char volatile * _Addend, char _Value); 923long _InterlockedExchangeAdd_acq(long volatile * _Addend, long _Value); 924long _InterlockedExchangeAdd_nf(long volatile * _Addend, long _Value); 925long _InterlockedExchangeAdd_rel(long volatile * _Addend, long _Value); 926void * _InterlockedExchangePointer_acq(void * volatile * _Target, void * _Value); 927void * _InterlockedExchangePointer_nf(void * volatile * _Target, void * _Value); 928long _InterlockedExchange_acq(long volatile * _Target, long _Value); 929long _InterlockedExchange_nf(long volatile * _Target, long _Value); 930short _InterlockedIncrement16_acq(short volatile * _Addend); 931short _InterlockedIncrement16_nf(short volatile * _Addend); 932short _InterlockedIncrement16_rel(short volatile * _Addend); 933__int64 _InterlockedIncrement64_acq(__int64 volatile * _Addend); 934__int64 _InterlockedIncrement64_nf(__int64 volatile * _Addend); 935__int64 _InterlockedIncrement64_rel(__int64 volatile * _Addend); 936long _InterlockedIncrement_acq(long volatile * _Addend); 937long _InterlockedIncrement_nf(long volatile * _Addend); 938long _InterlockedIncrement_rel(long volatile * _Addend); 939short _InterlockedOr16_acq(short volatile * _Value, short _Mask); 940short _InterlockedOr16_nf(short volatile * _Value, short _Mask); 941short _InterlockedOr16_rel(short volatile * _Value, short _Mask); 942__int64 _InterlockedOr64_acq(__int64 volatile * _Value, __int64 _Mask); 943__int64 _InterlockedOr64_nf(__int64 volatile * _Value, __int64 _Mask); 944__int64 _InterlockedOr64_rel(__int64 volatile * _Value, __int64 _Mask); 945char _InterlockedOr8_acq(char volatile * _Value, char _Mask); 946char _InterlockedOr8_nf(char volatile * _Value, char _Mask); 947char _InterlockedOr8_rel(char volatile * _Value, char _Mask); 948long _InterlockedOr_acq(long volatile * _Value, long _Mask); 949long _InterlockedOr_nf(long volatile * _Value, long _Mask); 950long _InterlockedOr_rel(long volatile * _Value, long _Mask); 951short _InterlockedXor16_acq(short volatile * _Value, short _Mask); 952short _InterlockedXor16_nf(short volatile * _Value, short _Mask); 953short _InterlockedXor16_rel(short volatile * _Value, short _Mask); 954__int64 _InterlockedXor64_acq(__int64 volatile * _Value, __int64 _Mask); 955__int64 _InterlockedXor64_nf(__int64 volatile * _Value, __int64 _Mask); 956__int64 _InterlockedXor64_rel(_Interlocked_operand_ __int64 volatile * _Value, __int64 _Mask); 957char _InterlockedXor8_acq(char volatile * _Value, char _Mask); 958char _InterlockedXor8_nf(char volatile * _Value, char _Mask); 959char _InterlockedXor8_rel(char volatile * _Value, char _Mask); 960long _InterlockedXor_acq(long volatile * _Value, long _Mask); 961long _InterlockedXor_nf(long volatile * _Value, long _Mask); 962long _InterlockedXor_rel(long volatile * _Value, long _Mask); 963#if _MSC_FULL_VER >= 170040825 964unsigned int _MoveFromCoprocessor(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int); 965unsigned int _MoveFromCoprocessor2(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int); 966#else 967int _MoveFromCoprocessor(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int); 968int _MoveFromCoprocessor2(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int); 969#endif 970unsigned __int64 _MoveFromCoprocessor64(unsigned int, unsigned int, unsigned int); 971void _MoveToCoprocessor(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int); 972void _MoveToCoprocessor2(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int); 973void _MoveToCoprocessor64(unsigned __int64, unsigned int, unsigned int, unsigned int); 974long _MulHigh(long, long); 975unsigned long _MulUnsignedHigh(unsigned long, unsigned long); 976int _ReadStatusReg(int); 977int _SubSatInt(int, int); 978void _WriteStatusReg(int, int, int); 979void __emit(unsigned __int32); 980__int64 __ldrexd(__int64 volatile *); 981void __cdecl __prefetch(const void *); 982unsigned __int64 __rdpmccntr64(void); 983void __sev(void); 984void __static_assert(int, const char *); 985unsigned int __swi(unsigned int, ...); 986unsigned int __hvc(unsigned int, ...); 987int __trap(int, ...); 988__int16 __iso_volatile_load16(const volatile __int16 *); 989__int32 __iso_volatile_load32(const volatile __int32 *); 990__int64 __iso_volatile_load64(const volatile __int64 *); 991__int8 __iso_volatile_load8(const volatile __int8 *); 992void __iso_volatile_store16(volatile __int16 *, __int16); 993void __iso_volatile_store32(volatile __int32 *, __int32); 994void __iso_volatile_store64(volatile __int64 *, __int64); 995void __iso_volatile_store8(volatile __int8 *, __int8); 996void __wfe(void); 997void __wfi(void); 998void __yield(void); 999unsigned char _interlockedbittestandreset_acq(long volatile *, long); 1000unsigned char _interlockedbittestandreset_nf(long volatile *, long); 1001unsigned char _interlockedbittestandreset_rel(long volatile *, long); 1002unsigned char _interlockedbittestandset_acq(long volatile *, long); 1003unsigned char _interlockedbittestandset_nf(long volatile *, long); 1004unsigned char _interlockedbittestandset_rel(long volatile *, long); 1005int _isunordered(double, double); 1006int _isunorderedf(float, float); 1007 1008#endif /* _M_ARM */ 1009 1010#ifdef _M_ARM64 1011unsigned __int64 __getReg(int); 1012#endif 1013 1014#if defined(_M_CEE_PURE) 1015 1016long _InterlockedCompareExchange(_Interlocked_operand_ long volatile * _Destination, long _Exchange, long _Comparand); 1017long _InterlockedDecrement(_Interlocked_operand_ long volatile * _Addend); 1018long _InterlockedIncrement(_Interlocked_operand_ long volatile * _Addend); 1019 1020#endif /* _M_CEE_PURE */ 1021 1022#if defined(__cplusplus) 1023} 1024#endif /* __cplusplus */ 1025 1026#if (defined(__GNUC__) || defined(__clang__)) && defined(_WIN32) // We can't use __MINGW32__ here 1027# include "mingw32/intrin.h" 1028#elif defined(_MSC_VER) 1029# include "msc/intrin.h" 1030#else 1031# error Please implement intrinsics for your target compiler 1032#endif 1033 1034#endif