[svn] / trunk / xvidcore / src / utils / x86_asm / cpuid.asm Repository:
ViewVC logotype

Diff of /trunk/xvidcore/src/utils/x86_asm/cpuid.asm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 654, Sun Nov 17 00:51:11 2002 UTC revision 1382, Mon Mar 22 22:36:25 2004 UTC
# Line 1  Line 1 
1  ;/******************************************************************************  ;/****************************************************************************
2  ; *  ; *
3  ; *  Copyright (C) 2001 - Michael Militzer <isibaar@xvid.org>  ; *  XVID MPEG-4 VIDEO CODEC
4    ; *  - CPUID check processors capabilities -
5  ; *  ; *
6  ; *  This file is part of XviD, a free MPEG-4 video encoder/decoder  ; *  Copyright (C) 2001 Michael Militzer <isibaar@xvid.org>
7  ; *  ; *
8  ; *  XviD is free software; you can redistribute it and/or modify it  ; *  This program is free software ; you can redistribute it and/or modify
9  ; *  under the terms of the GNU General Public License as published by  ; *  it under the terms of the GNU General Public License as published by
10  ; *  the Free Software Foundation; either version 2 of the License, or  ; *  the Free Software Foundation; either version 2 of the License, or
11  ; *  (at your option) any later version.  ; *  (at your option) any later version.
12  ; *  ; *
# Line 18  Line 19 
19  ; *  along with this program; if not, write to the Free Software  ; *  along with this program; if not, write to the Free Software
20  ; *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA  ; *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
21  ; *  ; *
22  ; *  Under section 8 of the GNU General Public License, the copyright  ; * $Id: cpuid.asm,v 1.5 2004-03-22 22:36:24 edgomez Exp $
 ; *  holders of XVID explicitly forbid distribution in the following  
 ; *  countries:  
 ; *  
 ; *    - Japan  
 ; *    - United States of America  
 ; *  
 ; *  Linking XviD statically or dynamically with other modules is making a  
 ; *  combined work based on XviD.  Thus, the terms and conditions of the  
 ; *  GNU General Public License cover the whole combination.  
 ; *  
 ; *  As a special exception, the copyright holders of XviD give you  
 ; *  permission to link XviD with independent modules that communicate with  
 ; *  XviD solely through the VFW1.1 and DShow interfaces, regardless of the  
 ; *  license terms of these independent modules, and to copy and distribute  
 ; *  the resulting combined work under terms of your choice, provided that  
 ; *  every copy of the combined work is accompanied by a complete copy of  
 ; *  the source code of XviD (the version of XviD used to produce the  
 ; *  combined work), being distributed under the terms of the GNU General  
 ; *  Public License plus this exception.  An independent module is a module  
 ; *  which is not derived from or based on XviD.  
 ; *  
 ; *  Note that people who make modified versions of XviD are not obligated  
 ; *  to grant this special exception for their modified versions; it is  
 ; *  their choice whether to do so.  The GNU General Public License gives  
 ; *  permission to release a modified version without this exception; this  
 ; *  exception also makes it possible to release a modified version which  
 ; *  carries forward this exception.  
23  ; *  ; *
24  ; * $Id: cpuid.asm,v 1.3 2002-11-17 00:51:11 edgomez Exp $  ; ***************************************************************************/
 ; ******************************************************************************/  
25    
26  bits 32  BITS 32
27    
28    %macro cglobal 1
29            %ifdef PREFIX
30                    global _%1
31                    %define %1 _%1
32            %else
33                    global %1
34            %endif
35    %endmacro
36    
37    ;=============================================================================
38    ; Constants
39    ;=============================================================================
40    
41  %define CPUID_TSC                               0x00000010  %define CPUID_TSC                               0x00000010
42  %define CPUID_MMX                               0x00800000  %define CPUID_MMX                               0x00800000
# Line 61  Line 47 
47  %define EXT_CPUID_AMD_3DNOWEXT  0x40000000  %define EXT_CPUID_AMD_3DNOWEXT  0x40000000
48  %define EXT_CPUID_AMD_MMXEXT    0x00400000  %define EXT_CPUID_AMD_MMXEXT    0x00400000
49    
50  %define XVID_CPU_MMX                    0x00000001  ;;; NB: Make sure these defines match the ones defined in xvid.h
51  %define XVID_CPU_MMXEXT                 0x00000002  %define XVID_CPU_MMX      (1<< 0)
52  %define XVID_CPU_SSE            0x00000004  %define XVID_CPU_MMXEXT   (1<< 1)
53  %define XVID_CPU_SSE2                   0x00000008  %define XVID_CPU_SSE      (1<< 2)
54  %define XVID_CPU_3DNOW          0x00000010  %define XVID_CPU_SSE2     (1<< 3)
55  %define XVID_CPU_3DNOWEXT               0x00000020  %define XVID_CPU_3DNOW    (1<< 4)
56  %define XVID_CPU_TSC            0x00000040  %define XVID_CPU_3DNOWEXT (1<< 5)
57    %define XVID_CPU_TSC      (1<< 6)
58    
59    ;=============================================================================
60    ; Read only data
61    ;=============================================================================
62    
63    ALIGN 32
64  %macro cglobal 1  %ifdef FORMAT_COFF
65          %ifdef PREFIX  SECTION .rodata data
                 global _%1  
                 %define %1 _%1  
66          %else          %else
67                  global %1  SECTION .rodata data align=16
68          %endif          %endif
 %endmacro  
   
 ALIGN 32  
69    
70  section .data  vendorAMD:
71                    db "AuthenticAMD"
72    
73  vendorAMD       db "AuthenticAMD"  ;=============================================================================
74    ; Macros
75    ;=============================================================================
76    
77  %macro  CHECK_FEATURE         3  %macro  CHECK_FEATURE         3
   
78      mov     ecx, %1      mov     ecx, %1
79      and     ecx, edx      and     ecx, edx
80      neg     ecx      neg     ecx
81      sbb     ecx, ecx      sbb     ecx, ecx
82      and     ecx, %2      and     ecx, %2
83      or      %3, ecx      or      %3, ecx
   
84  %endmacro  %endmacro
85    
86  section .text  ;=============================================================================
87    ; Code
88    ;=============================================================================
89    
90    SECTION .text
91    
92  ; int check_cpu_feature(void)  ; int check_cpu_feature(void)
93    
# Line 186  Line 177 
177    
178          ret          ret
179    
   
   
180  ; sse/sse2 operating support detection routines  ; sse/sse2 operating support detection routines
181  ; these will trigger an invalid instruction signal if not supported.  ; these will trigger an invalid instruction signal if not supported.
182    ALIGN 16
183  cglobal sse_os_trigger  cglobal sse_os_trigger
 align 16  
184  sse_os_trigger:  sse_os_trigger:
185          xorps xmm0, xmm0          xorps xmm0, xmm0
186          ret          ret
187    
188    
189    ALIGN 16
190  cglobal sse2_os_trigger  cglobal sse2_os_trigger
 align 16  
191  sse2_os_trigger:  sse2_os_trigger:
192          xorpd xmm0, xmm0          xorpd xmm0, xmm0
193          ret          ret
194    
195    
196    ; enter/exit mmx state
197    ALIGN 16
198    cglobal emms_mmx
199    emms_mmx:
200      emms
201      ret
202    
203    ; faster enter/exit mmx state
204    ALIGN 16
205    cglobal emms_3dn
206    emms_3dn:
207      femms
208      ret

Legend:
Removed from v.654  
changed lines
  Added in v.1382

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4