[libcxx] r290924 - Refactor bitscan64 check
Saleem Abdulrasool via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 3 17:53:25 PST 2017
Author: compnerd
Date: Tue Jan 3 19:53:24 2017
New Revision: 290924
URL: http://llvm.org/viewvc/llvm-project?rev=290924&view=rev
Log:
Refactor bitscan64 check
Introduce a `_LIBCPP_HAS_BITSCAN64` macro to specify if the 64-bit
variant of the bitscan family of APIs is available. This avoids
duplicating the check in the support header.
Modified:
libcxx/trunk/include/__config
libcxx/trunk/include/support/win32/support.h
Modified: libcxx/trunk/include/__config
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/__config?rev=290924&r1=290923&r2=290924&view=diff
==============================================================================
--- libcxx/trunk/include/__config (original)
+++ libcxx/trunk/include/__config Tue Jan 3 19:53:24 2017
@@ -173,6 +173,9 @@
# ifndef __MINGW32__
# define _LIBCPP_MSVCRT // Using Microsoft's C Runtime library
# endif
+# if (defined(_M_AMD64) || defined(__x86_64__)) || (defined(_M_ARM) || defined(__arm__))
+# define _LIBCPP_HAS_BITSCAN64
+# endif
#endif // defined(_WIN32)
#ifdef __sun__
Modified: libcxx/trunk/include/support/win32/support.h
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/support/win32/support.h?rev=290924&r1=290923&r2=290924&view=diff
==============================================================================
--- libcxx/trunk/include/support/win32/support.h (original)
+++ libcxx/trunk/include/support/win32/support.h Tue Jan 3 19:53:24 2017
@@ -110,7 +110,7 @@ _LIBCPP_ALWAYS_INLINE int __builtin_ctzl
unsigned long where;
// Search from LSB to MSB for first set bit.
// Returns zero if no set bit is found.
-#if (defined(_M_ARM) || defined(__arm__)) || \
+#if defined(_LIBCPP_HAS_BITSCAN64)
(defined(_M_AMD64) || defined(__x86_64__))
if (_BitScanForward64(&where, mask))
return static_cast<int>(where);
@@ -151,8 +151,7 @@ _LIBCPP_ALWAYS_INLINE int __builtin_clzl
unsigned long where;
// BitScanReverse scans from MSB to LSB for first set bit.
// Returns 0 if no set bit is found.
-#if (defined(_M_ARM) || defined(__arm__)) || \
- (defined(_M_AMD64) || defined(__x86_64__))
+#if defined(_LIBCPP_HAS_BITSCAN64)
if (_BitScanReverse64(&where, mask))
return static_cast<int>(63 - where);
#else
More information about the cfe-commits
mailing list