Add a NextPowerOf2 function to calculate the next power of two greater than a given...
authorOwen Anderson <resistor@mac.com>
Fri, 27 Jun 2008 21:48:21 +0000 (21:48 +0000)
committerOwen Anderson <resistor@mac.com>
Fri, 27 Jun 2008 21:48:21 +0000 (21:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52839 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/MathExtras.h

index f57beed09391f71c50616b11439c32289892508f..8a89d85cd58fa019b10ee9de7ba5b895c5c338a7 100644 (file)
@@ -396,6 +396,18 @@ static inline uint64_t MinAlign(uint64_t A, uint64_t B) {
   // The largest power of 2 that divides both A and B.
   return (A | B) & -(A | B);
 }
+
+/// NextPowerOf2 - Returns the next power of two (in 64-bits)
+/// that is strictly greater than A.  Returns zero on overflow.
+static inline uint64_t NextPowerOf2(uint64_t A) {
+  A |= (A >> 1);
+  A |= (A >> 2);
+  A |= (A >> 4);
+  A |= (A >> 8);
+  A |= (A >> 16);
+  A |= (A >> 32);
+  return A + 1;
+}
   
 } // End llvm namespace