#include "libavutil/common.h"
#include "libavutil/cpu.h"
#include "libavutil/x86_cpu.h"
#include "libavcodec/dsputil.h"
#include "libavcodec/cavsdsp.h"
#include "dsputil_mmx.h"
Go to the source code of this file.
Defines | |
#define | QPEL_CAVSV1(A, B, C, D, E, F, OP, MUL2) |
#define | QPEL_CAVSV2(A, B, C, D, E, F, OP, MUL2) |
#define | QPEL_CAVSV3(A, B, C, D, E, F, OP, MUL2) |
#define | QPEL_CAVSVNUM(VOP, OP, ADD, MUL1, MUL2) |
#define | QPEL_CAVS(OPNAME, OP, MMX) |
#define | CAVS_MC(OPNAME, SIZE, 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 | dspfunc(PFX, IDX, NUM) |
#define | dspfunc(PFX, IDX, NUM) |
Functions | |
static void | cavs_idct8_1d (int16_t *block, uint64_t bias) |
static void | cavs_idct8_add_mmx (uint8_t *dst, int16_t *block, int stride) |
static void | ff_cavsdsp_init_mmx2 (CAVSDSPContext *c, AVCodecContext *avctx) |
static void | ff_cavsdsp_init_3dnow (CAVSDSPContext *c, AVCodecContext *avctx) |
void | ff_cavsdsp_init_mmx (CAVSDSPContext *c, AVCodecContext *avctx) |
#define AVG_3DNOW_OP | ( | a, | |
b, | |||
temp, | |||
size | |||
) |
#define AVG_MMX2_OP | ( | a, | |
b, | |||
temp, | |||
size | |||
) |
static void ff_ ## OPNAME ## cavs_qpel ## SIZE ## _mc20_ ## MMX(uint8_t *dst, uint8_t *src, int stride){\ OPNAME ## cavs_qpel ## SIZE ## _h_ ## MMX(dst, src, stride, stride);\ }\ \ static void ff_ ## OPNAME ## cavs_qpel ## SIZE ## _mc01_ ## MMX(uint8_t *dst, uint8_t *src, int stride){\ OPNAME ## cavs_qpel ## SIZE ## _v1_ ## MMX(dst, src, stride, stride);\ }\ \ static void ff_ ## OPNAME ## cavs_qpel ## SIZE ## _mc02_ ## MMX(uint8_t *dst, uint8_t *src, int stride){\ OPNAME ## cavs_qpel ## SIZE ## _v2_ ## MMX(dst, src, stride, stride);\ }\ \ static void ff_ ## OPNAME ## cavs_qpel ## SIZE ## _mc03_ ## MMX(uint8_t *dst, uint8_t *src, int stride){\ OPNAME ## cavs_qpel ## SIZE ## _v3_ ## MMX(dst, src, stride, stride);\ }\
Definition at line 401 of file cavsdsp_mmx.c.
#define dspfunc | ( | PFX, | |
IDX, | |||
NUM | |||
) |
c->PFX ## _pixels_tab[IDX][ 0] = ff_ ## PFX ## NUM ## _mc00_mmx2; \ c->PFX ## _pixels_tab[IDX][ 2] = ff_ ## PFX ## NUM ## _mc20_mmx2; \ c->PFX ## _pixels_tab[IDX][ 4] = ff_ ## PFX ## NUM ## _mc01_mmx2; \ c->PFX ## _pixels_tab[IDX][ 8] = ff_ ## PFX ## NUM ## _mc02_mmx2; \ c->PFX ## _pixels_tab[IDX][12] = ff_ ## PFX ## NUM ## _mc03_mmx2; \
#define dspfunc | ( | PFX, | |
IDX, | |||
NUM | |||
) |
c->PFX ## _pixels_tab[IDX][ 0] = ff_ ## PFX ## NUM ## _mc00_mmx2; \ c->PFX ## _pixels_tab[IDX][ 2] = ff_ ## PFX ## NUM ## _mc20_3dnow; \ c->PFX ## _pixels_tab[IDX][ 4] = ff_ ## PFX ## NUM ## _mc01_3dnow; \ c->PFX ## _pixels_tab[IDX][ 8] = ff_ ## PFX ## NUM ## _mc02_3dnow; \ c->PFX ## _pixels_tab[IDX][12] = ff_ ## PFX ## NUM ## _mc03_3dnow; \
Definition at line 418 of file cavsdsp_mmx.c.
Definition at line 308 of file cavsdsp_mmx.c.
"movd (%0), "#F" \n\t"\ "movq "#C", %%mm6 \n\t"\ "pmullw %5, %%mm6 \n\t"\ "movq "#D", %%mm7 \n\t"\ "pmullw "MANGLE(MUL2)", %%mm7\n\t"\ "psllw $3, "#E" \n\t"\ "psubw "#E", %%mm6 \n\t"\ "psraw $3, "#E" \n\t"\ "paddw %%mm7, %%mm6 \n\t"\ "paddw "#E", %%mm6 \n\t"\ "paddw "#B", "#B" \n\t"\ "pxor %%mm7, %%mm7 \n\t"\ "add %2, %0 \n\t"\ "punpcklbw %%mm7, "#F" \n\t"\ "psubw "#B", %%mm6 \n\t"\ "psraw $1, "#B" \n\t"\ "psubw "#A", %%mm6 \n\t"\ "paddw %4, %%mm6 \n\t"\ "psraw $7, %%mm6 \n\t"\ "packuswb %%mm6, %%mm6 \n\t"\ OP(%%mm6, (%1), A, d) \ "add %3, %1 \n\t"
Definition at line 187 of file cavsdsp_mmx.c.
"movd (%0), "#F" \n\t"\ "movq "#C", %%mm6 \n\t"\ "paddw "#D", %%mm6 \n\t"\ "pmullw %5, %%mm6 \n\t"\ "add %2, %0 \n\t"\ "punpcklbw %%mm7, "#F" \n\t"\ "psubw "#B", %%mm6 \n\t"\ "psubw "#E", %%mm6 \n\t"\ "paddw %4, %%mm6 \n\t"\ "psraw $3, %%mm6 \n\t"\ "packuswb %%mm6, %%mm6 \n\t"\ OP(%%mm6, (%1), A, d) \ "add %3, %1 \n\t"
Definition at line 212 of file cavsdsp_mmx.c.
"movd (%0), "#F" \n\t"\ "movq "#C", %%mm6 \n\t"\ "pmullw "MANGLE(MUL2)", %%mm6\n\t"\ "movq "#D", %%mm7 \n\t"\ "pmullw %5, %%mm7 \n\t"\ "psllw $3, "#B" \n\t"\ "psubw "#B", %%mm6 \n\t"\ "psraw $3, "#B" \n\t"\ "paddw %%mm7, %%mm6 \n\t"\ "paddw "#B", %%mm6 \n\t"\ "paddw "#E", "#E" \n\t"\ "pxor %%mm7, %%mm7 \n\t"\ "add %2, %0 \n\t"\ "punpcklbw %%mm7, "#F" \n\t"\ "psubw "#E", %%mm6 \n\t"\ "psraw $1, "#E" \n\t"\ "psubw "#F", %%mm6 \n\t"\ "paddw %4, %%mm6 \n\t"\ "psraw $7, %%mm6 \n\t"\ "packuswb %%mm6, %%mm6 \n\t"\ OP(%%mm6, (%1), A, d) \ "add %3, %1 \n\t"
Definition at line 228 of file cavsdsp_mmx.c.
#define QPEL_CAVSVNUM | ( | VOP, | |
OP, | |||
ADD, | |||
MUL1, | |||
MUL2 | |||
) |
Definition at line 253 of file cavsdsp_mmx.c.
static void cavs_idct8_1d | ( | int16_t * | block, |
uint64_t | bias | ||
) | [inline, static] |
Definition at line 38 of file cavsdsp_mmx.c.
Referenced by cavs_idct8_add_mmx().
static void cavs_idct8_add_mmx | ( | uint8_t * | dst, |
int16_t * | block, | ||
int | stride | ||
) | [static] |
Definition at line 115 of file cavsdsp_mmx.c.
Referenced by ff_cavsdsp_init_3dnow(), and ff_cavsdsp_init_mmx2().
static void ff_cavsdsp_init_3dnow | ( | CAVSDSPContext * | c, |
AVCodecContext * | avctx | ||
) | [static] |
Definition at line 458 of file cavsdsp_mmx.c.
Referenced by ff_cavsdsp_init_mmx().
void ff_cavsdsp_init_mmx | ( | CAVSDSPContext * | c, |
AVCodecContext * | avctx | ||
) |
Definition at line 474 of file cavsdsp_mmx.c.
Referenced by ff_cavsdsp_init().
static void ff_cavsdsp_init_mmx2 | ( | CAVSDSPContext * | c, |
AVCodecContext * | avctx | ||
) | [static] |
Definition at line 442 of file cavsdsp_mmx.c.
Referenced by ff_cavsdsp_init_mmx().