skip MMX code in rgb24tobgr24 if the size of the input is smaller than the

size of the units the MMX code processes

Originally committed as revision 23015 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale
This commit is contained in:
Ivo van Poorten 2007-04-18 09:27:59 +00:00
parent 3983057065
commit 35a9994977
1 changed files with 3 additions and 0 deletions

View File

@ -1435,6 +1435,8 @@ static inline void RENAME(rgb24tobgr24)(const uint8_t *src, uint8_t *dst, long s
#ifdef HAVE_MMX
long mmx_size= 23 - src_size;
asm volatile (
"test %%"REG_a", %%"REG_a" \n\t"
"jns 2f \n\t"
"movq "MANGLE(mask24r)", %%mm5 \n\t"
"movq "MANGLE(mask24g)", %%mm6 \n\t"
"movq "MANGLE(mask24b)", %%mm7 \n\t"
@ -1471,6 +1473,7 @@ static inline void RENAME(rgb24tobgr24)(const uint8_t *src, uint8_t *dst, long s
MOVNTQ" %%mm1, 16(%2, %%"REG_a")\n\t"
"add $24, %%"REG_a" \n\t"
" js 1b \n\t"
"2: \n\t"
: "+a" (mmx_size)
: "r" (src-mmx_size), "r"(dst-mmx_size)
);