libavcodec/i386/dsputil_mmx.c File Reference

#include "dsputil.h"
#include "dsputil_mmx.h"
#include "simple_idct.h"
#include "mpegvideo.h"
#include "x86_cpu.h"
#include "mmx.h"
#include "vp3dsp_mmx.h"
#include "vp3dsp_sse2.h"
#include "h263.h"
#include "dsputil_mmx_rnd.h"
#include "dsputil_mmx_avg.h"
#include "h264dsp_mmx.c"

Go to the source code of this file.

Defines

#define JUMPALIGN()   __asm __volatile (ASMALIGN(3)::)
#define MOVQ_ZERO(regd)   __asm __volatile ("pxor %%" #regd ", %%" #regd ::)
#define MOVQ_WONE(regd)
#define MOVQ_BFE(regd)
#define MOVQ_BONE(regd)   __asm __volatile ("movq %0, %%" #regd " \n\t" ::"m"(ff_bone))
#define MOVQ_WTWO(regd)   __asm __volatile ("movq %0, %%" #regd " \n\t" ::"m"(ff_wtwo))
#define PAVGB_MMX_NO_RND(rega, regb, regr, regfe)
#define PAVGB_MMX(rega, regb, regr, regfe)
#define PAVGBP_MMX_NO_RND(rega, regb, regr,regc, regd, regp)
#define PAVGBP_MMX(rega, regb, regr, regc, regd, regp)
#define DEF(x, y)   x ## _no_rnd_ ## y ##_mmx
#define SET_RND   MOVQ_WONE
#define PAVGBP(a, b, c, d, e, f)   PAVGBP_MMX_NO_RND(a, b, c, d, e, f)
#define PAVGB(a, b, c, e)   PAVGB_MMX_NO_RND(a, b, c, e)
#define DEF(x, y)   x ## _ ## y ##_mmx
#define SET_RND   MOVQ_WTWO
#define PAVGBP(a, b, c, d, e, f)   PAVGBP_MMX(a, b, c, d, e, f)
#define PAVGB(a, b, c, e)   PAVGB_MMX(a, b, c, e)
#define DEF(x)   x ## _3dnow
#define PAVGB   "pavgusb"
#define DEF(x)   x ## _mmx2
#define PAVGB   "pavgb"
#define put_no_rnd_pixels16_mmx   put_pixels16_mmx
#define put_no_rnd_pixels8_mmx   put_pixels8_mmx
#define put_pixels16_mmx2   put_pixels16_mmx
#define put_pixels8_mmx2   put_pixels8_mmx
#define put_pixels4_mmx2   put_pixels4_mmx
#define put_no_rnd_pixels16_mmx2   put_no_rnd_pixels16_mmx
#define put_no_rnd_pixels8_mmx2   put_no_rnd_pixels8_mmx
#define put_pixels16_3dnow   put_pixels16_mmx
#define put_pixels8_3dnow   put_pixels8_mmx
#define put_pixels4_3dnow   put_pixels4_mmx
#define put_no_rnd_pixels16_3dnow   put_no_rnd_pixels16_mmx
#define put_no_rnd_pixels8_3dnow   put_no_rnd_pixels8_mmx
#define H263_LOOP_FILTER
#define QPEL_V_LOW(m3, m4, m5, m6, pw_20, pw_3, rnd, in0, in1, in2, in7, out, OP)
#define QPEL_BASE(OPNAME, ROUNDER, RND, OP_MMX2, OP_3DNOW)
#define QPEL_OP(OPNAME, ROUNDER, RND, OP, MMX)
#define PUT_OP(a, b, temp, size)   "mov" #size " " #a ", " #b " \n\t"
#define AVG_3DNOW_OP(a, b, temp, size)
#define AVG_MMX2_OP(a, b, temp, size)
#define QPEL_2TAP_XY(OPNAME, SIZE, MMX, XY, HPEL)
#define QPEL_2TAP_L3(OPNAME, SIZE, MMX, XY, S0, S1, S2)
#define QPEL_2TAP(OPNAME, SIZE, MMX)
#define PREFETCH(name, op)
#define SET_HPEL_FUNCS(PFX, IDX, SIZE, CPU)
#define SET_QPEL_FUNCS(PFX, IDX, SIZE, CPU)

Functions

