Commit f344903c authored by Mans Rullgard's avatar Mans Rullgard
Browse files

Fix MMX rgb24 to yuv conversion with gcc 4.6



When built with gcc 4.6, the MMX rgb24 to yuv conversion gives
wrong output.  The compiler produces this warning:

libswscale/swscale_template.c:1885:5: warning: use of memory input without lvalue in asm operand 4 is deprecated

Changing the memory operand to a register makes it work.
Signed-off-by: default avatarMans Rullgard <mans@mansr.com>
parent 44b11207
...@@ -1883,7 +1883,7 @@ static inline void RENAME(bgr24ToY_mmx)(uint8_t *dst, const uint8_t *src, long w ...@@ -1883,7 +1883,7 @@ static inline void RENAME(bgr24ToY_mmx)(uint8_t *dst, const uint8_t *src, long w
static inline void RENAME(bgr24ToUV_mmx)(uint8_t *dstU, uint8_t *dstV, const uint8_t *src, long width, enum PixelFormat srcFormat) static inline void RENAME(bgr24ToUV_mmx)(uint8_t *dstU, uint8_t *dstV, const uint8_t *src, long width, enum PixelFormat srcFormat)
{ {
__asm__ volatile( __asm__ volatile(
"movq 24+%4, %%mm6 \n\t" "movq 24(%4), %%mm6 \n\t"
"mov %3, %%"REG_a" \n\t" "mov %3, %%"REG_a" \n\t"
"pxor %%mm7, %%mm7 \n\t" "pxor %%mm7, %%mm7 \n\t"
"1: \n\t" "1: \n\t"
...@@ -1894,9 +1894,9 @@ static inline void RENAME(bgr24ToUV_mmx)(uint8_t *dstU, uint8_t *dstV, const uin ...@@ -1894,9 +1894,9 @@ static inline void RENAME(bgr24ToUV_mmx)(uint8_t *dstU, uint8_t *dstV, const uin
"punpcklbw %%mm7, %%mm1 \n\t" "punpcklbw %%mm7, %%mm1 \n\t"
"movq %%mm0, %%mm2 \n\t" "movq %%mm0, %%mm2 \n\t"
"movq %%mm1, %%mm3 \n\t" "movq %%mm1, %%mm3 \n\t"
"pmaddwd %4, %%mm0 \n\t" "pmaddwd (%4), %%mm0 \n\t"
"pmaddwd 8+%4, %%mm1 \n\t" "pmaddwd 8(%4), %%mm1 \n\t"
"pmaddwd 16+%4, %%mm2 \n\t" "pmaddwd 16(%4), %%mm2 \n\t"
"pmaddwd %%mm6, %%mm3 \n\t" "pmaddwd %%mm6, %%mm3 \n\t"
"paddd %%mm1, %%mm0 \n\t" "paddd %%mm1, %%mm0 \n\t"
"paddd %%mm3, %%mm2 \n\t" "paddd %%mm3, %%mm2 \n\t"
...@@ -1908,9 +1908,9 @@ static inline void RENAME(bgr24ToUV_mmx)(uint8_t *dstU, uint8_t *dstV, const uin ...@@ -1908,9 +1908,9 @@ static inline void RENAME(bgr24ToUV_mmx)(uint8_t *dstU, uint8_t *dstV, const uin
"punpcklbw %%mm7, %%mm3 \n\t" "punpcklbw %%mm7, %%mm3 \n\t"
"movq %%mm1, %%mm4 \n\t" "movq %%mm1, %%mm4 \n\t"
"movq %%mm3, %%mm5 \n\t" "movq %%mm3, %%mm5 \n\t"
"pmaddwd %4, %%mm1 \n\t" "pmaddwd (%4), %%mm1 \n\t"
"pmaddwd 8+%4, %%mm3 \n\t" "pmaddwd 8(%4), %%mm3 \n\t"
"pmaddwd 16+%4, %%mm4 \n\t" "pmaddwd 16(%4), %%mm4 \n\t"
"pmaddwd %%mm6, %%mm5 \n\t" "pmaddwd %%mm6, %%mm5 \n\t"
"paddd %%mm3, %%mm1 \n\t" "paddd %%mm3, %%mm1 \n\t"
"paddd %%mm5, %%mm4 \n\t" "paddd %%mm5, %%mm4 \n\t"
...@@ -1933,7 +1933,7 @@ static inline void RENAME(bgr24ToUV_mmx)(uint8_t *dstU, uint8_t *dstV, const uin ...@@ -1933,7 +1933,7 @@ static inline void RENAME(bgr24ToUV_mmx)(uint8_t *dstU, uint8_t *dstV, const uin
"add $4, %%"REG_a" \n\t" "add $4, %%"REG_a" \n\t"
" js 1b \n\t" " js 1b \n\t"
: "+r" (src) : "+r" (src)
: "r" (dstU+width), "r" (dstV+width), "g" ((x86_reg)-width), "m"(ff_bgr24toUV[srcFormat == PIX_FMT_RGB24][0]) : "r" (dstU+width), "r" (dstV+width), "g" ((x86_reg)-width), "r"(ff_bgr24toUV[srcFormat == PIX_FMT_RGB24])
: "%"REG_a : "%"REG_a
); );
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment