Mercurial > libavcodec.hg
changeset 7087:9c0f579ebb6b libavcodec
Fix add_bytes_mmx and add_bytes_l2_mmx for w < 16
author | reimar |
---|---|
date | Sun, 22 Jun 2008 07:05:40 +0000 |
parents | 18279e49cd4a |
children | 22db515cc789 |
files | i386/dsputil_mmx.c |
diffstat | 1 files changed, 6 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/i386/dsputil_mmx.c Sat Jun 21 09:15:49 2008 +0000 +++ b/i386/dsputil_mmx.c Sun Jun 22 07:05:40 2008 +0000 @@ -482,6 +482,7 @@ static void add_bytes_mmx(uint8_t *dst, uint8_t *src, int w){ x86_reg i=0; asm volatile( + "jmp 2f \n\t" "1: \n\t" "movq (%1, %0), %%mm0 \n\t" "movq (%2, %0), %%mm1 \n\t" @@ -492,8 +493,9 @@ "paddb %%mm0, %%mm1 \n\t" "movq %%mm1, 8(%2, %0) \n\t" "add $16, %0 \n\t" + "2: \n\t" "cmp %3, %0 \n\t" - " jb 1b \n\t" + " js 1b \n\t" : "+r" (i) : "r"(src), "r"(dst), "r"((x86_reg)w-15) ); @@ -504,6 +506,7 @@ static void add_bytes_l2_mmx(uint8_t *dst, uint8_t *src1, uint8_t *src2, int w){ x86_reg i=0; asm volatile( + "jmp 2f \n\t" "1: \n\t" "movq (%2, %0), %%mm0 \n\t" "movq 8(%2, %0), %%mm1 \n\t" @@ -512,8 +515,9 @@ "movq %%mm0, (%1, %0) \n\t" "movq %%mm1, 8(%1, %0) \n\t" "add $16, %0 \n\t" + "2: \n\t" "cmp %4, %0 \n\t" - " jb 1b \n\t" + " js 1b \n\t" : "+r" (i) : "r"(dst), "r"(src1), "r"(src2), "r"((x86_reg)w-15) );