libavcodec/x86/dsputil_mmx.c File Reference

#include "libavutil/cpu.h"
#include "libavutil/x86_cpu.h"
#include "libavcodec/dsputil.h"
#include "libavcodec/h264dsp.h"
#include "libavcodec/mpegvideo.h"
#include "libavcodec/simple_idct.h"
#include "libavcodec/ac3dec.h"
#include "dsputil_mmx.h"
#include "idct_xvid.h"
#include "diracdsp_mmx.h"
#include "dsputil_mmx_rnd_template.c"
#include "dsputil_mmx_avg_template.c"
#include "h264_qpel_mmx.c"

Go to the source code of this file.

Defines

#define JUMPALIGN()   __asm__ volatile (".p2align 3"::)
#define MOVQ_ZERO(regd)   __asm__ volatile ("pxor %%"#regd", %%"#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 OP_AVG(a, b, c, e)   PAVGB_MMX(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 OP_AVG   PAVGB
#define DEF(x)   x ## _mmx2
#define PAVGB   "pavgb"
#define OP_AVG   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 put_signed_pixels_clamped_mmx_half(off)
#define CLEAR_BLOCKS(name, n)
#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 CHROMA_MC(OP, NUM, DEPTH, OPT)
#define IF1(x)   x
#define IF0(x)
#define MIX5(mono, stereo)
#define MIX_MISC(stereo)
#define SET_QPEL_FUNCS(PFX, IDX, SIZE, CPU, PREFIX)
#define SET_HPEL_FUNCS(PFX, IDX, SIZE, CPU)
#define H264_QPEL_FUNCS(x, y, CPU)
#define H264_QPEL_FUNCS_10(x, y, CPU)

Typedefs

typedef void emulated_edge_mc_func (uint8_t *dst, const uint8_t *src, int linesize, int block_w, int block_h, int src_x, int src_y, int w, int h)

Functions

