8#include "../uint128/uint128.hpp"
9#include "../uint256/uint256.hpp"
23 return static_cast<size_t>(__builtin_clz(u));
28 return static_cast<size_t>(__builtin_clzll(u));
33 auto hi =
static_cast<uint64_t
>(u >> 64);
35 return static_cast<size_t>(__builtin_clzll(hi));
37 auto lo =
static_cast<uint64_t
>(u);
38 return static_cast<size_t>(__builtin_clzll(lo)) + 64;
43 if (u.
data[3] != 0U) {
46 if (u.
data[2] != 0U) {
49 if (u.
data[1] != 0U) {
52 if (u.
data[0] != 0U) {
constexpr size_t count_leading_zeros< uint64_t >(uint64_t const &u)
constexpr size_t count_leading_zeros< uint256_t >(uint256_t const &u)
constexpr size_t count_leading_zeros(T const &u)
constexpr size_t count_leading_zeros< uint32_t >(uint32_t const &u)
constexpr size_t count_leading_zeros< uint128_t >(uint128_t const &u)
unsigned __int128 uint128_t