Commit 7c1bc11f authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

i420_yuy2: clobber MM and XMM registers correctly

(cherry picked from commit 01924381fd15196a68f29d4cc279fb7a42f6f556)
parent 708e92e9
...@@ -45,12 +45,16 @@ ...@@ -45,12 +45,16 @@
#if defined (MODULE_NAME_IS_i420_yuy2) #if defined (MODULE_NAME_IS_i420_yuy2)
# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,cyuv,Y211" # define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,cyuv,Y211"
# define VLC_TARGET
#elif defined (MODULE_NAME_IS_i420_yuy2_mmx) #elif defined (MODULE_NAME_IS_i420_yuy2_mmx)
# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,cyuv" # define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,cyuv"
# define VLC_TARGET VLC_MMX
#elif defined (MODULE_NAME_IS_i420_yuy2_sse2) #elif defined (MODULE_NAME_IS_i420_yuy2_sse2)
# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,cyuv" # define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,cyuv"
# define VLC_TARGET VLC_SSE
#elif defined (MODULE_NAME_IS_i420_yuy2_altivec) #elif defined (MODULE_NAME_IS_i420_yuy2_altivec)
# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422" # define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422"
# define VLC_TARGET
#endif #endif
/***************************************************************************** /*****************************************************************************
...@@ -186,12 +190,12 @@ static inline unsigned long long read_cycles(void) ...@@ -186,12 +190,12 @@ static inline unsigned long long read_cycles(void)
/* Following functions are local */ /* Following functions are local */
VIDEO_FILTER_WRAPPER( I420_YUY2 ) VLC_TARGET VIDEO_FILTER_WRAPPER( I420_YUY2 )
VIDEO_FILTER_WRAPPER( I420_YVYU ) VLC_TARGET VIDEO_FILTER_WRAPPER( I420_YVYU )
VIDEO_FILTER_WRAPPER( I420_UYVY ) VLC_TARGET VIDEO_FILTER_WRAPPER( I420_UYVY )
#if !defined (MODULE_NAME_IS_i420_yuy2_altivec) #if !defined (MODULE_NAME_IS_i420_yuy2_altivec)
VIDEO_FILTER_WRAPPER( I420_IUYV ) VLC_TARGET VIDEO_FILTER_WRAPPER( I420_IUYV )
VIDEO_FILTER_WRAPPER( I420_cyuv ) VLC_TARGET VIDEO_FILTER_WRAPPER( I420_cyuv )
#endif #endif
#if defined (MODULE_NAME_IS_i420_yuy2) #if defined (MODULE_NAME_IS_i420_yuy2)
VIDEO_FILTER_WRAPPER( I420_Y211 ) VIDEO_FILTER_WRAPPER( I420_Y211 )
......
...@@ -39,12 +39,14 @@ movq (%3), %%mm3 # Load 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 \n\ ...@@ -39,12 +39,14 @@ movq (%3), %%mm3 # Load 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 \n\
" \ " \
: \ : \
: "r" (p_u), "r" (p_v), \ : "r" (p_u), "r" (p_v), \
"r" (p_y1), "r" (p_y2) ); \ "r" (p_y1), "r" (p_y2) \
: "mm0", "mm1", "mm2", "mm3"); \
__asm__ __volatile__( \ __asm__ __volatile__( \
".p2align 3 \n\t" \ ".p2align 3 \n\t" \
MMX_INSTRUCTIONS \ MMX_INSTRUCTIONS \
: \ : \
: "r" (p_line1), "r" (p_line2) ); \ : "r" (p_line1), "r" (p_line2) \
: "mm0", "mm1", "mm2", "mm3"); \
p_line1 += 16; p_line2 += 16; \ p_line1 += 16; p_line2 += 16; \
p_y1 += 8; p_y2 += 8; \ p_y1 += 8; p_y2 += 8; \
p_u += 4; p_v += 4; \ p_u += 4; p_v += 4; \
...@@ -199,13 +201,15 @@ movq (%0), %%xmm1 # Load 8 Cb u7 u6 u5 u4 u3 u2 u1 u0 \n\ ...@@ -199,13 +201,15 @@ movq (%0), %%xmm1 # Load 8 Cb u7 u6 u5 u4 u3 u2 u1 u0 \n\
movq (%1), %%xmm2 # Load 8 Cr v7 06 v5 v4 v3 v2 v1 v0 \n\ movq (%1), %%xmm2 # Load 8 Cr v7 06 v5 v4 v3 v2 v1 v0 \n\
" \ " \
: \ : \
: "r" (p_u), "r" (p_v) ); \ : "r" (p_u), "r" (p_v) \
: "xmm1", "xmm2"); \
__asm__ __volatile__( \ __asm__ __volatile__( \
".p2align 3 \n\t" \ ".p2align 3 \n\t" \
SSE2_INSTRUCTIONS \ SSE2_INSTRUCTIONS \
: \ : \
: "r" (p_line1), "r" (p_line2), \ : "r" (p_line1), "r" (p_line2), \
"r" (p_y1), "r" (p_y2) ); \ "r" (p_y1), "r" (p_y2) \
: "xmm0", "xmm1", "xmm2", "xmm3", "xmm4"); \
p_line1 += 32; p_line2 += 32; \ p_line1 += 32; p_line2 += 32; \
p_y1 += 16; p_y2 += 16; \ p_y1 += 16; p_y2 += 16; \
p_u += 8; p_v += 8; \ p_u += 8; p_v += 8; \
......
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