OSDN Git Service

Merge commit 'c16bfb147df8a9d350e8a0dbc01937b78faf5949'
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 23 Nov 2013 11:01:42 +0000 (12:01 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 23 Nov 2013 11:10:40 +0000 (12:10 +0100)
* commit 'c16bfb147df8a9d350e8a0dbc01937b78faf5949':
  swscale: x86: Consistently use lowercase function name suffixes

Conflicts:
libswscale/x86/rgb2rgb.c
libswscale/x86/swscale.c

See: 1de064e21e7f1bbdd2347ba8967089a18669fcf8
Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libswscale/x86/swscale.c
libswscale/x86/yuv2rgb.c

@@@ -200,77 -203,6 +200,77 @@@ void updateMMXDitherTables(SwsContext *
      }
  }
  
-         return yuv2yuvX_MMXEXT(filter, filterSize, src, dest, dstW, dither, offset);
 +#if HAVE_MMXEXT
 +static void yuv2yuvX_sse3(const int16_t *filter, int filterSize,
 +                           const int16_t **src, uint8_t *dest, int dstW,
 +                           const uint8_t *dither, int offset)
 +{
 +    if(((int)dest) & 15){
++        return yuv2yuvX_mmxext(filter, filterSize, src, dest, dstW, dither, offset);
 +    }
 +    if (offset) {
 +        __asm__ volatile("movq       (%0), %%xmm3\n\t"
 +                         "movdqa    %%xmm3, %%xmm4\n\t"
 +                         "psrlq       $24, %%xmm3\n\t"
 +                         "psllq       $40, %%xmm4\n\t"
 +                         "por       %%xmm4, %%xmm3\n\t"
 +                         :: "r"(dither)
 +                         );
 +    } else {
 +        __asm__ volatile("movq       (%0), %%xmm3\n\t"
 +                         :: "r"(dither)
 +                         );
 +    }
 +    filterSize--;
 +    __asm__ volatile(
 +        "pxor      %%xmm0, %%xmm0\n\t"
 +        "punpcklbw %%xmm0, %%xmm3\n\t"
 +        "movd          %0, %%xmm1\n\t"
 +        "punpcklwd %%xmm1, %%xmm1\n\t"
 +        "punpckldq %%xmm1, %%xmm1\n\t"
 +        "punpcklqdq %%xmm1, %%xmm1\n\t"
 +        "psllw         $3, %%xmm1\n\t"
 +        "paddw     %%xmm1, %%xmm3\n\t"
 +        "psraw         $4, %%xmm3\n\t"
 +        ::"m"(filterSize)
 +     );
 +    __asm__ volatile(
 +        "movdqa    %%xmm3, %%xmm4\n\t"
 +        "movdqa    %%xmm3, %%xmm7\n\t"
 +        "movl %3, %%ecx\n\t"
 +        "mov                                 %0, %%"REG_d"  \n\t"\
 +        "mov                        (%%"REG_d"), %%"REG_S"  \n\t"\
 +        ".p2align                             4             \n\t" /* FIXME Unroll? */\
 +        "1:                                                 \n\t"\
 +        "movddup                  8(%%"REG_d"), %%xmm0      \n\t" /* filterCoeff */\
 +        "movdqa              (%%"REG_S", %%"REG_c", 2), %%xmm2      \n\t" /* srcData */\
 +        "movdqa            16(%%"REG_S", %%"REG_c", 2), %%xmm5      \n\t" /* srcData */\
 +        "add                                $16, %%"REG_d"  \n\t"\
 +        "mov                        (%%"REG_d"), %%"REG_S"  \n\t"\
 +        "test                         %%"REG_S", %%"REG_S"  \n\t"\
 +        "pmulhw                           %%xmm0, %%xmm2      \n\t"\
 +        "pmulhw                           %%xmm0, %%xmm5      \n\t"\
 +        "paddw                            %%xmm2, %%xmm3      \n\t"\
 +        "paddw                            %%xmm5, %%xmm4      \n\t"\
 +        " jnz                                1b             \n\t"\
 +        "psraw                               $3, %%xmm3      \n\t"\
 +        "psraw                               $3, %%xmm4      \n\t"\
 +        "packuswb                         %%xmm4, %%xmm3      \n\t"
 +        "movntdq                          %%xmm3, (%1, %%"REG_c")\n\t"
 +        "add                         $16, %%"REG_c"         \n\t"\
 +        "cmp                          %2, %%"REG_c"         \n\t"\
 +        "movdqa    %%xmm7, %%xmm3\n\t"
 +        "movdqa    %%xmm7, %%xmm4\n\t"
 +        "mov                                 %0, %%"REG_d"  \n\t"\
 +        "mov                        (%%"REG_d"), %%"REG_S"  \n\t"\
 +        "jb                                  1b             \n\t"\
 +        :: "g" (filter),
 +           "r" (dest-offset), "g" ((x86_reg)(dstW+offset)), "m" (offset)
 +        : "%"REG_d, "%"REG_S, "%"REG_c
 +    );
 +}
 +#endif
 +
  #endif /* HAVE_INLINE_ASM */
  
  #define SCALE_FUNC(filter_n, from_bpc, to_bpc, opt) \
@@@ -387,11 -312,7 +387,11 @@@ av_cold void ff_sws_init_swscale_x86(Sw
  #endif
  #if HAVE_MMXEXT_INLINE
      if (cpu_flags & AV_CPU_FLAG_MMXEXT)
-         sws_init_swscale_MMXEXT(c);
+         sws_init_swscale_mmxext(c);
 +    if (cpu_flags & AV_CPU_FLAG_SSE3){
 +        if(c->use_mmx_vfilter && !(c->flags & SWS_ACCURATE_RND))
 +            c->yuv2planeX = yuv2yuvX_sse3;
 +    }
  #endif
  
  #define ASSIGN_SCALE_FUNC2(hscalefn, filtersize, opt1, opt2) do { \
Simple merge