void ff_idct_xvid_mmx (short *block)
void ff_idct_xvid_mmx2 (short *block)
 DECLARE_ALIGNED_8 (const uint64_t, ff_bone)=0x0101010101010101ULL
 DECLARE_ALIGNED_8 (const uint64_t, ff_wtwo)=0x0002000200020002ULL
 DECLARE_ALIGNED_16 (const uint64_t, ff_pdw_80000000[2])
 DECLARE_ALIGNED_8 (const uint64_t, ff_pw_3)=0x0003000300030003ULL
 DECLARE_ALIGNED_8 (const uint64_t, ff_pw_4)=0x0004000400040004ULL
 DECLARE_ALIGNED_16 (const xmm_t, ff_pw_5)
 DECLARE_ALIGNED_8 (const uint64_t, ff_pw_8)=0x0008000800080008ULL
 DECLARE_ALIGNED_8 (const uint64_t, ff_pw_15)=0x000F000F000F000FULL
 DECLARE_ALIGNED_16 (const xmm_t, ff_pw_16)
 DECLARE_ALIGNED_8 (const uint64_t, ff_pw_20)=0x0014001400140014ULL
 DECLARE_ALIGNED_16 (const xmm_t, ff_pw_32)
 DECLARE_ALIGNED_8 (const uint64_t, ff_pw_42)=0x002A002A002A002AULL
 DECLARE_ALIGNED_8 (const uint64_t, ff_pw_64)=0x0040004000400040ULL
 DECLARE_ALIGNED_8 (const uint64_t, ff_pw_96)=0x0060006000600060ULL
 DECLARE_ALIGNED_16 (const uint64_t, ff_pw_128)=0x0080008000800080ULL
 DECLARE_ALIGNED_8 (const uint64_t, ff_pb_1)=0x0101010101010101ULL
 DECLARE_ALIGNED_8 (const uint64_t, ff_pb_3)=0x0303030303030303ULL
 DECLARE_ALIGNED_8 (const uint64_t, ff_pb_7)=0x0707070707070707ULL
 DECLARE_ALIGNED_8 (const uint64_t, ff_pb_3F)=0x3F3F3F3F3F3F3F3FULL
 DECLARE_ALIGNED_8 (const uint64_t, ff_pb_A1)=0xA1A1A1A1A1A1A1A1ULL
 DECLARE_ALIGNED_8 (const uint64_t, ff_pb_FC)=0xFCFCFCFCFCFCFCFCULL
 DECLARE_ALIGNED_16 (const double, ff_pd_1[2])
 DECLARE_ALIGNED_16 (const double, ff_pd_2[2])
void put_pixels_clamped_mmx (const DCTELEM *block, uint8_t *pixels, int line_size)
static DECLARE_ALIGNED_8 (const unsigned char, vector128[8])
void put_signed_pixels_clamped_mmx (const DCTELEM *block, uint8_t *pixels, int line_size)
void add_pixels_clamped_mmx (const DCTELEM *block, uint8_t *pixels, int line_size)
static void put_pixels4_mmx (uint8_t *block, const uint8_t *pixels, int line_size, int h)
static void put_pixels8_mmx (uint8_t *block, const uint8_t *pixels, int line_size, int h)
static void put_pixels16_mmx (uint8_t *block, const uint8_t *pixels, int line_size, int h)
static void put_pixels16_sse2 (uint8_t *block, const uint8_t *pixels, int line_size, int h)
static void avg_pixels16_sse2 (uint8_t *block, const uint8_t *pixels, int line_size, int h)
static void clear_blocks_mmx (DCTELEM *blocks)
static void add_bytes_mmx (uint8_t *dst, uint8_t *src, int w)
static void h263_v_loop_filter_mmx (uint8_t *src, int stride, int qscale)
static void transpose4x4 (uint8_t *dst, uint8_t *src, int dst_stride, int src_stride)
static void h263_h_loop_filter_mmx (uint8_t *src, int stride, int qscale)
static void gmc_mmx (uint8_t *dst, uint8_t *src, int stride, int h, int ox, int oy, int dxx, int dxy, int dyx, int dyy, int shift, int r, int width, int height)
void ff_cavsdsp_init_mmx2 (DSPContext *c, AVCodecContext *avctx)
void ff_put_cavs_qpel8_mc00_mmx2 (uint8_t *dst, uint8_t *src, int stride)
void ff_avg_cavs_qpel8_mc00_mmx2 (uint8_t *dst, uint8_t *src, int stride)
void ff_put_cavs_qpel16_mc00_mmx2 (uint8_t *dst, uint8_t *src, int stride)
void ff_avg_cavs_qpel16_mc00_mmx2 (uint8_t *dst, uint8_t *src, int stride)
void ff_flac_compute_autocorr_sse2 (const int32_t *data, int len, int lag, double *autoc)
void ff_vc1dsp_init_mmx (DSPContext *dsp, AVCodecContext *avctx)
void ff_put_vc1_mspel_mc00_mmx (uint8_t *dst, const uint8_t *src, int stride, int rnd)
void ff_mmx_idct (DCTELEM *block)
void ff_mmxext_idct (DCTELEM *block)
static void ff_idct_xvid_mmx_put (uint8_t *dest, int line_size, DCTELEM *block)
static void ff_idct_xvid_mmx_add (uint8_t *dest, int line_size, DCTELEM *block)
static void ff_idct_xvid_mmx2_put (uint8_t *dest, int line_size, DCTELEM *block)
static void ff_idct_xvid_mmx2_add (uint8_t *dest, int line_size, DCTELEM *block)
static void vorbis_inverse_coupling_3dnow (float *mag, float *ang, int blocksize)
static void vorbis_inverse_coupling_sse (float *mag, float *ang, int blocksize)
static void vector_fmul_3dnow (float *dst, const float *src, int len)
static void vector_fmul_sse (float *dst, const float *src, int len)
static void vector_fmul_reverse_3dnow2 (float *dst, const float *src0, const float *src1, int len)
static void vector_fmul_reverse_sse (float *dst, const float *src0, const float *src1, int len)
static void vector_fmul_add_add_3dnow (float *dst, const float *src0, const float *src1, const float *src2, int src3, int len, int step)
static void vector_fmul_add_add_sse (float *dst, const float *src0, const float *src1, const float *src2, int src3, int len, int step)
static void float_to_int16_3dnow (int16_t *dst, const float *src, int len)
static void float_to_int16_sse (int16_t *dst, const float *src, int len)
void ff_snow_horizontal_compose97i_sse2 (IDWTELEM *b, int width)
void ff_snow_horizontal_compose97i_mmx (IDWTELEM *b, int width)
void ff_snow_vertical_compose97i_sse2 (IDWTELEM *b0, IDWTELEM *b1, IDWTELEM *b2, IDWTELEM *b3, IDWTELEM *b4, IDWTELEM *b5, int width)
void ff_snow_vertical_compose97i_mmx (IDWTELEM *b0, IDWTELEM *b1, IDWTELEM *b2, IDWTELEM *b3, IDWTELEM *b4, IDWTELEM *b5, int width)
void ff_snow_inner_add_yblock_sse2 (const uint8_t *obmc, const int obmc_stride, uint8_t **block, int b_w, int b_h, int src_x, int src_y, int src_stride, slice_buffer *sb, int add, uint8_t *dst8)
void ff_snow_inner_add_yblock_mmx (const uint8_t *obmc, const int obmc_stride, uint8_t **block, int b_w, int b_h, int src_x, int src_y, int src_stride, slice_buffer *sb, int add, uint8_t *dst8)
void dsputil_init_mmx (DSPContext *c, AVCodecContext *avctx)

Variables

int mm_flags


Define Documentation

#define AVG_3DNOW_OP ( a,
b,
temp,
size   ) 

Value:

"mov" #size " " #b ", " #temp "   \n\t"\
"pavgusb " #temp ", " #a "        \n\t"\
"mov" #size " " #a ", " #b "      \n\t"

Definition at line 2578 of file dsputil_mmx.c.

#define AVG_MMX2_OP ( a,
b,
temp,
size   ) 

Value:

"mov" #size " " #b ", " #temp "   \n\t"\
"pavgb " #temp ", " #a "          \n\t"\
"mov" #size " " #a ", " #b "      \n\t"

Definition at line 2582 of file dsputil_mmx.c.

#define DEF (  )     x ## _mmx2

Definition at line 196 of file dsputil_mmx.c.

#define DEF (  )     x ## _3dnow

Definition at line 196 of file dsputil_mmx.c.

#define DEF ( x,
 )     x ## _ ## y ##_mmx

Definition at line 196 of file dsputil_mmx.c.

#define DEF ( x,
 )     x ## _no_rnd_ ## y ##_mmx

Definition at line 196 of file dsputil_mmx.c.

#define H263_LOOP_FILTER

Definition at line 608 of file dsputil_mmx.c.

Referenced by h263_h_loop_filter_mmx(), and h263_v_loop_filter_mmx().

 
#define JUMPALIGN (  )     __asm __volatile (ASMALIGN(3)::)

Definition at line 73 of file dsputil_mmx.c.

Referenced by pixels16(), pixels4(), and pixels8().

#define MOVQ_BFE ( regd   ) 

Value:

__asm __volatile ( \
    "pcmpeqd %%" #regd ", %%" #regd " \n\t"\
    "paddb %%" #regd ", %%" #regd " \n\t" ::)

Definition at line 81 of file dsputil_mmx.c.

Referenced by pixels16(), pixels16_l2(), pixels16_x2(), pixels4(), pixels8(), pixels8_l2(), pixels8_x2(), and pixels8_y2().

#define MOVQ_BONE ( regd   )     __asm __volatile ("movq %0, %%" #regd " \n\t" ::"m"(ff_bone))

#define MOVQ_WONE ( regd   ) 

Value:

__asm __volatile ( \
    "pcmpeqd %%" #regd ", %%" #regd " \n\t" \
    "psrlw $15, %%" #regd ::)

Definition at line 76 of file dsputil_mmx.c.

#define MOVQ_WTWO ( regd   )     __asm __volatile ("movq %0, %%" #regd " \n\t" ::"m"(ff_wtwo))

Definition at line 88 of file dsputil_mmx.c.

#define MOVQ_ZERO ( regd   )     __asm __volatile ("pxor %%" #regd ", %%" #regd ::)

Definition at line 74 of file dsputil_mmx.c.

Referenced by add_pixels_clamped_mmx(), and pixels8_xy2().

#define PAVGB   "pavgb"

Definition at line 199 of file dsputil_mmx.c.

#define PAVGB   "pavgusb"

Definition at line 199 of file dsputil_mmx.c.

#define PAVGB ( a,
b,
c,
 )     PAVGB_MMX(a, b, c, e)

Definition at line 199 of file dsputil_mmx.c.

#define PAVGB ( a,
b,
c,
 )     PAVGB_MMX_NO_RND(a, b, c, e)

#define PAVGB_MMX ( rega,
regb,
regr,
regfe   ) 

Value:

"movq " #rega ", " #regr "  \n\t"\
    "por  " #regb ", " #regr "  \n\t"\
    "pxor " #rega ", " #regb "  \n\t"\
    "pand " #regfe "," #regb "  \n\t"\
    "psrlq $1, " #regb "        \n\t"\
    "psubb " #regb ", " #regr " \n\t"

Definition at line 117 of file dsputil_mmx.c.

#define PAVGB_MMX_NO_RND ( rega,
regb,
regr,
regfe   ) 

Value:

"movq " #rega ", " #regr "  \n\t"\
    "pand " #regb ", " #regr "  \n\t"\
    "pxor " #rega ", " #regb "  \n\t"\
    "pand " #regfe "," #regb "  \n\t"\
    "psrlq $1, " #regb "        \n\t"\
    "paddb " #regb ", " #regr " \n\t"

Definition at line 109 of file dsputil_mmx.c.

#define PAVGBP ( a,
b,
c,
d,
e,
 )     PAVGBP_MMX(a, b, c, d, e, f)

Definition at line 172 of file dsputil_mmx.c.

#define PAVGBP ( a,
b,
c,
d,
e,
 )     PAVGBP_MMX_NO_RND(a, b, c, d, e, f)

Definition at line 172 of file dsputil_mmx.c.

Referenced by pixels16_l2(), pixels16_x2(), pixels8_l2(), pixels8_x2(), and pixels8_y2().

#define PAVGBP_MMX ( rega,
regb,
regr,
regc,
regd,
regp   ) 

Value:

"movq " #rega ", " #regr "  \n\t"\
    "movq " #regc ", " #regp "  \n\t"\
    "por  " #regb ", " #regr "  \n\t"\
    "por  " #regd ", " #regp "  \n\t"\
    "pxor " #rega ", " #regb "  \n\t"\
    "pxor " #regc ", " #regd "  \n\t"\
    "pand %%mm6, " #regb "      \n\t"\
    "pand %%mm6, " #regd "      \n\t"\
    "psrlq $1, " #regd "        \n\t"\
    "psrlq $1, " #regb "        \n\t"\
    "psubb " #regb ", " #regr " \n\t"\
    "psubb " #regd ", " #regp " \n\t"

Definition at line 140 of file dsputil_mmx.c.

#define PAVGBP_MMX_NO_RND ( rega,
regb,
regr,
regc,
regd,
regp   ) 

Value:

"movq " #rega ", " #regr "  \n\t"\
    "movq " #regc ", " #regp "  \n\t"\
    "pand " #regb ", " #regr "  \n\t"\
    "pand " #regd ", " #regp "  \n\t"\
    "pxor " #rega ", " #regb "  \n\t"\
    "pxor " #regc ", " #regd "  \n\t"\
    "pand %%mm6, " #regb "      \n\t"\
    "pand %%mm6, " #regd "      \n\t"\
    "psrlq $1, " #regb "        \n\t"\
    "psrlq $1, " #regd "        \n\t"\
    "paddb " #regb ", " #regr " \n\t"\
    "paddb " #regd ", " #regp " \n\t"

Definition at line 126 of file dsputil_mmx.c.

#define PREFETCH ( name,
op   ) 

#define put_no_rnd_pixels16_3dnow   put_no_rnd_pixels16_mmx

Definition at line 216 of file dsputil_mmx.c.

#define put_no_rnd_pixels16_mmx   put_pixels16_mmx

Definition at line 206 of file dsputil_mmx.c.

#define put_no_rnd_pixels16_mmx2   put_no_rnd_pixels16_mmx

Definition at line 211 of file dsputil_mmx.c.

#define put_no_rnd_pixels8_3dnow   put_no_rnd_pixels8_mmx

Definition at line 217 of file dsputil_mmx.c.

#define put_no_rnd_pixels8_mmx   put_pixels8_mmx

Definition at line 207 of file dsputil_mmx.c.

#define put_no_rnd_pixels8_mmx2   put_no_rnd_pixels8_mmx

Definition at line 212 of file dsputil_mmx.c.

#define PUT_OP ( a,
b,
temp,
size   )     "mov" #size " " #a ", " #b " \n\t"

Definition at line 2577 of file dsputil_mmx.c.

#define put_pixels16_3dnow   put_pixels16_mmx

Definition at line 213 of file dsputil_mmx.c.

#define put_pixels16_mmx2   put_pixels16_mmx

Definition at line 208 of file dsputil_mmx.c.

#define put_pixels4_3dnow   put_pixels4_mmx

Definition at line 215 of file dsputil_mmx.c.

#define put_pixels4_mmx2   put_pixels4_mmx

Definition at line 210 of file dsputil_mmx.c.

#define put_pixels8_3dnow   put_pixels8_mmx

Definition at line 214 of file dsputil_mmx.c.

#define put_pixels8_mmx2   put_pixels8_mmx

Definition at line 209 of file dsputil_mmx.c.

#define QPEL_2TAP ( OPNAME,
SIZE,
MMX   ) 

Value:

QPEL_2TAP_XY(OPNAME, SIZE, MMX, 20, _x2_ ## MMX)\
QPEL_2TAP_XY(OPNAME, SIZE, MMX, 02, _y2_ ## MMX)\
QPEL_2TAP_XY(OPNAME, SIZE, MMX, 22, _xy2_mmx)\
static const qpel_mc_func OPNAME ## 2tap_qpel ## SIZE ## _mc00_ ## MMX =\
                          OPNAME ## qpel ## SIZE ## _mc00_ ## MMX;\
static const qpel_mc_func OPNAME ## 2tap_qpel ## SIZE ## _mc21_ ## MMX =\
                          OPNAME ## 2tap_qpel ## SIZE ## _mc20_ ## MMX;\
static const qpel_mc_func OPNAME ## 2tap_qpel ## SIZE ## _mc12_ ## MMX =\
                          OPNAME ## 2tap_qpel ## SIZE ## _mc02_ ## MMX;\
static void OPNAME ## 2tap_qpel ## SIZE ## _mc32_ ## MMX(uint8_t *dst, uint8_t *src, int stride){\
    OPNAME ## pixels ## SIZE ## _y2_ ## MMX(dst, src+1, stride, SIZE);\
}\
static void OPNAME ## 2tap_qpel ## SIZE ## _mc23_ ## MMX(uint8_t *dst, uint8_t *src, int stride){\
    OPNAME ## pixels ## SIZE ## _x2_ ## MMX(dst, src+stride, stride, SIZE);\
}\
QPEL_2TAP_L3(OPNAME, SIZE, MMX, 10, 0,         1,       0)\
QPEL_2TAP_L3(OPNAME, SIZE, MMX, 30, 1,        -1,       0)\
QPEL_2TAP_L3(OPNAME, SIZE, MMX, 01, 0,         stride,  0)\
QPEL_2TAP_L3(OPNAME, SIZE, MMX, 03, stride,   -stride,  0)\
QPEL_2TAP_L3(OPNAME, SIZE, MMX, 11, 0,         stride,  1)\
QPEL_2TAP_L3(OPNAME, SIZE, MMX, 31, 1,         stride, -1)\
QPEL_2TAP_L3(OPNAME, SIZE, MMX, 13, stride,   -stride,  1)\
QPEL_2TAP_L3(OPNAME, SIZE, MMX, 33, stride+1, -stride, -1)\

Definition at line 2609 of file dsputil_mmx.c.

#define QPEL_2TAP_L3 ( OPNAME,
SIZE,
MMX,
XY,
S0,
S1,
S2   ) 

Value:

static void OPNAME ## 2tap_qpel ## SIZE ## _mc ## XY ## _ ## MMX(uint8_t *dst, uint8_t *src, int stride){\
    OPNAME ## 2tap_qpel ## SIZE ## _l3_ ## MMX(dst, src+S0, stride, SIZE, S1, S2);\
}

Definition at line 2604 of file dsputil_mmx.c.

#define QPEL_2TAP_XY ( OPNAME,
SIZE,
MMX,
XY,
HPEL   ) 

Value:

static void OPNAME ## 2tap_qpel ## SIZE ## _mc ## XY ## _ ## MMX(uint8_t *dst, uint8_t *src, int stride){\
    OPNAME ## pixels ## SIZE ## HPEL(dst, src, stride, SIZE);\
}

Definition at line 2600 of file dsputil_mmx.c.

#define QPEL_BASE ( OPNAME,
ROUNDER,
RND,
OP_MMX2,
OP_3DNOW   ) 

Definition at line 1949 of file dsputil_mmx.c.

#define QPEL_OP ( OPNAME,
ROUNDER,
RND,
OP,
MMX   ) 

Definition at line 2214 of file dsputil_mmx.c.

#define QPEL_V_LOW ( m3,
m4,
m5,
m6,
pw_20,
pw_3,
rnd,
in0,
in1,
in2,
in7,
out,
OP   ) 

Value:

"paddw " #m4 ", " #m3 "           \n\t" /* x1 */\
        "movq "MANGLE(ff_pw_20)", %%mm4   \n\t" /* 20 */\
        "pmullw " #m3 ", %%mm4            \n\t" /* 20x1 */\
        "movq "#in7", " #m3 "             \n\t" /* d */\
        "movq "#in0", %%mm5               \n\t" /* D */\
        "paddw " #m3 ", %%mm5             \n\t" /* x4 */\
        "psubw %%mm5, %%mm4               \n\t" /* 20x1 - x4 */\
        "movq "#in1", %%mm5               \n\t" /* C */\
        "movq "#in2", %%mm6               \n\t" /* B */\
        "paddw " #m6 ", %%mm5             \n\t" /* x3 */\
        "paddw " #m5 ", %%mm6             \n\t" /* x2 */\
        "paddw %%mm6, %%mm6               \n\t" /* 2x2 */\
        "psubw %%mm6, %%mm5               \n\t" /* -2x2 + x3 */\
        "pmullw "MANGLE(ff_pw_3)", %%mm5  \n\t" /* -6x2 + 3x3 */\
        "paddw " #rnd ", %%mm4            \n\t" /* x2 */\
        "paddw %%mm4, %%mm5               \n\t" /* 20x1 - 6x2 + 3x3 - x4 */\
        "psraw $5, %%mm5                  \n\t"\
        "packuswb %%mm5, %%mm5            \n\t"\
        OP(%%mm5, out, %%mm7, d)

