Ticket #4200: intelleopardmmx.patch

File intelleopardmmx.patch, 22.7 KB (added by morgan@…, 16 years ago)

Leopard MMX patch for osx-packager.pl

  • configure

     
    15641564    enable  backend
    15651565    enable  darwin
    15661566    disable ivtv
    1567     osxver=$(uname -r | cut -c 1)
    1568     if [ ${osxver} = "9" ]; then
    1569       disable mmx
    1570     fi
    15711567    disable need_memalign
    15721568    disable opengl_video
    15731569    disable opengl_vsync
  • libs/libavcodec/i386/motion_est_mmx.c

     
    167167static inline void sad8_4_mmx2(uint8_t *blk1, uint8_t *blk2, int stride, int h)
    168168{
    169169    asm volatile(
    170         "movq "MANGLE(bone)", %%mm5     \n\t"
     170        "movq %4, %%mm5     \n\t"
    171171        "movq (%1), %%mm0               \n\t"
    172172        "pavgb 1(%1), %%mm0             \n\t"
    173173        "add %3, %1                     \n\t"
     
    190190        "sub $2, %0                     \n\t"
    191191        " jg 1b                         \n\t"
    192192        : "+r" (h), "+r" (blk1), "+r" (blk2)
    193         : "r" ((long)stride)
     193        : "r" ((long)stride), "m" (bone)
    194194    );
    195195}
    196196
     
    258258        "punpckhbw %%mm7, %%mm5         \n\t"
    259259        "paddw %%mm4, %%mm2             \n\t"
    260260        "paddw %%mm5, %%mm3             \n\t"
    261         "movq 16+"MANGLE(round_tab)", %%mm5 \n\t"
     261        "movq 16+%5, %%mm5 \n\t"
    262262        "paddw %%mm2, %%mm0             \n\t"
    263263        "paddw %%mm3, %%mm1             \n\t"
    264264        "paddw %%mm5, %%mm0             \n\t"
     
    281281        "add %4, %%"REG_a"              \n\t"
    282282        " js 1b                         \n\t"
    283283        : "+a" (len)
    284         : "r" (blk1 - len), "r" (blk1 -len + stride), "r" (blk2 - len), "r" ((long)stride)
     284        : "r" (blk1 - len), "r" (blk1 -len + stride), "r" (blk2 - len), "r" ((long)stride), "m" (round_tab[0])
    285285    );
    286286}
    287287
  • libs/libavcodec/i386/dsputil_h264_template_mmx.c

     
    188188        "pxor   %%mm7, %%mm7        \n\t"
    189189        "movd %5, %%mm2             \n\t"
    190190        "movd %6, %%mm3             \n\t"
    191         "movq "MANGLE(ff_pw_8)", %%mm4\n\t"
    192         "movq "MANGLE(ff_pw_8)", %%mm5\n\t"
     191        "movq %7, %%mm4\n\t"
     192        "movq %7, %%mm5\n\t"
    193193        "punpcklwd %%mm2, %%mm2     \n\t"
    194194        "punpcklwd %%mm3, %%mm3     \n\t"
    195195        "punpcklwd %%mm2, %%mm2     \n\t"
     
    246246        "sub $2, %2                 \n\t"
    247247        "jnz 1b                     \n\t"
    248248        : "+r"(dst), "+r"(src), "+r"(h)
    249         : "r"((long)stride), "m"(ff_pw_32), "m"(x), "m"(y)
     249        : "r"((long)stride), "m"(ff_pw_32), "m"(x), "m"(y), "m"(ff_pw_8)
    250250    );
    251251}
    252252
  • libs/libavcodec/i386/dsputil_mmx.c

     
    19231923
    19241924#define QPEL_V_LOW(m3,m4,m5,m6, pw_20, pw_3, rnd, in0, in1, in2, in7, out, OP)\
    19251925        "paddw " #m4 ", " #m3 "           \n\t" /* x1 */\
    1926         "movq "MANGLE(ff_pw_20)", %%mm4   \n\t" /* 20 */\
     1926        "movq "#pw_20", %%mm4   \n\t" /* 20 */\
    19271927        "pmullw " #m3 ", %%mm4            \n\t" /* 20x1 */\
    19281928        "movq "#in7", " #m3 "             \n\t" /* d */\
    19291929        "movq "#in0", %%mm5               \n\t" /* D */\
     
    19351935        "paddw " #m5 ", %%mm6             \n\t" /* x2 */\
    19361936        "paddw %%mm6, %%mm6               \n\t" /* 2x2 */\
    19371937        "psubw %%mm6, %%mm5               \n\t" /* -2x2 + x3 */\
    1938         "pmullw "MANGLE(ff_pw_3)", %%mm5  \n\t" /* -6x2 + 3x3 */\
     1938        "pmullw "#pw_3", %%mm5  \n\t" /* -6x2 + 3x3 */\
    19391939        "paddw " #rnd ", %%mm4            \n\t" /* x2 */\
    19401940        "paddw %%mm4, %%mm5               \n\t" /* 20x1 - 6x2 + 3x3 - x4 */\
    19411941        "psraw $5, %%mm5                  \n\t"\
     
    19691969        "paddw %%mm5, %%mm5               \n\t" /* 2b */\
    19701970        "psubw %%mm5, %%mm6               \n\t" /* c - 2b */\
    19711971        "pshufw $0x06, %%mm0, %%mm5       \n\t" /* 0C0B0A0A */\
    1972         "pmullw "MANGLE(ff_pw_3)", %%mm6  \n\t" /* 3c - 6b */\
     1972        "pmullw %8, %%mm6  \n\t" /* 3c - 6b */\
    19731973        "paddw %%mm4, %%mm0               \n\t" /* a */\
    19741974        "paddw %%mm1, %%mm5               \n\t" /* d */\
    1975         "pmullw "MANGLE(ff_pw_20)", %%mm0 \n\t" /* 20a */\
     1975        "pmullw %7, %%mm0 \n\t" /* 20a */\
    19761976        "psubw %%mm5, %%mm0               \n\t" /* 20a - d */\
    19771977        "paddw %6, %%mm6                  \n\t"\
    19781978        "paddw %%mm6, %%mm0               \n\t" /* 20a - 6b + 3c - d */\
     
    19951995        "psrlq $24, %%mm6                 \n\t" /* IJKLM000 */\
    19961996        "punpcklbw %%mm7, %%mm2           \n\t" /* 0F0G0H0I */\
    19971997        "punpcklbw %%mm7, %%mm6           \n\t" /* 0I0J0K0L */\
    1998         "pmullw "MANGLE(ff_pw_3)", %%mm3  \n\t" /* 3c - 6b */\
     1998        "pmullw %8, %%mm3  \n\t" /* 3c - 6b */\
    19991999        "paddw %%mm2, %%mm1               \n\t" /* a */\
    20002000        "paddw %%mm6, %%mm4               \n\t" /* d */\
    2001         "pmullw "MANGLE(ff_pw_20)", %%mm1 \n\t" /* 20a */\
     2001        "pmullw %7, %%mm1 \n\t" /* 20a */\
    20022002        "psubw %%mm4, %%mm3               \n\t" /* - 6b +3c - d */\
    20032003        "paddw %6, %%mm1                  \n\t"\
    20042004        "paddw %%mm1, %%mm3               \n\t" /* 20a - 6b +3c - d */\
     
    20212021        "psubw %%mm5, %%mm0               \n\t" /* c - 2b */\
    20222022        "movq %%mm3, %%mm5                \n\t" /* JKLMNOPQ */\
    20232023        "psrlq $24, %%mm3                 \n\t" /* MNOPQ000 */\
    2024         "pmullw "MANGLE(ff_pw_3)", %%mm0  \n\t" /* 3c - 6b */\
     2024        "pmullw %8, %%mm0  \n\t" /* 3c - 6b */\
    20252025        "punpcklbw %%mm7, %%mm3           \n\t" /* 0M0N0O0P */\
    20262026        "paddw %%mm3, %%mm2               \n\t" /* d */\
    20272027        "psubw %%mm2, %%mm0               \n\t" /* -6b + 3c - d */\
     
    20292029        "punpcklbw %%mm7, %%mm2           \n\t" /* 0J0K0L0M */\
    20302030        "punpckhbw %%mm7, %%mm5           \n\t" /* 0N0O0P0Q */\
    20312031        "paddw %%mm2, %%mm6               \n\t" /* a */\
    2032         "pmullw "MANGLE(ff_pw_20)", %%mm6 \n\t" /* 20a */\
     2032        "pmullw %7, %%mm6 \n\t" /* 20a */\
    20332033        "paddw %6, %%mm0                  \n\t"\
    20342034        "paddw %%mm6, %%mm0               \n\t" /* 20a - 6b + 3c - d */\
    20352035        "psraw $5, %%mm0                  \n\t"\
     
    20442044        "paddw %%mm2, %%mm5               \n\t" /* d */\
    20452045        "paddw %%mm6, %%mm6               \n\t" /* 2b */\
    20462046        "psubw %%mm6, %%mm4               \n\t" /* c - 2b */\
    2047         "pmullw "MANGLE(ff_pw_20)", %%mm3 \n\t" /* 20a */\
    2048         "pmullw "MANGLE(ff_pw_3)", %%mm4  \n\t" /* 3c - 6b */\
     2047        "pmullw %7, %%mm3 \n\t" /* 20a */\
     2048        "pmullw %8, %%mm4  \n\t" /* 3c - 6b */\
    20492049        "psubw %%mm5, %%mm3               \n\t" /* -6b + 3c - d */\
    20502050        "paddw %6, %%mm4                  \n\t"\
    20512051        "paddw %%mm3, %%mm4               \n\t" /* 20a - 6b + 3c - d */\
     
    20582058        "decl %2                          \n\t"\
    20592059        " jnz 1b                          \n\t"\
    20602060        : "+a"(src), "+c"(dst), "+m"(h)\
    2061         : "d"((long)srcStride), "S"((long)dstStride), /*"m"(ff_pw_20), "m"(ff_pw_3),*/ "m"(temp), "m"(ROUNDER)\
     2061        : "d"((long)srcStride), "S"((long)dstStride),\
     2062        "m"(temp), "m"(ROUNDER),\
     2063        "m"(ff_pw_20), "m"(ff_pw_3)\
    20622064        : "memory"\
    20632065    );\
    20642066}\
     
    21362138        "paddw %%mm5, %%mm5               \n\t" /* 2b */\
    21372139        "psubw %%mm5, %%mm6               \n\t" /* c - 2b */\
    21382140        "pshufw $0x06, %%mm0, %%mm5       \n\t" /* 0C0B0A0A */\
    2139         "pmullw "MANGLE(ff_pw_3)", %%mm6  \n\t" /* 3c - 6b */\
     2141        "pmullw %8, %%mm6  \n\t" /* 3c - 6b */\
    21402142        "paddw %%mm4, %%mm0               \n\t" /* a */\
    21412143        "paddw %%mm1, %%mm5               \n\t" /* d */\
    2142         "pmullw "MANGLE(ff_pw_20)", %%mm0 \n\t" /* 20a */\
     2144        "pmullw %7, %%mm0 \n\t" /* 20a */\
    21432145        "psubw %%mm5, %%mm0               \n\t" /* 20a - d */\
    21442146        "paddw %6, %%mm6                  \n\t"\
    21452147        "paddw %%mm6, %%mm0               \n\t" /* 20a - 6b + 3c - d */\
     
    21572159        "paddw %%mm5, %%mm4               \n\t" /* d */\
    21582160        "paddw %%mm2, %%mm2               \n\t" /* 2b */\
    21592161        "psubw %%mm2, %%mm3               \n\t" /* c - 2b */\
    2160         "pmullw "MANGLE(ff_pw_20)", %%mm1 \n\t" /* 20a */\
    2161         "pmullw "MANGLE(ff_pw_3)", %%mm3  \n\t" /* 3c - 6b */\
     2162        "pmullw %7, %%mm1 \n\t" /* 20a */\
     2163        "pmullw %8, %%mm3  \n\t" /* 3c - 6b */\
    21622164        "psubw %%mm4, %%mm3               \n\t" /* -6b + 3c - d */\
    21632165        "paddw %6, %%mm1                  \n\t"\
    21642166        "paddw %%mm1, %%mm3               \n\t" /* 20a - 6b + 3c - d */\
     
    21712173        "decl %2                          \n\t"\
    21722174        " jnz 1b                          \n\t"\
    21732175        : "+a"(src), "+c"(dst), "+m"(h)\
    2174         : "S"((long)srcStride), "D"((long)dstStride), /*"m"(ff_pw_20), "m"(ff_pw_3),*/ "m"(temp), "m"(ROUNDER)\
     2176        : "S"((long)srcStride), "D"((long)dstStride),\
     2177        "m"(temp), "m"(ROUNDER),\
     2178        "m"(ff_pw_20), "m"(ff_pw_3)\
    21752179        : "memory"\
    21762180    );\
    21772181}\
     
    22502254        "movq 8(%0), %%mm1              \n\t"\
    22512255        "movq 16(%0), %%mm2             \n\t"\
    22522256        "movq 24(%0), %%mm3             \n\t"\
    2253         QPEL_V_LOW(%%mm0, %%mm1, %%mm2, %%mm3, %5, %6, %5, 16(%0),  8(%0),   (%0), 32(%0), (%1), OP)\
    2254         QPEL_V_LOW(%%mm1, %%mm2, %%mm3, %%mm0, %5, %6, %5,  8(%0),   (%0),   (%0), 40(%0), (%1, %3), OP)\
     2257        QPEL_V_LOW(%%mm0, %%mm1, %%mm2, %%mm3, %7, %8, %5, 16(%0),  8(%0),   (%0), 32(%0), (%1), OP)\
     2258        QPEL_V_LOW(%%mm1, %%mm2, %%mm3, %%mm0, %7, %8, %5,  8(%0),   (%0),   (%0), 40(%0), (%1, %3), OP)\
    22552259        "add %4, %1                     \n\t"\
    2256         QPEL_V_LOW(%%mm2, %%mm3, %%mm0, %%mm1, %5, %6, %5,   (%0),   (%0),  8(%0), 48(%0), (%1), OP)\
     2260        QPEL_V_LOW(%%mm2, %%mm3, %%mm0, %%mm1, %7, %8, %5,   (%0),   (%0),  8(%0), 48(%0), (%1), OP)\
    22572261        \
    2258         QPEL_V_LOW(%%mm3, %%mm0, %%mm1, %%mm2, %5, %6, %5,   (%0),  8(%0), 16(%0), 56(%0), (%1, %3), OP)\
     2262        QPEL_V_LOW(%%mm3, %%mm0, %%mm1, %%mm2, %7, %8, %5,   (%0),  8(%0), 16(%0), 56(%0), (%1, %3), OP)\
    22592263        "add %4, %1                     \n\t"\
    2260         QPEL_V_LOW(%%mm0, %%mm1, %%mm2, %%mm3, %5, %6, %5,  8(%0), 16(%0), 24(%0), 64(%0), (%1), OP)\
    2261         QPEL_V_LOW(%%mm1, %%mm2, %%mm3, %%mm0, %5, %6, %5, 16(%0), 24(%0), 32(%0), 72(%0), (%1, %3), OP)\
     2264        QPEL_V_LOW(%%mm0, %%mm1, %%mm2, %%mm3, %7, %8, %5,  8(%0), 16(%0), 24(%0), 64(%0), (%1), OP)\
     2265        QPEL_V_LOW(%%mm1, %%mm2, %%mm3, %%mm0, %7, %8, %5, 16(%0), 24(%0), 32(%0), 72(%0), (%1, %3), OP)\
    22622266        "add %4, %1                     \n\t"\
    2263         QPEL_V_LOW(%%mm2, %%mm3, %%mm0, %%mm1, %5, %6, %5, 24(%0), 32(%0), 40(%0), 80(%0), (%1), OP)\
    2264         QPEL_V_LOW(%%mm3, %%mm0, %%mm1, %%mm2, %5, %6, %5, 32(%0), 40(%0), 48(%0), 88(%0), (%1, %3), OP)\
     2267        QPEL_V_LOW(%%mm2, %%mm3, %%mm0, %%mm1, %7, %8, %5, 24(%0), 32(%0), 40(%0), 80(%0), (%1), OP)\
     2268        QPEL_V_LOW(%%mm3, %%mm0, %%mm1, %%mm2, %7, %8, %5, 32(%0), 40(%0), 48(%0), 88(%0), (%1, %3), OP)\
    22652269        "add %4, %1                     \n\t"\
    2266         QPEL_V_LOW(%%mm0, %%mm1, %%mm2, %%mm3, %5, %6, %5, 40(%0), 48(%0), 56(%0), 96(%0), (%1), OP)\
    2267         QPEL_V_LOW(%%mm1, %%mm2, %%mm3, %%mm0, %5, %6, %5, 48(%0), 56(%0), 64(%0),104(%0), (%1, %3), OP)\
     2270        QPEL_V_LOW(%%mm0, %%mm1, %%mm2, %%mm3, %7, %8, %5, 40(%0), 48(%0), 56(%0), 96(%0), (%1), OP)\
     2271        QPEL_V_LOW(%%mm1, %%mm2, %%mm3, %%mm0, %7, %8, %5, 48(%0), 56(%0), 64(%0),104(%0), (%1, %3), OP)\
    22682272        "add %4, %1                     \n\t"\
    2269         QPEL_V_LOW(%%mm2, %%mm3, %%mm0, %%mm1, %5, %6, %5, 56(%0), 64(%0), 72(%0),112(%0), (%1), OP)\
    2270         QPEL_V_LOW(%%mm3, %%mm0, %%mm1, %%mm2, %5, %6, %5, 64(%0), 72(%0), 80(%0),120(%0), (%1, %3), OP)\
     2273        QPEL_V_LOW(%%mm2, %%mm3, %%mm0, %%mm1, %7, %8, %5, 56(%0), 64(%0), 72(%0),112(%0), (%1), OP)\
     2274        QPEL_V_LOW(%%mm3, %%mm0, %%mm1, %%mm2, %7, %8, %5, 64(%0), 72(%0), 80(%0),120(%0), (%1, %3), OP)\
    22712275        "add %4, %1                     \n\t"\
    2272         QPEL_V_LOW(%%mm0, %%mm1, %%mm2, %%mm3, %5, %6, %5, 72(%0), 80(%0), 88(%0),128(%0), (%1), OP)\
     2276        QPEL_V_LOW(%%mm0, %%mm1, %%mm2, %%mm3, %7, %8, %5, 72(%0), 80(%0), 88(%0),128(%0), (%1), OP)\
    22732277        \
    2274         QPEL_V_LOW(%%mm1, %%mm2, %%mm3, %%mm0, %5, %6, %5, 80(%0), 88(%0), 96(%0),128(%0), (%1, %3), OP)\
     2278        QPEL_V_LOW(%%mm1, %%mm2, %%mm3, %%mm0, %7, %8, %5, 80(%0), 88(%0), 96(%0),128(%0), (%1, %3), OP)\
    22752279        "add %4, %1                     \n\t"  \
    2276         QPEL_V_LOW(%%mm2, %%mm3, %%mm0, %%mm1, %5, %6, %5, 88(%0), 96(%0),104(%0),120(%0), (%1), OP)\
    2277         QPEL_V_LOW(%%mm3, %%mm0, %%mm1, %%mm2, %5, %6, %5, 96(%0),104(%0),112(%0),112(%0), (%1, %3), OP)\
     2280        QPEL_V_LOW(%%mm2, %%mm3, %%mm0, %%mm1, %7, %8, %5, 88(%0), 96(%0),104(%0),120(%0), (%1), OP)\
     2281        QPEL_V_LOW(%%mm3, %%mm0, %%mm1, %%mm2, %7, %8, %5, 96(%0),104(%0),112(%0),112(%0), (%1, %3), OP)\
    22782282        \
    22792283        "add $136, %0                   \n\t"\
    22802284        "add %6, %1                     \n\t"\
     
    22822286        " jnz 1b                        \n\t"\
    22832287        \
    22842288        : "+r"(temp_ptr), "+r"(dst), "+g"(count)\
    2285         : "r"((long)dstStride), "r"(2*(long)dstStride), /*"m"(ff_pw_20), "m"(ff_pw_3),*/ "m"(ROUNDER), "g"(4-14*(long)dstStride)\
     2289        : "r"((long)dstStride), "r"(2*(long)dstStride),\
     2290        "m"(ROUNDER), "g"(4-14*(long)dstStride),\
     2291        "m"(ff_pw_20), "m"(ff_pw_3)\
    22862292        :"memory"\
    22872293    );\
    22882294}\
     
    23222328        "movq 8(%0), %%mm1              \n\t"\
    23232329        "movq 16(%0), %%mm2             \n\t"\
    23242330        "movq 24(%0), %%mm3             \n\t"\
    2325         QPEL_V_LOW(%%mm0, %%mm1, %%mm2, %%mm3, %5, %6, %5, 16(%0),  8(%0),   (%0), 32(%0), (%1), OP)\
    2326         QPEL_V_LOW(%%mm1, %%mm2, %%mm3, %%mm0, %5, %6, %5,  8(%0),   (%0),   (%0), 40(%0), (%1, %3), OP)\
     2331        QPEL_V_LOW(%%mm0, %%mm1, %%mm2, %%mm3, %7, %8, %5, 16(%0),  8(%0),   (%0), 32(%0), (%1), OP)\
     2332        QPEL_V_LOW(%%mm1, %%mm2, %%mm3, %%mm0, %7, %8, %5,  8(%0),   (%0),   (%0), 40(%0), (%1, %3), OP)\
    23272333        "add %4, %1                     \n\t"\
    2328         QPEL_V_LOW(%%mm2, %%mm3, %%mm0, %%mm1, %5, %6, %5,   (%0),   (%0),  8(%0), 48(%0), (%1), OP)\
     2334        QPEL_V_LOW(%%mm2, %%mm3, %%mm0, %%mm1, %7, %8, %5,   (%0),   (%0),  8(%0), 48(%0), (%1), OP)\
    23292335        \
    2330         QPEL_V_LOW(%%mm3, %%mm0, %%mm1, %%mm2, %5, %6, %5,   (%0),  8(%0), 16(%0), 56(%0), (%1, %3), OP)\
     2336        QPEL_V_LOW(%%mm3, %%mm0, %%mm1, %%mm2, %7, %8, %5,   (%0),  8(%0), 16(%0), 56(%0), (%1, %3), OP)\
    23312337        "add %4, %1                     \n\t"\
    2332         QPEL_V_LOW(%%mm0, %%mm1, %%mm2, %%mm3, %5, %6, %5,  8(%0), 16(%0), 24(%0), 64(%0), (%1), OP)\
     2338        QPEL_V_LOW(%%mm0, %%mm1, %%mm2, %%mm3, %7, %8, %5,  8(%0), 16(%0), 24(%0), 64(%0), (%1), OP)\
    23332339        \
    2334         QPEL_V_LOW(%%mm1, %%mm2, %%mm3, %%mm0, %5, %6, %5, 16(%0), 24(%0), 32(%0), 64(%0), (%1, %3), OP)\
     2340        QPEL_V_LOW(%%mm1, %%mm2, %%mm3, %%mm0, %7, %8, %5, 16(%0), 24(%0), 32(%0), 64(%0), (%1, %3), OP)\
    23352341        "add %4, %1                     \n\t"\
    2336         QPEL_V_LOW(%%mm2, %%mm3, %%mm0, %%mm1, %5, %6, %5, 24(%0), 32(%0), 40(%0), 56(%0), (%1), OP)\
    2337         QPEL_V_LOW(%%mm3, %%mm0, %%mm1, %%mm2, %5, %6, %5, 32(%0), 40(%0), 48(%0), 48(%0), (%1, %3), OP)\
     2342        QPEL_V_LOW(%%mm2, %%mm3, %%mm0, %%mm1, %7, %8, %5, 24(%0), 32(%0), 40(%0), 56(%0), (%1), OP)\
     2343        QPEL_V_LOW(%%mm3, %%mm0, %%mm1, %%mm2, %7, %8, %5, 32(%0), 40(%0), 48(%0), 48(%0), (%1, %3), OP)\
    23382344                \
    23392345        "add $72, %0                    \n\t"\
    23402346        "add %6, %1                     \n\t"\
     
    23422348        " jnz 1b                        \n\t"\
    23432349         \
    23442350        : "+r"(temp_ptr), "+r"(dst), "+g"(count)\
    2345         : "r"((long)dstStride), "r"(2*(long)dstStride), /*"m"(ff_pw_20), "m"(ff_pw_3),*/ "m"(ROUNDER), "g"(4-6*(long)dstStride)\
     2351        : "r"((long)dstStride), "r"(2*(long)dstStride),\
     2352        "m"(ROUNDER), "g"(4-6*(long)dstStride),\
     2353        "m"(ff_pw_20), "m"(ff_pw_3)\
    23462354        : "memory"\
    23472355   );\
    23482356}\
     
    29772985    double c = 2.0 / (len-1.0);
    29782986    int n2 = len>>1;
    29792987    long i = -n2*sizeof(int32_t);
    2980     long j =  n2*sizeof(int32_t);
    29812988    asm volatile(
    29822989        "movsd   %0,     %%xmm7 \n\t"
    29832990        "movapd  %1,     %%xmm6 \n\t"
     
    29953002        "movapd   %%xmm6,  %%xmm0   \n\t"\
    29963003        "subpd    %%xmm1,  %%xmm0   \n\t"\
    29973004        "pshufd   $0x4e,   %%xmm0, %%xmm1 \n\t"\
    2998         "cvtpi2pd (%4,%0), %%xmm2   \n\t"\
    2999         "cvtpi2pd (%5,%1), %%xmm3   \n\t"\
     3005        "cvtpi2pd (%3,%0), %%xmm2   \n\t"\
    30003006        "mulpd    %%xmm0,  %%xmm2   \n\t"\
     3007        "movapd   %%xmm2, (%1,%0,2) \n\t"\
     3008        "negl %0\n\t"\
     3009        "cvtpi2pd (%4,%0), %%xmm3   \n\t"\
    30013010        "mulpd    %%xmm1,  %%xmm3   \n\t"\
    3002         "movapd   %%xmm2, (%2,%0,2) \n\t"\
    3003         MOVPD"    %%xmm3, (%3,%1,2) \n\t"\
     3011        MOVPD"    %%xmm3, (%2,%0,2) \n\t"\
    30043012        "subpd    %%xmm5,  %%xmm7   \n\t"\
    3005         "sub      $8,      %1       \n\t"\
     3013        "negl %0\n\t"\
    30063014        "add      $8,      %0       \n\t"\
    30073015        "jl 1b                      \n\t"\
    3008         :"+&r"(i), "+&r"(j)\
     3016        :"+&r"(i)\
    30093017        :"r"(w_data+n2), "r"(w_data+len-2-n2),\
    30103018         "r"(data+n2), "r"(data+len-2-n2)\
    30113019    );
  • libs/libavcodec/i386/h264dsp_mmx.c

     
    341341// in: mm0=p1 mm1=p0 mm2=q0 mm3=q1 mm7=(tc&mask)
    342342// out: mm1=p0\' mm2=q0\'
    343343// clobbers: mm0,3-6
    344 #define H264_DEBLOCK_P0_Q0(pb_01, pb_3f)\
     344#define H264_DEBLOCK_P0_Q0(pb_01, pb_3, pb_a1)\
    345345        "movq    %%mm1              , %%mm5 \n\t"\
    346346        "pxor    %%mm2              , %%mm5 \n\t" /* p0^q0*/\
    347347        "pand    "#pb_01"           , %%mm5 \n\t" /* (p0^q0)&1*/\
    348348        "pcmpeqb %%mm4              , %%mm4 \n\t"\
    349349        "pxor    %%mm4              , %%mm3 \n\t"\
    350350        "pavgb   %%mm0              , %%mm3 \n\t" /* (p1 - q1 + 256)>>1*/\
    351         "pavgb   "MANGLE(ff_pb_3)"  , %%mm3 \n\t" /*(((p1 - q1 + 256)>>1)+4)>>1 = 64+2+(p1-q1)>>2*/\
     351        "pavgb   "#pb_3"            , %%mm3 \n\t" /*(((p1 - q1 + 256)>>1)+4)>>1 = 64+2+(p1-q1)>>2*/\
    352352        "pxor    %%mm1              , %%mm4 \n\t"\
    353353        "pavgb   %%mm2              , %%mm4 \n\t" /* (q0 - p0 + 256)>>1*/\
    354354        "pavgb   %%mm5              , %%mm3 \n\t"\
    355355        "paddusb %%mm4              , %%mm3 \n\t" /* d+128+33*/\
    356         "movq    "MANGLE(ff_pb_A1)" , %%mm6 \n\t"\
     356        "movq    "#pb_a1"          , %%mm6 \n\t"\
    357357        "psubusb %%mm3              , %%mm6 \n\t"\
    358         "psubusb "MANGLE(ff_pb_A1)" , %%mm3 \n\t"\
     358        "psubusb "#pb_a1"          , %%mm3 \n\t"\
    359359        "pminub  %%mm7              , %%mm6 \n\t"\
    360360        "pminub  %%mm7              , %%mm3 \n\t"\
    361361        "psubusb %%mm6              , %%mm1 \n\t"\
     
    422422        H264_DEBLOCK_Q1(%%mm3, %%mm4, "(%2,%3,2)", "(%2,%3)", %%mm5, %%mm6)
    423423
    424424        /* filter p0, q0 */
    425         H264_DEBLOCK_P0_Q0(%8, unused)
     425        H264_DEBLOCK_P0_Q0(%8, %9, %10)
    426426        "movq      %%mm1, (%1,%3,2) \n\t"
    427427        "movq      %%mm2, (%2)      \n\t"
    428428
    429429        : "=m"(*tmp0)
    430430        : "r"(pix-3*stride), "r"(pix), "r"((long)stride),
    431431          "m"(*tmp0/*unused*/), "m"(*(uint32_t*)tc0), "m"(alpha1), "m"(beta1),
    432           "m"(mm_bone)
     432          "m"(mm_bone), "m" (ff_pb_3), "m" (ff_pb_A1)
    433433    );
    434434}
    435435
     
    470470        "movd      %3,    %%mm6     \n\t"
    471471        "punpcklbw %%mm6, %%mm6     \n\t"
    472472        "pand      %%mm6, %%mm7     \n\t" // mm7 = tc&mask
    473         H264_DEBLOCK_P0_Q0(%6, %7)
     473        H264_DEBLOCK_P0_Q0(%6, %7, %8)
    474474        "movq      %%mm1, (%0,%2)   \n\t"
    475475        "movq      %%mm2, (%1)      \n\t"
    476476
    477477        :: "r"(pix-2*stride), "r"(pix), "r"((long)stride),
    478478           "r"(*(uint32_t*)tc0),
    479            "m"(alpha1), "m"(beta1), "m"(mm_bone), "m"(ff_pb_3F)
     479           "m"(alpha1), "m"(beta1), "m"(mm_bone), "m" (ff_pb_3), "m" (ff_pb_A1)
    480480    );
    481481}
    482482
  • libs/libavcodec/i386/simple_idct_mmx.c

     
    363363        "movq " #src4 ", %%mm1          \n\t" /* R6     R2      r6      r2 */\
    364364        "movq " #src1 ", %%mm2          \n\t" /* R3     R1      r3      r1 */\
    365365        "movq " #src5 ", %%mm3          \n\t" /* R7     R5      r7      r5 */\
    366         "movq "MANGLE(wm1010)", %%mm4   \n\t"\
     366        "movq %3, %%mm4                 \n\t"\
    367367        "pand %%mm0, %%mm4              \n\t"\
    368368        "por %%mm1, %%mm4               \n\t"\
    369369        "por %%mm2, %%mm4               \n\t"\
     
    437437        "jmp 2f                         \n\t"\
    438438        "1:                             \n\t"\
    439439        "pslld $16, %%mm0               \n\t"\
    440         "#paddd "MANGLE(d40000)", %%mm0 \n\t"\
     440        "#paddd %4, %%mm0              \n\t"\
    441441        "psrad $13, %%mm0               \n\t"\
    442442        "packssdw %%mm0, %%mm0          \n\t"\
    443443        "movq %%mm0, " #dst "           \n\t"\
     
    471471        "movq " #src4 ", %%mm1          \n\t" /* R6     R2      r6      r2 */\
    472472        "movq " #src1 ", %%mm2          \n\t" /* R3     R1      r3      r1 */\
    473473        "movq " #src5 ", %%mm3          \n\t" /* R7     R5      r7      r5 */\
    474         "movq "MANGLE(wm1010)", %%mm4   \n\t"\
     474        "movq %3, %%mm4                 \n\t"\
    475475        "pand %%mm0, %%mm4              \n\t"\
    476476        "por %%mm1, %%mm4               \n\t"\
    477477        "por %%mm2, %%mm4               \n\t"\
     
    545545        "jmp 2f                         \n\t"\
    546546        "1:                             \n\t"\
    547547        "pslld $16, %%mm0               \n\t"\
    548         "paddd "MANGLE(d40000)", %%mm0  \n\t"\
     548        "paddd %4, %%mm0                \n\t"\
    549549        "psrad $13, %%mm0               \n\t"\
    550550        "packssdw %%mm0, %%mm0          \n\t"\
    551551        "movq %%mm0, " #dst "           \n\t"\
     
    12701270*/
    12711271
    12721272"9: \n\t"
    1273                 :: "r" (block), "r" (temp), "r" (coeffs)
     1273                :: "r" (block), "r" (temp), "r" (coeffs), "m" (wm1010), "m"(d40000)
    12741274                : "%eax"
    12751275        );
    12761276}
  • filters/filters.pro

     
    22
    33# Directories
    44SUBDIRS += invert linearblend denoise3d quickdnr kerneldeint crop force convert
    5 SUBDIRS += adjust onefield bobdeint ivtc greedyhdeint yadif
     5SUBDIRS += adjust onefield bobdeint ivtc yadif
    66
    77# This filter is currently broken, because the FFmpeg code that
    88# it depends on was moved into a seperate library (libpostproc).