commit 5aa73896a3313a354cf6550d99ecd652d0abd3b2 Author: David Grayson Date: Wed Feb 8 18:56:17 2017 +0100 intrin-impl.h: Added __popcnt16, __popcnt, and __popcnt64. diff --git a/mingw-w64-headers/include/psdk_inc/intrin-impl.h b/mingw-w64-headers/include/psdk_inc/intrin-impl.h index f8dc78f9..fc781ff9 100644 --- a/mingw-w64-headers/include/psdk_inc/intrin-impl.h +++ b/mingw-w64-headers/include/psdk_inc/intrin-impl.h @@ -971,6 +971,40 @@ __buildbittesti(InterlockedBitTestAndComplement, __LONG32, "eor", "M", volatile) #if defined(__x86_64__) || defined(_AMD64_) || defined(__i386__) || defined(_X86_) || defined(__arm__) || defined(_ARM_) +#if !defined(__clang__) + +#if __INTRINSIC_PROLOG(__popcnt16) +unsigned short __popcnt16(unsigned short); +__INTRINSICS_USEINLINE +unsigned short __popcnt16(unsigned short value) +{ + return __builtin_popcount(value); +} +#define __INTRINSIC_DEFINED___popcnt16 +#endif /* __INTRINSIC_PROLOG */ + +#if __INTRINSIC_PROLOG(__popcnt) +unsigned int __popcnt(unsigned int); +__INTRINSICS_USEINLINE +unsigned int __popcnt(unsigned int value) +{ + return __builtin_popcount(value); +} +#define __INTRINSIC_DEFINED___popcnt +#endif /* __INTRINSIC_PROLOG */ + +#if __INTRINSIC_PROLOG(__popcnt64) +unsigned __int64 __popcnt64(unsigned __int64); +__INTRINSICS_USEINLINE +unsigned __int64 __popcnt64(unsigned __int64 value) +{ + return __builtin_popcountll(value); +} +#define __INTRINSIC_DEFINED___popcnt64 +#endif /* __INTRINSIC_PROLOG */ + +#endif /* !defined(__clang__) */ + #if __INTRINSIC_PROLOG(_InterlockedAnd) __LONG32 _InterlockedAnd(__LONG32 volatile *, __LONG32); __INTRINSICS_USEINLINE