Faster 32 bit byteswaping code for Blackfin.
200% faster on BF537 compiled with gcc 4.1. patch by Marc Hoffman, mmh pleasantst com Originally committed as revision 8802 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
6baa294326
commit
20d45dc2a8
@ -125,6 +125,18 @@ static av_always_inline uint32_t bswap_32(uint32_t x){
|
|||||||
: "+r"(x), "+r"(t));
|
: "+r"(x), "+r"(t));
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#elif defined(ARCH_BFIN)
|
||||||
|
static av_always_inline uint32_t bswap_32(uint32_t x){
|
||||||
|
unsigned tmp;
|
||||||
|
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"
|
||||||
|
: "+d"(x), "=&d"(tmp));
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
static av_always_inline uint32_t bswap_32(uint32_t x){
|
static av_always_inline uint32_t bswap_32(uint32_t x){
|
||||||
x= ((x<<8)&0xFF00FF00) | ((x>>8)&0x00FF00FF);
|
x= ((x<<8)&0xFF00FF00) | ((x>>8)&0x00FF00FF);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user