static void h263_h_loop_filter_mmx(uint8_t *src, int stride, int qscale)

{

    if (CONFIG_H263_DECODER || CONFIG_H263_ENCODER) {

        const int strength = ff_h263_loop_filter_strength[qscale];

        DECLARE_ALIGNED(8, uint64_t, temp)[4];

        uint8_t *btemp = (uint8_t*)temp;



        src -= 2;



        transpose4x4(btemp,     src,              8, stride);

        transpose4x4(btemp + 4, src + 4 * stride, 8, stride);

        __asm__ volatile (

            H263_LOOP_FILTER // 5 3 4 6



            : "+m"(temp[0]),

              "+m"(temp[1]),

              "+m"(temp[2]),

              "+m"(temp[3])

            : "g"(2 * strength), "m"(ff_pb_FC)

            );



        __asm__ volatile (

            "movq      %%mm5, %%mm1         \n\t"

            "movq      %%mm4, %%mm0         \n\t"

            "punpcklbw %%mm3, %%mm5         \n\t"

            "punpcklbw %%mm6, %%mm4         \n\t"

            "punpckhbw %%mm3, %%mm1         \n\t"

            "punpckhbw %%mm6, %%mm0         \n\t"

            "movq      %%mm5, %%mm3         \n\t"

            "movq      %%mm1, %%mm6         \n\t"

            "punpcklwd %%mm4, %%mm5         \n\t"

            "punpcklwd %%mm0, %%mm1         \n\t"

            "punpckhwd %%mm4, %%mm3         \n\t"

            "punpckhwd %%mm0, %%mm6         \n\t"

            "movd      %%mm5, (%0)          \n\t"

            "punpckhdq %%mm5, %%mm5         \n\t"

            "movd      %%mm5, (%0, %2)      \n\t"

            "movd      %%mm3, (%0, %2, 2)   \n\t"

            "punpckhdq %%mm3, %%mm3         \n\t"

            "movd      %%mm3, (%0, %3)      \n\t"

            "movd      %%mm1, (%1)          \n\t"

            "punpckhdq %%mm1, %%mm1         \n\t"

            "movd      %%mm1, (%1, %2)      \n\t"

            "movd      %%mm6, (%1, %2, 2)   \n\t"

            "punpckhdq %%mm6, %%mm6         \n\t"

            "movd      %%mm6, (%1, %3)      \n\t"

            :: "r"(src),

               "r"(src + 4 * stride),

               "r"((x86_reg)stride),

               "r"((x86_reg)(3 * stride))

            );

    }

}

static void h263_h_loop_filter_mmx(uint8_t *src, int stride, int qscale)

{

    if (CONFIG_H263_DECODER || CONFIG_H263_ENCODER) {

        const int strength = ff_h263_loop_filter_strength[qscale];

        DECLARE_ALIGNED(8, uint64_t, temp)[4];

        uint8_t *btemp = (uint8_t*)temp;



        src -= 2;



        transpose4x4(btemp,     src,              8, stride);

        transpose4x4(btemp + 4, src + 4 * stride, 8, stride);

        __asm__ volatile (

            H263_LOOP_FILTER 



            : "+m"(temp[0]),

              "+m"(temp[1]),

              "+m"(temp[2]),

              "+m"(temp[3])

            : "g"(2 * strength), "m"(ff_pb_FC)

            );



        __asm__ volatile (

            "movq      %%mm5, %%mm1         \n\t"

            "movq      %%mm4, %%mm0         \n\t"

            "punpcklbw %%mm3, %%mm5         \n\t"

            "punpcklbw %%mm6, %%mm4         \n\t"

            "punpckhbw %%mm3, %%mm1         \n\t"

            "punpckhbw %%mm6, %%mm0         \n\t"

            "movq      %%mm5, %%mm3         \n\t"

            "movq      %%mm1, %%mm6         \n\t"

            "punpcklwd %%mm4, %%mm5         \n\t"

            "punpcklwd %%mm0, %%mm1         \n\t"

            "punpckhwd %%mm4, %%mm3         \n\t"

            "punpckhwd %%mm0, %%mm6         \n\t"

            "movd      %%mm5, (%0)          \n\t"

            "punpckhdq %%mm5, %%mm5         \n\t"

            "movd      %%mm5, (%0, %2)      \n\t"

            "movd      %%mm3, (%0, %2, 2)   \n\t"

            "punpckhdq %%mm3, %%mm3         \n\t"

            "movd      %%mm3, (%0, %3)      \n\t"

            "movd      %%mm1, (%1)          \n\t"

            "punpckhdq %%mm1, %%mm1         \n\t"

            "movd      %%mm1, (%1, %2)      \n\t"

            "movd      %%mm6, (%1, %2, 2)   \n\t"

            "punpckhdq %%mm6, %%mm6         \n\t"

            "movd      %%mm6, (%1, %3)      \n\t"

            :: "r"(src),

               "r"(src + 4 * stride),

               "r"((x86_reg)stride),

               "r"((x86_reg)(3 * stride))

            );

    }

}

static void FUNC_0(uint8_t *VAR_0, int VAR_1, int VAR_2)

{

    if (CONFIG_H263_DECODER || CONFIG_H263_ENCODER) {

        const int VAR_3 = ff_h263_loop_filter_strength[VAR_2];

        DECLARE_ALIGNED(8, uint64_t, temp)[4];

        uint8_t *btemp = (uint8_t*)temp;



        VAR_0 -= 2;



        transpose4x4(btemp,     VAR_0,              8, VAR_1);

        transpose4x4(btemp + 4, VAR_0 + 4 * VAR_1, 8, VAR_1);

        __asm__ volatile (

            H263_LOOP_FILTER 



            : "+m"(temp[0]),

              "+m"(temp[1]),

              "+m"(temp[2]),

              "+m"(temp[3])

            : "g"(2 * VAR_3), "m"(ff_pb_FC)

            );



        __asm__ volatile (

            "movq      %%mm5, %%mm1         \n\t"

            "movq      %%mm4, %%mm0         \n\t"

            "punpcklbw %%mm3, %%mm5         \n\t"

            "punpcklbw %%mm6, %%mm4         \n\t"

            "punpckhbw %%mm3, %%mm1         \n\t"

            "punpckhbw %%mm6, %%mm0         \n\t"

            "movq      %%mm5, %%mm3         \n\t"

            "movq      %%mm1, %%mm6         \n\t"

            "punpcklwd %%mm4, %%mm5         \n\t"

            "punpcklwd %%mm0, %%mm1         \n\t"

            "punpckhwd %%mm4, %%mm3         \n\t"

            "punpckhwd %%mm0, %%mm6         \n\t"

            "movd      %%mm5, (%0)          \n\t"

            "punpckhdq %%mm5, %%mm5         \n\t"

            "movd      %%mm5, (%0, %2)      \n\t"

            "movd      %%mm3, (%0, %2, 2)   \n\t"

            "punpckhdq %%mm3, %%mm3         \n\t"

            "movd      %%mm3, (%0, %3)      \n\t"

            "movd      %%mm1, (%1)          \n\t"

            "punpckhdq %%mm1, %%mm1         \n\t"

            "movd      %%mm1, (%1, %2)      \n\t"

            "movd      %%mm6, (%1, %2, 2)   \n\t"

            "punpckhdq %%mm6, %%mm6         \n\t"

            "movd      %%mm6, (%1, %3)      \n\t"

            :: "r"(VAR_0),

               "r"(VAR_0 + 4 * VAR_1),

               "r"((x86_reg)VAR_1),

               "r"((x86_reg)(3 * VAR_1))

            );

    }

}

static void FUNC_0(uint8_t *VAR_0, int VAR_1, int VAR_2)
{ if (CONFIG_H263_DECODER || CONFIG_H263_ENCODER) { const int VAR_3 = ff_h263_loop_filter_strength[VAR_2]; DECLARE_ALIGNED(8, uint64_t, temp)[4]; uint8_t *btemp = (uint8_t*)temp; VAR_0 -= 2; transpose4x4(btemp,     VAR_0,              8, VAR_1); transpose4x4(btemp + 4, VAR_0 + 4 * VAR_1, 8, VAR_1); __asm__ volatile (
H263_LOOP_FILTER
: "+m"(temp[0]),
"+m"(temp[1]),
"+m"(temp[2]),
"+m"(temp[3])
: "g"(2 * VAR_3), "m"(ff_pb_FC)
); __asm__ volatile (
"movq      %%mm5, %%mm1         \n\t"
"movq      %%mm4, %%mm0         \n\t"
"punpcklbw %%mm3, %%mm5         \n\t"
"punpcklbw %%mm6, %%mm4         \n\t"
"punpckhbw %%mm3, %%mm1         \n\t"
"punpckhbw %%mm6, %%mm0         \n\t"
"movq      %%mm5, %%mm3         \n\t"
"movq      %%mm1, %%mm6         \n\t"
"punpcklwd %%mm4, %%mm5         \n\t"
"punpcklwd %%mm0, %%mm1         \n\t"
"punpckhwd %%mm4, %%mm3         \n\t"
"punpckhwd %%mm0, %%mm6         \n\t"
"movd      %%mm5, (%0)          \n\t"
"punpckhdq %%mm5, %%mm5         \n\t"
"movd      %%mm5, (%0, %2)      \n\t"
"movd      %%mm3, (%0, %2, 2)   \n\t"
"punpckhdq %%mm3, %%mm3         \n\t"
"movd      %%mm3, (%0, %3)      \n\t"
"movd      %%mm1, (%1)          \n\t"
"punpckhdq %%mm1, %%mm1         \n\t"
"movd      %%mm1, (%1, %2)      \n\t"
"movd      %%mm6, (%1, %2, 2)   \n\t"
"punpckhdq %%mm6, %%mm6         \n\t"
"movd      %%mm6, (%1, %3)      \n\t"
:: "r"(VAR_0),
"r"(VAR_0 + 4 * VAR_1),
"r"((x86_reg)VAR_1),
"r"((x86_reg)(3 * VAR_1))
); } }