static void DEF(put, pixels16_x2)(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)

{

    MOVQ_BFE(mm6);

    __asm__ volatile(

        "lea        (%3, %3), %%"REG_a" \n\t"

        ".p2align 3                     \n\t"

        "1:                             \n\t"

        "movq   (%1), %%mm0             \n\t"

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

        "movq   (%1, %3), %%mm2         \n\t"

        "movq   1(%1, %3), %%mm3        \n\t"

        PAVGBP(%%mm0, %%mm1, %%mm4,   %%mm2, %%mm3, %%mm5)

        "movq   %%mm4, (%2)             \n\t"

        "movq   %%mm5, (%2, %3)         \n\t"

        "movq   8(%1), %%mm0            \n\t"

        "movq   9(%1), %%mm1            \n\t"

        "movq   8(%1, %3), %%mm2        \n\t"

        "movq   9(%1, %3), %%mm3        \n\t"

        PAVGBP(%%mm0, %%mm1, %%mm4,   %%mm2, %%mm3, %%mm5)

        "movq   %%mm4, 8(%2)            \n\t"

        "movq   %%mm5, 8(%2, %3)        \n\t"

        "add    %%"REG_a", %1           \n\t"

        "add    %%"REG_a", %2           \n\t"

        "movq   (%1), %%mm0             \n\t"

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

        "movq   (%1, %3), %%mm2         \n\t"

        "movq   1(%1, %3), %%mm3        \n\t"

        PAVGBP(%%mm0, %%mm1, %%mm4,   %%mm2, %%mm3, %%mm5)

        "movq   %%mm4, (%2)             \n\t"

        "movq   %%mm5, (%2, %3)         \n\t"

        "movq   8(%1), %%mm0            \n\t"

        "movq   9(%1), %%mm1            \n\t"

        "movq   8(%1, %3), %%mm2        \n\t"

        "movq   9(%1, %3), %%mm3        \n\t"

        PAVGBP(%%mm0, %%mm1, %%mm4,   %%mm2, %%mm3, %%mm5)

        "movq   %%mm4, 8(%2)            \n\t"

        "movq   %%mm5, 8(%2, %3)        \n\t"

        "add    %%"REG_a", %1           \n\t"

        "add    %%"REG_a", %2           \n\t"

        "subl   $4, %0                  \n\t"

        "jnz    1b                      \n\t"

        :"+g"(h), "+S"(pixels), "+D"(block)

        :"r"((x86_reg)line_size)

        :REG_a, "memory");

}

static void DEF(put, pixels16_x2)(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)

{

    MOVQ_BFE(mm6);

    __asm__ volatile(

        "lea        (%3, %3), %%"REG_a" \n\t"

        ".p2align 3                     \n\t"

        "1:                             \n\t"

        "movq   (%1), %%mm0             \n\t"

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

        "movq   (%1, %3), %%mm2         \n\t"

        "movq   1(%1, %3), %%mm3        \n\t"

        PAVGBP(%%mm0, %%mm1, %%mm4,   %%mm2, %%mm3, %%mm5)

        "movq   %%mm4, (%2)             \n\t"

        "movq   %%mm5, (%2, %3)         \n\t"

        "movq   8(%1), %%mm0            \n\t"

        "movq   9(%1), %%mm1            \n\t"

        "movq   8(%1, %3), %%mm2        \n\t"

        "movq   9(%1, %3), %%mm3        \n\t"

        PAVGBP(%%mm0, %%mm1, %%mm4,   %%mm2, %%mm3, %%mm5)

        "movq   %%mm4, 8(%2)            \n\t"

        "movq   %%mm5, 8(%2, %3)        \n\t"

        "add    %%"REG_a", %1           \n\t"

        "add    %%"REG_a", %2           \n\t"

        "movq   (%1), %%mm0             \n\t"

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

        "movq   (%1, %3), %%mm2         \n\t"

        "movq   1(%1, %3), %%mm3        \n\t"

        PAVGBP(%%mm0, %%mm1, %%mm4,   %%mm2, %%mm3, %%mm5)

        "movq   %%mm4, (%2)             \n\t"

        "movq   %%mm5, (%2, %3)         \n\t"

        "movq   8(%1), %%mm0            \n\t"

        "movq   9(%1), %%mm1            \n\t"

        "movq   8(%1, %3), %%mm2        \n\t"

        "movq   9(%1, %3), %%mm3        \n\t"

        PAVGBP(%%mm0, %%mm1, %%mm4,   %%mm2, %%mm3, %%mm5)

        "movq   %%mm4, 8(%2)            \n\t"

        "movq   %%mm5, 8(%2, %3)        \n\t"

        "add    %%"REG_a", %1           \n\t"

        "add    %%"REG_a", %2           \n\t"

        "subl   $4, %0                  \n\t"

        "jnz    1b                      \n\t"

        :"+g"(h), "+S"(pixels), "+D"(block)

        :"r"((x86_reg)line_size)

        :REG_a, "memory");

}

static void FUNC_0(put, pixels16_x2)(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)

{

    MOVQ_BFE(mm6);

    __asm__ volatile(

        "lea        (%3, %3), %%"REG_a" \n\t"

        ".p2align 3                     \n\t"

        "1:                             \n\t"

        "movq   (%1), %%mm0             \n\t"

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

        "movq   (%1, %3), %%mm2         \n\t"

        "movq   1(%1, %3), %%mm3        \n\t"

        PAVGBP(%%mm0, %%mm1, %%mm4,   %%mm2, %%mm3, %%mm5)

        "movq   %%mm4, (%2)             \n\t"

        "movq   %%mm5, (%2, %3)         \n\t"

        "movq   8(%1), %%mm0            \n\t"

        "movq   9(%1), %%mm1            \n\t"

        "movq   8(%1, %3), %%mm2        \n\t"

        "movq   9(%1, %3), %%mm3        \n\t"

        PAVGBP(%%mm0, %%mm1, %%mm4,   %%mm2, %%mm3, %%mm5)

        "movq   %%mm4, 8(%2)            \n\t"

        "movq   %%mm5, 8(%2, %3)        \n\t"

        "add    %%"REG_a", %1           \n\t"

        "add    %%"REG_a", %2           \n\t"

        "movq   (%1), %%mm0             \n\t"

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

        "movq   (%1, %3), %%mm2         \n\t"

        "movq   1(%1, %3), %%mm3        \n\t"

        PAVGBP(%%mm0, %%mm1, %%mm4,   %%mm2, %%mm3, %%mm5)

        "movq   %%mm4, (%2)             \n\t"

        "movq   %%mm5, (%2, %3)         \n\t"

        "movq   8(%1), %%mm0            \n\t"

        "movq   9(%1), %%mm1            \n\t"

        "movq   8(%1, %3), %%mm2        \n\t"

        "movq   9(%1, %3), %%mm3        \n\t"

        PAVGBP(%%mm0, %%mm1, %%mm4,   %%mm2, %%mm3, %%mm5)

        "movq   %%mm4, 8(%2)            \n\t"

        "movq   %%mm5, 8(%2, %3)        \n\t"

        "add    %%"REG_a", %1           \n\t"

        "add    %%"REG_a", %2           \n\t"

        "subl   $4, %0                  \n\t"

        "jnz    1b                      \n\t"

        :"+g"(h), "+S"(pixels), "+D"(block)

        :"r"((x86_reg)line_size)

        :REG_a, "memory");

}

static void FUNC_0(put, pixels16_x2)(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
{ MOVQ_BFE(mm6); __asm__ volatile(
"lea        (%3, %3), %%"REG_a" \n\t"
".p2align 3                     \n\t"
"1:                             \n\t"
"movq   (%1), %%mm0             \n\t"
"movq   1(%1), %%mm1            \n\t"
"movq   (%1, %3), %%mm2         \n\t"
"movq   1(%1, %3), %%mm3        \n\t"
PAVGBP(%%mm0, %%mm1, %%mm4,   %%mm2, %%mm3, %%mm5)
"movq   %%mm4, (%2)             \n\t"
"movq   %%mm5, (%2, %3)         \n\t"
"movq   8(%1), %%mm0            \n\t"
"movq   9(%1), %%mm1            \n\t"
"movq   8(%1, %3), %%mm2        \n\t"
"movq   9(%1, %3), %%mm3        \n\t"
PAVGBP(%%mm0, %%mm1, %%mm4,   %%mm2, %%mm3, %%mm5)
"movq   %%mm4, 8(%2)            \n\t"
"movq   %%mm5, 8(%2, %3)        \n\t"
"add    %%"REG_a", %1           \n\t"
"add    %%"REG_a", %2           \n\t"
"movq   (%1), %%mm0             \n\t"
"movq   1(%1), %%mm1            \n\t"
"movq   (%1, %3), %%mm2         \n\t"
"movq   1(%1, %3), %%mm3        \n\t"
PAVGBP(%%mm0, %%mm1, %%mm4,   %%mm2, %%mm3, %%mm5)
"movq   %%mm4, (%2)             \n\t"
"movq   %%mm5, (%2, %3)         \n\t"
"movq   8(%1), %%mm0            \n\t"
"movq   9(%1), %%mm1            \n\t"
"movq   8(%1, %3), %%mm2        \n\t"
"movq   9(%1, %3), %%mm3        \n\t"
PAVGBP(%%mm0, %%mm1, %%mm4,   %%mm2, %%mm3, %%mm5)
"movq   %%mm4, 8(%2)            \n\t"
"movq   %%mm5, 8(%2, %3)        \n\t"
"add    %%"REG_a", %1           \n\t"
"add    %%"REG_a", %2           \n\t"
"subl   $4, %0                  \n\t"
"jnz    1b                      \n\t"
:"+g"(h), "+S"(pixels), "+D"(block)
:"r"((x86_reg)line_size)
:REG_a, "memory"); }