Skip to content

Instantly share code, notes, and snippets.

@MaxEW707
Last active December 19, 2023 04:42
Show Gist options
  • Save MaxEW707/2f4bf26801bc1b6b088aa7a2fadba526 to your computer and use it in GitHub Desktop.
Save MaxEW707/2f4bf26801bc1b6b088aa7a2fadba526 to your computer and use it in GitHub Desktop.
Function MSVC arch Used by MSVC STL Used by MSVC STL when compiled with Clang Clang Header Clang arch
__dmb arm, arm64 YES YES BUILTIN arm, arm64
_BitScanForward all YES YES intrin0.h all
_BitScanForward64 x64, arm64 YES YES intrin0.h x64, arm, arm64
_BitScanReverse all YES YES intrin0.h all
_BitScanReverse64 x64, arm64 YES intrin0.h x64, arm, arm64
_bittest all NO NO intrin.h
_CountLeadingZeros arm, arm64 YES YES intrin0.h arm64
_CountLeadingZeros64 arm, arm64 YES YES intrin0.h arm64
_CountTrailingZeros arm, arm64 NO NO intrin.h
_CountTrailingZeros64 arm, arm64 NO NO intrin.h
_InterlockedAnd all YES YES BUILTIN all
_InterlockedAnd16 all YES YES BUILTIN all
_InterlockedAnd16_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedAnd16_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedAnd16_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedAnd64 x64, arm, arm64 YES YES intrin0.h all
_interlockedand64 all NO NO intrin.h
_InterlockedAnd64_acq arm, arm64 YES intrin0.h arm, arm64
_InterlockedAnd64_nf arm, arm64 YES intrin0.h arm, arm64
_InterlockedAnd64_rel arm, arm64 YES intrin0.h arm, arm64
_InterlockedAnd8 all YES YES BUILTIN all
_InterlockedAnd8_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedAnd8_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedAnd8_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedAnd_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedAnd_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedAnd_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedCompareExchange all YES YES BUILTIN all
_InterlockedCompareExchange16 all YES YES BUILTIN all
_InterlockedCompareExchange16_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedCompareExchange16_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedCompareExchange16_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedCompareExchange64 all YES YES BUILTIN all
_InterlockedCompareExchange64_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedCompareExchange64_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedCompareExchange64_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedCompareExchange8 all YES YES BUILTIN all
_InterlockedCompareExchange8_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedCompareExchange8_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedCompareExchange8_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedCompareExchange_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedCompareExchange_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedCompareExchange_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedCompareExchange128 x64, arm64 YES YES intrin0.h x64, arm64
_InterlockedCompareExchange128_acq arm64 YES YES intrin0.h arm64
_InterlockedCompareExchange128_nf arm64 YES YES intrin0.h arm64
_InterlockedCompareExchange128_rel arm64 YES YES intrin0.h arm64
_InterlockedDecrement all YES YES BUILTIN all
_InterlockedDecrement16 all YES YES BUILTIN all
_InterlockedDecrement64 x64, arm, arm64 YES YES intrin0.h all
_interlockeddecrement64 all NO NO intrin.h
_InterlockedExchange all YES YES BUILTIN all
_InterlockedExchange16 all YES YES BUILTIN all
_InterlockedExchange16_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchange16_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchange16_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchange64 x64, arm, arm64 YES YES intrin0.h all
_interlockedexchange64 all NO NO intrin.h
_InterlockedExchange64_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchange64_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchange64_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchange8 all YES YES BUILTIN all
_InterlockedExchange8_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchange8_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchange8_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchangeAdd all YES YES BUILTIN all
_InterlockedExchangeAdd16 all YES YES BUILTIN all
_InterlockedExchangeAdd16_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchangeAdd16_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchangeAdd16_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchangeAdd64 x64, arm, arm64 YES YES BUILTIN all
_InterlockedExchangeAdd64_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchangeAdd64_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchangeAdd64_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchangeAdd8 all YES YES BUILTIN all
_InterlockedExchangeAdd8_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchangeAdd8_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchangeAdd8_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchangeAdd_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchangeAdd_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchangeAdd_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchange_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchange_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedExchange_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedIncrement all YES YES BUILTIN all
_InterlockedIncrement16 all YES YES BUILTIN all
_InterlockedIncrement64 x64, arm, arm64 YES YES intrin0.h all
_interlockedincrement64 all NO NO intrin.h
_InterlockedIncrement_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedOr all YES YES BUILTIN all
_InterlockedOr16 all YES YES BUILTIN all
_InterlockedOr16_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedOr16_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedOr16_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedOr64 x64, arm, arm64 YES YES intrin0.h all
_interlockedor64 all NO NO intrin.h
_InterlockedOr64_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedOr64_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedOr64_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedOr8 all YES YES BUILTIN all
_InterlockedOr8_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedOr8_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedOr8_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedOr_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedOr_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedOr_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedXor all YES YES BUILTIN all
_InterlockedXor16 all YES YES BUILTIN all
_InterlockedXor16_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedXor16_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedXor16_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedXor64 x64, arm, arm64 YES YES intrin0.h all
_interlockedxor64 all NO NO intrin.h
_InterlockedXor64_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedXor64_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedXor64_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedXor8 all YES YES BUILTIN all
_InterlockedXor8_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedXor8_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedXor8_rel arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedXor_acq arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedXor_nf arm, arm64 YES YES intrin0.h arm, arm64
_InterlockedXor_rel arm, arm64 YES YES intrin0.h arm, arm64
_ReadWriteBarrier all YES YES intrin0.h x86, x64, arm64
__iso_volatile_load16 all YES YES BUILTIN all
__iso_volatile_load32 all YES YES BUILTIN all
__iso_volatile_load64 all YES YES BUILTIN all
__iso_volatile_load8 all YES YES BUILTIN all
__iso_volatile_store16 all YES YES BUILTIN all
__iso_volatile_store32 all YES YES BUILTIN all
__iso_volatile_store64 all YES YES BUILTIN all
__iso_volatile_store8 all YES YES BUILTIN all
__ldrexd arm YES YES BUILTIN arm
__yield arm, arm64 YES YES BUILTIN arm, arm64
_mm_pause x86, x64 YES YES intrin0.h x86, x64
__lzcnt x86, x64 YES YES BUILTIN all
__lzcnt16 x86, x64 YES YES BUILTIN all
__lzcnt64 x64 YES YES BUILTIN all
__popcnt x86, x64 YES YES BUILTIN all
__popcnt16 x86, x64 YES YES BUILTIN all
__popcnt64 x64 YES YES BUILTIN all
_rotl all YES YES BUILTIN all
_rotl16 all YES YES BUILTIN all
_rotl64 all YES YES BUILTIN all
_rotl8 all YES YES BUILTIN all
_rotr all YES YES BUILTIN all
_rotr16 all YES YES BUILTIN all
_rotr64 all YES YES BUILTIN all
_rotr8 all YES YES BUILTIN all
__shiftleft128 x64 YES YES intrin0.h x64
__shiftright128 x64 YES YES intrin0.h x64
_tzcnt_u32 x86, x64 YES YES NOT SUPPORTED
_tzcnt_u64 x64 YES YES NOT SUPPORTED
_umul128 x64 YES YES intrin0.h x64
_udiv128 x64 YES YES NOT SUPPORTED
_addcarry_u64 x64 YES YES adcintrin.h x64
_subborrow_u64 x64 YES YES adcintrin.h x64
__ceil all YES NO NOT SUPPORTED
__ceilf all YES NO NOT SUPPORTED
__floor all YES NO NOT SUPPORTED
__floorf all YES NO NOT SUPPORTED
__round all YES NO NOT SUPPORTED
__roundf all YES NO NOT SUPPORTED
__trunc all YES NO NOT SUPPORTED
__truncf all YES NO NOT SUPPORTED
__copysign all YES NO NOT SUPPORTED
__copysignf all YES NO NOT SUPPORTED
__signbitvalue all NO NO NOT SUPPORTED
__signbitvaluef all NO NO NOT SUPPORTED
__ldar8 arm64 NO NO NOT SUPPORTED
__ldar16 arm64 NO NO NOT SUPPORTED
__ldar32 arm64 NO NO NOT SUPPORTED
__ldar64 arm64 NO NO NOT SUPPORTED
__load_acquire8 arm64 YES YES NOT SUPPORTED
__load_acquire16 arm64 YES YES NOT SUPPORTED
__load_acquire32 arm64 YES YES NOT SUPPORTED
__load_acquire64 arm64 YES YES NOT SUPPORTED
__stlr8 arm64 YES YES NOT SUPPORTED
__stlr16 arm64 YES YES NOT SUPPORTED
__stlr32 arm64 YES YES NOT SUPPORTED
__stlr64 arm64 YES YES NOT SUPPORTED
__builtin_assume_aligned all YES YES BUILTIN all

