On Sun, 2011-04-24 at 07:05 -0400, Ronald S. Bultje wrote:
> On Sun, Apr 24, 2011 at 2:06 AM, Uoti Urpala <[email protected]> wrote:
> > The current generic C implementation, which is always used when the
> > public header is included from other programs (either directly or
> > through intreadwrite.h) compiles to a mess like this (gcc-4.6 on AMD64):
> >        movq    %rdi, %rdx
> >        shrq    $32, %rdx
> >        movl    %edx, %eax
> >        sall    $8, %edx
> >        shrl    $8, %eax
> >        andl    $-16711936, %edx
> >        andl    $16711935, %eax
> >        orl     %edx, %eax
> >        movl    %edi, %edx
> >        sall    $8, %edi
> >        shrl    $8, %edx
> >        andl    $-16711936, %edi
> >        roll    $16, %eax
> >        andl    $16711935, %edx
> >        orl     %edi, %edx
> >        roll    $16, %edx
> >        salq    $32, %rdx
> >        orq     %rdx, %rax
> >        ret
> > The builtin function produces just a bswap.
> >
> > If the built-in functions behave particularly badly on some less common
> > architecture then additional checks to exclude those could be
> > beneficial; but in any case this should be enabled at least for
> > amd64/x86.
> 
> Why not simply start distributing avconfig.h and also distribute
> arch-specific installed headers?

Some of the arch-specific headers use config.h definitions that are only
valid for the Libav build environment and may not apply to the
environment where the public header is included. Perhaps some of the
architecture-specific optimizations could be picked to be exported, but
that would get more complex than this patch.

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to