SSE2 idct compatible with xvidmmx. More...
#include "libavcodec/dsputil.h"#include "libavutil/x86_cpu.h"#include "idct_xvid.h"#include "dsputil_mmx.h"Go to the source code of this file.
Macros | |
| #define | X8(x) x,x,x,x,x,x,x,x |
| #define | ROW_SHIFT 11 |
| #define | COL_SHIFT 6 |
| #define | ROW1 "%%xmm6" |
| #define | ROW3 "%%xmm4" |
| #define | ROW5 "%%xmm5" |
| #define | ROW7 "%%xmm7" |
| #define | CLEAR_ODD(r) "pxor "r","r" \n\t" |
| #define | PUT_ODD(dst) "pshufhw $0x1B, %%xmm2, "dst" \n\t" |
| #define | ROW0 "(%0)" |
| #define | REG0 "%%xmm4" |
| #define | ROW2 "2*16(%0)" |
| #define | REG2 "%%xmm4" |
| #define | ROW4 "4*16(%0)" |
| #define | REG4 "%%xmm6" |
| #define | ROW6 "6*16(%0)" |
| #define | REG6 "%%xmm6" |
| #define | CLEAR_EVEN(r) |
| #define | PUT_EVEN(dst) |
| #define | XMMS "%%xmm2" |
| #define | MOV_32_ONLY "movdqa " |
| #define | SREG2 "%%xmm7" |
| #define | TAN3 "%%xmm0" |
| #define | TAN1 "%%xmm2" |
| #define | ROUND(x) "paddd "MANGLE(x) |
| #define | JZ(reg, to) |
| #define | JNZ(reg, to) |
| #define | TEST_ONE_ROW(src, reg, clear) |
| #define | TEST_TWO_ROWS(row1, row2, reg1, reg2, clear1, clear2) |
| #define | iMTX_MULT(src, table, rounder, put) |
| IDCT pass on rows. | |
| #define | iLLM_HEAD |
| #define | iLLM_PASS(dct) |
| IDCT pass on columns. | |
| #define | iLLM_PASS_SPARSE(dct) |
| IDCT pass on columns, assuming rows 4-7 are zero. | |
Functions | |
| DECLARE_ASM_CONST (16, int16_t, tan1)[] | |
| DECLARE_ASM_CONST (16, int16_t, tan2)[] | |
| DECLARE_ASM_CONST (16, int16_t, tan3)[] | |
| DECLARE_ASM_CONST (16, int16_t, sqrt2)[] | |
| DECLARE_ASM_CONST (8, uint8_t, m127)[] | |
| DECLARE_ASM_CONST (16, int16_t, iTab1)[] | |
| DECLARE_ASM_CONST (16, int16_t, iTab2)[] | |
| DECLARE_ASM_CONST (16, int16_t, iTab3)[] | |
| DECLARE_ASM_CONST (16, int16_t, iTab4)[] | |
| DECLARE_ASM_CONST (16, int32_t, walkenIdctRounders)[] | |
| void | ff_idct_xvid_sse2 (short *block) |
| void | ff_idct_xvid_sse2_put (uint8_t *dest, int line_size, short *block) |
| void | ff_idct_xvid_sse2_add (uint8_t *dest, int line_size, short *block) |
SSE2 idct compatible with xvidmmx.
Definition in file idct_sse2_xvid.c.
| #define CLEAR_EVEN | ( | r | ) |
Definition at line 136 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
Definition at line 105 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define COL_SHIFT 6 |
Definition at line 54 of file idct_sse2_xvid.c.
| #define iLLM_HEAD |
Definition at line 201 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define iLLM_PASS | ( | dct | ) |
IDCT pass on columns.
Definition at line 206 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define iLLM_PASS_SPARSE | ( | dct | ) |
IDCT pass on columns, assuming rows 4-7 are zero.
Definition at line 284 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
IDCT pass on rows.
Definition at line 178 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define JNZ | ( | reg, | |
| to | |||
| ) |
Definition at line 154 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define JZ | ( | reg, | |
| to | |||
| ) |
Definition at line 150 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define MOV_32_ONLY "movdqa " |
Definition at line 141 of file idct_sse2_xvid.c.
| #define PUT_EVEN | ( | dst | ) |
Definition at line 137 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define PUT_ODD | ( | dst | ) | "pshufhw $0x1B, %%xmm2, "dst" \n\t" |
Definition at line 106 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define REG0 "%%xmm4" |
Definition at line 129 of file idct_sse2_xvid.c.
| #define REG2 "%%xmm4" |
Definition at line 131 of file idct_sse2_xvid.c.
| #define REG4 "%%xmm6" |
Definition at line 133 of file idct_sse2_xvid.c.
| #define REG6 "%%xmm6" |
Definition at line 135 of file idct_sse2_xvid.c.
| #define ROUND | ( | x | ) | "paddd "MANGLE(x) |
Definition at line 148 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define ROW0 "(%0)" |
Definition at line 128 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define ROW1 "%%xmm6" |
Definition at line 100 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define ROW2 "2*16(%0)" |
Definition at line 130 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define ROW3 "%%xmm4" |
Definition at line 101 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define ROW4 "4*16(%0)" |
Definition at line 132 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define ROW5 "%%xmm5" |
Definition at line 102 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define ROW6 "6*16(%0)" |
Definition at line 134 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define ROW7 "%%xmm7" |
Definition at line 103 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define ROW_SHIFT 11 |
Definition at line 53 of file idct_sse2_xvid.c.
| #define SREG2 "%%xmm7" |
Definition at line 142 of file idct_sse2_xvid.c.
| #define TAN1 "%%xmm2" |
Definition at line 144 of file idct_sse2_xvid.c.
| #define TAN3 "%%xmm0" |
Definition at line 143 of file idct_sse2_xvid.c.
| #define TEST_ONE_ROW | ( | src, | |
| reg, | |||
| clear | |||
| ) |
Definition at line 158 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define TEST_TWO_ROWS | ( | row1, | |
| row2, | |||
| reg1, | |||
| reg2, | |||
| clear1, | |||
| clear2 | |||
| ) |
Definition at line 165 of file idct_sse2_xvid.c.
Referenced by ff_idct_xvid_sse2().
| #define X8 | ( | x | ) | x,x,x,x,x,x,x,x |
Definition at line 51 of file idct_sse2_xvid.c.
| #define XMMS "%%xmm2" |
Definition at line 140 of file idct_sse2_xvid.c.
| DECLARE_ASM_CONST | ( | 16 | , |
| int16_t | , | ||
| tan1 | |||
| ) |
| DECLARE_ASM_CONST | ( | 16 | , |
| int16_t | , | ||
| tan2 | |||
| ) |
| DECLARE_ASM_CONST | ( | 16 | , |
| int16_t | , | ||
| tan3 | |||
| ) |
| DECLARE_ASM_CONST | ( | 16 | , |
| int16_t | , | ||
| sqrt2 | |||
| ) |
| DECLARE_ASM_CONST | ( | 8 | , |
| uint8_t | , | ||
| m127 | |||
| ) |
| DECLARE_ASM_CONST | ( | 16 | , |
| int16_t | , | ||
| iTab1 | |||
| ) |
| DECLARE_ASM_CONST | ( | 16 | , |
| int16_t | , | ||
| iTab2 | |||
| ) |
| DECLARE_ASM_CONST | ( | 16 | , |
| int16_t | , | ||
| iTab3 | |||
| ) |
| DECLARE_ASM_CONST | ( | 16 | , |
| int16_t | , | ||
| iTab4 | |||
| ) |
| DECLARE_ASM_CONST | ( | 16 | , |
| int32_t | , | ||
| walkenIdctRounders | |||
| ) |
|
inline |
Definition at line 344 of file idct_sse2_xvid.c.
Referenced by dsputil_init_mmx(), ff_idct_xvid_sse2_add(), and ff_idct_xvid_sse2_put().
| void ff_idct_xvid_sse2_add | ( | uint8_t * | dest, |
| int | line_size, | ||
| short * | block | ||
| ) |
Definition at line 399 of file idct_sse2_xvid.c.
Referenced by dsputil_init_mmx().
| void ff_idct_xvid_sse2_put | ( | uint8_t * | dest, |
| int | line_size, | ||
| short * | block | ||
| ) |
Definition at line 393 of file idct_sse2_xvid.c.
Referenced by dsputil_init_mmx().