Broken / Unsupported with no MSVC STL workaround when compiled under clang

Function MSVC arch Used by MSVC STL Used by MSVC STL when compiled with Clang Clang Header Clang arch
_ReadWriteBarrier all YES YES intrin0.h x86, x64, arm64

Broken / Unsupported with MSVC STL workaround when compiled under clang

Function MSVC arch Used by MSVC STL Used by MSVC STL when compiled with Clang Clang Header Clang arch
_CountLeadingZeros arm, arm64 YES NO intrin0.h arm64
_CountLeadingZeros64 arm, arm64 YES NO intrin0.h arm64
__ceil all YES NO NOT SUPPORTED
__ceilf all YES NO NOT SUPPORTED
__floor all YES NO NOT SUPPORTED
__floorf all YES NO NOT SUPPORTED
__round all YES NO NOT SUPPORTED
__roundf all YES NO NOT SUPPORTED
__trunc all YES NO NOT SUPPORTED
__truncf all YES NO NOT SUPPORTED
__copysign all YES NO NOT SUPPORTED
__copysignf all YES NO NOT SUPPORTED
__load_acquire8 arm64 YES NO NOT SUPPORTED
__load_acquire16 arm64 YES NO NOT SUPPORTED
__load_acquire32 arm64 YES NO NOT SUPPORTED
__load_acquire64 arm64 YES NO NOT SUPPORTED
__stlr8 arm64 YES NO NOT SUPPORTED
__stlr16 arm64 YES NO NOT SUPPORTED
__stlr32 arm64 YES NO NOT SUPPORTED
__stlr64 arm64 YES NO NOT SUPPORTED
_tzcnt_u32 x86, x64 YES YES NOT SUPPORTED
_tzcnt_u64 x64 YES YES NOT SUPPORTED
_udiv128 x64 YES YES NOT SUPPORTED
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment