Signed-off-by: Martin Storsjö <[email protected]>
---
mingw-w64-headers/include/psdk_inc/intrin-impl.h | 79 ++++++++++++++++++++++++
mingw-w64-headers/include/winnt.h | 2 +
2 files changed, 81 insertions(+)
diff --git a/mingw-w64-headers/include/psdk_inc/intrin-impl.h
b/mingw-w64-headers/include/psdk_inc/intrin-impl.h
index 88af804..90c55f9 100644
--- a/mingw-w64-headers/include/psdk_inc/intrin-impl.h
+++ b/mingw-w64-headers/include/psdk_inc/intrin-impl.h
@@ -1084,6 +1084,32 @@ __buildbittesti(InterlockedBitTestAndComplement,
__LONG32, "eor", /* unused para
#define __INTRINSIC_DEFINED_InterlockedBitTestAndComplement
#endif /* __INTRINSIC_PROLOG */
+#if __INTRINSIC_PROLOG(_BitScanForward)
+__MINGW_EXTENSION unsigned char _BitScanForward(unsigned __LONG32 *Index,
unsigned __LONG32 Mask);
+#if !__has_builtin(_BitScanForward)
+__MINGW_EXTENSION __INTRINSICS_USEINLINE
+unsigned char _BitScanForward(unsigned __LONG32 *Index, unsigned __LONG32 Mask)
+{
+ *Index = __builtin_ctz(Mask);
+ return Mask != 0;
+}
+#endif
+#define __INTRINSIC_DEFINED__BitScanForward
+#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_BitScanReverse)
+__MINGW_EXTENSION unsigned char _BitScanReverse(unsigned __LONG32 *Index,
unsigned __LONG32 Mask);
+#if !__has_builtin(_BitScanReverse)
+__MINGW_EXTENSION __INTRINSICS_USEINLINE
+unsigned char _BitScanReverse(unsigned __LONG32 *Index, unsigned __LONG32 Mask)
+{
+ *Index = 31 - __builtin_clz(Mask);
+ return Mask != 0;
+}
+#endif
+#define __INTRINSIC_DEFINED__BitScanReverse
+#endif /* __INTRINSIC_PROLOG */
+
#endif /* defined(__arm__) || defined(_ARM_) */
#if defined(__aarch64__) || defined(_ARM64_)
@@ -1212,6 +1238,59 @@ __int64 _InterlockedExchangeAdd64(__int64 volatile
*Addend, __int64 Value) {
#endif
#define __INTRINSIC_DEFINED__InterlockedExchangeAdd64
#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_BitScanForward)
+__MINGW_EXTENSION unsigned char _BitScanForward(unsigned __LONG32 *Index,
unsigned __LONG32 Mask);
+#if !__has_builtin(_BitScanForward)
+__MINGW_EXTENSION __INTRINSICS_USEINLINE
+unsigned char _BitScanForward(unsigned __LONG32 *Index, unsigned __LONG32 Mask)
+{
+ *Index = __builtin_ctz(Mask);
+ return Mask != 0;
+}
+#endif
+#define __INTRINSIC_DEFINED__BitScanForward
+#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_BitScanReverse)
+__MINGW_EXTENSION unsigned char _BitScanReverse(unsigned __LONG32 *Index,
unsigned __LONG32 Mask);
+#if !__has_builtin(_BitScanReverse)
+__MINGW_EXTENSION __INTRINSICS_USEINLINE
+unsigned char _BitScanReverse(unsigned __LONG32 *Index, unsigned __LONG32 Mask)
+{
+ *Index = 31 - __builtin_clz(Mask);
+ return Mask != 0;
+}
+#endif
+#define __INTRINSIC_DEFINED__BitScanReverse
+#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_BitScanForward64)
+__MINGW_EXTENSION unsigned char _BitScanForward64(unsigned __LONG32 *Index,
unsigned __int64 Mask);
+#if !__has_builtin(_BitScanForward64)
+__MINGW_EXTENSION __INTRINSICS_USEINLINE
+unsigned char _BitScanForward64(unsigned __LONG32 *Index, unsigned __int64
Mask)
+{
+ *Index = __builtin_ctzll(Mask);
+ return Mask != 0;
+}
+#endif
+#define __INTRINSIC_DEFINED__BitScanForward64
+#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_BitScanReverse64)
+__MINGW_EXTENSION unsigned char _BitScanReverse64(unsigned __LONG32 *Index,
unsigned __int64 Mask);
+#if !__has_builtin(_BitScanReverse64)
+__MINGW_EXTENSION __INTRINSICS_USEINLINE
+unsigned char _BitScanReverse64(unsigned __LONG32 *Index, unsigned __int64
Mask)
+{
+ *Index = 63 - __builtin_clzll(Mask);
+ return Mask != 0;
+}
+#endif
+#define __INTRINSIC_DEFINED__BitScanReverse64
+#endif /* __INTRINSIC_PROLOG */
+
#endif /* defined(__aarch64__) || define(_ARM64_) */
/* ***************************************************** */
diff --git a/mingw-w64-headers/include/winnt.h
b/mingw-w64-headers/include/winnt.h
index 45718c3..cd28588 100644
--- a/mingw-w64-headers/include/winnt.h
+++ b/mingw-w64-headers/include/winnt.h
@@ -1991,6 +1991,8 @@ extern "C" {
#define BitScanForward _BitScanForward
#define BitScanReverse _BitScanReverse
+#define BitScanForward64 _BitScanForward64
+#define BitScanReverse64 _BitScanReverse64
#define InterlockedIncrement16 _InterlockedIncrement16
#define InterlockedDecrement16 _InterlockedDecrement16
--
2.7.4
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public