#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 | PAVGB "pavgusb" |
#define | PAVGB "pavgb" |
#define | LUMA_MC_OP(OP, NUM, DEPTH, TYPE, OPT) |
#define | LUMA_MC_ALL(DEPTH, TYPE, OPT) |
#define | LUMA_MC_816(DEPTH, TYPE, OPT) |
#define | QPEL16_OPMC(OP, MC, MMX) |
#define | QPEL16_OP(MC, MMX) |
#define | QPEL16(MMX) |
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 1024 of file h264_qpel_mmx.c.
#define avg_h264_qpel16_v_lowpass_ssse3 avg_h264_qpel16_v_lowpass_sse2 |
Definition at line 1029 of file h264_qpel_mmx.c.
#define avg_h264_qpel8_h_lowpass_l2_sse2 avg_h264_qpel8_h_lowpass_l2_mmx2 |
Definition at line 1022 of file h264_qpel_mmx.c.
#define avg_h264_qpel8_mc00_sse2 avg_h264_qpel8_mc00_mmx2 |
Definition at line 1047 of file h264_qpel_mmx.c.
#define avg_h264_qpel8_v_lowpass_ssse3 avg_h264_qpel8_v_lowpass_sse2 |
Definition at line 1027 of file h264_qpel_mmx.c.
#define avg_h264_qpel8or16_hv2_lowpass_sse2 avg_h264_qpel8or16_hv2_lowpass_mmx2 |
Definition at line 1032 of file h264_qpel_mmx.c.
#define avg_pixels16_l2_shift5_sse2 avg_pixels16_l2_shift5_mmx2 |
Definition at line 1015 of file h264_qpel_mmx.c.
#define avg_pixels16_l2_shift5_ssse3 avg_pixels16_l2_shift5_mmx2 |
Definition at line 1019 of file h264_qpel_mmx.c.
#define avg_pixels16_l2_sse2 avg_pixels16_l2_mmx2 |
Definition at line 1006 of file h264_qpel_mmx.c.
#define avg_pixels16_l2_ssse3 avg_pixels16_l2_mmx2 |
Definition at line 1010 of file h264_qpel_mmx.c.
#define avg_pixels8_l2_shift5_sse2 avg_pixels8_l2_shift5_mmx2 |
Definition at line 1013 of file h264_qpel_mmx.c.
#define avg_pixels8_l2_shift5_ssse3 avg_pixels8_l2_shift5_mmx2 |
Definition at line 1017 of file h264_qpel_mmx.c.
#define avg_pixels8_l2_sse2 avg_pixels8_l2_mmx2 |
Definition at line 1004 of file h264_qpel_mmx.c.
#define avg_pixels8_l2_ssse3 avg_pixels8_l2_mmx2 |
Definition at line 1008 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 1054 of file h264_qpel_mmx.c.
#define H264_MC_HV | ( | OPNAME, | |||
SIZE, | |||||
MMX, | |||||
ALIGN | ) |
Definition at line 1084 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 1067 of file h264_qpel_mmx.c.
#define LUMA_MC_816 | ( | DEPTH, | |||
TYPE, | |||||
OPT | ) |
Value:
LUMA_MC_OP(put, 8, DEPTH, TYPE, OPT) \ LUMA_MC_OP(avg, 8, DEPTH, TYPE, OPT) \ LUMA_MC_OP(put, 16, DEPTH, TYPE, OPT) \ LUMA_MC_OP(avg, 16, DEPTH, TYPE, OPT)
Definition at line 1209 of file h264_qpel_mmx.c.
#define LUMA_MC_ALL | ( | DEPTH, | |||
TYPE, | |||||
OPT | ) |
Value:
LUMA_MC_OP(put, 4, DEPTH, TYPE, OPT) \ LUMA_MC_OP(avg, 4, DEPTH, TYPE, OPT) \ LUMA_MC_OP(put, 8, DEPTH, TYPE, OPT) \ LUMA_MC_OP(avg, 8, DEPTH, TYPE, OPT) \ LUMA_MC_OP(put, 16, DEPTH, TYPE, OPT) \ LUMA_MC_OP(avg, 16, DEPTH, TYPE, OPT)
Definition at line 1201 of file h264_qpel_mmx.c.
#define LUMA_MC_OP | ( | OP, | |||
NUM, | |||||
DEPTH, | |||||
TYPE, | |||||
OPT | ) |
#define PAVGB "pavgb" |
Definition at line 1168 of file h264_qpel_mmx.c.
#define PAVGB "pavgusb" |
Definition at line 1168 of file h264_qpel_mmx.c.
#define put_h264_qpel16_h_lowpass_l2_sse2 put_h264_qpel16_h_lowpass_l2_mmx2 |
Definition at line 1023 of file h264_qpel_mmx.c.
#define put_h264_qpel16_v_lowpass_ssse3 put_h264_qpel16_v_lowpass_sse2 |
Definition at line 1028 of file h264_qpel_mmx.c.
#define put_h264_qpel8_h_lowpass_l2_sse2 put_h264_qpel8_h_lowpass_l2_mmx2 |
Definition at line 1021 of file h264_qpel_mmx.c.
#define put_h264_qpel8_mc00_sse2 put_h264_qpel8_mc00_mmx2 |
Definition at line 1046 of file h264_qpel_mmx.c.
#define put_h264_qpel8_v_lowpass_ssse3 put_h264_qpel8_v_lowpass_sse2 |
Definition at line 1026 of file h264_qpel_mmx.c.
#define put_h264_qpel8or16_hv2_lowpass_sse2 put_h264_qpel8or16_hv2_lowpass_mmx2 |
Definition at line 1031 of file h264_qpel_mmx.c.
#define put_pixels16_l2_shift5_sse2 put_pixels16_l2_shift5_mmx2 |
Definition at line 1014 of file h264_qpel_mmx.c.
#define put_pixels16_l2_shift5_ssse3 put_pixels16_l2_shift5_mmx2 |
Definition at line 1018 of file h264_qpel_mmx.c.
#define put_pixels16_l2_sse2 put_pixels16_l2_mmx2 |
Definition at line 1005 of file h264_qpel_mmx.c.
#define put_pixels16_l2_ssse3 put_pixels16_l2_mmx2 |
Definition at line 1009 of file h264_qpel_mmx.c.
#define put_pixels8_l2_shift5_sse2 put_pixels8_l2_shift5_mmx2 |
Definition at line 1012 of file h264_qpel_mmx.c.
#define put_pixels8_l2_shift5_ssse3 put_pixels8_l2_shift5_mmx2 |
Definition at line 1016 of file h264_qpel_mmx.c.
#define put_pixels8_l2_sse2 put_pixels8_l2_mmx2 |
Definition at line 1003 of file h264_qpel_mmx.c.
#define put_pixels8_l2_ssse3 put_pixels8_l2_mmx2 |
Definition at line 1007 of file h264_qpel_mmx.c.
#define QPEL16 | ( | MMX | ) |
Value:
QPEL16_OP(mc00, MMX)\ QPEL16_OP(mc01, MMX)\ QPEL16_OP(mc02, MMX)\ QPEL16_OP(mc03, MMX)\ QPEL16_OP(mc10, MMX)\ QPEL16_OP(mc11, MMX)\ QPEL16_OP(mc12, MMX)\ QPEL16_OP(mc13, MMX)\ QPEL16_OP(mc20, MMX)\ QPEL16_OP(mc21, MMX)\ QPEL16_OP(mc22, MMX)\ QPEL16_OP(mc23, MMX)\ QPEL16_OP(mc30, MMX)\ QPEL16_OP(mc31, MMX)\ QPEL16_OP(mc32, MMX)\ QPEL16_OP(mc33, MMX)
Definition at line 1269 of file h264_qpel_mmx.c.
#define QPEL16_OP | ( | MC, | |||
MMX | ) |
Value:
QPEL16_OPMC(put, MC, MMX)\ QPEL16_OPMC(avg, MC, MMX)
Definition at line 1265 of file h264_qpel_mmx.c.
#define QPEL16_OPMC | ( | OP, | |||
MC, | |||||
MMX | ) |
Value:
void ff_ ## OP ## _h264_qpel16_ ## MC ## _10_ ## MMX(uint8_t *dst, uint8_t *src, int stride){\ ff_ ## OP ## _h264_qpel8_ ## MC ## _10_ ## MMX(dst , src , stride);\ ff_ ## OP ## _h264_qpel8_ ## MC ## _10_ ## MMX(dst+16, src+16, stride);\ src += 8*stride;\ dst += 8*stride;\ ff_ ## OP ## _h264_qpel8_ ## MC ## _10_ ## MMX(dst , src , stride);\ ff_ ## OP ## _h264_qpel8_ ## MC ## _10_ ## MMX(dst+16, src+16, stride);\ }
Definition at line 1255 of file h264_qpel_mmx.c.
#define QPEL_H264 | ( | OPNAME, | |||
OP, | |||||
MMX | ) |
Definition at line 66 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 676 of file h264_qpel_mmx.c.
#define QPEL_H264_H_XMM | ( | OPNAME, | |||
OP, | |||||
MMX | ) |
Definition at line 688 of file h264_qpel_mmx.c.
#define QPEL_H264_HV2_XMM | ( | OPNAME, | |||
OP, | |||||
MMX | ) |
Definition at line 892 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 991 of file h264_qpel_mmx.c.
#define QPEL_H264_V_XMM | ( | OPNAME, | |||
OP, | |||||
MMX | ) |
Definition at line 785 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 61 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 45 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 60 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 27 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 62 of file h264_qpel_mmx.c.
Definition at line 1043 of file h264_qpel_mmx.c.
Definition at line 1040 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 841 of file h264_qpel_mmx.c.