Revert "use intrinsics for 'emms'"

This reverts commit 118a57045b.

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
This commit is contained in:
Johann Koenig 2018-03-14 19:06:57 +00:00
parent ae856e4012
commit 60beb781c1
6 changed files with 19 additions and 29 deletions

View File

@ -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_

View File

@ -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

View File

@ -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(); }

View File

@ -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_

View 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

View 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