From 16a8c1dcee69334443d4d6c2674c28a43896ffd9 Mon Sep 17 00:00:00 2001 From: Marc Auberer Date: Thu, 28 Mar 2024 17:39:31 +0100 Subject: [PATCH] Avoid duplicate signatures --- libcxx/include/__bit/countl.h | 17 +++-------------- libcxx/include/__bit/countr.h | 16 +++------------- libcxx/include/__bit/popcount.h | 13 +++---------- 3 files changed, 9 insertions(+), 37 deletions(-) diff --git a/libcxx/include/__bit/countl.h b/libcxx/include/__bit/countl.h index 5e71deb43fae2..e64e435f80a0b 100644 --- a/libcxx/include/__bit/countl.h +++ b/libcxx/include/__bit/countl.h @@ -59,25 +59,15 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR int __libcpp_clz(__uint128_t __x) } #endif // _LIBCPP_HAS_NO_INT128 -#if __has_builtin(__builtin_clzg) - template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 int __countl_zero(_Tp __t) _NOEXCEPT { static_assert(__libcpp_is_unsigned_integer<_Tp>::value, "__countl_zero requires an unsigned integer type"); if (__t == 0) return numeric_limits<_Tp>::digits; +#if __has_builtin(__builtin_clzg) return __builtin_clzg(__t); -} - -#else // __has_builtin(__builtin_clzg) - -template -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 int __countl_zero(_Tp __t) _NOEXCEPT { - static_assert(__libcpp_is_unsigned_integer<_Tp>::value, "__countl_zero requires an unsigned integer type"); - if (__t == 0) - return numeric_limits<_Tp>::digits; - +#else // __has_builtin(__builtin_clzg) if (sizeof(_Tp) <= sizeof(unsigned int)) return std::__libcpp_clz(static_cast(__t)) - (numeric_limits::digits - numeric_limits<_Tp>::digits); @@ -99,9 +89,8 @@ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 int __countl_zero(_Tp __t) _ } return __ret + __iter; } -} - #endif // __has_builtin(__builtin_clzg) +} #if _LIBCPP_STD_VER >= 20 diff --git a/libcxx/include/__bit/countr.h b/libcxx/include/__bit/countr.h index 8d345d72d1727..5907f6fc9c745 100644 --- a/libcxx/include/__bit/countr.h +++ b/libcxx/include/__bit/countr.h @@ -38,23 +38,14 @@ _LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR int __libcpp_ct return __builtin_ctzll(__x); } -#if __has_builtin(__builtin_ctzg) - template _LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 int __countr_zero(_Tp __t) _NOEXCEPT { if (__t == 0) return numeric_limits<_Tp>::digits; +#if __has_builtin(__builtin_ctzg) return __builtin_ctzg(__t); -} - -#else // __has_builtin(__builtin_ctzg) - -template -_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 int __countr_zero(_Tp __t) _NOEXCEPT { - if (__t == 0) - return numeric_limits<_Tp>::digits; - +#else // __has_builtin(__builtin_ctzg) if (sizeof(_Tp) <= sizeof(unsigned int)) return std::__libcpp_ctz(static_cast(__t)); else if (sizeof(_Tp) <= sizeof(unsigned long)) @@ -70,9 +61,8 @@ _LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 int __coun } return __ret + std::__libcpp_ctz(static_cast(__t)); } -} - #endif // __has_builtin(__builtin_ctzg) +} #if _LIBCPP_STD_VER >= 20 diff --git a/libcxx/include/__bit/popcount.h b/libcxx/include/__bit/popcount.h index a07e9e6ffc56e..37b3a3e1f3f2b 100644 --- a/libcxx/include/__bit/popcount.h +++ b/libcxx/include/__bit/popcount.h @@ -40,17 +40,11 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR int __libcpp_popcount(unsigned lo #if _LIBCPP_STD_VER >= 20 -# if __has_builtin(__builtin_popcountg) - template <__libcpp_unsigned_integer _Tp> _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr int popcount(_Tp __t) noexcept { +# if __has_builtin(__builtin_popcountg) return __builtin_popcountg(__t); -} - -# else // __has_builtin(__builtin_popcountg) - -template <__libcpp_unsigned_integer _Tp> -_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr int popcount(_Tp __t) noexcept { +# else // __has_builtin(__builtin_popcountg) if (sizeof(_Tp) <= sizeof(unsigned int)) return std::__libcpp_popcount(static_cast(__t)); else if (sizeof(_Tp) <= sizeof(unsigned long)) @@ -65,9 +59,8 @@ _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr int popcount(_Tp __t) noex } return __ret; } -} - # endif // __has_builtin(__builtin_popcountg) +} #endif // _LIBCPP_STD_VER >= 20