Commit 0fdf4e2e authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

i420_rgb: clobber lists for MMX and SSE2

parent 7abc4fee
...@@ -56,7 +56,8 @@ static const uint64_t mmx_mask_fc = 0xfcfcfcfcfcfcfcfcULL; /* -- as %13 */ ...@@ -56,7 +56,8 @@ static const uint64_t mmx_mask_fc = 0xfcfcfcfcfcfcfcfcULL; /* -- as %13 */
"m" (mmx_00ffw), "m" (mmx_Y_coeff), \ "m" (mmx_00ffw), "m" (mmx_Y_coeff), \
"m" (mmx_U_green), "m" (mmx_U_blue), \ "m" (mmx_U_green), "m" (mmx_U_blue), \
"m" (mmx_V_red), "m" (mmx_V_green), \ "m" (mmx_V_red), "m" (mmx_V_green), \
"m" (mmx_mask_f8), "m" (mmx_mask_fc) ); \ "m" (mmx_mask_f8), "m" (mmx_mask_fc) \
: "mm0", "mm1", "mm2", "mm3", "mm4", "mm5", "mm6", "mm7" ); \
} while(0) } while(0)
#define MMX_END __asm__ __volatile__ ( "emms" ) #define MMX_END __asm__ __volatile__ ( "emms" )
...@@ -566,7 +567,8 @@ movq %%mm2, 24(%3) # Store ABGR7 ABGR6 \n\ ...@@ -566,7 +567,8 @@ movq %%mm2, 24(%3) # Store ABGR7 ABGR6 \n\
: \ : \
: "r" (p_y), "r" (p_u), \ : "r" (p_y), "r" (p_u), \
"r" (p_v), "r" (p_buffer) \ "r" (p_v), "r" (p_buffer) \
: "eax" ); \ : "eax", "xmm0", "xmm1", "xmm2", "xmm3", \
"xmm4", "xmm5", "xmm6", "xmm7" ); \
} while(0) } while(0)
#define SSE2_END __asm__ __volatile__ ( "sfence" ::: "memory" ) #define SSE2_END __asm__ __volatile__ ( "sfence" ::: "memory" )
......
...@@ -32,14 +32,18 @@ ...@@ -32,14 +32,18 @@
#include <vlc_common.h> #include <vlc_common.h>
#include <vlc_filter.h> #include <vlc_filter.h>
#include <vlc_cpu.h>
#include "i420_rgb.h" #include "i420_rgb.h"
#if defined (MODULE_NAME_IS_i420_rgb) #if defined (MODULE_NAME_IS_i420_rgb)
# include "i420_rgb_c.h" # include "i420_rgb_c.h"
# define VLC_TARGET
#elif defined (MODULE_NAME_IS_i420_rgb_mmx) #elif defined (MODULE_NAME_IS_i420_rgb_mmx)
# include "../mmx/i420_rgb_mmx.h" # include "../mmx/i420_rgb_mmx.h"
# define VLC_TARGET VLC_MMX
#elif defined (MODULE_NAME_IS_i420_rgb_sse2) #elif defined (MODULE_NAME_IS_i420_rgb_sse2)
# include "../mmx/i420_rgb_mmx.h" # include "../mmx/i420_rgb_mmx.h"
# define VLC_TARGET VLC_SSE
#endif #endif
static void SetOffset( int, int, int, int, bool *, static void SetOffset( int, int, int, int, bool *,
...@@ -202,8 +206,7 @@ void I420_RGB16_dither( filter_t *p_filter, picture_t *p_src, ...@@ -202,8 +206,7 @@ void I420_RGB16_dither( filter_t *p_filter, picture_t *p_src,
#if defined (MODULE_NAME_IS_i420_rgb) #if defined (MODULE_NAME_IS_i420_rgb)
void I420_RGB16( filter_t *p_filter, picture_t *p_src, void I420_RGB16( filter_t *p_filter, picture_t *p_src, picture_t *p_dest )
picture_t *p_dest )
{ {
/* We got this one from the old arguments */ /* We got this one from the old arguments */
uint16_t *p_pic = (uint16_t*)p_dest->p->p_pixels; uint16_t *p_pic = (uint16_t*)p_dest->p->p_pixels;
...@@ -297,8 +300,8 @@ void I420_RGB16( filter_t *p_filter, picture_t *p_src, ...@@ -297,8 +300,8 @@ void I420_RGB16( filter_t *p_filter, picture_t *p_src,
#else // ! defined (MODULE_NAME_IS_i420_rgb) #else // ! defined (MODULE_NAME_IS_i420_rgb)
void I420_R5G5B5( filter_t *p_filter, picture_t *p_src, VLC_TARGET
picture_t *p_dest ) void I420_R5G5B5( filter_t *p_filter, picture_t *p_src, picture_t *p_dest )
{ {
/* We got this one from the old arguments */ /* We got this one from the old arguments */
uint16_t *p_pic = (uint16_t*)p_dest->p->p_pixels; uint16_t *p_pic = (uint16_t*)p_dest->p->p_pixels;
...@@ -527,8 +530,8 @@ void I420_R5G5B5( filter_t *p_filter, picture_t *p_src, ...@@ -527,8 +530,8 @@ void I420_R5G5B5( filter_t *p_filter, picture_t *p_src,
#endif #endif
} }
void I420_R5G6B5( filter_t *p_filter, picture_t *p_src, VLC_TARGET
picture_t *p_dest ) void I420_R5G6B5( filter_t *p_filter, picture_t *p_src, picture_t *p_dest )
{ {
/* We got this one from the old arguments */ /* We got this one from the old arguments */
uint16_t *p_pic = (uint16_t*)p_dest->p->p_pixels; uint16_t *p_pic = (uint16_t*)p_dest->p->p_pixels;
...@@ -772,8 +775,7 @@ void I420_R5G6B5( filter_t *p_filter, picture_t *p_src, ...@@ -772,8 +775,7 @@ void I420_R5G6B5( filter_t *p_filter, picture_t *p_src,
#if defined (MODULE_NAME_IS_i420_rgb) #if defined (MODULE_NAME_IS_i420_rgb)
void I420_RGB32( filter_t *p_filter, picture_t *p_src, void I420_RGB32( filter_t *p_filter, picture_t *p_src, picture_t *p_dest )
picture_t *p_dest )
{ {
/* We got this one from the old arguments */ /* We got this one from the old arguments */
uint32_t *p_pic = (uint32_t*)p_dest->p->p_pixels; uint32_t *p_pic = (uint32_t*)p_dest->p->p_pixels;
...@@ -866,6 +868,7 @@ void I420_RGB32( filter_t *p_filter, picture_t *p_src, ...@@ -866,6 +868,7 @@ void I420_RGB32( filter_t *p_filter, picture_t *p_src,
#else // defined (MODULE_NAME_IS_i420_rgb_mmx) || defined (MODULE_NAME_IS_i420_rgb_sse2) #else // defined (MODULE_NAME_IS_i420_rgb_mmx) || defined (MODULE_NAME_IS_i420_rgb_sse2)
VLC_TARGET
void I420_A8R8G8B8( filter_t *p_filter, picture_t *p_src, void I420_A8R8G8B8( filter_t *p_filter, picture_t *p_src,
picture_t *p_dest ) picture_t *p_dest )
{ {
...@@ -1094,8 +1097,8 @@ void I420_A8R8G8B8( filter_t *p_filter, picture_t *p_src, ...@@ -1094,8 +1097,8 @@ void I420_A8R8G8B8( filter_t *p_filter, picture_t *p_src,
#endif #endif
} }
void I420_R8G8B8A8( filter_t *p_filter, picture_t *p_src, VLC_TARGET
picture_t *p_dest ) void I420_R8G8B8A8( filter_t *p_filter, picture_t *p_src, picture_t *p_dest )
{ {
/* We got this one from the old arguments */ /* We got this one from the old arguments */
uint32_t *p_pic = (uint32_t*)p_dest->p->p_pixels; uint32_t *p_pic = (uint32_t*)p_dest->p->p_pixels;
...@@ -1322,8 +1325,8 @@ void I420_R8G8B8A8( filter_t *p_filter, picture_t *p_src, ...@@ -1322,8 +1325,8 @@ void I420_R8G8B8A8( filter_t *p_filter, picture_t *p_src,
#endif #endif
} }
void I420_B8G8R8A8( filter_t *p_filter, picture_t *p_src, VLC_TARGET
picture_t *p_dest ) void I420_B8G8R8A8( filter_t *p_filter, picture_t *p_src, picture_t *p_dest )
{ {
/* We got this one from the old arguments */ /* We got this one from the old arguments */
uint32_t *p_pic = (uint32_t*)p_dest->p->p_pixels; uint32_t *p_pic = (uint32_t*)p_dest->p->p_pixels;
...@@ -1547,8 +1550,8 @@ void I420_B8G8R8A8( filter_t *p_filter, picture_t *p_src, ...@@ -1547,8 +1550,8 @@ void I420_B8G8R8A8( filter_t *p_filter, picture_t *p_src,
#endif #endif
} }
void I420_A8B8G8R8( filter_t *p_filter, picture_t *p_src, VLC_TARGET
picture_t *p_dest ) void I420_A8B8G8R8( filter_t *p_filter, picture_t *p_src, picture_t *p_dest )
{ {
/* We got this one from the old arguments */ /* We got this one from the old arguments */
uint32_t *p_pic = (uint32_t*)p_dest->p->p_pixels; uint32_t *p_pic = (uint32_t*)p_dest->p->p_pixels;
......
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