Definition at line 1928 of file dsputil_mmx.c.

#define SET_HPEL_FUNCS ( PFX,
IDX,
SIZE,
CPU   ) 

Value:

c->PFX ## _pixels_tab[IDX][0] = PFX ## _pixels ## SIZE ## _ ## CPU; \
        c->PFX ## _pixels_tab[IDX][1] = PFX ## _pixels ## SIZE ## _x2_ ## CPU; \
        c->PFX ## _pixels_tab[IDX][2] = PFX ## _pixels ## SIZE ## _y2_ ## CPU; \
        c->PFX ## _pixels_tab[IDX][3] = PFX ## _pixels ## SIZE ## _xy2_ ## CPU

Referenced by dsputil_init_mmx().

#define SET_QPEL_FUNCS ( PFX,
IDX,
SIZE,
CPU   ) 

Value:

c->PFX ## _pixels_tab[IDX][ 0] = PFX ## SIZE ## _mc00_ ## CPU; \
            c->PFX ## _pixels_tab[IDX][ 1] = PFX ## SIZE ## _mc10_ ## CPU; \
            c->PFX ## _pixels_tab[IDX][ 2] = PFX ## SIZE ## _mc20_ ## CPU; \
            c->PFX ## _pixels_tab[IDX][ 3] = PFX ## SIZE ## _mc30_ ## CPU; \
            c->PFX ## _pixels_tab[IDX][ 4] = PFX ## SIZE ## _mc01_ ## CPU; \
            c->PFX ## _pixels_tab[IDX][ 5] = PFX ## SIZE ## _mc11_ ## CPU; \
            c->PFX ## _pixels_tab[IDX][ 6] = PFX ## SIZE ## _mc21_ ## CPU; \
            c->PFX ## _pixels_tab[IDX][ 7] = PFX ## SIZE ## _mc31_ ## CPU; \
            c->PFX ## _pixels_tab[IDX][ 8] = PFX ## SIZE ## _mc02_ ## CPU; \
            c->PFX ## _pixels_tab[IDX][ 9] = PFX ## SIZE ## _mc12_ ## CPU; \
            c->PFX ## _pixels_tab[IDX][10] = PFX ## SIZE ## _mc22_ ## CPU; \
            c->PFX ## _pixels_tab[IDX][11] = PFX ## SIZE ## _mc32_ ## CPU; \
            c->PFX ## _pixels_tab[IDX][12] = PFX ## SIZE ## _mc03_ ## CPU; \
            c->PFX ## _pixels_tab[IDX][13] = PFX ## SIZE ## _mc13_ ## CPU; \
            c->PFX ## _pixels_tab[IDX][14] = PFX ## SIZE ## _mc23_ ## CPU; \
            c->PFX ## _pixels_tab[IDX][15] = PFX ## SIZE ## _mc33_ ## CPU

Referenced by dsputil_init_mmx().

#define SET_RND   MOVQ_WTWO

Definition at line 171 of file dsputil_mmx.c.

#define SET_RND   MOVQ_WONE

Definition at line 171 of file dsputil_mmx.c.


Function Documentation

static void add_bytes_mmx ( uint8_t dst,
uint8_t src,
int  w 
) [static]

Definition at line 586 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

void add_pixels_clamped_mmx ( const DCTELEM block,
uint8_t pixels,
int  line_size 
)

static void avg_pixels16_sse2 ( uint8_t block,
const uint8_t pixels,
int  line_size,
int  h 
) [static]

Definition at line 503 of file dsputil_mmx.c.

static void clear_blocks_mmx ( DCTELEM blocks  )  [static]

Definition at line 529 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

DECLARE_ALIGNED_16 ( const   double,
ff_pd_2  [2] 
)

DECLARE_ALIGNED_16 ( const   double,
ff_pd_1  [2] 
)

DECLARE_ALIGNED_16 ( const   uint64_t,
ff_pw_128   
) [pure virtual]

DECLARE_ALIGNED_16 ( const   xmm_t,
ff_pw_32   
)

DECLARE_ALIGNED_16 ( const   xmm_t,
ff_pw_16   
)

DECLARE_ALIGNED_16 ( const   xmm_t,
ff_pw_5   
)

DECLARE_ALIGNED_16 ( const   uint64_t,
ff_pdw_80000000  [2] 
)

