On 23/07/2015 13:08, Peter Maydell wrote: > We have a qemu_fls() function which is just a silly wrapper > around clz32() and which is used in only a handful of places > in the codebase. It turns out that all of those are really > trying to round up or down to a power of 2, which is something > we have utility functions for. This series replaces all > the qemu_fls() calls with pow2ceil() or pow2floor(), and then > removes the now-unused function.
The series looks good, but I'd prefer (especially for patch 4 which is in a fast path) if pow2ceil and pow2floor were made inline. BTW, return 1ULL << (64 - nlz); can be implemented as "rotate_right(1ULL, nlz)" (the latter is (1ULL << (64 - nlz)) | (1ULL >> nlz), which only differs in the undefined case nlz == 0). However, this is probably something for the compiler to implement, not really something to do in our sources. Paolo > For the case where you really want to do bit counting rather > than just power-of-2 rounding, you should use the clz/clo > functions directly. > > (I've set myself a little goal of "try to do one cleanup a > day"; that may be a bit ambitious, so we'll see...) > > Peter Maydell (5): > hw/pci: Use pow2ceil() rather than hand-calculation > hw/virtio/virtio-pci: Use pow2ceil() rather than hand-calculation > hw/block/nvme.c: Use pow2ceil() rather than hand-calculation > exec.c: Use pow2floor() rather than hand-calculation > Remove unused qemu_fls function > > exec.c | 4 +--- > hw/block/nvme.c | 2 +- > hw/pci/msix.c | 4 +--- > hw/pci/pci.c | 4 +--- > hw/virtio/virtio-pci.c | 4 +--- > include/qemu-common.h | 1 - > util/cutils.c | 5 ----- > 7 files changed, 5 insertions(+), 19 deletions(-) >