summary refs log tree commit diff stats
path: root/util/cutils.c
diff options
context:
space:
mode:
authorRadim Krčmář <rkrcmar@redhat.com>2015-02-17 17:30:52 +0100
committerGerd Hoffmann <kraxel@redhat.com>2015-03-03 08:33:08 +0100
commitbb7443f6d6f09411ea10f06e6cb0d416bd1ccebd (patch)
tree3d01f66f23e0bc87df16713247ee40fc075d9586 /util/cutils.c
parent876d516311c1538a7d29f2abec48b7cda0645eea (diff)
downloadfocaccia-qemu-bb7443f6d6f09411ea10f06e6cb0d416bd1ccebd.tar.gz
focaccia-qemu-bb7443f6d6f09411ea10f06e6cb0d416bd1ccebd.zip
qxl: refactor rounding up to a nearest power of 2
We already have pow2floor, mirror it and use instead of a function with
similar results (same in used domain), to clarify our intent.

Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'util/cutils.c')
-rw-r--r--util/cutils.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/util/cutils.c b/util/cutils.c
index dbe7412bd8..c2250d1ba5 100644
--- a/util/cutils.c
+++ b/util/cutils.c
@@ -483,6 +483,20 @@ int64_t pow2floor(int64_t value)
     return value;
 }
 
+/* round up to the nearest power of 2 (0 if overflow) */
+uint64_t pow2ceil(uint64_t value)
+{
+    uint8_t nlz = clz64(value);
+
+    if (is_power_of_2(value)) {
+        return value;
+    }
+    if (!nlz) {
+        return 0;
+    }
+    return 1ULL << (64 - nlz);
+}
+
 /*
  * Implementation of  ULEB128 (http://en.wikipedia.org/wiki/LEB128)
  * Input is limited to 14-bit numbers