source: trunk/ffmpeg-svn-mactel.patch @ 64

Revision 64, 16.4 KB checked in by gbooker, 8 years ago (diff)

This part of the patch is included in ffmpeg svn now

  • libavcodec/i386/dsputil_mmx.c

    diff -NaurbB --exclude=.svn ../ffmpeg/libavcodec/i386/dsputil_mmx.c ./libavcodec/i386/dsputil_mmx.c
    old new  
    5252static const uint64_t ff_pb_3F attribute_used __attribute__ ((aligned(8))) = 0x3F3F3F3F3F3F3F3FULL; 
    5353static const uint64_t ff_pb_FC attribute_used __attribute__ ((aligned(8))) = 0xFCFCFCFCFCFCFCFCULL; 
    5454 
    55 #define JUMPALIGN() __asm __volatile (".balign 8"::) 
     55#define JUMPALIGN() __asm __volatile (BALIGN_8::) 
    5656#define MOVQ_ZERO(regd)  __asm __volatile ("pxor %%" #regd ", %%" #regd ::) 
    5757 
    5858#define MOVQ_WONE(regd) \ 
     
    195195    asm volatile( 
    196196        "mov $-128, %%"REG_a"           \n\t" 
    197197        "pxor %%mm7, %%mm7              \n\t" 
    198         ".balign 16                     \n\t" 
     198        BALIGN_16 
    199199        "1:                             \n\t" 
    200200        "movq (%0), %%mm0               \n\t" 
    201201        "movq (%0, %2), %%mm2           \n\t" 
     
    223223    asm volatile( 
    224224        "pxor %%mm7, %%mm7              \n\t" 
    225225        "mov $-128, %%"REG_a"           \n\t" 
    226         ".balign 16                     \n\t" 
     226        BALIGN_16 
    227227        "1:                             \n\t" 
    228228        "movq (%0), %%mm0               \n\t" 
    229229        "movq (%1), %%mm2               \n\t" 
     
    366366{ 
    367367    __asm __volatile( 
    368368         "lea (%3, %3), %%"REG_a"       \n\t" 
    369          ".balign 8                     \n\t" 
     369         BALIGN_8 
    370370         "1:                            \n\t" 
    371371         "movd (%1), %%mm0              \n\t" 
    372372         "movd (%1, %3), %%mm1          \n\t" 
     
    392392{ 
    393393    __asm __volatile( 
    394394         "lea (%3, %3), %%"REG_a"       \n\t" 
    395          ".balign 8                     \n\t" 
     395         BALIGN_8 
    396396         "1:                            \n\t" 
    397397         "movq (%1), %%mm0              \n\t" 
    398398         "movq (%1, %3), %%mm1          \n\t" 
     
    418418{ 
    419419    __asm __volatile( 
    420420         "lea (%3, %3), %%"REG_a"       \n\t" 
    421          ".balign 8                     \n\t" 
     421         BALIGN_8 
    422422         "1:                            \n\t" 
    423423         "movq (%1), %%mm0              \n\t" 
    424424         "movq 8(%1), %%mm4             \n\t" 
     
    31013101        } 
    31023102 
    31033103#ifdef CONFIG_SNOW_ENCODER 
    3104         if(mm_flags & MM_SSE2){ 
     3104#if defined(__APPLE__) 
     3105        if (0)  // alignment issues with SSE2 code with Apple GCC 
     3106#else 
     3107        if(mm_flags & MM_SSE2) 
     3108#endif 
     3109        { 
    31053110            c->horizontal_compose97i = ff_snow_horizontal_compose97i_sse2; 
    31063111            c->vertical_compose97i = ff_snow_vertical_compose97i_sse2; 
    31073112            c->inner_add_yblock = ff_snow_inner_add_yblock_sse2; 
  • libavcodec/i386/dsputil_mmx_avg.h

    diff -NaurbB --exclude=.svn ../ffmpeg/libavcodec/i386/dsputil_mmx_avg.h ./libavcodec/i386/dsputil_mmx_avg.h
    old new  
    754754        "lea (%3, %3), %%"REG_a"        \n\t" 
    755755        "movq (%1), %%mm0               \n\t" 
    756756        PAVGB" 1(%1), %%mm0             \n\t" 
    757         ".balign 8                      \n\t" 
     757        BALIGN_8 
    758758        "1:                             \n\t" 
    759759        "movq (%1, %%"REG_a"), %%mm2    \n\t" 
    760760        "movq (%1, %3), %%mm1           \n\t" 
  • libavcodec/i386/dsputil_mmx_rnd.h

    diff -NaurbB --exclude=.svn ../ffmpeg/libavcodec/i386/dsputil_mmx_rnd.h ./libavcodec/i386/dsputil_mmx_rnd.h
    old new  
    2828    MOVQ_BFE(mm6); 
    2929    __asm __volatile( 
    3030        "lea    (%3, %3), %%"REG_a"     \n\t" 
    31         ".balign 8                      \n\t" 
     31        BALIGN_8 
    3232        "1:                             \n\t" 
    3333        "movq   (%1), %%mm0             \n\t" 
    3434        "movq   1(%1), %%mm1            \n\t" 
     
    6969        "movq   %%mm4, (%3)             \n\t" 
    7070        "add    %5, %3                  \n\t" 
    7171        "decl   %0                      \n\t" 
    72         ".balign 8                      \n\t" 
     72        BALIGN_8 
    7373        "1:                             \n\t" 
    7474        "movq   (%1), %%mm0             \n\t" 
    7575        "movq   (%2), %%mm1             \n\t" 
     
    110110    MOVQ_BFE(mm6); 
    111111    __asm __volatile( 
    112112        "lea        (%3, %3), %%"REG_a" \n\t" 
    113         ".balign 8                      \n\t" 
     113        BALIGN_8 
    114114        "1:                             \n\t" 
    115115        "movq   (%1), %%mm0             \n\t" 
    116116        "movq   1(%1), %%mm1            \n\t" 
     
    168168        "movq   %%mm5, 8(%3)            \n\t" 
    169169        "add    %5, %3                  \n\t" 
    170170        "decl   %0                      \n\t" 
    171         ".balign 8                      \n\t" 
     171        BALIGN_8 
    172172        "1:                             \n\t" 
    173173        "movq   (%1), %%mm0             \n\t" 
    174174        "movq   (%2), %%mm1             \n\t" 
     
    206206    __asm __volatile( 
    207207        "lea (%3, %3), %%"REG_a"        \n\t" 
    208208        "movq (%1), %%mm0               \n\t" 
    209         ".balign 8                      \n\t" 
     209        BALIGN_8 
    210210        "1:                             \n\t" 
    211211        "movq   (%1, %3), %%mm1         \n\t" 
    212212        "movq   (%1, %%"REG_a"),%%mm2   \n\t" 
     
    246246        "paddusw %%mm1, %%mm5           \n\t" 
    247247        "xor    %%"REG_a", %%"REG_a"    \n\t" 
    248248        "add    %3, %1                  \n\t" 
    249         ".balign 8                      \n\t" 
     249        BALIGN_8 
    250250        "1:                             \n\t" 
    251251        "movq   (%1, %%"REG_a"), %%mm0  \n\t" 
    252252        "movq   1(%1, %%"REG_a"), %%mm2 \n\t" 
     
    458458    __asm __volatile( 
    459459        "lea    (%3, %3), %%"REG_a"     \n\t" 
    460460        "movq   (%1), %%mm0             \n\t" 
    461         ".balign 8                      \n\t" 
     461        BALIGN_8 
    462462        "1:                             \n\t" 
    463463        "movq   (%1, %3), %%mm1         \n\t" 
    464464        "movq   (%1, %%"REG_a"), %%mm2  \n\t" 
     
    509509        "paddusw %%mm1, %%mm5           \n\t" 
    510510        "xor    %%"REG_a", %%"REG_a"    \n\t" 
    511511        "add    %3, %1                  \n\t" 
    512         ".balign 8                      \n\t" 
     512        BALIGN_8 
    513513        "1:                             \n\t" 
    514514        "movq   (%1, %%"REG_a"), %%mm0  \n\t" 
    515515        "movq   1(%1, %%"REG_a"), %%mm2 \n\t" 
  • libavcodec/i386/fdct_mmx.c

    diff -NaurbB --exclude=.svn ../ffmpeg/libavcodec/i386/fdct_mmx.c ./libavcodec/i386/fdct_mmx.c
    old new  
    350350 
    351351static always_inline void fdct_row_sse2(const int16_t *in, int16_t *out) 
    352352{ 
     353#if defined(__APPLE__) 
     354    // Apple 'as' has a different macro syntax than FSF GCC 'as' 
     355    asm volatile( 
     356        ".macro FDCT_ROW_SSE2_H1        \n\t" 
     357        "movq      $0(%0), %%xmm2       \n\t" 
     358        "movq      $0+8(%0), %%xmm0     \n\t" 
     359        "movdqa    $1+32(%1), %%xmm3    \n\t" 
     360        "movdqa    $1+48(%1), %%xmm7    \n\t" 
     361        "movdqa    $1(%1), %%xmm4       \n\t" 
     362        "movdqa    $1+16(%1), %%xmm5    \n\t" 
     363        ".endmacro                      \n\t" 
     364        ".macro FDCT_ROW_SSE2_H2        \n\t" 
     365        "movq      $0(%0), %%xmm2       \n\t" 
     366        "movq      $0+8(%0), %%xmm0     \n\t" 
     367        "movdqa    $1+32(%1), %%xmm3    \n\t" 
     368        "movdqa    $1+48(%1), %%xmm7    \n\t" 
     369        ".endmacro                      \n\t" 
     370        ".macro FDCT_ROW_SSE2           \n\t" 
     371        "movq      %%xmm2, %%xmm1       \n\t" 
     372        "pshuflw   $$0x27, %%xmm0, %%xmm0  \n\t" 
     373        "paddsw    %%xmm0, %%xmm1       \n\t" 
     374        "psubsw    %%xmm0, %%xmm2       \n\t" 
     375        "punpckldq %%xmm2, %%xmm1       \n\t" 
     376        "pshufd    $$0x78, %%xmm1, %%xmm2  \n\t" 
     377        "pmaddwd   %%xmm2, %%xmm3       \n\t" 
     378        "pmaddwd   %%xmm1, %%xmm7       \n\t" 
     379        "pmaddwd   %%xmm5, %%xmm2       \n\t" 
     380        "pmaddwd   %%xmm4, %%xmm1       \n\t" 
     381        "paddd     %%xmm7, %%xmm3       \n\t" 
     382        "paddd     %%xmm2, %%xmm1       \n\t" 
     383        "paddd     %%xmm6, %%xmm3       \n\t" 
     384        "paddd     %%xmm6, %%xmm1       \n\t" 
     385        "psrad     $%3, %%xmm3          \n\t" 
     386        "psrad     $%3, %%xmm1          \n\t" 
     387        "packssdw  %%xmm3, %%xmm1       \n\t" 
     388        "movdqa    %%xmm1, $0(%4)       \n\t" 
     389        ".endmacro                      \n\t" 
     390        "movdqa    (%2), %%xmm6         \n\t" 
     391        "FDCT_ROW_SSE2_H1 0,0           \n\t" 
     392        "FDCT_ROW_SSE2 0                \n\t" 
     393        "FDCT_ROW_SSE2_H2 64,0          \n\t" 
     394        "FDCT_ROW_SSE2 64               \n\t" 
     395 
     396        "FDCT_ROW_SSE2_H1 16,64         \n\t" 
     397        "FDCT_ROW_SSE2 16               \n\t" 
     398        "FDCT_ROW_SSE2_H2 112,64        \n\t" 
     399        "FDCT_ROW_SSE2 112              \n\t" 
     400 
     401        "FDCT_ROW_SSE2_H1 32,128        \n\t" 
     402        "FDCT_ROW_SSE2 32               \n\t" 
     403        "FDCT_ROW_SSE2_H2 96,128        \n\t" 
     404        "FDCT_ROW_SSE2 96               \n\t" 
     405 
     406        "FDCT_ROW_SSE2_H1 48,192        \n\t" 
     407        "FDCT_ROW_SSE2 48               \n\t" 
     408        "FDCT_ROW_SSE2_H2 80,192        \n\t" 
     409        "FDCT_ROW_SSE2 80               \n\t" 
     410        : 
     411        : "r" (in), "r" (tab_frw_01234567_sse2.tab_frw_01234567_sse2), "r" (fdct_r_row_sse2.fdct_r_row_sse2), "i" (SHIFT_FRW_ROW), "r" (out) 
     412    ); 
     413#else 
    353414    asm volatile( 
    354415        ".macro FDCT_ROW_SSE2_H1 i t    \n\t" 
    355416        "movq      \\i(%0), %%xmm2      \n\t" 
     
    408469        : 
    409470        : "r" (in), "r" (tab_frw_01234567_sse2.tab_frw_01234567_sse2), "r" (fdct_r_row_sse2.fdct_r_row_sse2), "i" (SHIFT_FRW_ROW), "r" (out) 
    410471    ); 
     472#endif 
    411473} 
    412474 
    413475static always_inline void fdct_row_mmx2(const int16_t *in, int16_t *out, const int16_t *table) 
  • libavcodec/i386/mmx.h

    diff -NaurbB --exclude=.svn ../ffmpeg/libavcodec/i386/mmx.h ./libavcodec/i386/mmx.h
    old new  
    2323#  define PTR_SIZE "4" 
    2424#endif 
    2525 
     26#if defined(__APPLE__) 
     27#  define BALIGN_8  ".align 3 \n\t" 
     28#  define BALIGN_16 ".align 4 \n\t" 
     29#else 
     30#  define BALIGN_8  ".balign 8 \n\t" 
     31#  define BALIGN_16 ".balign 16 \n\t" 
     32#endif 
     33 
    2634/* 
    2735 * The type of an value that fits in an MMX register (note that long 
    2836 * long constant values MUST be suffixed by LL and unsigned long long 
  • libavcodec/i386/motion_est_mmx.c

    diff -NaurbB --exclude=.svn ../ffmpeg/libavcodec/i386/motion_est_mmx.c ./libavcodec/i386/motion_est_mmx.c
    old new  
    2121 */ 
    2222#include "../dsputil.h" 
    2323#include "x86_cpu.h" 
     24#include "mmx.h" 
    2425 
    2526static const __attribute__ ((aligned(8))) uint64_t round_tab[3]={ 
    26270x0000000000000000ULL, 
     
    3434{ 
    3535    long len= -(stride*h); 
    3636    asm volatile( 
    37         ".balign 16                     \n\t" 
     37        BALIGN_16 
    3838        "1:                             \n\t" 
    3939        "movq (%1, %%"REG_a"), %%mm0    \n\t" 
    4040        "movq (%2, %%"REG_a"), %%mm2    \n\t" 
     
    7070{ 
    7171    long len= -(stride*h); 
    7272    asm volatile( 
    73         ".balign 16                     \n\t" 
     73        BALIGN_16 
    7474        "1:                             \n\t" 
    7575        "movq (%1, %%"REG_a"), %%mm0    \n\t" 
    7676        "movq (%2, %%"REG_a"), %%mm2    \n\t" 
     
    9292{ 
    9393    long len= -(stride*h); 
    9494    asm volatile( 
    95         ".balign 16                     \n\t" 
     95        BALIGN_16 
    9696        "1:                             \n\t" 
    9797        "movq (%1, %%"REG_a"), %%mm0    \n\t" 
    9898        "movq (%2, %%"REG_a"), %%mm2    \n\t" 
     
    118118{ //FIXME reuse src 
    119119    long len= -(stride*h); 
    120120    asm volatile( 
    121         ".balign 16                     \n\t" 
     121        BALIGN_16 
    122122        "movq "MANGLE(bone)", %%mm5     \n\t" 
    123123        "1:                             \n\t" 
    124124        "movq (%1, %%"REG_a"), %%mm0    \n\t" 
     
    155155{ 
    156156    long len= -(stride*h); 
    157157    asm volatile( 
    158         ".balign 16                     \n\t" 
     158        BALIGN_16 
    159159        "1:                             \n\t" 
    160160        "movq (%1, %%"REG_a"), %%mm0    \n\t" 
    161161        "movq (%2, %%"REG_a"), %%mm1    \n\t" 
     
    193193{ 
    194194    long len= -(stride*h); 
    195195    asm volatile( 
    196         ".balign 16                     \n\t" 
     196        BALIGN_16 
    197197        "1:                             \n\t" 
    198198        "movq (%1, %%"REG_a"), %%mm0    \n\t" 
    199199        "movq (%2, %%"REG_a"), %%mm1    \n\t" 
  • libavcodec/i386/mpegvideo_mmx.c

    diff -NaurbB --exclude=.svn ../ffmpeg/libavcodec/i386/mpegvideo_mmx.c ./libavcodec/i386/mpegvideo_mmx.c
    old new  
    2424#include "../mpegvideo.h" 
    2525#include "../avcodec.h" 
    2626#include "x86_cpu.h" 
     27#include "mmx.h" 
    2728 
    2829extern uint8_t zigzag_direct_noperm[64]; 
    2930extern uint16_t inv_zigzag_direct16[64]; 
     
    6666                "packssdw %%mm5, %%mm5          \n\t" 
    6767                "psubw %%mm5, %%mm7             \n\t" 
    6868                "pxor %%mm4, %%mm4              \n\t" 
    69                 ".balign 16                     \n\t" 
     69                BALIGN_16 
    7070                "1:                             \n\t" 
    7171                "movq (%0, %3), %%mm0           \n\t" 
    7272                "movq 8(%0, %3), %%mm1          \n\t" 
     
    129129                "packssdw %%mm5, %%mm5          \n\t" 
    130130                "psubw %%mm5, %%mm7             \n\t" 
    131131                "pxor %%mm4, %%mm4              \n\t" 
    132                 ".balign 16                     \n\t" 
     132                BALIGN_16 
    133133                "1:                             \n\t" 
    134134                "movq (%0, %3), %%mm0           \n\t" 
    135135                "movq 8(%0, %3), %%mm1          \n\t" 
     
    222222                "packssdw %%mm6, %%mm6          \n\t" 
    223223                "packssdw %%mm6, %%mm6          \n\t" 
    224224                "mov %3, %%"REG_a"              \n\t" 
    225                 ".balign 16                     \n\t" 
     225                BALIGN_16 
    226226                "1:                             \n\t" 
    227227                "movq (%0, %%"REG_a"), %%mm0    \n\t" 
    228228                "movq 8(%0, %%"REG_a"), %%mm1   \n\t" 
     
    285285                "packssdw %%mm6, %%mm6          \n\t" 
    286286                "packssdw %%mm6, %%mm6          \n\t" 
    287287                "mov %3, %%"REG_a"              \n\t" 
    288                 ".balign 16                     \n\t" 
     288                BALIGN_16 
    289289                "1:                             \n\t" 
    290290                "movq (%0, %%"REG_a"), %%mm0    \n\t" 
    291291                "movq 8(%0, %%"REG_a"), %%mm1   \n\t" 
     
    357357                "packssdw %%mm6, %%mm6          \n\t" 
    358358                "packssdw %%mm6, %%mm6          \n\t" 
    359359                "mov %3, %%"REG_a"              \n\t" 
    360                 ".balign 16                     \n\t" 
     360                BALIGN_16 
    361361                "1:                             \n\t" 
    362362                "movq (%0, %%"REG_a"), %%mm0    \n\t" 
    363363                "movq 8(%0, %%"REG_a"), %%mm1   \n\t" 
     
    418418                "packssdw %%mm6, %%mm6          \n\t" 
    419419                "packssdw %%mm6, %%mm6          \n\t" 
    420420                "mov %3, %%"REG_a"              \n\t" 
    421                 ".balign 16                     \n\t" 
     421                BALIGN_16 
    422422                "1:                             \n\t" 
    423423                "movq (%0, %%"REG_a"), %%mm0    \n\t" 
    424424                "movq 8(%0, %%"REG_a"), %%mm1   \n\t" 
  • libavcodec/i386/mpegvideo_mmx_template.c

    diff -NaurbB --exclude=.svn ../ffmpeg/libavcodec/i386/mpegvideo_mmx_template.c ./libavcodec/i386/mpegvideo_mmx_template.c
    old new  
    111111            "pxor %%mm6, %%mm6                  \n\t" 
    112112            "psubw (%3), %%mm6                  \n\t" // -bias[0] 
    113113            "mov $-128, %%"REG_a"               \n\t" 
    114             ".balign 16                         \n\t" 
     114            BALIGN_16 
    115115            "1:                                 \n\t" 
    116116            "pxor %%mm1, %%mm1                  \n\t" // 0 
    117117            "movq (%1, %%"REG_a"), %%mm0        \n\t" // block[i] 
     
    155155            "pxor %%mm7, %%mm7                  \n\t" // 0 
    156156            "pxor %%mm4, %%mm4                  \n\t" // 0 
    157157            "mov $-128, %%"REG_a"               \n\t" 
    158             ".balign 16                         \n\t" 
     158            BALIGN_16 
    159159            "1:                                 \n\t" 
    160160            "pxor %%mm1, %%mm1                  \n\t" // 0 
    161161            "movq (%1, %%"REG_a"), %%mm0        \n\t" // block[i] 
Note: See TracBrowser for help on using the repository browser.