[svn] / branches / dev-api-4 / xvidcore / src / utils / x86_asm / cpuid.asm Repository:
ViewVC logotype

Diff of /branches/dev-api-4/xvidcore/src/utils/x86_asm/cpuid.asm

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

revision 1191, Mon Oct 27 01:03:43 2003 UTC revision 1192, Tue Oct 28 22:23:03 2003 UTC
# Line 1  Line 1 
1  ;/******************************************************************************  ;/****************************************************************************
2  ; *                                                                            *  ; *
3  ; *  This file is part of XviD, a free MPEG-4 video encoder/decoder            *  ; *  XVID MPEG-4 VIDEO CODEC
4  ; *                                                                            *  ; *  - CPUID check processors capabilities -
5  ; *  XviD is an implementation of a part of one or more MPEG-4 Video tools     *  ; *
6  ; *  as specified in ISO/IEC 14496-2 standard.  Those intending to use this    *  ; *  Copyright (C) 2001 Michael Militzer <isibaar@xvid.org>
7  ; *  software module in hardware or software products are advised that its     *  ; *
8  ; *  use may infringe existing patents or copyrights, and any such use         *  ; *  This program is free software ; you can redistribute it and/or modify
9  ; *  would be at such party's own risk.  The original developer of this        *  ; *  it under the terms of the GNU General Public License as published by
10  ; *  software module and his/her company, and subsequent editors and their     *  ; *  the Free Software Foundation ; either version 2 of the License, or
11  ; *  companies, will have no liability for use of this software or             *  ; *  (at your option) any later version.
12  ; *  modifications or derivatives thereof.                                     *  ; *
13  ; *                                                                            *  ; *  This program is distributed in the hope that it will be useful,
14  ; *  XviD is free software; you can redistribute it and/or modify it           *  ; *  but WITHOUT ANY WARRANTY ; without even the implied warranty of
15  ; *  under the terms of the GNU General Public License as published by         *  ; *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  ; *  the Free Software Foundation; either version 2 of the License, or         *  ; *  GNU General Public License for more details.
17  ; *  (at your option) any later version.                                       *  ; *
18  ; *                                                                            *  ; *  You should have received a copy of the GNU General Public License
19  ; *  XviD is distributed in the hope that it will be useful, but               *  ; *  along with this program ; if not, write to the Free Software
20  ; *  WITHOUT ANY WARRANTY; without even the implied warranty of                *  ; *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
21  ; *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             *  ; *
22  ; *  GNU General Public License for more details.                              *  ; * $Id: cpuid.asm,v 1.4.2.2 2003-10-28 22:23:03 edgomez Exp $
23  ; *                                                                            *  ; *
24  ; *  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA  *  
 ; *                                                                            *  
 ; ******************************************************************************/  
 ;  
 ;/******************************************************************************  
 ; *                                                                            *  
 ; *  cpuid.asm, check cpu features                                             *  
 ; *                                                                            *  
 ; *  Copyright (C) 2001 - Michael Militzer <isibaar@xvid.org>,                 *  
 ; *                                                                            *  
 ; *  For more information visit the XviD homepage: http://www.xvid.org         *  
 ; *                                                                            *  
 ; ******************************************************************************/  
 ;  
 ;/******************************************************************************  
 ; *                                                                            *  
 ; *  Revision history:                                                         *  
 ; *                                                                            *  
 ; *  17.12.2001 initial version  (Isibaar)                                     *  
 ; *                                                                            *  
 ; ******************************************************************************/  
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 56  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    ;;; NB: Make sure these defines match the ones defined in xvid.h
51  %define XVID_CPU_MMX      (1<< 0)  %define XVID_CPU_MMX      (1<< 0)
52  %define XVID_CPU_MMXEXT   (1<< 1)  %define XVID_CPU_MMXEXT   (1<< 1)
53  %define XVID_CPU_SSE      (1<< 2)  %define XVID_CPU_SSE      (1<< 2)
# Line 64  Line 56 
56  %define XVID_CPU_3DNOWEXT (1<< 5)  %define XVID_CPU_3DNOWEXT (1<< 5)
57  %define XVID_CPU_TSC      (1<< 6)  %define XVID_CPU_TSC      (1<< 6)
58    
59  %macro cglobal 1  ;=============================================================================
60          %ifdef PREFIX  ; Read only data
61                  global _%1  ;=============================================================================
                 %define %1 _%1  
         %else  
                 global %1  
         %endif  
 %endmacro  
62    
63  ALIGN 32  ALIGN 32
64    SECTION .rodata
65    
66  section .data  vendorAMD:
67                    db "AuthenticAMD"
68    
69  vendorAMD       db "AuthenticAMD"  ;=============================================================================
70    ; Macros
71    ;=============================================================================
72    
73  %macro  CHECK_FEATURE         3  %macro  CHECK_FEATURE         3
   
74      mov     ecx, %1      mov     ecx, %1
75      and     ecx, edx      and     ecx, edx
76      neg     ecx      neg     ecx
77      sbb     ecx, ecx      sbb     ecx, ecx
78      and     ecx, %2      and     ecx, %2
79      or      %3, ecx      or      %3, ecx
   
80  %endmacro  %endmacro
81    
82  section .text  ;=============================================================================
83    ; Code
84    ;=============================================================================
85    
86    SECTION .text
87    
88  ; int check_cpu_feature(void)  ; int check_cpu_feature(void)
89    
# Line 180  Line 173 
173    
174          ret          ret
175    
   
   
176  ; sse/sse2 operating support detection routines  ; sse/sse2 operating support detection routines
177  ; these will trigger an invalid instruction signal if not supported.  ; these will trigger an invalid instruction signal if not supported.
178    ALIGN 16
179  cglobal sse_os_trigger  cglobal sse_os_trigger
 align 16  
180  sse_os_trigger:  sse_os_trigger:
181          xorps xmm0, xmm0          xorps xmm0, xmm0
182          ret          ret
183    
184    
185    ALIGN 16
186  cglobal sse2_os_trigger  cglobal sse2_os_trigger
 align 16  
187  sse2_os_trigger:  sse2_os_trigger:
188          xorpd xmm0, xmm0          xorpd xmm0, xmm0
189          ret          ret
190    
191    
192  ; enter/exit mmx state  ; enter/exit mmx state
193    ALIGN 16
194  cglobal emms_mmx  cglobal emms_mmx
 align 16  
195  emms_mmx:  emms_mmx:
196          emms          emms
197          ret          ret
198    
199  ; faster enter/exit mmx state  ; faster enter/exit mmx state
200    ALIGN 16
201  cglobal emms_3dn  cglobal emms_3dn
 align 16  
202  emms_3dn:  emms_3dn:
203          femms          femms
204          ret          ret

Legend:
Removed from v.1191  
changed lines
  Added in v.1192

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