libavcodec/x86/fdct_mmx.c File Reference

#include "libavutil/common.h"
#include "libavutil/x86_cpu.h"
#include "libavcodec/dsputil.h"

Go to the source code of this file.

Defines

#define BITS_FRW_ACC   3
#define SHIFT_FRW_COL   BITS_FRW_ACC
#define SHIFT_FRW_ROW   (BITS_FRW_ACC + 17 - 3)
#define RND_FRW_ROW   (1 << (SHIFT_FRW_ROW-1))
#define X8(x)   x,x,x,x,x,x,x,x
#define TABLE_SSE2
#define C1   22725
#define C2   21407
#define C3   19266
#define C4   16384
#define C5   12873
#define C6   8867
#define C7   4520
#define C1   31521
#define C2   29692
#define C3   26722
#define C4   22725
#define C5   17855
#define C6   12299
#define C7   6270
#define C1   29692
#define C2   27969
#define C3   25172
#define C4   21407
#define C5   16819
#define C6   11585
#define C7   5906
#define C1   26722
#define C2   25172
#define C3   22654
#define C4   19266
#define C5   15137
#define C6   10426
#define C7   5315
#define C1   22725
#define C2   21407
#define C3   19266
#define C4   16384
#define C5   12873
#define C6   8867
#define C7   4520
#define C1   26722
#define C2   25172
#define C3   22654
#define C4   19266
#define C5   15137
#define C6   10426
#define C7   5315
#define C1   29692
#define C2   27969
#define C3   25172
#define C4   21407
#define C5   16819
#define C6   11585
#define C7   5906
#define C1   31521
#define C2   29692
#define C3   26722
#define C4   22725
#define C5   17855
#define C6   12299
#define C7   6270
#define S(s)   AV_TOSTRING(s)
#define FDCT_COL(cpu, mm, mov)
#define FDCT_ROW_SSE2_H1(i, t)
#define FDCT_ROW_SSE2_H2(i, t)
#define FDCT_ROW_SSE2(i)

Functions

static av_always_inline void fdct_row_sse2 (const int16_t *in, int16_t *out)
static av_always_inline void fdct_row_mmx2 (const int16_t *in, int16_t *out, const int16_t *table)
static av_always_inline void fdct_row_mmx (const int16_t *in, int16_t *out, const int16_t *table)
void ff_fdct_mmx (int16_t *block)
void ff_fdct_mmx2 (int16_t *block)
void ff_fdct_sse2 (int16_t *block)

Variables

static const int16_t fdct_tg_all_16 [24]
static const int16_t ocos_4_16 [8]
static const int16_t fdct_one_corr [8] = { X8(1) }
static const int32_t fdct_r_row [2] = {RND_FRW_ROW, RND_FRW_ROW }
static const int16_t tab_frw_01234567 []


Define Documentation

#define BITS_FRW_ACC   3

Definition at line 48 of file fdct_mmx.c.

#define C1   31521

#define C1   29692

#define C1   26722

#define C1   22725

#define C1   26722

#define C1   29692

#define C1   31521

#define C1   22725

#define C2   29692

#define C2   27969

#define C2   25172

#define C2   21407

#define C2   25172

#define C2   27969

#define C2   29692

#define C2   21407

#define C3   26722

#define C3   25172

#define C3   22654

#define C3   19266

#define C3   22654

#define C3   25172

#define C3   26722

#define C3   19266

#define C4   22725

#define C4   21407

#define C4   19266

#define C4   16384

#define C4   19266

#define C4   21407

#define C4   22725

#define C4   16384

#define C5   17855

#define C5   16819

#define C5   15137

#define C5   12873

#define C5   15137

#define C5   16819

#define C5   17855

#define C5   12873

#define C6   12299

#define C6   11585

#define C6   10426

#define C6   8867

#define C6   10426

#define C6   11585

#define C6   12299

#define C6   8867

#define C7   6270

#define C7   5906

#define C7   5315

#define C7   4520

#define C7   5315

#define C7   5906

#define C7   6270

#define C7   4520

#define FDCT_COL ( cpu,
mm,
mov   ) 

Definition at line 289 of file fdct_mmx.c.

#define FDCT_ROW_SSE2 (  ) 

Value:

"movq      %%xmm2, %%xmm1       \n\t" \
        "pshuflw   $27, %%xmm0, %%xmm0  \n\t" \
        "paddsw    %%xmm0, %%xmm1       \n\t" \
        "psubsw    %%xmm0, %%xmm2       \n\t" \
        "punpckldq %%xmm2, %%xmm1       \n\t" \
        "pshufd    $78, %%xmm1, %%xmm2  \n\t" \
        "pmaddwd   %%xmm2, %%xmm3       \n\t" \
        "pmaddwd   %%xmm1, %%xmm7       \n\t" \
        "pmaddwd   %%xmm5, %%xmm2       \n\t" \
        "pmaddwd   %%xmm4, %%xmm1       \n\t" \
        "paddd     %%xmm7, %%xmm3       \n\t" \
        "paddd     %%xmm2, %%xmm1       \n\t" \
        "paddd     %%xmm6, %%xmm3       \n\t" \
        "paddd     %%xmm6, %%xmm1       \n\t" \
        "psrad     %3, %%xmm3           \n\t" \
        "psrad     %3, %%xmm1           \n\t" \
        "packssdw  %%xmm3, %%xmm1       \n\t" \
        "movdqa    %%xmm1, " #i "(%4)   \n\t"

