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

Reply via email to