aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/Support/MathExtras.h
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2008-06-27 21:48:21 +0000
committerOwen Anderson <resistor@mac.com>2008-06-27 21:48:21 +0000
commitd98a45d29a6047bd47d3a3cd83c13ac0dac851fb (patch)
tree16deb5d4118fb620a406e0c75cf1952f1de9437b /include/llvm/Support/MathExtras.h
parent97388469b15fcb8c027377ae0d4a59ba9646f2a7 (diff)
Add a NextPowerOf2 function to calculate the next power of two greater than a given integer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52839 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Support/MathExtras.h')
-rw-r--r--include/llvm/Support/MathExtras.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/include/llvm/Support/MathExtras.h b/include/llvm/Support/MathExtras.h
index f57beed093..8a89d85cd5 100644
--- a/include/llvm/Support/MathExtras.h
+++ b/include/llvm/Support/MathExtras.h
@@ -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