Use bit scan intrinsic on ARM64 platform

This commit is contained in:
Matt Borland 2025-04-10 08:35:11 -04:00
parent 1e1ccb491e
commit 4c74671f73
No known key found for this signature in database
GPG Key ID: C6326E39574C770F

View File

@ -28,7 +28,7 @@
# pragma intrinsic(_BitScanForward) # pragma intrinsic(_BitScanForward)
# pragma intrinsic(_BitScanReverse) # pragma intrinsic(_BitScanReverse)
# if defined(_M_X64) # if defined(_M_X64) || defined(_M_ARM64)
# pragma intrinsic(_BitScanForward64) # pragma intrinsic(_BitScanForward64)
# pragma intrinsic(_BitScanReverse64) # pragma intrinsic(_BitScanReverse64)
# endif # endif
@ -230,7 +230,7 @@ inline int countl_impl( boost::uint16_t x ) BOOST_NOEXCEPT
#endif #endif
#if defined(_MSC_VER) && defined(_M_X64) && defined(BOOST_CORE_HAS_BUILTIN_ISCONSTEVAL) #if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64)) && defined(BOOST_CORE_HAS_BUILTIN_ISCONSTEVAL)
BOOST_CXX14_CONSTEXPR inline int countl_impl( boost::uint64_t x ) BOOST_NOEXCEPT BOOST_CXX14_CONSTEXPR inline int countl_impl( boost::uint64_t x ) BOOST_NOEXCEPT
{ {
@ -255,7 +255,7 @@ BOOST_CXX14_CONSTEXPR inline int countl_impl( boost::uint64_t x ) BOOST_NOEXCEPT
} }
} }
#elif defined(_MSC_VER) && defined(_M_X64) #elif defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64))
inline int countl_impl( boost::uint64_t x ) BOOST_NOEXCEPT inline int countl_impl( boost::uint64_t x ) BOOST_NOEXCEPT
{ {
@ -455,7 +455,7 @@ inline int countr_impl( boost::uint16_t x ) BOOST_NOEXCEPT
#endif #endif
#if defined(_MSC_VER) && defined(_M_X64) && defined(BOOST_CORE_HAS_BUILTIN_ISCONSTEVAL) #if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64)) && defined(BOOST_CORE_HAS_BUILTIN_ISCONSTEVAL)
BOOST_CXX14_CONSTEXPR inline int countr_impl( boost::uint64_t x ) BOOST_NOEXCEPT BOOST_CXX14_CONSTEXPR inline int countr_impl( boost::uint64_t x ) BOOST_NOEXCEPT
{ {
@ -480,7 +480,7 @@ BOOST_CXX14_CONSTEXPR inline int countr_impl( boost::uint64_t x ) BOOST_NOEXCEPT
} }
} }
#elif defined(_MSC_VER) && defined(_M_X64) #elif defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64))
inline int countr_impl( boost::uint64_t x ) BOOST_NOEXCEPT inline int countr_impl( boost::uint64_t x ) BOOST_NOEXCEPT
{ {