From: RĂ©mi Denis-Courmont Date: Sat, 26 Nov 2011 18:22:41 +0000 (+0200) Subject: I422_YUY2: clobber lists for MMX and SSE2 X-Git-Tag: 1.3.0-git~38 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=98ad3f3cb54dba78cb1b5d2f5d84052b5274c430;p=vlc I422_YUY2: clobber lists for MMX and SSE2 --- diff --git a/modules/video_chroma/i422_yuy2.c b/modules/video_chroma/i422_yuy2.c index 74eb2dc695..81b8beb9a3 100644 --- a/modules/video_chroma/i422_yuy2.c +++ b/modules/video_chroma/i422_yuy2.c @@ -72,14 +72,17 @@ vlc_module_begin () set_description( N_("Conversions from " SRC_FOURCC " to " DEST_FOURCC) ) set_capability( "video filter2", 80 ) # define CPU_CAPABILITY 0 +# define VLC_TARGET #elif defined (MODULE_NAME_IS_i422_yuy2_mmx) set_description( N_("MMX conversions from " SRC_FOURCC " to " DEST_FOURCC) ) set_capability( "video filter2", 100 ) # define CPU_CAPABILITY CPU_CAPABILITY_MMX +# define VLC_TARGET VLC_MMX #elif defined (MODULE_NAME_IS_i422_yuy2_sse2) set_description( N_("SSE2 conversions from " SRC_FOURCC " to " DEST_FOURCC) ) set_capability( "video filter2", 120 ) # define CPU_CAPABILITY CPU_CAPABILITY_SSE2 +# define VLC_TARGET VLC_SSE #endif set_callbacks( Activate, NULL ) vlc_module_end () @@ -159,6 +162,7 @@ VIDEO_FILTER_WRAPPER( I422_Y211 ) /***************************************************************************** * I422_YUY2: planar YUV 4:2:2 to packed YUY2 4:2:2 *****************************************************************************/ +VLC_TARGET static void I422_YUY2( filter_t *p_filter, picture_t *p_source, picture_t *p_dest ) { @@ -252,6 +256,7 @@ static void I422_YUY2( filter_t *p_filter, picture_t *p_source, /***************************************************************************** * I422_YVYU: planar YUV 4:2:2 to packed YVYU 4:2:2 *****************************************************************************/ +VLC_TARGET static void I422_YVYU( filter_t *p_filter, picture_t *p_source, picture_t *p_dest ) { @@ -345,6 +350,7 @@ static void I422_YVYU( filter_t *p_filter, picture_t *p_source, /***************************************************************************** * I422_UYVY: planar YUV 4:2:2 to packed UYVY 4:2:2 *****************************************************************************/ +VLC_TARGET static void I422_UYVY( filter_t *p_filter, picture_t *p_source, picture_t *p_dest ) { @@ -449,6 +455,7 @@ static void I422_IUYV( filter_t *p_filter, picture_t *p_source, /***************************************************************************** * I422_cyuv: planar YUV 4:2:2 to upside-down packed UYVY 4:2:2 *****************************************************************************/ +VLC_TARGET static void I422_cyuv( filter_t *p_filter, picture_t *p_source, picture_t *p_dest ) { diff --git a/modules/video_chroma/i422_yuy2.h b/modules/video_chroma/i422_yuy2.h index 52ad7e4c3f..54928eabad 100644 --- a/modules/video_chroma/i422_yuy2.h +++ b/modules/video_chroma/i422_yuy2.h @@ -35,7 +35,8 @@ MMX_INSTRUCTIONS \ : \ : "r" (p_line), "r" (p_y), \ - "r" (p_u), "r" (p_v) ); \ + "r" (p_u), "r" (p_v) \ + : "mm0", "mm1", "mm2" ); \ p_line += 16; p_y += 8; \ p_u += 4; p_v += 4; \ } while(0) @@ -145,7 +146,8 @@ movq %%mm1, 8(%0) # Store high UYVY \n\ MMX_INSTRUCTIONS \ : \ : "r" (p_line), "r" (p_y), \ - "r" (p_u), "r" (p_v) ); \ + "r" (p_u), "r" (p_v) \ + : "xmm0", "xmm1", "xmm2" ); \ p_line += 32; p_y += 16; \ p_u += 8; p_v += 8; \ } while(0)