From 60beb781c140b61c1957abd2a6717d2e9a831933 Mon Sep 17 00:00:00 2001 From: Johann Koenig Date: Wed, 14 Mar 2018 19:06:57 +0000 Subject: [PATCH] Revert "use intrinsics for 'emms'" 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 | 10 ++++++++-- vpx_ports/emms.asm | 5 +++++ vpx_ports/emms_mmx.c | 13 ------------- vpx_ports/system_state.h | 16 ++++------------ vpx_ports/vpx_ports.mk | 2 -- vpx_ports/x86.h | 2 ++ 6 files changed, 19 insertions(+), 29 deletions(-) delete mode 100644 vpx_ports/emms_mmx.c diff --git a/test/clear_system_state.h b/test/clear_system_state.h index 609a8b050..044a5c758 100644 --- a/test/clear_system_state.h +++ b/test/clear_system_state.h @@ -11,13 +11,19 @@ #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_ diff --git a/vpx_ports/emms.asm b/vpx_ports/emms.asm index 256dae084..db8da2873 100644 --- a/vpx_ports/emms.asm +++ b/vpx_ports/emms.asm @@ -12,6 +12,11 @@ %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 index 1b28809a3..000000000 --- a/vpx_ports/emms_mmx.c +++ /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 - -void vpx_clear_system_state() { _mm_empty(); } diff --git a/vpx_ports/system_state.h b/vpx_ports/system_state.h index d1efb0df4..086c64681 100644 --- a/vpx_ports/system_state.h +++ b/vpx_ports/system_state.h @@ -13,18 +13,10 @@ #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_ diff --git a/vpx_ports/vpx_ports.mk b/vpx_ports/vpx_ports.mk index 5d416cf09..e17145e6c 100644 --- a/vpx_ports/vpx_ports.mk +++ b/vpx_ports/vpx_ports.mk @@ -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 diff --git a/vpx_ports/x86.h b/vpx_ports/x86.h index 60c625778..ced65ac05 100644 --- a/vpx_ports/x86.h +++ b/vpx_ports/x86.h @@ -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