summaryrefslogtreecommitdiff
path: root/src/common/alignment.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/alignment.h')
-rw-r--r--src/common/alignment.h9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/common/alignment.h b/src/common/alignment.h
index 5040043de..2127dc186 100644
--- a/src/common/alignment.h
+++ b/src/common/alignment.h
@@ -17,15 +17,14 @@ template <typename T>
17} 17}
18 18
19template <typename T> 19template <typename T>
20[[nodiscard]] constexpr T AlignDown(T value, std::size_t size) { 20requires std::is_unsigned_v<T>[[nodiscard]] constexpr T AlignUpLog2(T value, size_t align_log2) {
21 static_assert(std::is_unsigned_v<T>, "T must be an unsigned value."); 21 return static_cast<T>((value + ((1ULL << align_log2) - 1)) >> align_log2 << align_log2);
22 return static_cast<T>(value - value % size);
23} 22}
24 23
25template <typename T> 24template <typename T>
26[[nodiscard]] constexpr T AlignBits(T value, std::size_t align) { 25[[nodiscard]] constexpr T AlignDown(T value, std::size_t size) {
27 static_assert(std::is_unsigned_v<T>, "T must be an unsigned value."); 26 static_assert(std::is_unsigned_v<T>, "T must be an unsigned value.");
28 return static_cast<T>((value + ((1ULL << align) - 1)) >> align << align); 27 return static_cast<T>(value - value % size);
29} 28}
30 29
31template <typename T> 30template <typename T>