[Ffmpeg-devel] PATCH Blackfin optimized byte swapping mechanism
Marc Hoffman
mmh
Tue Apr 17 14:49:40 CEST 2007
Michael Niedermayer writes:
> Hi
>
> On Tue, Apr 17, 2007 at 07:40:47AM -0400, Marc Hoffman wrote:
> Content-Description: message body text
> >
> > > Low level bswap primitive for the Blackfin Architecture.
> >
> > sorry mangled patch wrong encoding last time.
>
> what advantage do these functions have over the default?
> are they faster? if so you should provide some benchmarks
Sorry about the top post please forgive me
The current 32bit byte swap routine produces this code sequence
R1 = 255 (X);
R1 <<= 16;
R1 = R0 & R1;
R2 = R0 >> 24;
R1 >>= 8;
R2 = R2 | R1;
R1 = 65280 (Z);
R1 = R0 & R1;
R1 <<= 8;
R0 <<= 24;
R1 = R1 | R0;
R2 = R2 | R1;
R0 = R2; <<--- result
The suggested replacement is
asm("%1 = %0 >> 8 (V);\n\t"
"%0 = %0 << 8 (V);\n\t"
"%0 = %0 | %1;\n\t"
"%0 = PACK(%0.L, %0.H);\n\t"
So I guess this is about 300% improvement in performance for this function.
Marc
More information about the ffmpeg-devel
mailing list