On 2012-01-02 19:23:48 -0700, Daniel Verkamp wrote: > 2012/1/2 Måns Rullgård <[email protected]>: > > Daniel Verkamp <[email protected]> writes: > > > >> --- > >> libavutil/common.h | 18 ++++++++++++++++++ > >> 1 files changed, 18 insertions(+), 0 deletions(-) > >> > >> diff --git a/libavutil/common.h b/libavutil/common.h > >> index 7e93a1a..847b8d6 100644 > >> --- a/libavutil/common.h > >> +++ b/libavutil/common.h > >> @@ -218,6 +218,21 @@ static av_always_inline av_const int > >> av_popcount_c(uint32_t x) > >> return (x + (x >> 16)) & 0x3F; > >> } > >> > >> +/** > >> + * Count number of bits set to one in x > >> + * @param x value to count bits of > >> + * @return the number of bits set to one in x > >> + */ > >> +static av_always_inline av_const int av_popcount64_c(uint64_t x) > >> +{ > >> + x -= ((x >> 1) & 0x5555555555555555); > >> + x = (x & 0x3333333333333333) + ((x >> 2) & 0x3333333333333333); > >> + x = (x + (x >> 4)) & 0x0F0F0F0F0F0F0F0F; > >> + x = (x + (x >> 8)) & 0x00FF00FF00FF00FF; > >> + x = (x + (x >> 16)) & 0x0000FFFF0000FFFF; > >> + return (x + (x >> 32)) & 0x7F; > >> +} > > > > Why not av_popcount32(x) + av_popcount32(x >> 32)? That way it will > > make use of any special 32-bit popcount implementation that might be > > available. If there is none, it should compile to the same code as your > > version. > > > > That's probably saner (although it generates more code for x86-64). > Patch attached.
not if there's a asm av_popcount not that we have any atm. patch ok and both queued. Janne _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
