From: Markus Armbruster <armbru@redhat.com>
To: Gerd Hoffmann <kraxel@redhat.com>
Cc: qemu-devel@nongnu.org, "Radim Krčmář" <rkrcmar@redhat.com>
Subject: Re: [Qemu-devel] [PULL 3/7] qxl: refactor rounding up to a nearest power of 2
Date: Thu, 05 Mar 2015 10:52:13 +0100 [thread overview]
Message-ID: <87twxzai0i.fsf@blackfin.pond.sub.org> (raw)
In-Reply-To: <1425479449-11480-4-git-send-email-kraxel@redhat.com> (Gerd Hoffmann's message of "Wed, 4 Mar 2015 15:30:45 +0100")
Gerd Hoffmann <kraxel@redhat.com> writes:
> From: Radim Krčmář <rkrcmar@redhat.com>
>
> 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>
[...]
> diff --git a/include/qemu-common.h b/include/qemu-common.h
> index 644b46d..1b5cffb 100644
> --- a/include/qemu-common.h
> +++ b/include/qemu-common.h
> @@ -418,6 +418,9 @@ static inline bool is_power_of_2(uint64_t value)
> /* round down to the nearest power of 2*/
> int64_t pow2floor(int64_t value);
>
> +/* round up to the nearest power of 2 (0 if overflow) */
> +uint64_t pow2ceil(uint64_t value);
> +
> #include "qemu/module.h"
>
> /*
> diff --git a/util/cutils.c b/util/cutils.c
> index dbe7412..c2250d1 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) */
Callers need to check for overflow, but that's the callers' problem.
> +uint64_t pow2ceil(uint64_t value)
> +{
> + uint8_t nlz = clz64(value);
You convert the value of clz64() from int to uint8_t only to promote it
right back to int in every single use. Please don't muddy the waters
that way.
> +
> + 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
Doesn't really mirror pow2floor() in master, because that one uses
int64_t. Fine with me, because my "[PATCH 0/2] Proactive pow2floor()
fix, and dead code removal" changes pow2floor() to uint64_t.
Unfortunately, the two patches conflict.
This patch's implementation of pow2ceil() is needlessly complicated,
just like pow2floor() in master. Simpler:
uint64_t pow2ceil2(uint64_t value)
{
int n = clz64(value - 1);
return n ? 1ull << (64 - n) : 0;
}
I can rebase my patch on top of this one, and clean things up to my
taste.
next prev parent reply other threads:[~2015-03-05 9:52 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-04 14:30 [Qemu-devel] [PULL 0/7] spice patch queue Gerd Hoffmann
2015-03-04 14:30 ` [Qemu-devel] [PULL 1/7] qxl: document minimal video memory for new modes Gerd Hoffmann
2015-03-04 14:30 ` [Qemu-devel] [PULL 2/7] spice: fix invalid memory access to vga.vram Gerd Hoffmann
2015-03-04 14:30 ` [Qemu-devel] [PULL 3/7] qxl: refactor rounding up to a nearest power of 2 Gerd Hoffmann
2015-03-05 4:57 ` Dongsheng Song
2015-03-05 15:35 ` Radim Krčmář
2015-03-05 9:52 ` Markus Armbruster [this message]
2015-03-05 10:11 ` Gerd Hoffmann
2015-03-05 15:12 ` Radim Krčmář
2015-03-04 14:30 ` [Qemu-devel] [PULL 4/7] vga: refactor vram_size clamping and rounding Gerd Hoffmann
2015-03-04 14:30 ` [Qemu-devel] [PULL 5/7] qxl: drop update_displaychangelistener call for secondary qxl devices Gerd Hoffmann
2015-03-04 14:30 ` [Qemu-devel] [PULL 6/7] hmp: info spice: Show string channel name Gerd Hoffmann
2015-03-04 14:30 ` [Qemu-devel] [PULL 7/7] hmp: info spice: take out webdav Gerd Hoffmann
2015-03-08 12:27 ` [Qemu-devel] [PULL 0/7] spice patch queue Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87twxzai0i.fsf@blackfin.pond.sub.org \
--to=armbru@redhat.com \
--cc=kraxel@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rkrcmar@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.