summaryrefslogtreecommitdiff
path: root/libswscale/rgb2rgb_template.c
diff options
context:
space:
mode:
authorIvo van Poorten <ivop@euronet.nl>2007-04-18 09:27:59 +0000
committerIvo van Poorten <ivop@euronet.nl>2007-04-18 09:27:59 +0000
commit35a99949778ee8155cd64e774a11be7e7b457ac2 (patch)
treecf61578213a4c25074b50b628961a22b4ad4bd83 /libswscale/rgb2rgb_template.c
parent39830570652697740618ebfccefea57b800ea516 (diff)
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
Diffstat (limited to 'libswscale/rgb2rgb_template.c')
-rw-r--r--libswscale/rgb2rgb_template.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libswscale/rgb2rgb_template.c b/libswscale/rgb2rgb_template.c
index 2e2066b2cb..f06e4ed72d 100644
--- a/libswscale/rgb2rgb_template.c
+++ b/libswscale/rgb2rgb_template.c
@@ -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)
);