[llvm-commits] CVS: llvm/include/llvm/Support/MathExtras.h

Chris Lattner lattner at cs.uiuc.edu
Mon Jul 17 17:47:22 PDT 2006



Changes in directory llvm/include/llvm/Support:

MathExtras.h updated: 1.32 -> 1.33
---
Log message:

Add functions to compute ceil(log2(N)) to match functions for floor(log2(N))


---
Diffs of the changes:  (+14 -1)

 MathExtras.h |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletion(-)


Index: llvm/include/llvm/Support/MathExtras.h
diff -u llvm/include/llvm/Support/MathExtras.h:1.32 llvm/include/llvm/Support/MathExtras.h:1.33
--- llvm/include/llvm/Support/MathExtras.h:1.32	Wed Jun 21 17:19:00 2006
+++ llvm/include/llvm/Support/MathExtras.h	Mon Jul 17 19:47:10 2006
@@ -228,7 +228,7 @@
 
 // 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 @@
     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) {






More information about the llvm-commits mailing list