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
