|
|
|
@ -338,7 +338,7 @@ static void RENAME(yuv2yuvX)(const int16_t *filter, int filterSize, |
|
|
|
|
MOVNTQ( q3, 24(dst, index, 4))\
|
|
|
|
|
\
|
|
|
|
|
"add $8, "#index" \n\t"\
|
|
|
|
|
"cmp "#dstw", "#index" \n\t"\
|
|
|
|
|
"cmp "dstw", "#index" \n\t"\
|
|
|
|
|
" jb 1b \n\t" |
|
|
|
|
#define WRITEBGR32(dst, dstw, index, b, g, r, a, q0, q2, q3, t) REAL_WRITEBGR32(dst, dstw, index, b, g, r, a, q0, q2, q3, t) |
|
|
|
|
|
|
|
|
@ -364,13 +364,13 @@ static void RENAME(yuv2rgb32_X_ar)(SwsContext *c, const int16_t *lumFilter, |
|
|
|
|
"psraw $3, %%mm1 \n\t" |
|
|
|
|
"psraw $3, %%mm7 \n\t" |
|
|
|
|
"packuswb %%mm7, %%mm1 \n\t" |
|
|
|
|
WRITEBGR32(%4, %5, %%REGa, %%mm3, %%mm4, %%mm5, %%mm1, %%mm0, %%mm7, %%mm2, %%mm6) |
|
|
|
|
WRITEBGR32(%4, "%5", %%REGa, %%mm3, %%mm4, %%mm5, %%mm1, %%mm0, %%mm7, %%mm2, %%mm6) |
|
|
|
|
YSCALEYUV2PACKEDX_END |
|
|
|
|
} else { |
|
|
|
|
YSCALEYUV2PACKEDX_ACCURATE |
|
|
|
|
YSCALEYUV2RGBX |
|
|
|
|
"pcmpeqd %%mm7, %%mm7 \n\t" |
|
|
|
|
WRITEBGR32(%4, %5, %%REGa, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
|
|
|
|
WRITEBGR32(%4, "%5", %%REGa, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
|
|
|
|
YSCALEYUV2PACKEDX_END |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -393,13 +393,13 @@ static void RENAME(yuv2rgb32_X)(SwsContext *c, const int16_t *lumFilter, |
|
|
|
|
"psraw $3, %%mm1 \n\t" |
|
|
|
|
"psraw $3, %%mm7 \n\t" |
|
|
|
|
"packuswb %%mm7, %%mm1 \n\t" |
|
|
|
|
WRITEBGR32(%4, %5, %%REGa, %%mm2, %%mm4, %%mm5, %%mm1, %%mm0, %%mm7, %%mm3, %%mm6) |
|
|
|
|
WRITEBGR32(%4, "%5", %%REGa, %%mm2, %%mm4, %%mm5, %%mm1, %%mm0, %%mm7, %%mm3, %%mm6) |
|
|
|
|
YSCALEYUV2PACKEDX_END |
|
|
|
|
} else { |
|
|
|
|
YSCALEYUV2PACKEDX |
|
|
|
|
YSCALEYUV2RGBX |
|
|
|
|
"pcmpeqd %%mm7, %%mm7 \n\t" |
|
|
|
|
WRITEBGR32(%4, %5, %%REGa, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
|
|
|
|
WRITEBGR32(%4, "%5", %%REGa, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
|
|
|
|
YSCALEYUV2PACKEDX_END |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -428,7 +428,7 @@ static void RENAME(yuv2rgb32_X)(SwsContext *c, const int16_t *lumFilter, |
|
|
|
|
MOVNTQ(%%mm1, 8(dst, index, 2))\
|
|
|
|
|
\
|
|
|
|
|
"add $8, "#index" \n\t"\
|
|
|
|
|
"cmp "#dstw", "#index" \n\t"\
|
|
|
|
|
"cmp "dstw", "#index" \n\t"\
|
|
|
|
|
" jb 1b \n\t" |
|
|
|
|
#define WRITERGB16(dst, dstw, index) REAL_WRITERGB16(dst, dstw, index) |
|
|
|
|
|
|
|
|
@ -452,7 +452,7 @@ static void RENAME(yuv2rgb565_X_ar)(SwsContext *c, const int16_t *lumFilter, |
|
|
|
|
"paddusb "GREEN_DITHER"(%0), %%mm4\n\t" |
|
|
|
|
"paddusb "RED_DITHER"(%0), %%mm5\n\t" |
|
|
|
|
#endif |
|
|
|
|
WRITERGB16(%4, %5, %%REGa) |
|
|
|
|
WRITERGB16(%4, "%5", %%REGa) |
|
|
|
|
YSCALEYUV2PACKEDX_END |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -476,7 +476,7 @@ static void RENAME(yuv2rgb565_X)(SwsContext *c, const int16_t *lumFilter, |
|
|
|
|
"paddusb "GREEN_DITHER"(%0), %%mm4 \n\t" |
|
|
|
|
"paddusb "RED_DITHER"(%0), %%mm5 \n\t" |
|
|
|
|
#endif |
|
|
|
|
WRITERGB16(%4, %5, %%REGa) |
|
|
|
|
WRITERGB16(%4, "%5", %%REGa) |
|
|
|
|
YSCALEYUV2PACKEDX_END |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -505,7 +505,7 @@ static void RENAME(yuv2rgb565_X)(SwsContext *c, const int16_t *lumFilter, |
|
|
|
|
MOVNTQ(%%mm1, 8(dst, index, 2))\
|
|
|
|
|
\
|
|
|
|
|
"add $8, "#index" \n\t"\
|
|
|
|
|
"cmp "#dstw", "#index" \n\t"\
|
|
|
|
|
"cmp "dstw", "#index" \n\t"\
|
|
|
|
|
" jb 1b \n\t" |
|
|
|
|
#define WRITERGB15(dst, dstw, index) REAL_WRITERGB15(dst, dstw, index) |
|
|
|
|
|
|
|
|
@ -529,7 +529,7 @@ static void RENAME(yuv2rgb555_X_ar)(SwsContext *c, const int16_t *lumFilter, |
|
|
|
|
"paddusb "GREEN_DITHER"(%0), %%mm4\n\t" |
|
|
|
|
"paddusb "RED_DITHER"(%0), %%mm5\n\t" |
|
|
|
|
#endif |
|
|
|
|
WRITERGB15(%4, %5, %%REGa) |
|
|
|
|
WRITERGB15(%4, "%5", %%REGa) |
|
|
|
|
YSCALEYUV2PACKEDX_END |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -553,7 +553,7 @@ static void RENAME(yuv2rgb555_X)(SwsContext *c, const int16_t *lumFilter, |
|
|
|
|
"paddusb "GREEN_DITHER"(%0), %%mm4 \n\t" |
|
|
|
|
"paddusb "RED_DITHER"(%0), %%mm5 \n\t" |
|
|
|
|
#endif |
|
|
|
|
WRITERGB15(%4, %5, %%REGa) |
|
|
|
|
WRITERGB15(%4, "%5", %%REGa) |
|
|
|
|
YSCALEYUV2PACKEDX_END |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -607,7 +607,7 @@ static void RENAME(yuv2rgb555_X)(SwsContext *c, const int16_t *lumFilter, |
|
|
|
|
"add $24, "#dst" \n\t"\
|
|
|
|
|
\
|
|
|
|
|
"add $8, "#index" \n\t"\
|
|
|
|
|
"cmp "#dstw", "#index" \n\t"\
|
|
|
|
|
"cmp "dstw", "#index" \n\t"\
|
|
|
|
|
" jb 1b \n\t" |
|
|
|
|
|
|
|
|
|
#define WRITEBGR24MMXEXT(dst, dstw, index) \ |
|
|
|
@ -655,7 +655,7 @@ static void RENAME(yuv2rgb555_X)(SwsContext *c, const int16_t *lumFilter, |
|
|
|
|
"add $24, "#dst" \n\t"\
|
|
|
|
|
\
|
|
|
|
|
"add $8, "#index" \n\t"\
|
|
|
|
|
"cmp "#dstw", "#index" \n\t"\
|
|
|
|
|
"cmp "dstw", "#index" \n\t"\
|
|
|
|
|
" jb 1b \n\t" |
|
|
|
|
|
|
|
|
|
#if COMPILE_TEMPLATE_MMXEXT |
|
|
|
@ -682,7 +682,7 @@ static void RENAME(yuv2bgr24_X_ar)(SwsContext *c, const int16_t *lumFilter, |
|
|
|
|
"pxor %%mm7, %%mm7 \n\t" |
|
|
|
|
"lea (%%"REG_a", %%"REG_a", 2), %%"REG_c"\n\t" //FIXME optimize
|
|
|
|
|
"add %4, %%"REG_c" \n\t" |
|
|
|
|
WRITEBGR24(%%REGc, %5, %%REGa) |
|
|
|
|
WRITEBGR24(%%REGc, "%5", %%REGa) |
|
|
|
|
:: "r" (&c->redDither), |
|
|
|
|
"m" (dummy), "m" (dummy), "m" (dummy), |
|
|
|
|
"r" (dest), "m" (dstW_reg), "m"(uv_off) |
|
|
|
@ -707,7 +707,7 @@ static void RENAME(yuv2bgr24_X)(SwsContext *c, const int16_t *lumFilter, |
|
|
|
|
"pxor %%mm7, %%mm7 \n\t" |
|
|
|
|
"lea (%%"REG_a", %%"REG_a", 2), %%"REG_c" \n\t" //FIXME optimize
|
|
|
|
|
"add %4, %%"REG_c" \n\t" |
|
|
|
|
WRITEBGR24(%%REGc, %5, %%REGa) |
|
|
|
|
WRITEBGR24(%%REGc, "%5", %%REGa) |
|
|
|
|
:: "r" (&c->redDither), |
|
|
|
|
"m" (dummy), "m" (dummy), "m" (dummy), |
|
|
|
|
"r" (dest), "m" (dstW_reg), "m"(uv_off) |
|
|
|
@ -729,7 +729,7 @@ static void RENAME(yuv2bgr24_X)(SwsContext *c, const int16_t *lumFilter, |
|
|
|
|
MOVNTQ(%%mm7, 8(dst, index, 2))\
|
|
|
|
|
\
|
|
|
|
|
"add $8, "#index" \n\t"\
|
|
|
|
|
"cmp "#dstw", "#index" \n\t"\
|
|
|
|
|
"cmp "dstw", "#index" \n\t"\
|
|
|
|
|
" jb 1b \n\t" |
|
|
|
|
#define WRITEYUY2(dst, dstw, index) REAL_WRITEYUY2(dst, dstw, index) |
|
|
|
|
|
|
|
|
@ -750,7 +750,7 @@ static void RENAME(yuv2yuyv422_X_ar)(SwsContext *c, const int16_t *lumFilter, |
|
|
|
|
"psraw $3, %%mm4 \n\t" |
|
|
|
|
"psraw $3, %%mm1 \n\t" |
|
|
|
|
"psraw $3, %%mm7 \n\t" |
|
|
|
|
WRITEYUY2(%4, %5, %%REGa) |
|
|
|
|
WRITEYUY2(%4, "%5", %%REGa) |
|
|
|
|
YSCALEYUV2PACKEDX_END |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -771,7 +771,7 @@ static void RENAME(yuv2yuyv422_X)(SwsContext *c, const int16_t *lumFilter, |
|
|
|
|
"psraw $3, %%mm4 \n\t" |
|
|
|
|
"psraw $3, %%mm1 \n\t" |
|
|
|
|
"psraw $3, %%mm7 \n\t" |
|
|
|
|
WRITEYUY2(%4, %5, %%REGa) |
|
|
|
|
WRITEYUY2(%4, "%5", %%REGa) |
|
|
|
|
YSCALEYUV2PACKEDX_END |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -872,7 +872,7 @@ static void RENAME(yuv2rgb32_2)(SwsContext *c, const int16_t *buf[2], |
|
|
|
|
"psraw $3, %%mm1 \n\t" /* abuf0[eax] - abuf1[eax] >>7*/ |
|
|
|
|
"psraw $3, %%mm7 \n\t" /* abuf0[eax] - abuf1[eax] >>7*/ |
|
|
|
|
"packuswb %%mm7, %%mm1 \n\t" |
|
|
|
|
WRITEBGR32(%4, 8280(%5), %%r8, %%mm2, %%mm4, %%mm5, %%mm1, %%mm0, %%mm7, %%mm3, %%mm6) |
|
|
|
|
WRITEBGR32(%4, DSTW_OFFSET"(%5)", %%r8, %%mm2, %%mm4, %%mm5, %%mm1, %%mm0, %%mm7, %%mm3, %%mm6) |
|
|
|
|
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "r" (dest), |
|
|
|
|
"a" (&c->redDither), |
|
|
|
|
"r" (abuf0), "r" (abuf1) |
|
|
|
@ -896,7 +896,7 @@ static void RENAME(yuv2rgb32_2)(SwsContext *c, const int16_t *buf[2], |
|
|
|
|
"packuswb %%mm7, %%mm1 \n\t" |
|
|
|
|
"pop %1 \n\t" |
|
|
|
|
"pop %0 \n\t" |
|
|
|
|
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm1, %%mm0, %%mm7, %%mm3, %%mm6) |
|
|
|
|
WRITEBGR32(%%REGb, DSTW_OFFSET"(%5)", %%REGBP, %%mm2, %%mm4, %%mm5, %%mm1, %%mm0, %%mm7, %%mm3, %%mm6) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
@ -910,7 +910,7 @@ static void RENAME(yuv2rgb32_2)(SwsContext *c, const int16_t *buf[2], |
|
|
|
|
"push %%"REG_BP" \n\t" |
|
|
|
|
YSCALEYUV2RGB(%%REGBP, %5) |
|
|
|
|
"pcmpeqd %%mm7, %%mm7 \n\t" |
|
|
|
|
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
|
|
|
|
WRITEBGR32(%%REGb, DSTW_OFFSET"(%5)", %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
@ -927,14 +927,13 @@ static void RENAME(yuv2bgr24_2)(SwsContext *c, const int16_t *buf[2], |
|
|
|
|
const int16_t *buf0 = buf[0], *buf1 = buf[1], |
|
|
|
|
*ubuf0 = ubuf[0], *ubuf1 = ubuf[1]; |
|
|
|
|
|
|
|
|
|
//Note 8280 == DSTW_OFFSET but the preprocessor can't handle that there :(
|
|
|
|
|
__asm__ volatile( |
|
|
|
|
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
|
|
|
|
"mov %4, %%"REG_b" \n\t" |
|
|
|
|
"push %%"REG_BP" \n\t" |
|
|
|
|
YSCALEYUV2RGB(%%REGBP, %5) |
|
|
|
|
"pxor %%mm7, %%mm7 \n\t" |
|
|
|
|
WRITEBGR24(%%REGb, 8280(%5), %%REGBP) |
|
|
|
|
WRITEBGR24(%%REGb, DSTW_OFFSET"(%5)", %%REGBP) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
@ -951,7 +950,6 @@ static void RENAME(yuv2rgb555_2)(SwsContext *c, const int16_t *buf[2], |
|
|
|
|
const int16_t *buf0 = buf[0], *buf1 = buf[1], |
|
|
|
|
*ubuf0 = ubuf[0], *ubuf1 = ubuf[1]; |
|
|
|
|
|
|
|
|
|
//Note 8280 == DSTW_OFFSET but the preprocessor can't handle that there :(
|
|
|
|
|
__asm__ volatile( |
|
|
|
|
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
|
|
|
|
"mov %4, %%"REG_b" \n\t" |
|
|
|
@ -964,7 +962,7 @@ static void RENAME(yuv2rgb555_2)(SwsContext *c, const int16_t *buf[2], |
|
|
|
|
"paddusb "GREEN_DITHER"(%5), %%mm4 \n\t" |
|
|
|
|
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
|
|
|
|
#endif |
|
|
|
|
WRITERGB15(%%REGb, 8280(%5), %%REGBP) |
|
|
|
|
WRITERGB15(%%REGb, DSTW_OFFSET"(%5)", %%REGBP) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
@ -981,7 +979,6 @@ static void RENAME(yuv2rgb565_2)(SwsContext *c, const int16_t *buf[2], |
|
|
|
|
const int16_t *buf0 = buf[0], *buf1 = buf[1], |
|
|
|
|
*ubuf0 = ubuf[0], *ubuf1 = ubuf[1]; |
|
|
|
|
|
|
|
|
|
//Note 8280 == DSTW_OFFSET but the preprocessor can't handle that there :(
|
|
|
|
|
__asm__ volatile( |
|
|
|
|
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
|
|
|
|
"mov %4, %%"REG_b" \n\t" |
|
|
|
@ -994,7 +991,7 @@ static void RENAME(yuv2rgb565_2)(SwsContext *c, const int16_t *buf[2], |
|
|
|
|
"paddusb "GREEN_DITHER"(%5), %%mm4 \n\t" |
|
|
|
|
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
|
|
|
|
#endif |
|
|
|
|
WRITERGB16(%%REGb, 8280(%5), %%REGBP) |
|
|
|
|
WRITERGB16(%%REGb, DSTW_OFFSET"(%5)", %%REGBP) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
@ -1051,13 +1048,12 @@ static void RENAME(yuv2yuyv422_2)(SwsContext *c, const int16_t *buf[2], |
|
|
|
|
const int16_t *buf0 = buf[0], *buf1 = buf[1], |
|
|
|
|
*ubuf0 = ubuf[0], *ubuf1 = ubuf[1]; |
|
|
|
|
|
|
|
|
|
//Note 8280 == DSTW_OFFSET but the preprocessor can't handle that there :(
|
|
|
|
|
__asm__ volatile( |
|
|
|
|
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
|
|
|
|
"mov %4, %%"REG_b" \n\t" |
|
|
|
|
"push %%"REG_BP" \n\t" |
|
|
|
|
YSCALEYUV2PACKED(%%REGBP, %5) |
|
|
|
|
WRITEYUY2(%%REGb, 8280(%5), %%REGBP) |
|
|
|
|
WRITEYUY2(%%REGb, DSTW_OFFSET"(%5)", %%REGBP) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
@ -1200,7 +1196,7 @@ static void RENAME(yuv2rgb32_1)(SwsContext *c, const int16_t *buf0, |
|
|
|
|
"push %%"REG_BP" \n\t" |
|
|
|
|
YSCALEYUV2RGB1(%%REGBP, %5) |
|
|
|
|
YSCALEYUV2RGB1_ALPHA(%%REGBP) |
|
|
|
|
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
|
|
|
|
WRITEBGR32(%%REGb, DSTW_OFFSET"(%5)", %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (abuf0), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
@ -1213,7 +1209,7 @@ static void RENAME(yuv2rgb32_1)(SwsContext *c, const int16_t *buf0, |
|
|
|
|
"push %%"REG_BP" \n\t" |
|
|
|
|
YSCALEYUV2RGB1(%%REGBP, %5) |
|
|
|
|
"pcmpeqd %%mm7, %%mm7 \n\t" |
|
|
|
|
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
|
|
|
|
WRITEBGR32(%%REGb, DSTW_OFFSET"(%5)", %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
@ -1229,7 +1225,7 @@ static void RENAME(yuv2rgb32_1)(SwsContext *c, const int16_t *buf0, |
|
|
|
|
"push %%"REG_BP" \n\t" |
|
|
|
|
YSCALEYUV2RGB1b(%%REGBP, %5) |
|
|
|
|
YSCALEYUV2RGB1_ALPHA(%%REGBP) |
|
|
|
|
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
|
|
|
|
WRITEBGR32(%%REGb, DSTW_OFFSET"(%5)", %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (abuf0), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
@ -1242,7 +1238,7 @@ static void RENAME(yuv2rgb32_1)(SwsContext *c, const int16_t *buf0, |
|
|
|
|
"push %%"REG_BP" \n\t" |
|
|
|
|
YSCALEYUV2RGB1b(%%REGBP, %5) |
|
|
|
|
"pcmpeqd %%mm7, %%mm7 \n\t" |
|
|
|
|
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
|
|
|
|
WRITEBGR32(%%REGb, DSTW_OFFSET"(%5)", %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
@ -1268,7 +1264,7 @@ static void RENAME(yuv2bgr24_1)(SwsContext *c, const int16_t *buf0, |
|
|
|
|
"push %%"REG_BP" \n\t" |
|
|
|
|
YSCALEYUV2RGB1(%%REGBP, %5) |
|
|
|
|
"pxor %%mm7, %%mm7 \n\t" |
|
|
|
|
WRITEBGR24(%%REGb, 8280(%5), %%REGBP) |
|
|
|
|
WRITEBGR24(%%REGb, DSTW_OFFSET"(%5)", %%REGBP) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
@ -1283,7 +1279,7 @@ static void RENAME(yuv2bgr24_1)(SwsContext *c, const int16_t *buf0, |
|
|
|
|
"push %%"REG_BP" \n\t" |
|
|
|
|
YSCALEYUV2RGB1b(%%REGBP, %5) |
|
|
|
|
"pxor %%mm7, %%mm7 \n\t" |
|
|
|
|
WRITEBGR24(%%REGb, 8280(%5), %%REGBP) |
|
|
|
|
WRITEBGR24(%%REGb, DSTW_OFFSET"(%5)", %%REGBP) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
@ -1315,7 +1311,7 @@ static void RENAME(yuv2rgb555_1)(SwsContext *c, const int16_t *buf0, |
|
|
|
|
"paddusb "GREEN_DITHER"(%5), %%mm4 \n\t" |
|
|
|
|
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
|
|
|
|
#endif |
|
|
|
|
WRITERGB15(%%REGb, 8280(%5), %%REGBP) |
|
|
|
|
WRITERGB15(%%REGb, DSTW_OFFSET"(%5)", %%REGBP) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
@ -1336,7 +1332,7 @@ static void RENAME(yuv2rgb555_1)(SwsContext *c, const int16_t *buf0, |
|
|
|
|
"paddusb "GREEN_DITHER"(%5), %%mm4 \n\t" |
|
|
|
|
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
|
|
|
|
#endif |
|
|
|
|
WRITERGB15(%%REGb, 8280(%5), %%REGBP) |
|
|
|
|
WRITERGB15(%%REGb, DSTW_OFFSET"(%5)", %%REGBP) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
@ -1368,7 +1364,7 @@ static void RENAME(yuv2rgb565_1)(SwsContext *c, const int16_t *buf0, |
|
|
|
|
"paddusb "GREEN_DITHER"(%5), %%mm4 \n\t" |
|
|
|
|
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
|
|
|
|
#endif |
|
|
|
|
WRITERGB16(%%REGb, 8280(%5), %%REGBP) |
|
|
|
|
WRITERGB16(%%REGb, DSTW_OFFSET"(%5)", %%REGBP) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
@ -1389,7 +1385,7 @@ static void RENAME(yuv2rgb565_1)(SwsContext *c, const int16_t *buf0, |
|
|
|
|
"paddusb "GREEN_DITHER"(%5), %%mm4 \n\t" |
|
|
|
|
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
|
|
|
|
#endif |
|
|
|
|
WRITERGB16(%%REGb, 8280(%5), %%REGBP) |
|
|
|
|
WRITERGB16(%%REGb, DSTW_OFFSET"(%5)", %%REGBP) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
@ -1451,7 +1447,7 @@ static void RENAME(yuv2yuyv422_1)(SwsContext *c, const int16_t *buf0, |
|
|
|
|
"mov %4, %%"REG_b" \n\t" |
|
|
|
|
"push %%"REG_BP" \n\t" |
|
|
|
|
YSCALEYUV2PACKED1(%%REGBP, %5) |
|
|
|
|
WRITEYUY2(%%REGb, 8280(%5), %%REGBP) |
|
|
|
|
WRITEYUY2(%%REGb, DSTW_OFFSET"(%5)", %%REGBP) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
@ -1464,7 +1460,7 @@ static void RENAME(yuv2yuyv422_1)(SwsContext *c, const int16_t *buf0, |
|
|
|
|
"mov %4, %%"REG_b" \n\t" |
|
|
|
|
"push %%"REG_BP" \n\t" |
|
|
|
|
YSCALEYUV2PACKED1b(%%REGBP, %5) |
|
|
|
|
WRITEYUY2(%%REGb, 8280(%5), %%REGBP) |
|
|
|
|
WRITEYUY2(%%REGb, DSTW_OFFSET"(%5)", %%REGBP) |
|
|
|
|
"pop %%"REG_BP" \n\t" |
|
|
|
|
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
|
|
|
|
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
|
|
|
|