#include "dsputil_mmx.h"
Go to the source code of this file.
Defines | |
#define | QPEL_H264V_MM(A, B, C, D, E, F, OP, T, Z, d, q) |
#define | QPEL_H264HV_MM(A, B, C, D, E, F, OF, T, Z, d, q) |
#define | QPEL_H264V(A, B, C, D, E, F, OP) QPEL_H264V_MM(A,B,C,D,E,F,OP,%%mm6,%%mm7,d,q) |
#define | QPEL_H264HV(A, B, C, D, E, F, OF) QPEL_H264HV_MM(A,B,C,D,E,F,OF,%%mm6,%%mm7,d,q) |
#define | QPEL_H264V_XMM(A, B, C, D, E, F, OP) QPEL_H264V_MM(A,B,C,D,E,F,OP,%%xmm6,%%xmm7,q,dqa) |
#define | QPEL_H264HV_XMM(A, B, C, D, E, F, OF) QPEL_H264HV_MM(A,B,C,D,E,F,OF,%%xmm6,%%xmm7,q,dqa) |
#define | QPEL_H264(OPNAME, OP, MMX) |
#define | QPEL_H264_H16_XMM(OPNAME, OP, MMX) |
#define | QPEL_H264_H_XMM(OPNAME, OP, MMX) |
#define | QPEL_H264_V_XMM(OPNAME, OP, MMX) |
#define | QPEL_H264_HV2_XMM(OPNAME, OP, MMX) |
#define | QPEL_H264_HV_XMM(OPNAME, OP, MMX) |
#define | put_pixels8_l2_sse2 put_pixels8_l2_mmx2 |
#define | avg_pixels8_l2_sse2 avg_pixels8_l2_mmx2 |
#define | put_pixels16_l2_sse2 put_pixels16_l2_mmx2 |
#define | avg_pixels16_l2_sse2 avg_pixels16_l2_mmx2 |
#define | put_pixels8_l2_ssse3 put_pixels8_l2_mmx2 |
#define | avg_pixels8_l2_ssse3 avg_pixels8_l2_mmx2 |
#define | put_pixels16_l2_ssse3 put_pixels16_l2_mmx2 |
#define | avg_pixels16_l2_ssse3 avg_pixels16_l2_mmx2 |
#define | put_pixels8_l2_shift5_sse2 put_pixels8_l2_shift5_mmx2 |
#define | avg_pixels8_l2_shift5_sse2 avg_pixels8_l2_shift5_mmx2 |
#define | put_pixels16_l2_shift5_sse2 put_pixels16_l2_shift5_mmx2 |
#define | avg_pixels16_l2_shift5_sse2 avg_pixels16_l2_shift5_mmx2 |
#define | put_pixels8_l2_shift5_ssse3 put_pixels8_l2_shift5_mmx2 |
#define | avg_pixels8_l2_shift5_ssse3 avg_pixels8_l2_shift5_mmx2 |
#define | put_pixels16_l2_shift5_ssse3 put_pixels16_l2_shift5_mmx2 |
#define | avg_pixels16_l2_shift5_ssse3 avg_pixels16_l2_shift5_mmx2 |
#define | put_h264_qpel8_h_lowpass_l2_sse2 put_h264_qpel8_h_lowpass_l2_mmx2 |
#define | avg_h264_qpel8_h_lowpass_l2_sse2 avg_h264_qpel8_h_lowpass_l2_mmx2 |
#define | put_h264_qpel16_h_lowpass_l2_sse2 put_h264_qpel16_h_lowpass_l2_mmx2 |
#define | avg_h264_qpel16_h_lowpass_l2_sse2 avg_h264_qpel16_h_lowpass_l2_mmx2 |
#define | put_h264_qpel8_v_lowpass_ssse3 put_h264_qpel8_v_lowpass_sse2 |
#define | avg_h264_qpel8_v_lowpass_ssse3 avg_h264_qpel8_v_lowpass_sse2 |
#define | put_h264_qpel16_v_lowpass_ssse3 put_h264_qpel16_v_lowpass_sse2 |
#define | avg_h264_qpel16_v_lowpass_ssse3 avg_h264_qpel16_v_lowpass_sse2 |
#define | put_h264_qpel8or16_hv2_lowpass_sse2 put_h264_qpel8or16_hv2_lowpass_mmx2 |
#define | avg_h264_qpel8or16_hv2_lowpass_sse2 avg_h264_qpel8or16_hv2_lowpass_mmx2 |
#define | H264_MC(OPNAME, SIZE, MMX, ALIGN) |
#define | put_h264_qpel8_mc00_sse2 put_h264_qpel8_mc00_mmx2 |
#define | avg_h264_qpel8_mc00_sse2 avg_h264_qpel8_mc00_mmx2 |
#define | H264_MC_C(OPNAME, SIZE, MMX, ALIGN) |
#define | H264_MC_H(OPNAME, SIZE, MMX, ALIGN) |
#define | H264_MC_V(OPNAME, SIZE, MMX, ALIGN) |
#define | H264_MC_HV(OPNAME, SIZE, MMX, ALIGN) |
#define | H264_MC_4816(MMX) |
#define | H264_MC_816(QPEL, XMM) |
#define | AVG_3DNOW_OP(a, b, temp, size) |
#define | AVG_MMX2_OP(a, b, temp, size) |
#define | PAVGB "pavgusb" |
#define | PAVGB "pavgb" |
Functions | |
static av_always_inline void | put_h264_qpel8or16_hv1_lowpass_sse2 (int16_t *tmp, uint8_t *src, int tmpStride, int srcStride, int size) |
static void | put_h264_qpel16_mc00_sse2 (uint8_t *dst, uint8_t *src, int stride) |
static void | avg_h264_qpel16_mc00_sse2 (uint8_t *dst, uint8_t *src, int stride) |
#define avg_h264_qpel16_h_lowpass_l2_sse2 avg_h264_qpel16_h_lowpass_l2_mmx2 |
Definition at line 1023 of file h264_qpel_mmx.c.
#define avg_h264_qpel16_v_lowpass_ssse3 avg_h264_qpel16_v_lowpass_sse2 |
Definition at line 1028 of file h264_qpel_mmx.c.
#define avg_h264_qpel8_h_lowpass_l2_sse2 avg_h264_qpel8_h_lowpass_l2_mmx2 |
Definition at line 1021 of file h264_qpel_mmx.c.
#define avg_h264_qpel8_mc00_sse2 avg_h264_qpel8_mc00_mmx2 |
Definition at line 1046 of file h264_qpel_mmx.c.
#define avg_h264_qpel8_v_lowpass_ssse3 avg_h264_qpel8_v_lowpass_sse2 |
Definition at line 1026 of file h264_qpel_mmx.c.
#define avg_h264_qpel8or16_hv2_lowpass_sse2 avg_h264_qpel8or16_hv2_lowpass_mmx2 |
Definition at line 1031 of file h264_qpel_mmx.c.
#define avg_pixels16_l2_shift5_sse2 avg_pixels16_l2_shift5_mmx2 |
Definition at line 1014 of file h264_qpel_mmx.c.
#define avg_pixels16_l2_shift5_ssse3 avg_pixels16_l2_shift5_mmx2 |
Definition at line 1018 of file h264_qpel_mmx.c.
#define avg_pixels16_l2_sse2 avg_pixels16_l2_mmx2 |
Definition at line 1005 of file h264_qpel_mmx.c.
#define avg_pixels16_l2_ssse3 avg_pixels16_l2_mmx2 |
Definition at line 1009 of file h264_qpel_mmx.c.
#define avg_pixels8_l2_shift5_sse2 avg_pixels8_l2_shift5_mmx2 |
Definition at line 1012 of file h264_qpel_mmx.c.
#define avg_pixels8_l2_shift5_ssse3 avg_pixels8_l2_shift5_mmx2 |
Definition at line 1016 of file h264_qpel_mmx.c.
#define avg_pixels8_l2_sse2 avg_pixels8_l2_mmx2 |
Definition at line 1003 of file h264_qpel_mmx.c.
#define avg_pixels8_l2_ssse3 avg_pixels8_l2_mmx2 |
Definition at line 1007 of file h264_qpel_mmx.c.
#define H264_MC | ( | OPNAME, | |||
SIZE, | |||||
MMX, | |||||
ALIGN | ) |
#define H264_MC_4816 | ( | MMX | ) |
#define H264_MC_816 | ( | QPEL, | |||
XMM | ) |
#define H264_MC_C | ( | OPNAME, | |||
SIZE, | |||||
MMX, | |||||
ALIGN | ) |
#define H264_MC_H | ( | OPNAME, | |||
SIZE, | |||||
MMX, | |||||
ALIGN | ) |
Value:
static void OPNAME ## h264_qpel ## SIZE ## _mc10_ ## MMX(uint8_t *dst, uint8_t *src, int stride){\ OPNAME ## h264_qpel ## SIZE ## _h_lowpass_l2_ ## MMX(dst, src, src, stride, stride);\ }\ \ static void OPNAME ## h264_qpel ## SIZE ## _mc20_ ## MMX(uint8_t *dst, uint8_t *src, int stride){\ OPNAME ## h264_qpel ## SIZE ## _h_lowpass_ ## MMX(dst, src, stride, stride);\ }\ \ static void OPNAME ## h264_qpel ## SIZE ## _mc30_ ## MMX(uint8_t *dst, uint8_t *src, int stride){\ OPNAME ## h264_qpel ## SIZE ## _h_lowpass_l2_ ## MMX(dst, src, src+1, stride, stride);\ }\
Definition at line 1053 of file h264_qpel_mmx.c.
#define H264_MC_HV | ( | OPNAME, | |||
SIZE, | |||||
MMX, | |||||
ALIGN | ) |
Definition at line 1083 of file h264_qpel_mmx.c.
#define H264_MC_V | ( | OPNAME, | |||
SIZE, | |||||
MMX, | |||||
ALIGN | ) |
Value:
static void OPNAME ## h264_qpel ## SIZE ## _mc01_ ## MMX(uint8_t *dst, uint8_t *src, int stride){\ DECLARE_ALIGNED(ALIGN, uint8_t, temp)[SIZE*SIZE];\ put_h264_qpel ## SIZE ## _v_lowpass_ ## MMX(temp, src, SIZE, stride);\ OPNAME ## pixels ## SIZE ## _l2_ ## MMX(dst, src, temp, stride, stride, SIZE);\ }\ \ static void OPNAME ## h264_qpel ## SIZE ## _mc02_ ## MMX(uint8_t *dst, uint8_t *src, int stride){\ OPNAME ## h264_qpel ## SIZE ## _v_lowpass_ ## MMX(dst, src, stride, stride);\ }\ \ static void OPNAME ## h264_qpel ## SIZE ## _mc03_ ## MMX(uint8_t *dst, uint8_t *src, int stride){\ DECLARE_ALIGNED(ALIGN, uint8_t, temp)[SIZE*SIZE];\ put_h264_qpel ## SIZE ## _v_lowpass_ ## MMX(temp, src, SIZE, stride);\ OPNAME ## pixels ## SIZE ## _l2_ ## MMX(dst, src+stride, temp, stride, stride, SIZE);\ }\
Definition at line 1066 of file h264_qpel_mmx.c.
#define PAVGB "pavgb" |
Definition at line 1177 of file h264_qpel_mmx.c.
#define PAVGB "pavgusb" |
Definition at line 1177 of file h264_qpel_mmx.c.
#define put_h264_qpel16_h_lowpass_l2_sse2 put_h264_qpel16_h_lowpass_l2_mmx2 |
Definition at line 1022 of file h264_qpel_mmx.c.
#define put_h264_qpel16_v_lowpass_ssse3 put_h264_qpel16_v_lowpass_sse2 |
Definition at line 1027 of file h264_qpel_mmx.c.
#define put_h264_qpel8_h_lowpass_l2_sse2 put_h264_qpel8_h_lowpass_l2_mmx2 |
Definition at line 1020 of file h264_qpel_mmx.c.
#define put_h264_qpel8_mc00_sse2 put_h264_qpel8_mc00_mmx2 |
Definition at line 1045 of file h264_qpel_mmx.c.
#define put_h264_qpel8_v_lowpass_ssse3 put_h264_qpel8_v_lowpass_sse2 |
Definition at line 1025 of file h264_qpel_mmx.c.
#define put_h264_qpel8or16_hv2_lowpass_sse2 put_h264_qpel8or16_hv2_lowpass_mmx2 |
Definition at line 1030 of file h264_qpel_mmx.c.
#define put_pixels16_l2_shift5_sse2 put_pixels16_l2_shift5_mmx2 |
Definition at line 1013 of file h264_qpel_mmx.c.
#define put_pixels16_l2_shift5_ssse3 put_pixels16_l2_shift5_mmx2 |
Definition at line 1017 of file h264_qpel_mmx.c.
#define put_pixels16_l2_sse2 put_pixels16_l2_mmx2 |
Definition at line 1004 of file h264_qpel_mmx.c.
#define put_pixels16_l2_ssse3 put_pixels16_l2_mmx2 |
Definition at line 1008 of file h264_qpel_mmx.c.
#define put_pixels8_l2_shift5_sse2 put_pixels8_l2_shift5_mmx2 |
Definition at line 1011 of file h264_qpel_mmx.c.
#define put_pixels8_l2_shift5_ssse3 put_pixels8_l2_shift5_mmx2 |
Definition at line 1015 of file h264_qpel_mmx.c.
#define put_pixels8_l2_sse2 put_pixels8_l2_mmx2 |
Definition at line 1002 of file h264_qpel_mmx.c.
#define put_pixels8_l2_ssse3 put_pixels8_l2_mmx2 |
Definition at line 1006 of file h264_qpel_mmx.c.
#define QPEL_H264 | ( | OPNAME, | |||
OP, | |||||
MMX | ) |
Definition at line 65 of file h264_qpel_mmx.c.
#define QPEL_H264_H16_XMM | ( | OPNAME, | |||
OP, | |||||
MMX | ) |
Value:
static av_noinline void OPNAME ## h264_qpel16_h_lowpass_l2_ ## MMX(uint8_t *dst, uint8_t *src, uint8_t *src2, int dstStride, int src2Stride){\ OPNAME ## h264_qpel8_h_lowpass_l2_ ## MMX(dst , src , src2 , dstStride, src2Stride);\ OPNAME ## h264_qpel8_h_lowpass_l2_ ## MMX(dst+8, src+8, src2+8, dstStride, src2Stride);\ src += 8*dstStride;\ dst += 8*dstStride;\ src2 += 8*src2Stride;\ OPNAME ## h264_qpel8_h_lowpass_l2_ ## MMX(dst , src , src2 , dstStride, src2Stride);\ OPNAME ## h264_qpel8_h_lowpass_l2_ ## MMX(dst+8, src+8, src2+8, dstStride, src2Stride);\ }
Definition at line 675 of file h264_qpel_mmx.c.
#define QPEL_H264_H_XMM | ( | OPNAME, | |||
OP, | |||||
MMX | ) |
Definition at line 687 of file h264_qpel_mmx.c.
#define QPEL_H264_HV2_XMM | ( | OPNAME, | |||
OP, | |||||
MMX | ) |
Definition at line 891 of file h264_qpel_mmx.c.
#define QPEL_H264_HV_XMM | ( | OPNAME, | |||
OP, | |||||
MMX | ) |
Value:
static av_noinline void OPNAME ## h264_qpel8or16_hv_lowpass_ ## MMX(uint8_t *dst, int16_t *tmp, uint8_t *src, int dstStride, int tmpStride, int srcStride, int size){\ put_h264_qpel8or16_hv1_lowpass_sse2(tmp, src, tmpStride, srcStride, size);\ OPNAME ## h264_qpel8or16_hv2_lowpass_ ## MMX(dst, tmp, dstStride, tmpStride, size);\ }\ static void OPNAME ## h264_qpel8_hv_lowpass_ ## MMX(uint8_t *dst, int16_t *tmp, uint8_t *src, int dstStride, int tmpStride, int srcStride){\ OPNAME ## h264_qpel8or16_hv_lowpass_ ## MMX(dst, tmp, src, dstStride, tmpStride, srcStride, 8);\ }\ static void OPNAME ## h264_qpel16_hv_lowpass_ ## MMX(uint8_t *dst, int16_t *tmp, uint8_t *src, int dstStride, int tmpStride, int srcStride){\ OPNAME ## h264_qpel8or16_hv_lowpass_ ## MMX(dst, tmp, src, dstStride, tmpStride, srcStride, 16);\ }\
Definition at line 990 of file h264_qpel_mmx.c.
#define QPEL_H264_V_XMM | ( | OPNAME, | |||
OP, | |||||
MMX | ) |
Definition at line 784 of file h264_qpel_mmx.c.
#define QPEL_H264HV | ( | A, | |||
B, | |||||
C, | |||||
D, | |||||
E, | |||||
F, | |||||
OF | ) | QPEL_H264HV_MM(A,B,C,D,E,F,OF,%%mm6,%%mm7,d,q) |
Definition at line 60 of file h264_qpel_mmx.c.
#define QPEL_H264HV_MM | ( | A, | |||
B, | |||||
C, | |||||
D, | |||||
E, | |||||
F, | |||||
OF, | |||||
T, | |||||
Z, | |||||
d, | |||||
q | ) |
Value:
"mov"#q" "#C", "#T" \n\t"\ "mov"#d" (%0), "#F" \n\t"\ "paddw "#D", "#T" \n\t"\ "psllw $2, "#T" \n\t"\ "paddw "MANGLE(ff_pw_16)", "#A"\n\t"\ "psubw "#B", "#T" \n\t"\ "psubw "#E", "#T" \n\t"\ "punpcklbw "#Z", "#F" \n\t"\ "pmullw "MANGLE(ff_pw_5)", "#T"\n\t"\ "paddw "#F", "#A" \n\t"\ "add %2, %0 \n\t"\ "paddw "#A", "#T" \n\t"\ "mov"#q" "#T", "#OF"(%1) \n\t"
Definition at line 44 of file h264_qpel_mmx.c.
#define QPEL_H264HV_XMM | ( | A, | |||
B, | |||||
C, | |||||
D, | |||||
E, | |||||
F, | |||||
OF | ) | QPEL_H264HV_MM(A,B,C,D,E,F,OF,%%xmm6,%%xmm7,q,dqa) |
#define QPEL_H264V | ( | A, | |||
B, | |||||
C, | |||||
D, | |||||
E, | |||||
F, | |||||
OP | ) | QPEL_H264V_MM(A,B,C,D,E,F,OP,%%mm6,%%mm7,d,q) |
Definition at line 59 of file h264_qpel_mmx.c.
#define QPEL_H264V_MM | ( | A, | |||
B, | |||||
C, | |||||
D, | |||||
E, | |||||
F, | |||||
OP, | |||||
T, | |||||
Z, | |||||
d, | |||||
q | ) |
Value:
"mov"#q" "#C", "#T" \n\t"\ "mov"#d" (%0), "#F" \n\t"\ "paddw "#D", "#T" \n\t"\ "psllw $2, "#T" \n\t"\ "psubw "#B", "#T" \n\t"\ "psubw "#E", "#T" \n\t"\ "punpcklbw "#Z", "#F" \n\t"\ "pmullw "MANGLE(ff_pw_5)", "#T"\n\t"\ "paddw "MANGLE(ff_pw_16)", "#A"\n\t"\ "add %2, %0 \n\t"\ "paddw "#F", "#A" \n\t"\ "paddw "#A", "#T" \n\t"\ "psraw $5, "#T" \n\t"\ "packuswb "#T", "#T" \n\t"\ OP(T, (%1), A, d)\ "add %3, %1 \n\t"
Definition at line 26 of file h264_qpel_mmx.c.
#define QPEL_H264V_XMM | ( | A, | |||
B, | |||||
C, | |||||
D, | |||||
E, | |||||
F, | |||||
OP | ) | QPEL_H264V_MM(A,B,C,D,E,F,OP,%%xmm6,%%xmm7,q,dqa) |
Definition at line 61 of file h264_qpel_mmx.c.
static void avg_h264_qpel16_mc00_sse2 | ( | uint8_t * | dst, | |
uint8_t * | src, | |||
int | stride | |||
) | [static] |
Definition at line 1042 of file h264_qpel_mmx.c.
static void put_h264_qpel16_mc00_sse2 | ( | uint8_t * | dst, | |
uint8_t * | src, | |||
int | stride | |||
) | [static] |
Definition at line 1039 of file h264_qpel_mmx.c.
static av_always_inline void put_h264_qpel8or16_hv1_lowpass_sse2 | ( | int16_t * | tmp, | |
uint8_t * | src, | |||
int | tmpStride, | |||
int | srcStride, | |||
int | size | |||
) | [static] |
Definition at line 840 of file h264_qpel_mmx.c.