static DECLARE_ALIGNED_8 ( const unsigned  char,
vector128  [8] 
) [static]

DECLARE_ALIGNED_8 ( const   uint64_t,
ff_pb_FC   
) [pure virtual]

DECLARE_ALIGNED_8 ( const   uint64_t,
ff_pb_A1   
) [pure virtual]

DECLARE_ALIGNED_8 ( const   uint64_t,
ff_pb_3F   
) [pure virtual]

DECLARE_ALIGNED_8 ( const   uint64_t,
ff_pb_7   
) [pure virtual]

DECLARE_ALIGNED_8 ( const   uint64_t,
ff_pb_3   
) [pure virtual]

DECLARE_ALIGNED_8 ( const   uint64_t,
ff_pb_1   
) [pure virtual]

DECLARE_ALIGNED_8 ( const   uint64_t,
ff_pw_96   
) [pure virtual]

DECLARE_ALIGNED_8 ( const   uint64_t,
ff_pw_64   
) [pure virtual]

DECLARE_ALIGNED_8 ( const   uint64_t,
ff_pw_42   
) [pure virtual]

DECLARE_ALIGNED_8 ( const   uint64_t,
ff_pw_20   
) [pure virtual]

DECLARE_ALIGNED_8 ( const   uint64_t,
ff_pw_15   
) [pure virtual]

DECLARE_ALIGNED_8 ( const   uint64_t,
ff_pw_8   
) [pure virtual]

DECLARE_ALIGNED_8 ( const   uint64_t,
ff_pw_4   
) [pure virtual]

DECLARE_ALIGNED_8 ( const   uint64_t,
ff_pw_3   
) [pure virtual]

DECLARE_ALIGNED_8 ( const   uint64_t,
ff_wtwo   
) [pure virtual]

DECLARE_ALIGNED_8 ( const   uint64_t,
ff_bone   
) [pure virtual]

void dsputil_init_mmx ( DSPContext c,
AVCodecContext avctx 
)

Definition at line 3199 of file dsputil_mmx.c.

Referenced by dsputil_init().

void ff_avg_cavs_qpel16_mc00_mmx2 ( uint8_t dst,
uint8_t src,
int  stride 
)

Definition at line 2858 of file dsputil_mmx.c.

void ff_avg_cavs_qpel8_mc00_mmx2 ( uint8_t dst,
uint8_t src,
int  stride 
)

Definition at line 2852 of file dsputil_mmx.c.

void ff_cavsdsp_init_mmx2 ( DSPContext c,
AVCodecContext avctx 
)

Definition at line 466 of file cavsdsp_mmx.c.

Referenced by dsputil_init_mmx().

void ff_flac_compute_autocorr_sse2 ( const int32_t *  data,
int  len,
int  lag,
double *  autoc 
)

Definition at line 68 of file flacdsp_mmx.c.

Referenced by dsputil_init_mmx().

void ff_idct_xvid_mmx ( short *  block  ) 

Definition at line 487 of file idct_mmx_xvid.c.

void ff_idct_xvid_mmx2 ( short *  block  ) 

Definition at line 510 of file idct_mmx_xvid.c.

static void ff_idct_xvid_mmx2_add ( uint8_t dest,
int  line_size,
DCTELEM block 
) [static]

Definition at line 2916 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

static void ff_idct_xvid_mmx2_put ( uint8_t dest,
int  line_size,
DCTELEM block 
) [static]

Definition at line 2911 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

static void ff_idct_xvid_mmx_add ( uint8_t dest,
int  line_size,
DCTELEM block 
) [static]

Definition at line 2906 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

static void ff_idct_xvid_mmx_put ( uint8_t dest,
int  line_size,
DCTELEM block 
) [static]

Definition at line 2901 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

void ff_mmx_idct ( DCTELEM block  ) 

void ff_mmxext_idct ( DCTELEM block  ) 

void ff_put_cavs_qpel16_mc00_mmx2 ( uint8_t dst,
uint8_t src,
int  stride 
)

Definition at line 2855 of file dsputil_mmx.c.

void ff_put_cavs_qpel8_mc00_mmx2 ( uint8_t dst,
uint8_t src,
int  stride 
)

Definition at line 2849 of file dsputil_mmx.c.

void ff_put_vc1_mspel_mc00_mmx ( uint8_t dst,
const uint8_t src,
int  stride,
int  rnd 
)

Definition at line 2869 of file dsputil_mmx.c.

Referenced by ff_vc1dsp_init_mmx().

void ff_snow_horizontal_compose97i_mmx ( IDWTELEM b,
int  width 
)

Definition at line 215 of file snowdsp_mmx.c.

Referenced by dsputil_init_mmx().

void ff_snow_horizontal_compose97i_sse2 ( IDWTELEM b,
int  width 
)

Definition at line 26 of file snowdsp_mmx.c.

Referenced by dsputil_init_mmx().

void ff_snow_inner_add_yblock_mmx ( const uint8_t obmc,
const int  obmc_stride,
uint8_t **  block,
int  b_w,
int  b_h,
int  src_x,
int  src_y,
int  src_stride,
slice_buffer sb,
int  add,
uint8_t dst8 
)

