]> git.sesse.net Git - x264/blobdiff - common/x86/cpu-a.asm
x86 asm cosmetics
[x264] / common / x86 / cpu-a.asm
index 2df98fd47bf340dd4bcaa4428fd93b63ac32446e..75a2bc493959bff8c23c492e4ba1d7e3365e982d 100644 (file)
@@ -1,7 +1,7 @@
 ;*****************************************************************************
-;* cpu-a.asm: h264 encoder library
+;* cpu-a.asm: x86 cpu utilities
 ;*****************************************************************************
-;* Copyright (C) 2003-2008 x264 project
+;* Copyright (C) 2003-2011 x264 project
 ;*
 ;* Authors: Laurent Aimar <fenrir@via.ecp.fr>
 ;*          Loren Merritt <lorenm@u.washington.edu>
 ;* You should have received a copy of the GNU General Public License
 ;* along with this program; if not, write to the Free Software
 ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111, USA.
+;*
+;* This program is also available under a commercial proprietary license.
+;* For more information, contact us at licensing@x264.com.
 ;*****************************************************************************
 
 %include "x86inc.asm"
 
 SECTION .text
 
-%ifdef ARCH_X86_64
-
 ;-----------------------------------------------------------------------------
-; int x264_cpu_cpuid( int op, int *eax, int *ebx, int *ecx, int *edx )
+; void cpu_cpuid( int op, int *eax, int *ebx, int *ecx, int *edx )
 ;-----------------------------------------------------------------------------
-cglobal x264_cpu_cpuid, 5,7
-    push    rbx
-    mov     r11,   r1
-    mov     r10,   r2
-    movifnidn r9,  r3
-    movifnidn r8,  r4
-    mov     eax,   r0d
+cglobal cpu_cpuid, 5,7
+    push rbx
+    push  r4
+    push  r3
+    push  r2
+    push  r1
+    mov  eax, r0d
     cpuid
-    mov     [r11], eax
-    mov     [r10], ebx
-    mov     [r9],  ecx
-    mov     [r8],  edx
-    pop     rbx
+    pop  rsi
+    mov [rsi], eax
+    pop  rsi
+    mov [rsi], ebx
+    pop  rsi
+    mov [rsi], ecx
+    pop  rsi
+    mov [rsi], edx
+    pop  rbx
+    RET
+
+;-----------------------------------------------------------------------------
+; void cpu_xgetbv( int op, int *eax, int *edx )
+;-----------------------------------------------------------------------------
+cglobal cpu_xgetbv, 3,7
+    push  r2
+    push  r1
+    mov  ecx, r0d
+    xgetbv
+    pop  rsi
+    mov [rsi], eax
+    pop  rsi
+    mov [rsi], edx
     RET
 
-%else
+%ifndef ARCH_X86_64
 
 ;-----------------------------------------------------------------------------
-; int x264_cpu_cpuid_test( void )
+; int cpu_cpuid_test( void )
 ; return 0 if unsupported
 ;-----------------------------------------------------------------------------
-cglobal x264_cpu_cpuid_test
+cglobal cpu_cpuid_test
     pushfd
     push    ebx
     push    ebp
@@ -75,32 +94,20 @@ cglobal x264_cpu_cpuid_test
     ret
 
 ;-----------------------------------------------------------------------------
-; int x264_cpu_cpuid( int op, int *eax, int *ebx, int *ecx, int *edx )
+; void stack_align( void (*func)(void*), void *arg );
 ;-----------------------------------------------------------------------------
-cglobal x264_cpu_cpuid, 0,6
-    mov     eax,    r0m
-    cpuid
-    mov     esi,    r1m
-    mov     [esi],  eax
-    mov     esi,    r2m
-    mov     [esi],  ebx
-    mov     esi,    r3m
-    mov     [esi],  ecx
-    mov     esi,    r4m
-    mov     [esi],  edx
-    RET
-
-;-----------------------------------------------------------------------------
-; void x264_stack_align( void (*func)(void*), void *arg );
-;-----------------------------------------------------------------------------
-cglobal x264_stack_align
+cglobal stack_align
     push ebp
     mov  ebp, esp
-    sub  esp, 4
+    sub  esp, 12
     and  esp, ~15
     mov  ecx, [ebp+8]
     mov  edx, [ebp+12]
     mov  [esp], edx
+    mov  edx, [ebp+16]
+    mov  [esp+4], edx
+    mov  edx, [ebp+20]
+    mov  [esp+8], edx
     call ecx
     leave
     ret
@@ -108,16 +115,23 @@ cglobal x264_stack_align
 %endif
 
 ;-----------------------------------------------------------------------------
-; void x264_emms( void )
+; void cpu_emms( void )
 ;-----------------------------------------------------------------------------
-cglobal x264_emms
+cglobal cpu_emms
     emms
     ret
 
 ;-----------------------------------------------------------------------------
-; void x264_cpu_mask_misalign_sse(void)
+; void cpu_sfence( void )
+;-----------------------------------------------------------------------------
+cglobal cpu_sfence
+    sfence
+    ret
+
+;-----------------------------------------------------------------------------
+; void cpu_mask_misalign_sse( void )
 ;-----------------------------------------------------------------------------
-cglobal x264_cpu_mask_misalign_sse
+cglobal cpu_mask_misalign_sse
     sub   rsp, 4
     stmxcsr [rsp]
     or dword [rsp], 1<<17