Go to the source code of this file.
Defines | |
#define | MM "%%mm" |
#define | MOV "movd" |
#define | MOVQ "movq" |
#define | MOVQU "movq" |
#define | STEP 4 |
#define | LOAD(mem, dst) |
#define | PSRL1(reg) "psrlq $8, "reg" \n\t" |
#define | PSRL2(reg) "psrlq $16, "reg" \n\t" |
#define | PSHUF(src, dst) "pshufw $9, "dst", "src" \n\t" |
#define | PABS(tmp, dst) |
#define | CHECK(pj, mj) |
#define | CHECK1 |
#define | CHECK2 |
#define | FILTER |
#define | prev2 "prev" |
#define | next2 "cur" |
#define | prev2 "cur" |
#define | next2 "next" |
Functions | |
void | ff_yadif_filter_line_TMPL (uint8_t *dst, uint8_t *prev, uint8_t *cur, uint8_t *next, int w, int prefs, int mrefs, int parity, int mode) |
#define CHECK | ( | pj, | |||
mj | ) |
Value:
MOVQU" "#pj"(%[cur],%[mrefs]), "MM"2 \n\t" /* cur[x-refs-1+j] */\ MOVQU" "#mj"(%[cur],%[prefs]), "MM"3 \n\t" /* cur[x+refs-1-j] */\ MOVQ" "MM"2, "MM"4 \n\t"\ MOVQ" "MM"2, "MM"5 \n\t"\ "pxor "MM"3, "MM"4 \n\t"\ "pavgb "MM"3, "MM"5 \n\t"\ "pand "MANGLE(pb_1)", "MM"4 \n\t"\ "psubusb "MM"4, "MM"5 \n\t"\ PSRL1(MM"5") \ "punpcklbw "MM"7, "MM"5 \n\t" /* (cur[x-refs+j] + cur[x+refs-j])>>1 */\ MOVQ" "MM"2, "MM"4 \n\t"\ "psubusb "MM"3, "MM"2 \n\t"\ "psubusb "MM"4, "MM"3 \n\t"\ "pmaxub "MM"3, "MM"2 \n\t"\ MOVQ" "MM"2, "MM"3 \n\t"\ MOVQ" "MM"2, "MM"4 \n\t" /* ABS(cur[x-refs-1+j] - cur[x+refs-1-j]) */\ PSRL1(MM"3") /* ABS(cur[x-refs +j] - cur[x+refs -j]) */\ PSRL2(MM"4") /* ABS(cur[x-refs+1+j] - cur[x+refs+1-j]) */\ "punpcklbw "MM"7, "MM"2 \n\t"\ "punpcklbw "MM"7, "MM"3 \n\t"\ "punpcklbw "MM"7, "MM"4 \n\t"\ "paddw "MM"3, "MM"2 \n\t"\ "paddw "MM"4, "MM"2 \n\t"
Definition at line 58 of file yadif_template.c.
#define CHECK1 |
Value:
MOVQ" "MM"0, "MM"3 \n\t"\ "pcmpgtw "MM"2, "MM"3 \n\t" /* if(score < spatial_score) */\ "pminsw "MM"2, "MM"0 \n\t" /* spatial_score= score; */\ MOVQ" "MM"3, "MM"6 \n\t"\ "pand "MM"3, "MM"5 \n\t"\ "pandn "MM"1, "MM"3 \n\t"\ "por "MM"5, "MM"3 \n\t"\ MOVQ" "MM"3, "MM"1 \n\t"
Definition at line 83 of file yadif_template.c.
#define CHECK2 |
Value:
/* pretend not to have checked dir=2 if dir=1 was bad.\ hurts both quality and speed, but matches the C version. */\ "paddw "MANGLE(pw_1)", "MM"6 \n\t"\ "psllw $14, "MM"6 \n\t"\ "paddsw "MM"6, "MM"2 \n\t"\ MOVQ" "MM"0, "MM"3 \n\t"\ "pcmpgtw "MM"2, "MM"3 \n\t"\ "pminsw "MM"2, "MM"0 \n\t"\ "pand "MM"3, "MM"5 \n\t"\ "pandn "MM"1, "MM"3 \n\t"\ "por "MM"5, "MM"3 \n\t"\ MOVQ" "MM"3, "MM"1 \n\t"
Definition at line 93 of file yadif_template.c.
#define FILTER |
#define LOAD | ( | mem, | |||
dst | ) |
#define MM "%%mm" |
Definition at line 35 of file yadif_template.c.
#define MOV "movd" |
#define MOVQ "movq" |
Definition at line 37 of file yadif_template.c.
#define MOVQU "movq" |
Definition at line 38 of file yadif_template.c.
#define next2 "next" |
#define next2 "cur" |
Referenced by filter_line_c(), and filter_line_c_16bit().
#define PABS | ( | tmp, | |||
dst | ) |
Value:
Definition at line 52 of file yadif_template.c.
#define prev2 "cur" |
#define prev2 "prev" |
Referenced by filter_line_c(), and filter_line_c_16bit().
Definition at line 45 of file yadif_template.c.
#define PSRL1 | ( | reg | ) | "psrlq $8, "reg" \n\t" |
Definition at line 43 of file yadif_template.c.
#define PSRL2 | ( | reg | ) | "psrlq $16, "reg" \n\t" |
Definition at line 44 of file yadif_template.c.
#define STEP 4 |
Definition at line 39 of file yadif_template.c.
void ff_yadif_filter_line_TMPL | ( | uint8_t * | dst, | |
uint8_t * | prev, | |||
uint8_t * | cur, | |||
uint8_t * | next, | |||
int | w, | |||
int | prefs, | |||
int | mrefs, | |||
int | parity, | |||
int | mode | |||
) |
Definition at line 105 of file yadif_template.c.