Definition at line 863 of file snowdsp_mmx.c.

Referenced by dsputil_init_mmx().

void ff_snow_inner_add_yblock_sse2 ( const uint8_t obmc,
const int  obmc_stride,
uint8_t **  block,
int  b_w,
int  b_h,
int  src_x,
int  src_y,
int  src_stride,
slice_buffer sb,
int  add,
uint8_t dst8 
)

Definition at line 849 of file snowdsp_mmx.c.

Referenced by dsputil_init_mmx().

void ff_snow_vertical_compose97i_mmx ( IDWTELEM b0,
IDWTELEM b1,
IDWTELEM b2,
IDWTELEM b3,
IDWTELEM b4,
IDWTELEM b5,
int  width 
)

Referenced by dsputil_init_mmx().

void ff_snow_vertical_compose97i_sse2 ( IDWTELEM b0,
IDWTELEM b1,
IDWTELEM b2,
IDWTELEM b3,
IDWTELEM b4,
IDWTELEM b5,
int  width 
)

Referenced by dsputil_init_mmx().

void ff_vc1dsp_init_mmx ( DSPContext dsp,
AVCodecContext avctx 
)

Definition at line 470 of file vc1dsp_mmx.c.

Referenced by dsputil_init_mmx().

static void float_to_int16_3dnow ( int16_t *  dst,
const float *  src,
int  len 
) [static]

Definition at line 3160 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

static void float_to_int16_sse ( int16_t *  dst,
const float *  src,
int  len 
) [static]

Definition at line 3175 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

static void gmc_mmx ( uint8_t dst,
uint8_t src,
int  stride,
int  h,
int  ox,
int  oy,
int  dxx,
int  dxy,
int  dyx,
int  dyy,
int  shift,
int  r,
int  width,
int  height 
) [static]

Definition at line 2648 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

static void h263_h_loop_filter_mmx ( uint8_t src,
int  stride,
int  qscale 
) [static]

Definition at line 729 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

static void h263_v_loop_filter_mmx ( uint8_t src,
int  stride,
int  qscale 
) [static]

Definition at line 679 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

static void put_pixels16_mmx ( uint8_t block,
const uint8_t pixels,
int  line_size,
int  h 
) [static]

Definition at line 447 of file dsputil_mmx.c.

Referenced by ff_put_cavs_qpel16_mc00_mmx2().

static void put_pixels16_sse2 ( uint8_t block,
const uint8_t pixels,
int  line_size,
int  h 
) [static]

Definition at line 481 of file dsputil_mmx.c.

static void put_pixels4_mmx ( uint8_t block,
const uint8_t pixels,
int  line_size,
int  h 
) [static]

Definition at line 395 of file dsputil_mmx.c.

static void put_pixels8_mmx ( uint8_t block,
const uint8_t pixels,
int  line_size,
int  h 
) [static]

Definition at line 421 of file dsputil_mmx.c.

Referenced by ff_put_cavs_qpel8_mc00_mmx2(), and ff_put_vc1_mspel_mc00_mmx().

void put_pixels_clamped_mmx ( const DCTELEM block,
uint8_t pixels,
int  line_size 
)

void put_signed_pixels_clamped_mmx ( const DCTELEM block,
uint8_t pixels,
int  line_size 
)

Definition at line 339 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx(), ff_vp3_idct_put_mmx(), and ff_vp3_idct_put_sse2().

static void transpose4x4 ( uint8_t dst,
uint8_t src,
int  dst_stride,
int  src_stride 
) [inline, static]

static void vector_fmul_3dnow ( float *  dst,
const float *  src,
int  len 
) [static]

Definition at line 2980 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

static void vector_fmul_add_add_3dnow ( float *  dst,
const float *  src0,
const float *  src1,
const float *  src2,
int  src3,
int  len,
int  step 
) [static]

Definition at line 3054 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

static void vector_fmul_add_add_sse ( float *  dst,
const float *  src0,
const float *  src1,
const float *  src2,
int  src3,
int  len,
int  step 
) [static]

Definition at line 3103 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

static void vector_fmul_reverse_3dnow2 ( float *  dst,
const float *  src0,
const float *  src1,
int  len 
) [static]

Definition at line 3016 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

static void vector_fmul_reverse_sse ( float *  dst,
const float *  src0,
const float *  src1,
int  len 
) [static]

Definition at line 3034 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

static void vector_fmul_sse ( float *  dst,
const float *  src,
int  len 
) [static]

Definition at line 2998 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

static void vorbis_inverse_coupling_3dnow ( float *  mag,
float *  ang,
int  blocksize 
) [static]

Definition at line 2922 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

static void vorbis_inverse_coupling_sse ( float *  mag,
float *  ang,
int  blocksize 
) [static]

Definition at line 2949 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().


Variable Documentation

int mm_flags

Definition at line 41 of file dsputil_mmx.c.


Generated on Fri Apr 23 15:11:59 2010 for ffmpeg by  doxygen 1.5.6