diff --git a/src/common/bit_util.h b/src/common/bit_util.h index eef8c1c5a7..f50d3308a9 100644 --- a/src/common/bit_util.h +++ b/src/common/bit_util.h @@ -45,6 +45,12 @@ template <typename T> return static_cast<u32>(log2_f + static_cast<u64>((value ^ (1ULL << log2_f)) != 0ULL)); } +template <typename T> +requires std::is_unsigned_v<T> +[[nodiscard]] constexpr bool IsPow2(T value) { + return std::has_single_bit(value); +} + template <typename T> requires std::is_integral_v<T> [[nodiscard]] T NextPow2(T value) {