diff --git a/mingw64-headers.changes b/mingw64-headers.changes index bae34a6..a4c73d2 100644 --- a/mingw64-headers.changes +++ b/mingw64-headers.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Thu Apr 20 08:26:10 UTC 2017 - idonmez@suse.com + +- Add popcnt.patch + ------------------------------------------------------------------- Tue Mar 28 11:40:03 UTC 2017 - idonmez@suse.com diff --git a/mingw64-headers.spec b/mingw64-headers.spec index 21c83bd..1a5bcec 100644 --- a/mingw64-headers.spec +++ b/mingw64-headers.spec @@ -28,6 +28,7 @@ Url: http://mingw-w64.sf.net/ Source: mingw-w64-headers-%version.tar.xz Source1000: %name-rpmlintrc Patch1: 0001-Add-missing-D3D_CS_-variables.patch +Patch2: popcnt.patch BuildRequires: mingw64-filesystem BuildRequires: xz #!BuildIgnore: post-build-checks @@ -55,6 +56,7 @@ an actual pthread implementation (like winpthreads) is installed. %prep %setup -q -n mingw-w64-headers %patch1 -p2 +%patch2 -p2 %build %{_mingw64_configure} \ diff --git a/popcnt.patch b/popcnt.patch new file mode 100644 index 0000000..833c0db --- /dev/null +++ b/popcnt.patch @@ -0,0 +1,51 @@ +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