Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
Julian LALU committed Dec 17, 2024
2 parents 27774d4 + 621fdaf commit 5cf676d
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 10 deletions.
2 changes: 1 addition & 1 deletion interface/core/bits/bits_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ namespace hud::common
return integral;
}

/** Determines if a 64-bit word contains any zero byte using a SIMD-like technique
/** Determines if a 64-bit word contains any zero byte using a SIMD-like technique
* Example:
* value = 0x1213140015001617
* result = 0x0000008000800000
Expand Down
3 changes: 1 addition & 2 deletions interface/core/containers/hashset.h
Original file line number Diff line number Diff line change
Expand Up @@ -530,7 +530,7 @@ namespace hud
{
if (count > max_slot_count_)
{
grow_capacity(count);
grow_capacity(hud::math::next_power_of_two(count) + 1);
}
}

Expand Down Expand Up @@ -574,7 +574,6 @@ namespace hud
{
clear();
free_control_and_slot(control_ptr_, slot_ptr_, max_slot_count_);
// allocator_.template free<slot_type>({hud::bit_cast<slot_type *>(control_ptr_), current_allocation_size()});
}
}

Expand Down
37 changes: 37 additions & 0 deletions interface/core/math/math.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,43 @@ namespace hud
{
struct math
{
/** Compute the next power of two mask. */
[[nodiscard]] static constexpr u32 next_power_of_two_mask(u32 integral) noexcept
{
integral--;
integral |= integral >> 1;
integral |= integral >> 2;
integral |= integral >> 4;
integral |= integral >> 8;
integral |= integral >> 16;
return integral;
}

/** Compute the next power of two mask. */
[[nodiscard]] static constexpr u64 next_power_of_two_mask(u64 integral) noexcept
{
integral--;
integral |= integral >> 1;
integral |= integral >> 2;
integral |= integral >> 4;
integral |= integral >> 8;
integral |= integral >> 16;
integral |= integral >> 32;
return integral;
}

/** Compute the next power of two. */
[[nodiscard]] static constexpr u32 next_power_of_two(u32 integral) noexcept
{
return hud::math::next_power_of_two_mask(integral) + 1;
}

/** Compute the next power of two. */
[[nodiscard]] static constexpr u64 next_power_of_two(u64 integral) noexcept
{
return hud::math::next_power_of_two_mask(integral) + 1;
}

/** Compute the natual logarithm of value. */
template<typename type_t>
[[nodiscard]] static type_t log(const type_t value) noexcept
Expand Down
2 changes: 1 addition & 1 deletion interface/core/types.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@

#include "types/types.h"

#endif HD_INC_CORE_TYPES_H
#endif // HD_INC_CORE_TYPES_H
12 changes: 6 additions & 6 deletions test/hashmap/hashmap_insert.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ GTEST_TEST(hashmap, add_by_copy_construct_non_bitwise_copy_constructible_type)
hud_assert_eq(std::get<0>(first_element_result).first, 1u);
hud_assert_eq(std::get<0>(first_element_result).second, 11u);
hud_assert_eq(std::get<1>(first_element_result), 1u);
hud_assert_eq(std::get<2>(first_element_result), 2u);
hud_assert_eq(std::get<2>(first_element_result), 3u);
hud_assert_eq(std::get<3>(first_element_result), 0u);
hud_assert_eq(std::get<4>(first_element_result), 1u);
hud_assert_eq(std::get<5>(first_element_result), 0u);
Expand All @@ -231,7 +231,7 @@ GTEST_TEST(hashmap, add_by_copy_construct_non_bitwise_copy_constructible_type)
hud_assert_eq(std::get<0>(same_element_result).first, 1u);
hud_assert_eq(std::get<0>(same_element_result).second, 11u);
hud_assert_eq(std::get<1>(same_element_result), 1u);
hud_assert_eq(std::get<2>(same_element_result), 2u);
hud_assert_eq(std::get<2>(same_element_result), 3u);
hud_assert_eq(std::get<3>(same_element_result), 0u);
hud_assert_eq(std::get<4>(same_element_result), 1u);
hud_assert_eq(std::get<5>(same_element_result), 0u);
Expand All @@ -244,7 +244,7 @@ GTEST_TEST(hashmap, add_by_copy_construct_non_bitwise_copy_constructible_type)
hud_assert_eq(std::get<0>(second_element_result).first, 2u);
hud_assert_eq(std::get<0>(second_element_result).second, 22u);
hud_assert_eq(std::get<1>(second_element_result), 2u);
hud_assert_eq(std::get<2>(second_element_result), 2u);
hud_assert_eq(std::get<2>(second_element_result), 3u);
hud_assert_eq(std::get<3>(second_element_result), 0u);
hud_assert_eq(std::get<4>(second_element_result), 1u);
hud_assert_eq(std::get<5>(second_element_result), 0u);
Expand All @@ -262,7 +262,7 @@ GTEST_TEST(hashmap, add_by_copy_construct_non_bitwise_copy_constructible_type)
hud_assert_eq(std::get<0>(first_element_result).first, 1u);
hud_assert_eq(std::get<0>(first_element_result).second, 11u);
hud_assert_eq(std::get<1>(first_element_result), 1u);
hud_assert_eq(std::get<2>(first_element_result), 2u);
hud_assert_eq(std::get<2>(first_element_result), 3u);
hud_assert_eq(std::get<3>(first_element_result), 0u);
hud_assert_eq(std::get<4>(first_element_result), 1u);
hud_assert_eq(std::get<5>(first_element_result), 0u);
Expand All @@ -275,7 +275,7 @@ GTEST_TEST(hashmap, add_by_copy_construct_non_bitwise_copy_constructible_type)
hud_assert_eq(std::get<0>(same_element_result).first, 1u);
hud_assert_eq(std::get<0>(same_element_result).second, 11u);
hud_assert_eq(std::get<1>(same_element_result), 1u);
hud_assert_eq(std::get<2>(same_element_result), 2u);
hud_assert_eq(std::get<2>(same_element_result), 3u);
hud_assert_eq(std::get<3>(same_element_result), 0u);
hud_assert_eq(std::get<4>(same_element_result), 1u);
hud_assert_eq(std::get<5>(same_element_result), 0u);
Expand All @@ -288,7 +288,7 @@ GTEST_TEST(hashmap, add_by_copy_construct_non_bitwise_copy_constructible_type)
hud_assert_eq(std::get<0>(second_element_result).first, 2u);
hud_assert_eq(std::get<0>(second_element_result).second, 22u);
hud_assert_eq(std::get<1>(second_element_result), 2u);
hud_assert_eq(std::get<2>(second_element_result), 2u);
hud_assert_eq(std::get<2>(second_element_result), 3u);
hud_assert_eq(std::get<3>(second_element_result), 0u);
hud_assert_eq(std::get<4>(second_element_result), 1u);
hud_assert_eq(std::get<5>(second_element_result), 0u);
Expand Down

0 comments on commit 5cf676d

Please sign in to comment.