#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 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 | ) | x ## _mmx2 |
Definition at line 196 of file dsputil_mmx.c.
#define DEF | ( | x | ) | x ## _3dnow |
Definition at line 196 of file dsputil_mmx.c.
#define DEF | ( | x, | |||
y | ) | x ## _ ## y ##_mmx |
Definition at line 196 of file dsputil_mmx.c.
#define DEF | ( | x, | |||
y | ) | 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_TMPL(), pixels4_TMPL(), and pixels8_TMPL().
#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_l2_TMPL(), pixels16_TMPL(), pixels16_x2_TMPL(), pixels4_TMPL(), pixels8_l2_TMPL(), pixels8_TMPL(), and pixels8_y2_TMPL().
#define MOVQ_BONE | ( | regd | ) | __asm __volatile ("movq %0, %%" #regd " \n\t" ::"m"(ff_bone)) |
Definition at line 87 of file dsputil_mmx.c.
Referenced by avg_pixels8_xy2_TMPL(), put_no_rnd_pixels8_x2_TMPL(), and put_no_rnd_pixels8_y2_TMPL().
#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_TMPL().
#define PAVGB "pavgb" |
Definition at line 199 of file dsputil_mmx.c.
#define PAVGB "pavgusb" |
Definition at line 199 of file dsputil_mmx.c.
Definition at line 199 of file dsputil_mmx.c.
Definition at line 199 of file dsputil_mmx.c.
Referenced by avg_pixels16_l2_TMPL(), avg_pixels4_l2_TMPL(), avg_pixels4_TMPL(), avg_pixels8_l2_TMPL(), avg_pixels8_TMPL(), avg_pixels8_x2_TMPL(), avg_pixels8_xy2_TMPL(), avg_pixels8_y2_TMPL(), bgr24ToUV_TMPL(), deInterlaceBlendLinear_TMPL(), deInterlaceInterpolateLinear_TMPL(), dering_TMPL(), doVertDefFilter_TMPL(), doVertLowPass_TMPL(), pixels16_TMPL(), pixels4_TMPL(), pixels8_l2_TMPL(), pixels8_TMPL(), planar2x_TMPL(), put_no_rnd_pixels16_l2_TMPL(), put_no_rnd_pixels8_l2_TMPL(), put_no_rnd_pixels8_x2_TMPL(), put_no_rnd_pixels8_y2_TMPL(), put_pixels16_l2_TMPL(), put_pixels16_x2_TMPL(), put_pixels4_l2_TMPL(), put_pixels8_l2_TMPL(), put_pixels8_x2_TMPL(), put_pixels8_y2_TMPL(), rgb24toyv12_TMPL(), tempNoiseReducer_TMPL(), and vertX1Filter_TMPL().
#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.
Definition at line 172 of file dsputil_mmx.c.
Definition at line 172 of file dsputil_mmx.c.
Referenced by pixels16_l2_TMPL(), pixels16_x2_TMPL(), pixels8_l2_TMPL(), and pixels8_y2_TMPL().
#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 | ) |
Value:
static void name(void *mem, int stride, int h){\ const uint8_t *p= mem;\ do{\ asm volatile(#op" %0" :: "m"(*p));\ p+= stride;\ }while(--h);\ }
Definition at line 2832 of file dsputil_mmx.c.
Referenced by bgr24ToUV_TMPL(), bgr24ToY_TMPL(), hcscale_TMPL(), hyscale_TMPL(), interleaveBytes_TMPL(), rgb15to16_TMPL(), rgb15to24_TMPL(), rgb15to32_TMPL(), rgb16to15_TMPL(), rgb16to24_TMPL(), rgb16to32_TMPL(), rgb24to15_TMPL(), rgb24to16_TMPL(), rgb24to32_TMPL(), rgb24tobgr15_TMPL(), rgb24tobgr16_TMPL(), rgb24tobgr24_TMPL(), rgb24toyv12_TMPL(), rgb32to15_TMPL(), rgb32to16_TMPL(), rgb32to24_TMPL(), rgb32tobgr15_TMPL(), rgb32tobgr16_TMPL(), rgb32tobgr32_TMPL(), uyvytoyv12_TMPL(), vu9_to_vu12_TMPL(), yuvPlanartouyvy_TMPL(), yuvPlanartoyuy2_TMPL(), yuy2toyv12_TMPL(), and yvu9_to_yuy2_TMPL().
#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.
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 | ) |
#define QPEL_2TAP_XY | ( | OPNAME, | |||
SIZE, | |||||
MMX, | |||||
XY, | |||||
HPEL | ) |
#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.
Definition at line 354 of file dsputil_mmx.c.
Referenced by cavs_idct8_add_mmx(), dsputil_init_mmx(), ff_h264_idct8_add_mmx(), ff_idct_xvid_mmx2_add(), ff_idct_xvid_mmx_add(), ff_simple_idct_add_mmx(), ff_vp3_idct_add_mmx(), and ff_vp3_idct_add_sse2().
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] |
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 2858 of file dsputil_mmx.c.
Definition at line 2852 of file dsputil_mmx.c.
void ff_cavsdsp_init_mmx2 | ( | DSPContext * | c, | |
AVCodecContext * | avctx | |||
) |
void ff_flac_compute_autocorr_sse2 | ( | const int32_t * | data, | |
int | len, | |||
int | lag, | |||
double * | autoc | |||
) |
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.
void ff_mmx_idct | ( | DCTELEM * | block | ) |
void ff_mmxext_idct | ( | DCTELEM * | block | ) |
Definition at line 2855 of file dsputil_mmx.c.
Definition at line 2849 of file dsputil_mmx.c.
void ff_snow_horizontal_compose97i_mmx | ( | IDWTELEM * | b, | |
int | width | |||
) |
void ff_snow_horizontal_compose97i_sse2 | ( | IDWTELEM * | b, | |
int | width | |||
) |
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 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_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 | |||
) |
static void float_to_int16_3dnow | ( | int16_t * | dst, | |
const float * | src, | |||
int | len | |||
) | [static] |
static void float_to_int16_sse | ( | int16_t * | dst, | |
const float * | src, | |||
int | len | |||
) | [static] |
static void h263_h_loop_filter_mmx | ( | uint8_t * | src, | |
int | stride, | |||
int | qscale | |||
) | [static] |
static void h263_v_loop_filter_mmx | ( | uint8_t * | src, | |
int | stride, | |||
int | qscale | |||
) | [static] |
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().
Definition at line 281 of file dsputil_mmx.c.
Referenced by dsputil_init_mmx(), ff_idct_xvid_mmx2_put(), ff_idct_xvid_mmx_put(), and ff_simple_idct_put_mmx().
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] |
Definition at line 700 of file dsputil_mmx.c.
Referenced by h263_h_loop_filter_mmx(), h264_h_loop_filter_chroma_intra_mmx2(), h264_h_loop_filter_chroma_mmx2(), and h264_h_loop_filter_luma_mmx2().
static void vector_fmul_3dnow | ( | float * | dst, | |
const float * | src, | |||
int | len | |||
) | [static] |
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] |
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] |
static void vector_fmul_reverse_3dnow2 | ( | float * | dst, | |
const float * | src0, | |||
const float * | src1, | |||
int | len | |||
) | [static] |
static void vector_fmul_reverse_sse | ( | float * | dst, | |
const float * | src0, | |||
const float * | src1, | |||
int | len | |||
) | [static] |
static void vector_fmul_sse | ( | float * | dst, | |
const float * | src, | |||
int | len | |||
) | [static] |
static void vorbis_inverse_coupling_3dnow | ( | float * | mag, | |
float * | ang, | |||
int | blocksize | |||
) | [static] |
static void vorbis_inverse_coupling_sse | ( | float * | mag, | |
float * | ang, | |||
int | blocksize | |||
) | [static] |
int mm_flags |
Definition at line 41 of file dsputil_mmx.c.