📄 intrin.h
字号:
/***
*intrin.h = declarations/definitions for some platform specific intrinsic stuff.
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*Purpose:
* This include file contains the declerations for platform specific intrinsic
* functions, or will include other files that have decleration of intrinsic
* functions. Also there will be some platform specific macros to be used with
* intrinsic functions.
*
****/
#pragma once
#define __INTRIN_H_
#ifndef RC_INVOKED
#ifndef __midl
#include <crtdefs.h>
#include <setjmp.h>
#include <stddef.h>
#if !defined (_M_CEE_PURE)
#include <immintrin.h>
#if defined (_M_IX86)
#include <mm3dnow.h>
#endif /* defined (_M_IX86) */
#endif /* !defined (_M_CEE_PURE) */
#if defined (__cplusplus)
extern "C" {
#endif /* defined (__cplusplus) */
/*
** __MACHINE : all compilers
** __MACHINEI : Intel (32 bit x86) and X64
** __MACHINEX64 : X64 compiler only
** __MACHINEIA32 : 32 bit x86 arch only
** __MACHINEX86X_X64 : X86 Extended intrinsics supported on X64
** __MACHINEX86X_IA64 : X86 Extended intrinsics supported on IA64
** __MACHINEIA64 : IA64 compiler only
** __MACHINEW64 : WIN64(tm), 64 bit compilers only
** __MACHINEIW64 : IA32 + Win64 compilers only (__MACHINEI + __MACHINEW64)
** __MACHINESA : ARM (StrongARM) only
** __MACHINEARMX : ARM XSCALE intrinsics
** __MACHINECC : Intel XSCALE Concan
** __MACHINECE : common intrinsic functions for Windows CE
** __MACHINEWVMPURE : /clr:pure only
** __MACHINEZ : nothing
*/
#define __MACHINEI __MACHINE
#define __MACHINEX64 __MACHINE
#define __MACHINEIA32 __MACHINE
#define __MACHINEX86X_X64 __MACHINE
#define __MACHINEX86X_IA64 __MACHINE
#define __MACHINEIA64 __MACHINE
#define __MACHINEW64 __MACHINE
#define __MACHINEIW64 __MACHINE
#define __MACHINESA __MACHINE
#define __MACHINEARMX __MACHINE
#define __MACHINECC __MACHINE
#define __MACHINECE __MACHINE
/* Most intrinsics not available to pure managed code */
#if defined (_M_CEE_PURE)
#define __MACHINE(X) __MACHINEZ(X)
#define __MACHINEWVMPURE(X) X;
#else /* defined (_M_CEE_PURE) */
#define __MACHINE(X) X;
#define __MACHINEWVMPURE(X) __MACHINEZ(X)
#endif /* defined (_M_CEE_PURE) */
#define __MACHINEZ(X) /* NOTHING */
#if !defined (_M_IX86)
#undef __MACHINEIA32
#define __MACHINEIA32 __MACHINEZ
#endif /* !defined (_M_IX86) */
#if !defined (_M_IA64)
#undef __MACHINEIA64
#define __MACHINEIA64 __MACHINEZ
#endif /* !defined (_M_IA64) */
#if !defined (_M_AMD64)
#undef __MACHINEX64
#define __MACHINEX64 __MACHINEZ
#endif /* !defined (_M_AMD64) */
#if !(defined (_M_IA64) || defined (_M_AMD64))
#undef __MACHINEW64
#define __MACHINEW64 __MACHINEZ
#endif /* !(defined (_M_IA64) || defined (_M_AMD64)) */
#if !(defined (_M_IX86) || defined (_M_AMD64) || defined (_M_IA64))
#undef __MACHINEIW64
#define __MACHINEIW64 __MACHINEZ
#endif /* !(defined (_M_IX86) || defined (_M_AMD64) || defined (_M_IA64)) */
#if !(defined (_M_IX86) || defined (_M_IA64))
#undef __MACHINEX86X_IA64
#define __MACHINEX86X_IA64 __MACHINEZ
#endif /* !(defined (_M_IX86) || defined (_M_IA64)) */
#if !(defined (_M_IX86) || defined (_M_AMD64))
#undef __MACHINEX86X_X64
#define __MACHINEX86X_X64 __MACHINEZ
#endif /* !(defined (_M_IX86) || defined (_M_AMD64)) */
#if !defined (_M_ARM)
#undef __MACHINESA
#undef __MACHINEARMX
#undef __MACHINECC
#define __MACHINESA __MACHINEZ
#define __MACHINEARMX __MACHINEZ
#define __MACHINECC __MACHINEZ
#endif /* !defined (_M_ARM) */
#if !defined (_WIN32_WCE)
#undef __MACHINECE
#define __MACHINECE __MACHINEZ
#endif /* !defined (_WIN32_WCE) */
// For compatibility with winbase.h .
#if defined (_M_IA64)
#define _INTERLOCKEDCALL __cdecl
#else /* defined (_M_IA64) */
#define _INTERLOCKEDCALL
#endif /* defined (_M_IA64) */
__MACHINEIA64(void _AcquireSpinLock(unsigned __int64 *))
__MACHINE(_Ret_bytecap_(_Size) void * __cdecl _alloca(size_t _Size))
__MACHINE(int __cdecl abs(_In_ int))
__MACHINEIA64(void __break(int))
__MACHINECE(__int64 __cdecl _abs64(__int64))
__MACHINE(_Check_return_ unsigned short __cdecl _byteswap_ushort(_In_ unsigned short value))
__MACHINE(_Check_return_ unsigned long __cdecl _byteswap_ulong(_In_ unsigned long value))
__MACHINE(_Check_return_ unsigned __int64 __cdecl _byteswap_uint64(_In_ unsigned __int64 value))
__MACHINECE(void __CacheRelease(void *))
__MACHINECE(void __CacheWriteback(void *))
__MACHINECE(_CRTIMP double ceil(double))
__MACHINEX64(_CRTIMP double ceil(_In_ double))
__MACHINECE(_CRTIMP double ceil(double))
__MACHINECE(double _CopyDoubleFromInt64(__int64))
__MACHINECE(float _CopyFloatFromInt32(__int32))
__MACHINECE(__int64 _CopyInt64FromDouble(double))
__MACHINECE(__int32 _CopyInt32FromFloat(float))
__MACHINECE(unsigned _CountLeadingOnes(long))
__MACHINECE(unsigned _CountLeadingOnes64(__int64))
__MACHINECE(unsigned _CountLeadingSigns(long))
__MACHINECE(unsigned _CountLeadingSigns64(__int64))
__MACHINECE(unsigned _CountLeadingZeros(long))
__MACHINECE(unsigned _CountLeadingZeros64(__int64))
__MACHINECE(unsigned _CountOneBits(long))
__MACHINECE(unsigned _CountOneBits64(__int64))
__MACHINE(void __cdecl __debugbreak(void))
__MACHINEI(void __cdecl _disable(void))
__MACHINEIA64(void __cdecl _disable(void))
__MACHINEIA64(void __dsrlz(void))
__MACHINEI(__int64 __emul(int,int))
__MACHINEI(unsigned __int64 __emulu(unsigned int,unsigned int))
__MACHINEI(void __cdecl _enable(void))
__MACHINEIA64(void __cdecl _enable(void))
__MACHINEIA64(void __fc(__int64))
__MACHINEIA64(void __fclrf(void))
__MACHINEIA64(void __fsetc(int, int))
__MACHINEIA64(void __fwb(void))
__MACHINEIA64(unsigned __int64 __getReg(int))
__MACHINEIA64(unsigned __int64 __getPSP(void))
__MACHINEIA64(unsigned __int64 __getCFS(void))
__MACHINECE(void __ICacheRefresh(void *))
__MACHINEWVMPURE(long _INTERLOCKEDCALL _InterlockedDecrement(long volatile *))
__MACHINEWVMPURE(long _INTERLOCKEDCALL _InterlockedCompareExchange (long volatile *, long, long))
__MACHINEWVMPURE(long _INTERLOCKEDCALL _InterlockedIncrement(long volatile *))
__MACHINEIA64(long _InterlockedAdd(long volatile *, long))
__MACHINEIA64(long _InterlockedAdd_acq(long volatile *, long))
__MACHINEIA64(long _InterlockedAdd_rel(long volatile *, long))
__MACHINEIA64(__int64 _InterlockedAdd64(__int64 volatile *, __int64))
__MACHINEIA64(__int64 _InterlockedAdd64_acq(__int64 volatile *, __int64))
__MACHINEIA64(__int64 _InterlockedAdd64_rel(__int64 volatile *, __int64))
__MACHINEI(long __cdecl _InterlockedDecrement(long volatile *))
__MACHINEIA64(long __cdecl _InterlockedDecrement(long volatile *))
__MACHINEIA64(long _InterlockedDecrement_acq(long volatile *))
__MACHINEIA64(long _InterlockedDecrement_rel(long volatile *))
__MACHINEIA64(__int64 _InterlockedDecrement64(__int64 volatile *))
__MACHINEIA64(__int64 _InterlockedDecrement64_acq(__int64 volatile *))
__MACHINEIA64(__int64 _InterlockedDecrement64_rel(__int64 volatile *))
__MACHINEX64(__int64 _InterlockedDecrement64(__int64 volatile *))
__MACHINEI(long _InterlockedExchange(long volatile *, long))
__MACHINEIA64(long _InterlockedExchange(long volatile *, long))
__MACHINEIA64(long _InterlockedExchange_acq(long volatile *, long))
__MACHINESA(long __stdcall _InterlockedExchange(long volatile *, long))
__MACHINEIA64(__int64 _InterlockedExchange64(__int64 volatile *, __int64))
__MACHINEIA64(__int64 _InterlockedExchange64_acq(__int64 volatile *, __int64))
__MACHINEX64(__int64 _InterlockedExchange64(__int64 volatile *, __int64))
__MACHINEIA64(void * _InterlockedExchangePointer(void * volatile *, void *))
__MACHINEIA64(void * _InterlockedExchangePointer_acq(void * volatile *, void *))
__MACHINEX64(void * _InterlockedExchangePointer(void * volatile *, void *))
__MACHINEI(short _InterlockedExchange16(short volatile *, short))
__MACHINEI(char _InterlockedExchange8(char volatile *, char))
__MACHINEI(long _InterlockedExchangeAdd(long volatile *, long))
__MACHINEIA64(long _InterlockedExchangeAdd(long volatile *, long))
__MACHINEIA64(long _InterlockedExchangeAdd_acq(long volatile *, long))
__MACHINEIA64(long _InterlockedExchangeAdd_rel(long volatile *, long))
__MACHINEIA64(__int64 _InterlockedExchangeAdd64(__int64 volatile *, __int64))
__MACHINEIA64(__int64 _InterlockedExchangeAdd64_acq(__int64 volatile *, __int64))
__MACHINEIA64(__int64 _InterlockedExchangeAdd64_rel(__int64 volatile *, __int64))
__MACHINEX64(__int64 _InterlockedExchangeAdd64(__int64 volatile *, __int64))
__MACHINEI(short _InterlockedExchangeAdd16(short volatile *, short))
__MACHINEI(char _InterlockedExchangeAdd8(char volatile *, char))
__MACHINEI(long _InterlockedCompareExchange (long volatile *, long, long))
__MACHINEIA64(long __cdecl _InterlockedCompareExchange (long volatile *, long, long))
__MACHINEIA64(long _InterlockedCompareExchange_acq (long volatile *, long, long))
__MACHINEIA64(long _InterlockedCompareExchange_rel (long volatile *, long, long))
__MACHINEIA64(__int64 _InterlockedCompareExchange64(__int64 volatile *, __int64, __int64))
__MACHINEIA64(__int64 _InterlockedCompareExchange64_acq(__int64 volatile *, __int64, __int64))
__MACHINEIA64(__int64 _InterlockedCompareExchange64_rel(__int64 volatile *, __int64, __int64))
__MACHINEIA64(__int64 _InterlockedCompare64Exchange128(__int64 volatile *Destination, __int64 ExchangeHigh, __int64 ExchangeLow, __int64 Comparand))
__MACHINEIA64(__int64 _InterlockedCompare64Exchange128_acq(__int64 volatile *Destination, __int64 ExchangeHigh, __int64 ExchangeLow, __int64 Comparand))
__MACHINEIA64(__int64 _InterlockedCompare64Exchange128_rel(__int64 volatile *Destination, __int64 ExchangeHigh, __int64 ExchangeLow, __int64 Comparand))
__MACHINEIA64(void *_InterlockedCompareExchangePointer (void * volatile *, void *, void *))
__MACHINEIA64(void *_InterlockedCompareExchangePointer_acq (void * volatile *, void *, void *))
__MACHINEIA64(void *_InterlockedCompareExchangePointer_rel (void * volatile *, void *, void *))
__MACHINEI(__int64 _InterlockedCompareExchange64(__int64 volatile *, __int64, __int64))
__MACHINEX64(void *_InterlockedCompareExchangePointer (void * volatile *, void *, void *))
__MACHINEI(long __cdecl _InterlockedIncrement(long volatile *))
__MACHINEIA64(long __cdecl _InterlockedIncrement(long volatile *))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -