Restore emms usage on x86_64 after 726b021a12
Even on x86_64, emms has to be called if the x87 state has been clobbered - the calling code (either within libvpx or in a caller outside of libvpx) may be using the x87 instructions, even though use of them isn't all that common on x86_64. This fixes builds with clang for mingw/x86_64. Change-Id: I1f6072835590b862bad156f17331ba65c813ddd9
This commit is contained in:
parent
99e1784525
commit
a6fdfda44c
@ -140,7 +140,7 @@ class RegisterStateCheck {};
|
||||
|
||||
#endif // _WIN64
|
||||
|
||||
#if ARCH_X86
|
||||
#if ARCH_X86 || ARCH_X86_64
|
||||
#if defined(__GNUC__)
|
||||
|
||||
namespace libvpx_test {
|
||||
@ -178,7 +178,7 @@ class RegisterStateCheckMMX {
|
||||
} // namespace libvpx_test
|
||||
|
||||
#endif // __GNUC__
|
||||
#endif // ARCH_X86
|
||||
#endif // ARCH_X86 || ARCH_X86_64
|
||||
|
||||
#ifndef API_REGISTER_STATE_CHECK
|
||||
#define API_REGISTER_STATE_CHECK ASM_REGISTER_STATE_CHECK
|
||||
|
18
vpx_ports/emms_mmx.asm
Normal file
18
vpx_ports/emms_mmx.asm
Normal file
@ -0,0 +1,18 @@
|
||||
;
|
||||
; Copyright (c) 2010 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 "vpx_ports/x86_abi_support.asm"
|
||||
|
||||
section .text
|
||||
global sym(vpx_clear_system_state) PRIVATE
|
||||
sym(vpx_clear_system_state):
|
||||
emms
|
||||
ret
|
@ -17,11 +17,11 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if ARCH_X86 && HAVE_MMX
|
||||
#if (ARCH_X86 || ARCH_X86_64) && HAVE_MMX
|
||||
extern void vpx_clear_system_state();
|
||||
#else
|
||||
#define vpx_clear_system_state()
|
||||
#endif // ARCH_X86 && HAVE_MMX
|
||||
#endif // (ARCH_X86 || ARCH_X86_64) && HAVE_MMX
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
|
@ -20,6 +20,10 @@ PORTS_SRCS-yes += vpx_timer.h
|
||||
ifeq ($(ARCH_X86),yes)
|
||||
PORTS_SRCS-$(HAVE_MMX) += emms_mmx.c
|
||||
endif
|
||||
ifeq ($(ARCH_X86_64),yes)
|
||||
# Visual Studio x64 does not support the _mm_empty() intrinsic.
|
||||
PORTS_SRCS-$(HAVE_MMX) += emms_mmx.asm
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH_X86_64),yes)
|
||||
PORTS_SRCS-$(CONFIG_MSVS) += float_control_word.asm
|
||||
|
Loading…
Reference in New Issue
Block a user