summaryrefslogtreecommitdiff
path: root/include/llvm/Support/MathExtras.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-07-18 00:47:10 +0000
committerChris Lattner <sabre@nondot.org>2006-07-18 00:47:10 +0000
commit0683c8cad920d241d44b126972d5cdd164dcc213 (patch)
treee41442fc54d57eb0bc0aa34cd1908753661e3617 /include/llvm/Support/MathExtras.h
parentede5aa4c96f54b7866353e427a43f46470eed10a (diff)
downloadllvm-0683c8cad920d241d44b126972d5cdd164dcc213.tar.gz
llvm-0683c8cad920d241d44b126972d5cdd164dcc213.tar.bz2
llvm-0683c8cad920d241d44b126972d5cdd164dcc213.tar.xz
Add functions to compute ceil(log2(N)) to match functions for floor(log2(N))
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29168 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Support/MathExtras.h')
-rw-r--r--include/llvm/Support/MathExtras.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/include/llvm/Support/MathExtras.h b/include/llvm/Support/MathExtras.h
index 72065ba3d8..0f5961ff73 100644
--- a/include/llvm/Support/MathExtras.h
+++ b/include/llvm/Support/MathExtras.h
@@ -228,7 +228,7 @@ inline unsigned CountPopulation_64(uint64_t Value) {
// Log2_32 - This function returns the floor log base 2 of the specified value,
// -1 if the value is zero. (32 bit edition.)
-// Ex. Log2_32(32) == 5, Log2_32(1) == 0, Log2_32(0) == -1
+// Ex. Log2_32(32) == 5, Log2_32(1) == 0, Log2_32(0) == -1, Log2_32(6) == 2
inline unsigned Log2_32(unsigned Value) {
return 31 - CountLeadingZeros_32(Value);
}
@@ -239,6 +239,19 @@ inline unsigned Log2_64(uint64_t Value) {
return 63 - CountLeadingZeros_64(Value);
}
+// Log2_32_Ceil - This function returns the ceil log base 2 of the specified
+// value, 32 if the value is zero. (32 bit edition).
+// Ex. Log2_32_Ceil(32) == 5, Log2_32_Ceil(1) == 0, Log2_32_Ceil(6) == 3
+inline unsigned Log2_32_Ceil(unsigned Value) {
+ return 32-CountLeadingZeros_32(Value-1);
+}
+
+// Log2_64 - This function returns the ceil log base 2 of the specified value,
+// 64 if the value is zero. (64 bit edition.)
+inline unsigned Log2_64_Ceil(uint64_t Value) {
+ return 64-CountLeadingZeros_64(Value-1);
+}
+
// BitsToDouble - This function takes a 64-bit integer and returns the bit
// equivalent double.
inline double BitsToDouble(uint64_t Bits) {