]> granicus.if.org Git - libvpx/commitdiff
Revert "use intrinsics for 'emms'"
authorJohann Koenig <johannkoenig@google.com>
Wed, 14 Mar 2018 19:06:57 +0000 (19:06 +0000)
committerJohann Koenig <johannkoenig@google.com>
Wed, 14 Mar 2018 20:26:44 +0000 (20:26 +0000)
This reverts commit 118a57045bf5b49ab7c2f7f930543b9217fd422e.

Reason for revert: Fails on Visual Studio builds:

vpxmdd.lib(vpx_ports_emms_mmx.obj) : error LNK2019: unresolved
external symbol _m_empty referenced in function
vpx_clear_system_state

Original change's description:
> use intrinsics for 'emms'
>
> BUG=webm:1500
>
> Change-Id: I3235d8c2abc01dd3a35e14c5cbcfe20283ff8fb2

Change-Id: Ia9c40bc103c57cced83353249c55218eaf2f0b0c

test/clear_system_state.h
vpx_ports/emms.asm
vpx_ports/emms_mmx.c [deleted file]
vpx_ports/system_state.h
vpx_ports/vpx_ports.mk
vpx_ports/x86.h

index 609a8b050163eda16d7d0a27196ab3891684aae1..044a5c758346356c25006c047005dc1ae70aaaee 100644 (file)
 #define TEST_CLEAR_SYSTEM_STATE_H_
 
 #include "./vpx_config.h"
-#include "vpx_ports/system_state.h"
+#if ARCH_X86 || ARCH_X86_64
+#include "vpx_ports/x86.h"
+#endif
 
 namespace libvpx_test {
 
 // Reset system to a known state. This function should be used for all non-API
 // test cases.
-inline void ClearSystemState() { vpx_clear_system_state(); }
+inline void ClearSystemState() {
+#if ARCH_X86 || ARCH_X86_64
+  vpx_reset_mmx_state();
+#endif
+}
 
 }  // namespace libvpx_test
 #endif  // TEST_CLEAR_SYSTEM_STATE_H_
index 256dae08447989d19bccd775b56c6db6d8d3c8fc..db8da287375206fad61ad631ba0abcb7c4f3709e 100644 (file)
 %include "vpx_ports/x86_abi_support.asm"
 
 section .text
+global sym(vpx_reset_mmx_state) PRIVATE
+sym(vpx_reset_mmx_state):
+    emms
+    ret
+
 
 %if LIBVPX_YASM_WIN64
 global sym(vpx_winx64_fldcw) PRIVATE
diff --git a/vpx_ports/emms_mmx.c b/vpx_ports/emms_mmx.c
deleted file mode 100644 (file)
index 1b28809..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- *  Copyright (c) 2018 The WebM project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <mmintrin.h>
-
-void vpx_clear_system_state() { _mm_empty(); }
index d1efb0df4c74f729c7c15c05bed01cabab8d9d6e..086c64681f58ea44f535f12313aebb9c7e46546d 100644 (file)
 
 #include "./vpx_config.h"
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if HAVE_MMX
-extern void vpx_clear_system_state();
+#if ARCH_X86 || ARCH_X86_64
+void vpx_reset_mmx_state(void);
+#define vpx_clear_system_state() vpx_reset_mmx_state()
 #else
 #define vpx_clear_system_state()
-#endif  // HAVE_MMX
-
-#ifdef __cplusplus
-}  // extern "C"
-#endif
-
+#endif  // ARCH_X86 || ARCH_X86_64
 #endif  // VPX_PORTS_SYSTEM_STATE_H_
index 5d416cf09e682db9a4796ae8eb21a0535dc7a166..e17145e6cb876be340e8f892819eca51b63e2e71 100644 (file)
@@ -17,8 +17,6 @@ PORTS_SRCS-yes += msvc.h
 PORTS_SRCS-yes += system_state.h
 PORTS_SRCS-yes += vpx_timer.h
 
-PORTS_SRCS-$(HAVE_MMX) += emms_mmx.c
-
 ifeq ($(ARCH_X86)$(ARCH_X86_64),yes)
 PORTS_SRCS-yes += emms.asm
 PORTS_SRCS-yes += x86.h
index 60c625778b60bf37c0ae67d0da49e18daa7c11a6..ced65ac058fac8a9ed7d1e6a1a4300eaaad93060 100644 (file)
@@ -317,6 +317,8 @@ static INLINE unsigned int x87_set_double_precision(void) {
   return mode;
 }
 
+extern void vpx_reset_mmx_state(void);
+
 #ifdef __cplusplus
 }  // extern "C"
 #endif