Skip to content

Commit e2ca263

Browse files
Use optional second parameter of c{l|t}z builtins
Co-authored-by: Nick Desaulniers <[email protected]>
1 parent d4dee22 commit e2ca263

File tree

2 files changed

+6
-7
lines changed

2 files changed

+6
-7
lines changed

libcxx/include/__bit/countl.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,12 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR int __libcpp_clz(__uint128_t __x)
6262
template <class _Tp>
6363
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 int __countl_zero(_Tp __t) _NOEXCEPT {
6464
static_assert(__libcpp_is_unsigned_integer<_Tp>::value, "__countl_zero requires an unsigned integer type");
65+
#if __has_builtin(__builtin_clzg)
66+
return __builtin_clzg(__t, numeric_limits<_Tp>::digits);
67+
#else // __has_builtin(__builtin_clzg)
6568
if (__t == 0)
6669
return numeric_limits<_Tp>::digits;
6770

68-
#if __has_builtin(__builtin_clzg)
69-
return __builtin_clzg(__t);
70-
#else // __has_builtin(__builtin_clzg)
7171
if (sizeof(_Tp) <= sizeof(unsigned int))
7272
return std::__libcpp_clz(static_cast<unsigned int>(__t)) -
7373
(numeric_limits<unsigned int>::digits - numeric_limits<_Tp>::digits);

libcxx/include/__bit/countr.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,11 @@ _LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR int __libcpp_ct
4040

4141
template <class _Tp>
4242
_LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 int __countr_zero(_Tp __t) _NOEXCEPT {
43-
if (__t == 0)
44-
return numeric_limits<_Tp>::digits;
45-
4643
#if __has_builtin(__builtin_ctzg)
47-
return __builtin_ctzg(__t);
44+
return __builtin_ctzg(__t, numeric_limits<_Tp>::digits);
4845
#else // __has_builtin(__builtin_ctzg)
46+
if (__t == 0)
47+
return numeric_limits<_Tp>::digits;
4948
if (sizeof(_Tp) <= sizeof(unsigned int))
5049
return std::__libcpp_ctz(static_cast<unsigned int>(__t));
5150
else if (sizeof(_Tp) <= sizeof(unsigned long))

0 commit comments

Comments
 (0)