void ff_put_pixels_clamped_mmx (const DCTELEM *block, uint8_t *pixels, int line_size)
void ff_put_signed_pixels_clamped_mmx (const DCTELEM *block, uint8_t *pixels, int line_size)
void ff_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_block_sse (DCTELEM *block)
static void clear_blocks_sse (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 h263_h_loop_filter_mmx (uint8_t *src, int stride, int qscale)
static void draw_edges_mmx (uint8_t *buf, int wrap, int width, int height, int w, int h, int sides)
void ff_put_rv40_qpel8_mc33_mmx (uint8_t *dst, uint8_t *src, int stride)
void ff_put_rv40_qpel16_mc33_mmx (uint8_t *dst, uint8_t *src, int stride)
void ff_avg_rv40_qpel8_mc33_mmx (uint8_t *dst, uint8_t *src, int stride)
void ff_avg_rv40_qpel16_mc33_mmx (uint8_t *dst, uint8_t *src, int stride)
static av_always_inline void gmc (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, emulated_edge_mc_func *emu_edge_fn)
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_put_h264_chroma_mc8_mmx_rnd (uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
void ff_avg_h264_chroma_mc8_mmx2_rnd (uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
void ff_avg_h264_chroma_mc8_3dnow_rnd (uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
void ff_put_h264_chroma_mc4_mmx (uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
void ff_avg_h264_chroma_mc4_mmx2 (uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
void ff_avg_h264_chroma_mc4_3dnow (uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
void ff_put_h264_chroma_mc2_mmx2 (uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
void ff_avg_h264_chroma_mc2_mmx2 (uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
void ff_put_h264_chroma_mc8_ssse3_rnd (uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
void ff_put_h264_chroma_mc4_ssse3 (uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
void ff_avg_h264_chroma_mc8_ssse3_rnd (uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
void ff_avg_h264_chroma_mc4_ssse3 (uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
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_put_vc1_mspel_mc00_mmx (uint8_t *dst, const uint8_t *src, int stride, int rnd)
void ff_avg_vc1_mspel_mc00_mmx2 (uint8_t *dst, const uint8_t *src, int stride, int rnd)
static void put_vp_no_rnd_pixels8_l2_mmx (uint8_t *dst, const uint8_t *a, const uint8_t *b, int stride, int h)
static void put_vp_no_rnd_pixels16_l2_mmx (uint8_t *dst, const uint8_t *a, const uint8_t *b, int stride, int h)
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 ac3_downmix_sse (float(*samples)[256], float(*matrix)[2], int out_ch, int in_ch, int len)
static void vector_clipf_sse (float *dst, const float *src, float min, float max, int len)
void ff_vp3_idct_mmx (int16_t *input_data)
void ff_vp3_idct_put_mmx (uint8_t *dest, int line_size, DCTELEM *block)
void ff_vp3_idct_add_mmx (uint8_t *dest, int line_size, DCTELEM *block)
void ff_vp3_idct_dc_add_mmx2 (uint8_t *dest, int line_size, const DCTELEM *block)
void ff_vp3_v_loop_filter_mmx2 (uint8_t *src, int stride, int *bounding_values)
void ff_vp3_h_loop_filter_mmx2 (uint8_t *src, int stride, int *bounding_values)
void ff_vp3_idct_sse2 (int16_t *input_data)
void ff_vp3_idct_put_sse2 (uint8_t *dest, int line_size, DCTELEM *block)
void ff_vp3_idct_add_sse2 (uint8_t *dest, int line_size, DCTELEM *block)
int32_t ff_scalarproduct_int16_mmx2 (const int16_t *v1, const int16_t *v2, int order)
int32_t ff_scalarproduct_int16_sse2 (const int16_t *v1, const int16_t *v2, int order)
int32_t ff_scalarproduct_and_madd_int16_mmx2 (int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul)
int32_t ff_scalarproduct_and_madd_int16_sse2 (int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul)
int32_t ff_scalarproduct_and_madd_int16_ssse3 (int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul)
void ff_apply_window_int16_mmxext (int16_t *output, const int16_t *input, const int16_t *window, unsigned int len)
void ff_apply_window_int16_mmxext_ba (int16_t *output, const int16_t *input, const int16_t *window, unsigned int len)
void ff_apply_window_int16_sse2 (int16_t *output, const int16_t *input, const int16_t *window, unsigned int len)
void ff_apply_window_int16_sse2_ba (int16_t *output, const int16_t *input, const int16_t *window, unsigned int len)
void ff_apply_window_int16_ssse3 (int16_t *output, const int16_t *input, const int16_t *window, unsigned int len)
void ff_apply_window_int16_ssse3_atom (int16_t *output, const int16_t *input, const int16_t *window, unsigned int len)
void ff_bswap32_buf_ssse3 (uint32_t *dst, const uint32_t *src, int w)
void ff_bswap32_buf_sse2 (uint32_t *dst, const uint32_t *src, int w)
void ff_add_hfyu_median_prediction_mmx2 (uint8_t *dst, const uint8_t *top, const uint8_t *diff, int w, int *left, int *left_top)
int ff_add_hfyu_left_prediction_ssse3 (uint8_t *dst, const uint8_t *src, int w, int left)
int ff_add_hfyu_left_prediction_sse4 (uint8_t *dst, const uint8_t *src, int w, int left)
float ff_scalarproduct_float_sse (const float *v1, const float *v2, int order)
void ff_vector_fmul_sse (float *dst, const float *src0, const float *src1, int len)
void ff_vector_fmul_avx (float *dst, const float *src0, const float *src1, int len)
void ff_vector_fmul_reverse_sse (float *dst, const float *src0, const float *src1, int len)
void ff_vector_fmul_reverse_avx (float *dst, const float *src0, const float *src1, int len)
void ff_vector_fmul_add_sse (float *dst, const float *src0, const float *src1, const float *src2, int len)
void ff_vector_fmul_add_avx (float *dst, const float *src0, const float *src1, const float *src2, int len)
void ff_vector_clip_int32_mmx (int32_t *dst, const int32_t *src, int32_t min, int32_t max, unsigned int len)
void ff_vector_clip_int32_sse2 (int32_t *dst, const int32_t *src, int32_t min, int32_t max, unsigned int len)
void ff_vector_clip_int32_int_sse2 (int32_t *dst, const int32_t *src, int32_t min, int32_t max, unsigned int len)
void ff_vector_clip_int32_sse4 (int32_t *dst, const int32_t *src, int32_t min, int32_t max, unsigned int len)
void ff_butterflies_float_interleave_sse (float *dst, const float *src0, const float *src1, int len)
void ff_butterflies_float_interleave_avx (float *dst, const float *src0, const float *src1, int len)
static void dsputil_init_mmx (DSPContext *c, AVCodecContext *avctx, int mm_flags)
static void dsputil_init_mmx2 (DSPContext *c, AVCodecContext *avctx, int mm_flags)
static void dsputil_init_3dnow (DSPContext *c, AVCodecContext *avctx, int mm_flags)
static void dsputil_init_3dnow2 (DSPContext *c, AVCodecContext *avctx, int mm_flags)
static void dsputil_init_sse (DSPContext *c, AVCodecContext *avctx, int mm_flags)
static void dsputil_init_sse2 (DSPContext *c, AVCodecContext *avctx, int mm_flags)
static void dsputil_init_ssse3 (DSPContext *c, AVCodecContext *avctx, int mm_flags)
static void dsputil_init_sse4 (DSPContext *c, AVCodecContext *avctx, int mm_flags)
static void dsputil_init_avx (DSPContext *c, AVCodecContext *avctx, int mm_flags)
void ff_dsputil_init_mmx (DSPContext *c, AVCodecContext *avctx)

Variables

const uint64_t ff_bone = 0x0101010101010101ULL
const uint64_t ff_wtwo = 0x0002000200020002ULL
const uint64_t ff_pdw_80000000 [2]
const xmm_reg ff_pw_1 = { 0x0001000100010001ULL, 0x0001000100010001ULL }
const xmm_reg ff_pw_2 = { 0x0002000200020002ULL, 0x0002000200020002ULL }
const xmm_reg ff_pw_3 = { 0x0003000300030003ULL, 0x0003000300030003ULL }
const xmm_reg ff_pw_4 = { 0x0004000400040004ULL, 0x0004000400040004ULL }
const xmm_reg ff_pw_5 = { 0x0005000500050005ULL, 0x0005000500050005ULL }
const xmm_reg ff_pw_8 = { 0x0008000800080008ULL, 0x0008000800080008ULL }
const xmm_reg ff_pw_9 = { 0x0009000900090009ULL, 0x0009000900090009ULL }
const uint64_t ff_pw_15 = 0x000F000F000F000FULL
const xmm_reg ff_pw_16 = { 0x0010001000100010ULL, 0x0010001000100010ULL }
const xmm_reg ff_pw_17 = { 0x0011001100110011ULL, 0x0011001100110011ULL }
const xmm_reg ff_pw_18 = { 0x0012001200120012ULL, 0x0012001200120012ULL }
const uint64_t ff_pw_20 = 0x0014001400140014ULL
const xmm_reg ff_pw_27 = { 0x001B001B001B001BULL, 0x001B001B001B001BULL }
const xmm_reg ff_pw_28 = { 0x001C001C001C001CULL, 0x001C001C001C001CULL }
const xmm_reg ff_pw_32 = { 0x0020002000200020ULL, 0x0020002000200020ULL }
const uint64_t ff_pw_42 = 0x002A002A002A002AULL
const uint64_t ff_pw_53 = 0x0035003500350035ULL
const xmm_reg ff_pw_63 = { 0x003F003F003F003FULL, 0x003F003F003F003FULL }
const xmm_reg ff_pw_64 = { 0x0040004000400040ULL, 0x0040004000400040ULL }
const uint64_t ff_pw_96 = 0x0060006000600060ULL
const uint64_t ff_pw_128 = 0x0080008000800080ULL
const uint64_t ff_pw_255 = 0x00ff00ff00ff00ffULL
const xmm_reg ff_pw_512 = { 0x0200020002000200ULL, 0x0200020002000200ULL }
const xmm_reg ff_pw_1019 = { 0x03FB03FB03FB03FBULL, 0x03FB03FB03FB03FBULL }
const xmm_reg ff_pb_0 = { 0x0000000000000000ULL, 0x0000000000000000ULL }
const xmm_reg ff_pb_1 = { 0x0101010101010101ULL, 0x0101010101010101ULL }
const xmm_reg ff_pb_3 = { 0x0303030303030303ULL, 0x0303030303030303ULL }
const xmm_reg ff_pb_4 = { 0x0404040404040404ULL, 0x0404040404040404ULL }
const uint64_t ff_pb_7 = 0x0707070707070707ULL
const uint64_t ff_pb_1F = 0x1F1F1F1F1F1F1F1FULL
const uint64_t ff_pb_3F = 0x3F3F3F3F3F3F3F3FULL
const xmm_reg ff_pb_80 = { 0x8080808080808080ULL, 0x8080808080808080ULL }
const uint64_t ff_pb_81 = 0x8181818181818181ULL
const xmm_reg ff_pb_A1 = { 0xA1A1A1A1A1A1A1A1ULL, 0xA1A1A1A1A1A1A1A1ULL }
const xmm_reg ff_pb_F8 = { 0xF8F8F8F8F8F8F8F8ULL, 0xF8F8F8F8F8F8F8F8ULL }
const uint64_t ff_pb_FC = 0xFCFCFCFCFCFCFCFCULL
const xmm_reg ff_pb_FE = { 0xFEFEFEFEFEFEFEFEULL, 0xFEFEFEFEFEFEFEFEULL }
const double ff_pd_1 [2] = { 1.0, 1.0 }
const double ff_pd_2 [2] = { 2.0, 2.0 }


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 1714 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 1719 of file dsputil_mmx.c.

#define CHROMA_MC ( OP,
NUM,
DEPTH,
OPT   ) 

Value:

void ff_ ## OP ## _h264_chroma_mc ## NUM ## _ ## DEPTH ## _ ## OPT      \
                                      (uint8_t *dst, uint8_t *src,      \
                                       int stride, int h, int x, int y);

Definition at line 2080 of file dsputil_mmx.c.

#define CLEAR_BLOCKS ( name,
 ) 

Value:

static void name(DCTELEM *blocks)                       \
{                                                       \
    __asm__ volatile (                                  \
        "pxor %%mm7, %%mm7              \n\t"           \
        "mov     %1,        %%"REG_a"   \n\t"           \
        "1:                             \n\t"           \
        "movq %%mm7,   (%0, %%"REG_a")  \n\t"           \
        "movq %%mm7,  8(%0, %%"REG_a")  \n\t"           \
        "movq %%mm7, 16(%0, %%"REG_a")  \n\t"           \
        "movq %%mm7, 24(%0, %%"REG_a")  \n\t"           \
        "add    $32, %%"REG_a"          \n\t"           \
        "js      1b                     \n\t"           \
        :: "r"(((uint8_t *)blocks) + 128 * n),          \
           "i"(-128 * n)                                \
        : "%"REG_a                                      \
        );                                              \
}

Definition at line 511 of file dsputil_mmx.c.

#define DEF (  )     x ## _mmx2

Definition at line 210 of file dsputil_mmx.c.

#define DEF (  )     x ## _3dnow

Definition at line 210 of file dsputil_mmx.c.

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

Definition at line 210 of file dsputil_mmx.c.

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

Definition at line 210 of file dsputil_mmx.c.

#define H263_LOOP_FILTER

Definition at line 634 of file dsputil_mmx.c.

Referenced by h263_h_loop_filter_mmx(), and h263_v_loop_filter_mmx().

#define H264_QPEL_FUNCS ( x,
y,
CPU   ) 

Value:

do {                                                                                      \
        c->put_h264_qpel_pixels_tab[0][x + y * 4] = put_h264_qpel16_mc ## x ## y ## _ ## CPU; \
        c->put_h264_qpel_pixels_tab[1][x + y * 4] = put_h264_qpel8_mc  ## x ## y ## _ ## CPU; \
        c->avg_h264_qpel_pixels_tab[0][x + y * 4] = avg_h264_qpel16_mc ## x ## y ## _ ## CPU; \
        c->avg_h264_qpel_pixels_tab[1][x + y * 4] = avg_h264_qpel8_mc  ## x ## y ## _ ## CPU; \
    } while (0)

Definition at line 2641 of file dsputil_mmx.c.

Referenced by dsputil_init_sse2(), and dsputil_init_ssse3().

#define H264_QPEL_FUNCS_10 ( x,
y,
CPU   ) 

Value:

do {                                                                                            \
        c->put_h264_qpel_pixels_tab[0][x + y * 4] = ff_put_h264_qpel16_mc ## x ## y ## _10_ ## CPU; \
        c->put_h264_qpel_pixels_tab[1][x + y * 4] = ff_put_h264_qpel8_mc  ## x ## y ## _10_ ## CPU; \
        c->avg_h264_qpel_pixels_tab[0][x + y * 4] = ff_avg_h264_qpel16_mc ## x ## y ## _10_ ## CPU; \
        c->avg_h264_qpel_pixels_tab[1][x + y * 4] = ff_avg_h264_qpel8_mc  ## x ## y ## _10_ ## CPU; \
    } while (0)

Definition at line 2649 of file dsputil_mmx.c.

Referenced by dsputil_init_avx(), dsputil_init_sse2(), and dsputil_init_ssse3().

#define IF0 (  ) 

Definition at line 2322 of file dsputil_mmx.c.

Referenced by ac3_downmix_sse().

#define IF1 (  )     x

Definition at line 2321 of file dsputil_mmx.c.

Referenced by ac3_downmix_sse().

 
#define JUMPALIGN (  )     __asm__ volatile (".p2align 3"::)

Definition at line 88 of file dsputil_mmx.c.

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

#define MIX5 ( mono,
stereo   ) 

Definition at line 2324 of file dsputil_mmx.c.

Referenced by ac3_downmix_sse().

#define MIX_MISC ( stereo   ) 

Value:

__asm__ volatile (                                          \
        "1:                                 \n"                 \
        "movaps     (%3, %0), %%xmm0        \n"                 \
 stereo("movaps       %%xmm0, %%xmm1        \n")                \
        "mulps        %%xmm4, %%xmm0        \n"                 \
 stereo("mulps        %%xmm5, %%xmm1        \n")                \
        "lea    1024(%3, %0), %1            \n"                 \
        "mov              %5, %2            \n"                 \
        "2:                                 \n"                 \
        "movaps         (%1), %%xmm2        \n"                 \
 stereo("movaps       %%xmm2, %%xmm3        \n")                \
        "mulps      (%4, %2), %%xmm2        \n"                 \
 stereo("mulps    16(%4, %2), %%xmm3        \n")                \
        "addps        %%xmm2, %%xmm0        \n"                 \
 stereo("addps        %%xmm3, %%xmm1        \n")                \
        "add           $1024, %1            \n"                 \
        "add             $32, %2            \n"                 \
        "jl               2b                \n"                 \
        "movaps       %%xmm0,     (%3, %0)  \n"                 \
 stereo("movaps       %%xmm1, 1024(%3, %0)  \n")                \
        "add             $16, %0            \n"                 \
        "jl               1b                \n"                 \
        : "+&r"(i), "=&r"(j), "=&r"(k)                          \
        : "r"(samples[0] + len), "r"(matrix_simd + in_ch),      \
          "g"((intptr_t) - 32 * (in_ch - 1))                    \
        : "memory"                                              \
    );

Definition at line 2359 of file dsputil_mmx.c.

Referenced by ac3_downmix_sse().

#define MOVQ_BFE ( regd   ) 

Value:

__asm__ volatile (                                  \
        "pcmpeqd %%"#regd", %%"#regd"   \n\t"           \
        "paddb   %%"#regd", %%"#regd"   \n\t" ::)

Definition at line 91 of file dsputil_mmx.c.

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

#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))

Definition at line 98 of file dsputil_mmx.c.

#define MOVQ_ZERO ( regd   )     __asm__ volatile ("pxor %%"#regd", %%"#regd ::)

Definition at line 89 of file dsputil_mmx.c.

Referenced by ff_add_pixels_clamped_mmx(), and pixels8_xy2().

#define OP_AVG   PAVGB

Definition at line 214 of file dsputil_mmx.c.

#define OP_AVG   PAVGB

Definition at line 214 of file dsputil_mmx.c.

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

Definition at line 214 of file dsputil_mmx.c.

#define PAVGB   "pavgb"

Definition at line 213 of file dsputil_mmx.c.

#define PAVGB   "pavgusb"

Definition at line 213 of file dsputil_mmx.c.

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

Definition at line 213 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 127 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 119 of file dsputil_mmx.c.

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

Definition at line 183 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 183 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 150 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 136 of file dsputil_mmx.c.

Referenced by put_vp_no_rnd_pixels8_l2_mmx().

#define PREFETCH ( name,
op   ) 

#define put_no_rnd_pixels16_3dnow   put_no_rnd_pixels16_mmx

Definition at line 232 of file dsputil_mmx.c.

#define put_no_rnd_pixels16_mmx   put_pixels16_mmx

Definition at line 222 of file dsputil_mmx.c.

#define put_no_rnd_pixels16_mmx2   put_no_rnd_pixels16_mmx

Definition at line 227 of file dsputil_mmx.c.

#define put_no_rnd_pixels8_3dnow   put_no_rnd_pixels8_mmx

Definition at line 233 of file dsputil_mmx.c.

#define put_no_rnd_pixels8_mmx   put_pixels8_mmx

Definition at line 223 of file dsputil_mmx.c.

#define put_no_rnd_pixels8_mmx2   put_no_rnd_pixels8_mmx

Definition at line 228 of file dsputil_mmx.c.

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

Definition at line 1711 of file dsputil_mmx.c.

#define put_pixels16_3dnow   put_pixels16_mmx

Definition at line 229 of file dsputil_mmx.c.

#define put_pixels16_mmx2   put_pixels16_mmx

Definition at line 224 of file dsputil_mmx.c.

#define put_pixels4_3dnow   put_pixels4_mmx

Definition at line 231 of file dsputil_mmx.c.

#define put_pixels4_mmx2   put_pixels4_mmx

Definition at line 226 of file dsputil_mmx.c.

#define put_pixels8_3dnow   put_pixels8_mmx

Definition at line 230 of file dsputil_mmx.c.

#define put_pixels8_mmx2   put_pixels8_mmx

Definition at line 225 of file dsputil_mmx.c.

#define put_signed_pixels_clamped_mmx_half ( off   ) 

Value:

"movq          "#off"(%2), %%mm1        \n\t"           \
    "movq     16 + "#off"(%2), %%mm2        \n\t"           \
    "movq     32 + "#off"(%2), %%mm3        \n\t"           \
    "movq     48 + "#off"(%2), %%mm4        \n\t"           \
    "packsswb  8 + "#off"(%2), %%mm1        \n\t"           \
    "packsswb 24 + "#off"(%2), %%mm2        \n\t"           \
    "packsswb 40 + "#off"(%2), %%mm3        \n\t"           \
    "packsswb 56 + "#off"(%2), %%mm4        \n\t"           \
    "paddb              %%mm0, %%mm1        \n\t"           \
    "paddb              %%mm0, %%mm2        \n\t"           \
    "paddb              %%mm0, %%mm3        \n\t"           \
    "paddb              %%mm0, %%mm4        \n\t"           \
    "movq               %%mm1, (%0)         \n\t"           \
    "movq               %%mm2, (%0, %3)     \n\t"           \
    "movq               %%mm3, (%0, %3, 2)  \n\t"           \
    "movq               %%mm4, (%0, %1)     \n\t"

Definition at line 295 of file dsputil_mmx.c.

Referenced by ff_put_signed_pixels_clamped_mmx().

#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 1754 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 1745 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 1737 of file dsputil_mmx.c.

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

Definition at line 898 of file dsputil_mmx.c.

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

Definition at line 1206 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 877 of file dsputil_mmx.c.

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

Value:

do {                                                                        \
        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; \
    } while (0)

Definition at line 2633 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

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

Value:

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

Definition at line 2613 of file dsputil_mmx.c.

Referenced by dsputil_init_3dnow(), dsputil_init_mmx2(), and dsputil_init_sse2().

#define SET_RND   MOVQ_WTWO

Definition at line 182 of file dsputil_mmx.c.

#define SET_RND   MOVQ_WONE

Definition at line 182 of file dsputil_mmx.c.

Referenced by add_8x8basis_TMPL(), pixels8_xy2(), and try_8x8basis_TMPL().


Typedef Documentation

typedef void emulated_edge_mc_func(uint8_t *dst, const uint8_t *src, int linesize, int block_w, int block_h, int src_x, int src_y, int w, int h)

Definition at line 1880 of file dsputil_mmx.c.


Function Documentation

static void ac3_downmix_sse ( float(*)  samples[256],
float(*)  matrix[2],
int  out_ch,
int  in_ch,
int  len 
) [static]

Definition at line 2388 of file dsputil_mmx.c.

Referenced by dsputil_init_sse().

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

Definition at line 571 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

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

Definition at line 484 of file dsputil_mmx.c.

Referenced by avg_h264_qpel16_mc00_sse2(), and dsputil_init_sse2().

static void clear_block_sse ( DCTELEM block  )  [static]

Definition at line 532 of file dsputil_mmx.c.

Referenced by dsputil_init_sse().

static void clear_blocks_sse ( DCTELEM blocks  )  [static]

Definition at line 549 of file dsputil_mmx.c.

Referenced by dsputil_init_sse().

static void draw_edges_mmx ( uint8_t buf,
int  wrap,
int  width,
int  height,
int  w,
int  h,
int  sides 
) [static]

Definition at line 782 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

static void dsputil_init_3dnow ( DSPContext c,
AVCodecContext avctx,
int  mm_flags 
) [static]

Definition at line 2819 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

static void dsputil_init_3dnow2 ( DSPContext c,
AVCodecContext avctx,
int  mm_flags 
) [static]

Definition at line 2895 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

static void dsputil_init_avx ( DSPContext c,
AVCodecContext avctx,
int  mm_flags 
) [static]

Definition at line 3060 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

static void dsputil_init_mmx ( DSPContext c,
AVCodecContext avctx,
int  mm_flags 
) [static]

Definition at line 2657 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

static void dsputil_init_mmx2 ( DSPContext c,
AVCodecContext avctx,
int  mm_flags 
) [static]

Definition at line 2709 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

static void dsputil_init_sse ( DSPContext c,
AVCodecContext avctx,
int  mm_flags 
) [static]

Definition at line 2903 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

static void dsputil_init_sse2 ( DSPContext c,
AVCodecContext avctx,
int  mm_flags 
) [static]

Definition at line 2939 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

static void dsputil_init_sse4 ( DSPContext c,
AVCodecContext avctx,
int  mm_flags 
) [static]

Definition at line 3052 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

static void dsputil_init_ssse3 ( DSPContext c,
AVCodecContext avctx,
int  mm_flags 
) [static]

Definition at line 3004 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

int ff_add_hfyu_left_prediction_sse4 ( uint8_t dst,
const uint8_t src,
int  w,
int  left 
)

Referenced by dsputil_init_ssse3().

int ff_add_hfyu_left_prediction_ssse3 ( uint8_t dst,
const uint8_t src,
int  w,
int  left 
)

Referenced by dsputil_init_ssse3().

void ff_add_hfyu_median_prediction_mmx2 ( uint8_t dst,
const uint8_t top,
const uint8_t diff,
int  w,
int *  left,
int *  left_top 
)

Referenced by dsputil_init_mmx2().

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

void ff_apply_window_int16_mmxext ( int16_t output,
const int16_t input,
const int16_t window,
unsigned int  len 
)

Referenced by dsputil_init_mmx2().

void ff_apply_window_int16_mmxext_ba ( int16_t output,
const int16_t input,
const int16_t window,
unsigned int  len 
)

Referenced by dsputil_init_mmx2().

void ff_apply_window_int16_sse2 ( int16_t output,
const int16_t input,
const int16_t window,
unsigned int  len 
)

Referenced by dsputil_init_sse2().

void ff_apply_window_int16_sse2_ba ( int16_t output,
const int16_t input,
const int16_t window,
unsigned int  len 
)

Referenced by dsputil_init_sse2().

void ff_apply_window_int16_ssse3 ( int16_t output,
const int16_t input,
const int16_t window,
unsigned int  len 
)

Referenced by dsputil_init_ssse3().

void ff_apply_window_int16_ssse3_atom ( int16_t output,
const int16_t input,
const int16_t window,
unsigned int  len 
)

Referenced by dsputil_init_ssse3().

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

Definition at line 2110 of file dsputil_mmx.c.

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

Definition at line 2100 of file dsputil_mmx.c.

void ff_avg_h264_chroma_mc2_mmx2 ( uint8_t dst,
uint8_t src,
int  stride,
int  h,
int  x,
int  y 
)

Referenced by dsputil_init_mmx2().

void ff_avg_h264_chroma_mc4_3dnow ( uint8_t dst,
uint8_t src,
int  stride,
int  h,
int  x,
int  y 
)

Referenced by dsputil_init_3dnow().

void ff_avg_h264_chroma_mc4_mmx2 ( uint8_t dst,
uint8_t src,
int  stride,
int  h,
int  x,
int  y 
)

Referenced by dsputil_init_mmx2().

void ff_avg_h264_chroma_mc4_ssse3 ( uint8_t dst,
uint8_t src,
int  stride,
int  h,
int  x,
int  y 
)

Referenced by dsputil_init_ssse3().

void ff_avg_h264_chroma_mc8_3dnow_rnd ( uint8_t dst,
uint8_t src,
int  stride,
int  h,
int  x,
int  y 
)

Referenced by dsputil_init_3dnow().

void ff_avg_h264_chroma_mc8_mmx2_rnd ( uint8_t dst,
uint8_t src,
int  stride,
int  h,
int  x,
int  y 
)

Referenced by dsputil_init_mmx2().

void ff_avg_h264_chroma_mc8_ssse3_rnd ( uint8_t dst,
uint8_t src,
int  stride,
int  h,
int  x,
int  y 
)

Referenced by dsputil_init_ssse3().

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

Definition at line 1807 of file dsputil_mmx.c.

Referenced by ff_rv40dsp_init_x86().

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

Definition at line 1803 of file dsputil_mmx.c.

Referenced by ff_rv40dsp_init_x86().

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

Definition at line 2122 of file dsputil_mmx.c.

Referenced by ff_vc1dsp_init_mmx().

void ff_bswap32_buf_sse2 ( uint32_t *  dst,
const uint32_t *  src,
int  w 
)

Referenced by dsputil_init_sse2().

void ff_bswap32_buf_ssse3 ( uint32_t *  dst,
const uint32_t *  src,
int  w 
)

Referenced by dsputil_init_ssse3().

void ff_butterflies_float_interleave_avx ( float *  dst,
const float *  src0,
const float *  src1,
int  len 
)

Referenced by dsputil_init_avx().

void ff_butterflies_float_interleave_sse ( float *  dst,
const float *  src0,
const float *  src1,
int  len 
)

Referenced by dsputil_init_sse().

void ff_dsputil_init_mmx ( DSPContext c,
AVCodecContext avctx 
)

Definition at line 3086 of file dsputil_mmx.c.

Referenced by ff_dsputil_init().

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

Definition at line 2256 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

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

Definition at line 2250 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

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

Definition at line 2244 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

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

Definition at line 2238 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

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

Definition at line 2105 of file dsputil_mmx.c.

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

Definition at line 2095 of file dsputil_mmx.c.

void ff_put_h264_chroma_mc2_mmx2 ( uint8_t dst,
uint8_t src,
int  stride,
int  h,
int  x,
int  y 
)

Referenced by dsputil_init_mmx2().

void ff_put_h264_chroma_mc4_mmx ( uint8_t dst,
uint8_t src,
int  stride,
int  h,
int  x,
int  y 
)

Referenced by dsputil_init_mmx().

void ff_put_h264_chroma_mc4_ssse3 ( uint8_t dst,
uint8_t src,
int  stride,
int  h,
int  x,
int  y 
)

Referenced by dsputil_init_ssse3().

void ff_put_h264_chroma_mc8_mmx_rnd ( uint8_t dst,
uint8_t src,
int  stride,
int  h,
int  x,
int  y 
)

Referenced by dsputil_init_mmx().

void ff_put_h264_chroma_mc8_ssse3_rnd ( uint8_t dst,
uint8_t src,
int  stride,
int  h,
int  x,
int  y 
)

Referenced by dsputil_init_ssse3().

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

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

Definition at line 1799 of file dsputil_mmx.c.

Referenced by ff_rv40dsp_init_x86().

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

Definition at line 1795 of file dsputil_mmx.c.

Referenced by ff_rv40dsp_init_x86().

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

Definition at line 313 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

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

Definition at line 2116 of file dsputil_mmx.c.

Referenced by ff_vc1dsp_init_mmx().

int32_t ff_scalarproduct_and_madd_int16_mmx2 ( int16_t v1,
const int16_t v2,
const int16_t v3,
int  order,
int  mul 
)

Referenced by dsputil_init_mmx2().

int32_t ff_scalarproduct_and_madd_int16_sse2 ( int16_t v1,
const int16_t v2,
const int16_t v3,
int  order,
int  mul 
)

Referenced by dsputil_init_sse2().

int32_t ff_scalarproduct_and_madd_int16_ssse3 ( int16_t v1,
const int16_t v2,
const int16_t v3,
int  order,
int  mul 
)

Referenced by dsputil_init_ssse3().

float ff_scalarproduct_float_sse ( const float *  v1,
const float *  v2,
int  order 
)

Referenced by dsputil_init_sse().

int32_t ff_scalarproduct_int16_mmx2 ( const int16_t v1,
const int16_t v2,
int  order 
)

Referenced by dsputil_init_mmx2().

int32_t ff_scalarproduct_int16_sse2 ( const int16_t v1,
const int16_t v2,
int  order 
)

Referenced by dsputil_init_sse2().

void ff_vector_clip_int32_int_sse2 ( int32_t *  dst,
const int32_t *  src,
int32_t  min,
int32_t  max,
unsigned int  len 
)

Referenced by dsputil_init_sse2().

void ff_vector_clip_int32_mmx ( int32_t *  dst,
const int32_t *  src,
int32_t  min,
int32_t  max,
unsigned int  len 
)

Referenced by dsputil_init_mmx().

void ff_vector_clip_int32_sse2 ( int32_t *  dst,
const int32_t *  src,
int32_t  min,
int32_t  max,
unsigned int  len 
)

Referenced by dsputil_init_sse2().

void ff_vector_clip_int32_sse4 ( int32_t *  dst,
const int32_t *  src,
int32_t  min,
int32_t  max,
unsigned int  len 
)

Referenced by dsputil_init_sse4().

void ff_vector_fmul_add_avx ( float *  dst,
const float *  src0,
const float *  src1,
const float *  src2,
int  len 
)

Referenced by dsputil_init_avx().

void ff_vector_fmul_add_sse ( float *  dst,
const float *  src0,
const float *  src1,
const float *  src2,
int  len 
)

Referenced by dsputil_init_sse().

void ff_vector_fmul_avx ( float *  dst,
const float *  src0,
const float *  src1,
int  len 
)

Referenced by dsputil_init_avx().

void ff_vector_fmul_reverse_avx ( float *  dst,
const float *  src0,
const float *  src1,
int  len 
)

Referenced by dsputil_init_avx().

void ff_vector_fmul_reverse_sse ( float *  dst,
const float *  src0,
const float *  src1,
int  len 
)

Referenced by dsputil_init_sse().

void ff_vector_fmul_sse ( float *  dst,
const float *  src0,
const float *  src1,
int  len 
)

Referenced by dsputil_init_sse().

void ff_vp3_h_loop_filter_mmx2 ( uint8_t src,
int  stride,
int *  bounding_values 
)

Referenced by dsputil_init_mmx2().

void ff_vp3_idct_add_mmx ( uint8_t dest,
int  line_size,
DCTELEM block 
)

Referenced by ff_dsputil_init_mmx().

void ff_vp3_idct_add_sse2 ( uint8_t dest,
int  line_size,
DCTELEM block 
)

Referenced by ff_dsputil_init_mmx().

void ff_vp3_idct_dc_add_mmx2 ( uint8_t dest,
int  line_size,
const DCTELEM block 
)

Referenced by dsputil_init_mmx2().

void ff_vp3_idct_mmx ( int16_t input_data  ) 

Referenced by ff_dsputil_init_mmx().

void ff_vp3_idct_put_mmx ( uint8_t dest,
int  line_size,
DCTELEM block 
)

Referenced by ff_dsputil_init_mmx().

void ff_vp3_idct_put_sse2 ( uint8_t dest,
int  line_size,
DCTELEM block 
)

Referenced by ff_dsputil_init_mmx().

void ff_vp3_idct_sse2 ( int16_t input_data  ) 

Referenced by ff_dsputil_init_mmx().

void ff_vp3_v_loop_filter_mmx2 ( uint8_t src,
int  stride,
int *  bounding_values 
)

Referenced by dsputil_init_mmx2().

static av_always_inline void gmc ( 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,
emulated_edge_mc_func emu_edge_fn 
) [static]

Definition at line 1884 of file dsputil_mmx.c.

Referenced by gmc_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 2025 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 726 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 705 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 426 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 461 of file dsputil_mmx.c.

Referenced by dsputil_init_sse2(), and put_h264_qpel16_mc00_sse2().

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

Definition at line 372 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 399 of file dsputil_mmx.c.

Referenced by ff_put_cavs_qpel8_mc00_mmx2(), and ff_put_vc1_mspel_mc00_mmx().

static void put_vp_no_rnd_pixels16_l2_mmx ( uint8_t dst,
const uint8_t a,
const uint8_t b,
int  stride,
int  h 
) [static]

Definition at line 2160 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

static void put_vp_no_rnd_pixels8_l2_mmx ( uint8_t dst,
const uint8_t a,
const uint8_t b,
int  stride,
int  h 
) [static]

Definition at line 2129 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx(), and put_vp_no_rnd_pixels16_l2_mmx().

static void vector_clipf_sse ( float *  dst,
const float *  src,
float  min,
float  max,
int  len 
) [static]

Definition at line 2496 of file dsputil_mmx.c.

Referenced by dsputil_init_sse().

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

Definition at line 2262 of file dsputil_mmx.c.

Referenced by dsputil_init_3dnow().

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

Definition at line 2290 of file dsputil_mmx.c.

Referenced by dsputil_init_sse().


Variable Documentation

const uint64_t ff_bone = 0x0101010101010101ULL

Definition at line 40 of file dsputil_mmx.c.

const xmm_reg ff_pb_0 = { 0x0000000000000000ULL, 0x0000000000000000ULL }

Definition at line 71 of file dsputil_mmx.c.

const xmm_reg ff_pb_1 = { 0x0101010101010101ULL, 0x0101010101010101ULL }

Definition at line 72 of file dsputil_mmx.c.

Referenced by h264_loop_filter_strength_mmx2().

const uint64_t ff_pb_1F = 0x1F1F1F1F1F1F1F1FULL

Definition at line 76 of file dsputil_mmx.c.

const xmm_reg ff_pb_3 = { 0x0303030303030303ULL, 0x0303030303030303ULL }

Definition at line 73 of file dsputil_mmx.c.

Referenced by h264_loop_filter_strength_mmx2().

const uint64_t ff_pb_3F = 0x3F3F3F3F3F3F3F3FULL

Definition at line 77 of file dsputil_mmx.c.

const xmm_reg ff_pb_4 = { 0x0404040404040404ULL, 0x0404040404040404ULL }

Definition at line 74 of file dsputil_mmx.c.

const uint64_t ff_pb_7 = 0x0707070707070707ULL

Definition at line 75 of file dsputil_mmx.c.

const xmm_reg ff_pb_80 = { 0x8080808080808080ULL, 0x8080808080808080ULL }

Definition at line 78 of file dsputil_mmx.c.

Referenced by ff_put_signed_pixels_clamped_mmx().

const uint64_t ff_pb_81 = 0x8181818181818181ULL

Definition at line 79 of file dsputil_mmx.c.

const xmm_reg ff_pb_A1 = { 0xA1A1A1A1A1A1A1A1ULL, 0xA1A1A1A1A1A1A1A1ULL }

Definition at line 80 of file dsputil_mmx.c.

const xmm_reg ff_pb_F8 = { 0xF8F8F8F8F8F8F8F8ULL, 0xF8F8F8F8F8F8F8F8ULL }

Definition at line 81 of file dsputil_mmx.c.

const uint64_t ff_pb_FC = 0xFCFCFCFCFCFCFCFCULL

Definition at line 82 of file dsputil_mmx.c.

Referenced by h263_h_loop_filter_mmx(), and h263_v_loop_filter_mmx().

const xmm_reg ff_pb_FE = { 0xFEFEFEFEFEFEFEFEULL, 0xFEFEFEFEFEFEFEFEULL }

Definition at line 83 of file dsputil_mmx.c.

const double ff_pd_1[2] = { 1.0, 1.0 }

Definition at line 85 of file dsputil_mmx.c.

Referenced by lpc_apply_welch_window_sse2(), and lpc_compute_autocorr_sse2().

const double ff_pd_2[2] = { 2.0, 2.0 }

Definition at line 86 of file dsputil_mmx.c.

Referenced by lpc_apply_welch_window_sse2().

const uint64_t ff_pdw_80000000[2]

Initial value:

    { 0x8000000080000000ULL, 0x8000000080000000ULL }

Definition at line 43 of file dsputil_mmx.c.

Referenced by vorbis_inverse_coupling_sse().

const xmm_reg ff_pw_1 = { 0x0001000100010001ULL, 0x0001000100010001ULL }

Definition at line 46 of file dsputil_mmx.c.

const xmm_reg ff_pw_1019 = { 0x03FB03FB03FB03FBULL, 0x03FB03FB03FB03FBULL }

Definition at line 69 of file dsputil_mmx.c.

const uint64_t ff_pw_128 = 0x0080008000800080ULL

Definition at line 66 of file dsputil_mmx.c.

const uint64_t ff_pw_15 = 0x000F000F000F000FULL

Definition at line 53 of file dsputil_mmx.c.

const xmm_reg ff_pw_16 = { 0x0010001000100010ULL, 0x0010001000100010ULL }

Definition at line 54 of file dsputil_mmx.c.

const xmm_reg ff_pw_17 = { 0x0011001100110011ULL, 0x0011001100110011ULL }

Definition at line 55 of file dsputil_mmx.c.

const xmm_reg ff_pw_18 = { 0x0012001200120012ULL, 0x0012001200120012ULL }

Definition at line 56 of file dsputil_mmx.c.

const xmm_reg ff_pw_2 = { 0x0002000200020002ULL, 0x0002000200020002ULL }

Definition at line 47 of file dsputil_mmx.c.

const uint64_t ff_pw_20 = 0x0014001400140014ULL

Definition at line 57 of file dsputil_mmx.c.

const uint64_t ff_pw_255 = 0x00ff00ff00ff00ffULL

Definition at line 67 of file dsputil_mmx.c.

const xmm_reg ff_pw_27 = { 0x001B001B001B001BULL, 0x001B001B001B001BULL }

Definition at line 58 of file dsputil_mmx.c.

const xmm_reg ff_pw_28 = { 0x001C001C001C001CULL, 0x001C001C001C001CULL }

Definition at line 59 of file dsputil_mmx.c.

const xmm_reg ff_pw_3 = { 0x0003000300030003ULL, 0x0003000300030003ULL }

Definition at line 48 of file dsputil_mmx.c.

const xmm_reg ff_pw_32 = { 0x0020002000200020ULL, 0x0020002000200020ULL }

Definition at line 60 of file dsputil_mmx.c.

const xmm_reg ff_pw_4 = { 0x0004000400040004ULL, 0x0004000400040004ULL }

Definition at line 49 of file dsputil_mmx.c.

Referenced by cavs_idct8_add_mmx().

const uint64_t ff_pw_42 = 0x002A002A002A002AULL

Definition at line 61 of file dsputil_mmx.c.

const xmm_reg ff_pw_5 = { 0x0005000500050005ULL, 0x0005000500050005ULL }

Definition at line 50 of file dsputil_mmx.c.

const xmm_reg ff_pw_512 = { 0x0200020002000200ULL, 0x0200020002000200ULL }

Definition at line 68 of file dsputil_mmx.c.

const uint64_t ff_pw_53 = 0x0035003500350035ULL

Definition at line 62 of file dsputil_mmx.c.

const xmm_reg ff_pw_63 = { 0x003F003F003F003FULL, 0x003F003F003F003FULL }

Definition at line 63 of file dsputil_mmx.c.

const xmm_reg ff_pw_64 = { 0x0040004000400040ULL, 0x0040004000400040ULL }

Definition at line 64 of file dsputil_mmx.c.

Referenced by cavs_idct8_add_mmx().

const xmm_reg ff_pw_8 = { 0x0008000800080008ULL, 0x0008000800080008ULL }

Definition at line 51 of file dsputil_mmx.c.

const xmm_reg ff_pw_9 = { 0x0009000900090009ULL, 0x0009000900090009ULL }

Definition at line 52 of file dsputil_mmx.c.

Referenced by vc1_put_ver_16b_shift2_mmx().

const uint64_t ff_pw_96 = 0x0060006000600060ULL

Definition at line 65 of file dsputil_mmx.c.

const uint64_t ff_wtwo = 0x0002000200020002ULL

Definition at line 41 of file dsputil_mmx.c.


Generated on Fri Oct 26 02:47:59 2012 for FFmpeg by  doxygen 1.5.8