Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 5 Oct 2012 15:02:15 +0000 (17:02 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 5 Oct 2012 15:04:15 +0000 (17:04 +0200)
* qatar/master:
  h264: don't touch H264Context->ref_count[] during MB decoding
  x86: get_cpu_flags: add necessary ifdefs around function body
  x86: Drop CPU detection intrinsics
  x86: Add YASM implementations of cpuid and xgetbv from x264

Conflicts:
configure
libavcodec/h264_cabac.c
libavcodec/h264_cavlc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
configure
libavutil/x86/cpu.c
libavutil/x86/cpu.h
libavutil/x86/cpuid.asm

diff --cc configure
+++ b/configure
@@@ -1270,15 -1133,11 +1270,14 @@@ HAVE_LIST=
      arpa_inet_h
      asm_mod_q
      asm_mod_y
 +    asm_types_h
      attribute_may_alias
      attribute_packed
 +    broken_snprintf
      cbrtf
 +    clock_gettime
      closesocket
      cmov
-     cpuid
      cpunop
      dcbzl
      dev_bktr_ioctl_bt848_h
@@@ -3401,12 -3067,9 +3398,9 @@@ elif enabled sparc; the
  
  elif enabled x86; then
  
-     check_code ld immintrin.h "return __xgetbv(0)" "cc" && enable xgetbv
-     check_code ld intrin.h "int info[4]; __cpuid(info, 0)" "cc" && enable cpuid
 -    check_code ld intrin.h "__rdtsc()" && enable rdtsc
 +    check_code ld intrin.h "__rdtsc()" "cc" && enable rdtsc
-     check_code ld intrin.h "unsigned int x = __readeflags()" "cc" && enable rweflags
  
 -    check_code ld mmintrin.h "_mm_empty()" && enable mm_empty
 +    check_code ld mmintrin.h "_mm_empty()" "cc" && enable mm_empty
  
      enable local_aligned_8 local_aligned_16
  
Simple merge
Simple merge
index 0000000,d2ac1f0..4a9bf72
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,91 +1,91 @@@
 -;* This file is part of Libav.
+ ;*****************************************************************************
+ ;* Copyright (C) 2005-2010 x264 project
+ ;*
+ ;* Authors: Loren Merritt <lorenm@u.washington.edu>
+ ;*          Jason Garrett-Glaser <darkshikari@gmail.com>
+ ;*
 -;* Libav is free software; you can redistribute it and/or
++;* This file is part of FFmpeg.
+ ;*
 -;* Libav is distributed in the hope that it will be useful,
++;* FFmpeg is free software; you can redistribute it and/or
+ ;* modify it under the terms of the GNU Lesser General Public
+ ;* License as published by the Free Software Foundation; either
+ ;* version 2.1 of the License, or (at your option) any later version.
+ ;*
 -;* License along with Libav; if not, write to the Free Software
++;* FFmpeg is distributed in the hope that it will be useful,
+ ;* but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ ;* Lesser General Public License for more details.
+ ;*
+ ;* You should have received a copy of the GNU Lesser General Public
++;* License along with FFmpeg; if not, write to the Free Software
+ ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ ;******************************************************************************
+ %include "x86inc.asm"
+ SECTION .text
+ ;-----------------------------------------------------------------------------
+ ; void ff_cpu_cpuid(int index, int *eax, int *ebx, int *ecx, int *edx)
+ ;-----------------------------------------------------------------------------
+ cglobal cpu_cpuid, 5,7
+     push rbx
+     push  r4
+     push  r3
+     push  r2
+     push  r1
+     mov  eax, r0d
+     xor  ecx, ecx
+     cpuid
+     pop   r4
+     mov [r4], eax
+     pop   r4
+     mov [r4], ebx
+     pop   r4
+     mov [r4], ecx
+     pop   r4
+     mov [r4], edx
+     pop  rbx
+     RET
+ ;-----------------------------------------------------------------------------
+ ; void ff_cpu_xgetbv(int op, int *eax, int *edx)
+ ;-----------------------------------------------------------------------------
+ cglobal cpu_xgetbv, 3,7
+     push  r2
+     push  r1
+     mov  ecx, r0d
+     xgetbv
+     pop   r4
+     mov [r4], eax
+     pop   r4
+     mov [r4], edx
+     RET
+ %if ARCH_X86_64 == 0
+ ;-----------------------------------------------------------------------------
+ ; int ff_cpu_cpuid_test(void)
+ ; return 0 if unsupported
+ ;-----------------------------------------------------------------------------
+ cglobal cpu_cpuid_test
+     pushfd
+     push    ebx
+     push    ebp
+     push    esi
+     push    edi
+     pushfd
+     pop     eax
+     mov     ebx, eax
+     xor     eax, 0x200000
+     push    eax
+     popfd
+     pushfd
+     pop     eax
+     xor     eax, ebx
+     pop     edi
+     pop     esi
+     pop     ebp
+     pop     ebx
+     popfd
+     ret
+ %endif