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