41 "movq (%2, %0), %%mm0 \n\t"
42 "movq (%1, %0), %%mm1 \n\t"
43 "psubb %%mm0, %%mm1 \n\t"
44 "movq %%mm1, (%3, %0) \n\t"
45 "movq 8(%2, %0), %%mm0 \n\t"
46 "movq 8(%1, %0), %%mm1 \n\t"
47 "psubb %%mm0, %%mm1 \n\t"
48 "movq %%mm1, 8(%3, %0) \n\t"
53 :
"r" (src1),
"r" (src2),
"r" (dst),
"r" ((
x86_reg) w - 15));
56 dst[i + 0] = src1[i + 0] - src2[i + 0];
59 static void sub_hfyu_median_pred_mmxext(
uint8_t *dst,
const uint8_t *src1,
61 int *left,
int *left_top)
67 "movq (%1, %0), %%mm0 \n\t"
68 "psllq $8, %%mm0 \n\t"
70 "movq (%1, %0), %%mm1 \n\t"
71 "movq -1(%2, %0), %%mm2 \n\t"
72 "movq (%2, %0), %%mm3 \n\t"
73 "movq %%mm2, %%mm4 \n\t"
74 "psubb %%mm0, %%mm2 \n\t"
75 "paddb %%mm1, %%mm2 \n\t"
76 "movq %%mm4, %%mm5 \n\t"
77 "pmaxub %%mm1, %%mm4 \n\t"
78 "pminub %%mm5, %%mm1 \n\t"
79 "pminub %%mm2, %%mm4 \n\t"
80 "pmaxub %%mm1, %%mm4 \n\t"
81 "psubb %%mm4, %%mm3 \n\t"
82 "movq %%mm3, (%3, %0) \n\t"
84 "movq -1(%1, %0), %%mm0 \n\t"
88 :
"r" (src1),
"r" (src2),
"r" (dst),
"r" ((
x86_reg) w));
93 dst[0] = src2[0] -
mid_pred(l, src1[0], (l + src1[0] - lt) & 0xFF);
95 *left_top = src1[w - 1];