Referenced by fdct_row_sse2().

#define FDCT_ROW_SSE2_H1 ( i,
t   ) 

Value:

"movq      " #i "(%0), %%xmm2      \n\t" \
        "movq      " #i "+8(%0), %%xmm0    \n\t" \
        "movdqa    " #t "+32(%1), %%xmm3   \n\t" \
        "movdqa    " #t "+48(%1), %%xmm7   \n\t" \
        "movdqa    " #t "(%1), %%xmm4      \n\t" \
        "movdqa    " #t "+16(%1), %%xmm5   \n\t"

Referenced by fdct_row_sse2().

#define FDCT_ROW_SSE2_H2 ( i,
t   ) 

Value:

"movq      " #i "(%0), %%xmm2      \n\t" \
        "movq      " #i "+8(%0), %%xmm0    \n\t" \
        "movdqa    " #t "+32(%1), %%xmm3   \n\t" \
        "movdqa    " #t "+48(%1), %%xmm7   \n\t"

Referenced by fdct_row_sse2().

#define RND_FRW_ROW   (1 << (SHIFT_FRW_ROW-1))

Definition at line 51 of file fdct_mmx.c.

#define S (  )     AV_TOSTRING(s)

Definition at line 287 of file fdct_mmx.c.

#define SHIFT_FRW_COL   BITS_FRW_ACC

Definition at line 49 of file fdct_mmx.c.

#define SHIFT_FRW_ROW   (BITS_FRW_ACC + 17 - 3)

Definition at line 50 of file fdct_mmx.c.

Referenced by fdct_row_mmx(), fdct_row_mmx2(), and fdct_row_sse2().

#define TABLE_SSE2

Value:

C4,  C4,  C1,  C3, -C6, -C2, -C1, -C5, \
                   C4,  C4,  C5,  C7,  C2,  C6,  C3, -C7, \
                  -C4,  C4,  C7,  C3,  C6, -C2,  C7, -C5, \
                   C4, -C4,  C5, -C1,  C2, -C6,  C3, -C1,

#define X8 (  )     x,x,x,x,x,x,x,x

Definition at line 54 of file fdct_mmx.c.


Function Documentation

static av_always_inline void fdct_row_mmx ( const int16_t in,
int16_t out,
const int16_t table 
) [static]

Definition at line 487 of file fdct_mmx.c.

Referenced by ff_fdct_mmx().

static av_always_inline void fdct_row_mmx2 ( const int16_t in,
int16_t out,
const int16_t table 
) [static]

Definition at line 441 of file fdct_mmx.c.

Referenced by ff_fdct_mmx2().

static av_always_inline void fdct_row_sse2 ( const int16_t in,
int16_t out 
) [static]

Definition at line 376 of file fdct_mmx.c.

Referenced by ff_fdct_sse2().

void ff_fdct_mmx ( int16_t block  ) 

Definition at line 538 of file fdct_mmx.c.

void ff_fdct_mmx2 ( int16_t block  ) 

Definition at line 556 of file fdct_mmx.c.

void ff_fdct_sse2 ( int16_t block  ) 

Definition at line 574 of file fdct_mmx.c.


Variable Documentation

const int16_t fdct_one_corr[8] = { X8(1) } [static]

Definition at line 67 of file fdct_mmx.c.

const int32_t fdct_r_row[2] = {RND_FRW_ROW, RND_FRW_ROW } [static]

Definition at line 69 of file fdct_mmx.c.

Referenced by fdct_row_mmx(), and fdct_row_mmx2().

static { ... } fdct_r_row_sse2

Definition at line 73 of file fdct_mmx.c.

Referenced by fdct_row_sse2().

const int16_t fdct_tg_all_16[24] [static]

Initial value:

 {
    X8(13036),  
    X8(27146),  
    X8(-21746)  
}

Definition at line 57 of file fdct_mmx.c.

const int16_t ocos_4_16[8] [static]

Initial value:

 {
    X8(23170)   
}

Definition at line 63 of file fdct_mmx.c.

const int16_t tab_frw_01234567[] [static]

Definition at line 80 of file fdct_mmx.c.

Referenced by ff_fdct_mmx(), and ff_fdct_mmx2().

static { ... } tab_frw_01234567_sse2

Definition at line 156 of file fdct_mmx.c.

Referenced by fdct_row_sse2().


Generated on Fri Oct 26 02:46:11 2012 for FFmpeg by  doxygen 1.5.8