[vlc-devel] [PATCH 11/19] deinterlace: use sfence instead of emms for SSE2

Lyndon Brown jnqnfe at gmail.com
Thu Sep 24 21:39:35 CEST 2020


From: Lyndon Brown <jnqnfe at gmail.com>
Date: Sat, 26 Jan 2019 00:06:48 +0000
Subject: deinterlace: use sfence instead of emms for SSE2


diff --git a/modules/video_filter/deinterlace/deinterlace.c b/modules/video_filter/deinterlace/deinterlace.c
index b124e2811b..60325dd26f 100644
--- a/modules/video_filter/deinterlace/deinterlace.c
+++ b/modules/video_filter/deinterlace/deinterlace.c
@@ -544,7 +544,7 @@ notsupp:
     if( vlc_CPU_SSE2() )
     {
         p_sys->pf_merge = pixel_size == 1 ? Merge8BitSSE2 : Merge16BitSSE2;
-        p_sys->pf_end_merge = EndMMX;
+        p_sys->pf_end_merge = EndSSE;
     }
     else
 #endif
diff --git a/modules/video_filter/deinterlace/merge.c b/modules/video_filter/deinterlace/merge.c
index 15c9ab0aea..83ad58129d 100644
--- a/modules/video_filter/deinterlace/merge.c
+++ b/modules/video_filter/deinterlace/merge.c
@@ -194,8 +194,8 @@ void MergeAltivec( void *_p_dest, const void *_p_s1,
  *****************************************************************************/
 
 #if defined(CAN_COMPILE_SSE)
-void EndMMX( void )
+void EndSSE( void )
 {
-    __asm__ __volatile__( "emms" :: );
+    __asm__ __volatile__( "sfence" ::: "memory" );
 }
 #endif
diff --git a/modules/video_filter/deinterlace/merge.h b/modules/video_filter/deinterlace/merge.h
index 1508686d1b..8cecedb066 100644
--- a/modules/video_filter/deinterlace/merge.h
+++ b/modules/video_filter/deinterlace/merge.h
@@ -165,15 +165,15 @@ void merge16_arm_sve(void *, const void *, const void *, size_t);
 
 #if defined(CAN_COMPILE_SSE)
 /**
- * MMX merge finalization routine.
+ * SSE merge finalization routine.
  *
- * Must be called after an MMX merge is finished.
- * This exits MMX mode (by executing the "emms" instruction).
+ * Should be called after an SSE merge is finished.
+ * This exits SSE mode (by executing the "sfence" instruction).
  *
  * The EndMerge() macro detects whether this is needed, and calls if it is,
  * so just use that.
  */
-void EndMMX       ( void );
+void EndSSE       ( void );
 #endif
 
 #endif



More information about the vlc-devel mailing list