Ticket #9039: scummvm-trunk-x86_64-mmx.patch

File scummvm-trunk-x86_64-mmx.patch, 4.0 KB (added by SF/dvalin, 15 years ago)

scale2x x86_64 mmx

  • graphics/scaler/scale2x.cpp

     
    158158/***************************************************************************/
    159159/* Scale2x MMX implementation */
    160160
    161 #if defined(__GNUC__) && defined(__i386__)
     161#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
    162162
    163163/*
    164164 * Apply the Scale2x effect at a single row.
     
    205205
    206206        __asm__ __volatile__(
    207207/* central runs */
    208                 "shrl $3, %4\n"
     208                "shr $3, %4\n"
    209209                "jz 1f\n"
    210210
    211211                "0:\n"
     
    261261                "movq %%mm3, 8(%3)\n"
    262262
    263263                /* next */
    264                 "addl $8, %0\n"
    265                 "addl $8, %1\n"
    266                 "addl $8, %2\n"
    267                 "addl $16, %3\n"
     264                "add $8, %0\n"
     265                "add $8, %1\n"
     266                "add $8, %2\n"
     267                "add $16, %3\n"
    268268
    269                 "decl %4\n"
     269                "dec %4\n"
    270270                "jnz 0b\n"
    271271                "1:\n"
    272272
     
    283283
    284284        __asm__ __volatile__(
    285285/* central runs */
    286                 "shrl $2, %4\n"
     286                "shr $2, %4\n"
    287287                "jz 1f\n"
    288288
    289289                "0:\n"
     
    339339                "movq %%mm3, 8(%3)\n"
    340340
    341341                /* next */
    342                 "addl $8, %0\n"
    343                 "addl $8, %1\n"
    344                 "addl $8, %2\n"
    345                 "addl $16, %3\n"
     342                "add $8, %0\n"
     343                "add $8, %1\n"
     344                "add $8, %2\n"
     345                "add $16, %3\n"
    346346
    347                 "decl %4\n"
     347                "dec %4\n"
    348348                "jnz 0b\n"
    349349                "1:\n"
    350350
     
    361361
    362362        __asm__ __volatile__(
    363363/* central runs */
    364                 "shrl $1, %4\n"
     364                "shr $1, %4\n"
    365365                "jz 1f\n"
    366366
    367367                "0:\n"
     
    417417                "movq %%mm3, 8(%3)\n"
    418418
    419419                /* next */
    420                 "addl $8, %0\n"
    421                 "addl $8, %1\n"
    422                 "addl $8, %2\n"
    423                 "addl $16, %3\n"
     420                "add $8, %0\n"
     421                "add $8, %1\n"
     422                "add $8, %2\n"
     423                "add $16, %3\n"
    424424
    425                 "decl %4\n"
     425                "dec %4\n"
    426426                "jnz 0b\n"
    427427                "1:\n"
    428428
  • graphics/scaler/scale2x.h

     
    3333void scale2x_16_def(scale2x_uint16* dst0, scale2x_uint16* dst1, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count);
    3434void scale2x_32_def(scale2x_uint32* dst0, scale2x_uint32* dst1, const scale2x_uint32* src0, const scale2x_uint32* src1, const scale2x_uint32* src2, unsigned count);
    3535
    36 #if defined(__GNUC__) && defined(__i386__)
     36#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
    3737
    3838void scale2x_8_mmx(scale2x_uint8* dst0, scale2x_uint8* dst1, const scale2x_uint8* src0, const scale2x_uint8* src1, const scale2x_uint8* src2, unsigned count);
    3939void scale2x_16_mmx(scale2x_uint16* dst0, scale2x_uint16* dst1, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count);
  • graphics/scaler/scalebit.cpp

     
    5555static inline void stage_scale2x(void* dst0, void* dst1, const void* src0, const void* src1, const void* src2, unsigned pixel, unsigned pixel_per_row)
    5656{
    5757        switch (pixel) {
    58 #if defined(__GNUC__) && defined(__i386__)
     58#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
    5959                case 1 : scale2x_8_mmx(DST(8,0), DST(8,1), SRC(8,0), SRC(8,1), SRC(8,2), pixel_per_row); break;
    6060                case 2 : scale2x_16_mmx(DST(16,0), DST(16,1), SRC(16,0), SRC(16,1), SRC(16,2), pixel_per_row); break;
    6161                case 4 : scale2x_32_mmx(DST(32,0), DST(32,1), SRC(32,0), SRC(32,1), SRC(32,2), pixel_per_row); break;
     
    125125                --count;
    126126        }
    127127
    128 #if defined(__GNUC__) && defined(__i386__)
     128#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
    129129        scale2x_mmx_emms();
    130130#endif
    131131}
     
    225225                --count;
    226226        }
    227227
    228 #if defined(__GNUC__) && defined(__i386__)
     228#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
    229229        scale2x_mmx_emms();
    230230#endif
    231231}
     
    303303                break;
    304304        }
    305305
    306 #if defined(__GNUC__) && defined(__i386__)
     306#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
    307307        switch (scale) {
    308308        case 2 :
    309309        case 4 :