annotate src/cpuinfo/SDL_cpuinfo.c @ 4393:9afe12fb4c41 SDL-1.2

Fixed bug #901 Tim Angus 2009-12-11 11:45:46 PST Disable mouse event generation when state is not SDL_APPMOUSEFOCUS If a Windows SDL application is minimised by using alt-tab, SDL_APPMOUSEFOCUS is lost as part of the minimisation. Unfortunately, the directx driver doesn't pay any attention to this state when generating mouse button events, so clicking on the Desktop can cause mouse clicks in the SDL application, while it's still minimised. The attached patch fixes this. It looks much more complicated than it actually is due to indentation; here it is ignoring whitespace: tma@abraxas:~/sources/SDL-1.2-svn$ svn diff -x -b Index: src/video/windx5/SDL_dx5events.c =================================================================== --- src/video/windx5/SDL_dx5events.c (revision 5376) +++ src/video/windx5/SDL_dx5events.c (working copy) @@ -374,10 +374,9 @@ if ( !(SDL_GetAppState() & SDL_APPMOUSEFOCUS) ) { mouse_lost = 1; ClipCursor(NULL); - } - + } else { /* If the mouse was lost, regain some sense of mouse state */ - if ( mouse_lost && (SDL_GetAppState() & SDL_APPMOUSEFOCUS) ) { + if ( mouse_lost ) { POINT mouse_pos; Uint8 old_state; Uint8 new_state; @@ -548,6 +547,7 @@ if ( xrel || yrel ) { post_mouse_motion(1, xrel, yrel); } + } } /* The main Win32 event handler */
author Sam Lantinga <slouken@libsdl.org>
date Mon, 14 Dec 2009 22:41:31 +0000
parents 72d3b4fd918b
children
rev   line source
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1 /*
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
2 SDL - Simple DirectMedia Layer
4159
a1b03ba2fcd0 Updated copyright date
Sam Lantinga <slouken@libsdl.org>
parents: 1864
diff changeset
3 Copyright (C) 1997-2009 Sam Lantinga
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
4
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
5 This library is free software; you can redistribute it and/or
1312
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1229
diff changeset
6 modify it under the terms of the GNU Lesser General Public
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
7 License as published by the Free Software Foundation; either
1312
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1229
diff changeset
8 version 2.1 of the License, or (at your option) any later version.
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
9
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
10 This library is distributed in the hope that it will be useful,
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1312
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1229
diff changeset
13 Lesser General Public License for more details.
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
14
1312
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1229
diff changeset
15 You should have received a copy of the GNU Lesser General Public
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1229
diff changeset
16 License along with this library; if not, write to the Free Software
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1229
diff changeset
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
18
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
19 Sam Lantinga
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
20 slouken@libsdl.org
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
21 */
1402
d910939febfa Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents: 1361
diff changeset
22 #include "SDL_config.h"
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
23
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
24 /* CPU feature detection for SDL */
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
25
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
26 #include "SDL.h"
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
27 #include "SDL_cpuinfo.h"
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
28
4386
dcb26ac38e6b Fixed crash - need to save and restore rbx around cpuid, since the compiler may be assuming the stack pointer isn't being modified when filling in %0.
Sam Lantinga <slouken@libsdl.org>
parents: 4372
diff changeset
29 #if defined(__MACOSX__) && (defined(__ppc__) || defined(__ppc64__))
1487
dc6b59e925a2 Cleaning up warnings on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 1442
diff changeset
30 #include <sys/sysctl.h> /* For AltiVec check */
dc6b59e925a2 Cleaning up warnings on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 1442
diff changeset
31 #elif SDL_ALTIVEC_BLITTERS && HAVE_SETJMP
793
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
32 #include <signal.h>
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
33 #include <setjmp.h>
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
34 #endif
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
35
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
36 #define CPU_HAS_RDTSC 0x00000001
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
37 #define CPU_HAS_MMX 0x00000002
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
38 #define CPU_HAS_MMXEXT 0x00000004
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
39 #define CPU_HAS_3DNOW 0x00000010
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
40 #define CPU_HAS_3DNOWEXT 0x00000020
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
41 #define CPU_HAS_SSE 0x00000040
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
42 #define CPU_HAS_SSE2 0x00000080
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
43 #define CPU_HAS_ALTIVEC 0x00000100
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
44
1487
dc6b59e925a2 Cleaning up warnings on MacOS X
Sam Lantinga <slouken@libsdl.org>
parents: 1442
diff changeset
45 #if SDL_ALTIVEC_BLITTERS && HAVE_SETJMP && !__MACOSX__
793
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
46 /* This is the brute force way of detecting instruction sets...
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
47 the idea is borrowed from the libmpeg2 library - thanks!
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
48 */
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
49 static jmp_buf jmpbuf;
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
50 static void illegal_instruction(int sig)
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
51 {
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
52 longjmp(jmpbuf, 1);
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
53 }
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
54 #endif /* HAVE_SETJMP */
793
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
55
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
56 static __inline__ int CPU_haveCPUID(void)
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
57 {
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
58 int has_CPUID = 0;
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
59 #if defined(__GNUC__) && defined(i386)
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
60 __asm__ (
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
61 " pushfl # Get original EFLAGS \n"
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
62 " popl %%eax \n"
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
63 " movl %%eax,%%ecx \n"
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
64 " xorl $0x200000,%%eax # Flip ID bit in EFLAGS \n"
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
65 " pushl %%eax # Save new EFLAGS value on stack \n"
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
66 " popfl # Replace current EFLAGS value \n"
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
67 " pushfl # Get new EFLAGS \n"
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
68 " popl %%eax # Store new EFLAGS in EAX \n"
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
69 " xorl %%ecx,%%eax # Can not toggle ID bit, \n"
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
70 " jz 1f # Processor=80486 \n"
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
71 " movl $1,%0 # We have CPUID support \n"
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
72 "1: \n"
784
a2dde6aff60e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 778
diff changeset
73 : "=m" (has_CPUID)
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
74 :
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
75 : "%eax", "%ecx"
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
76 );
881
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
77 #elif defined(__GNUC__) && defined(__x86_64__)
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
78 /* Technically, if this is being compiled under __x86_64__ then it has
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
79 CPUid by definition. But it's nice to be able to prove it. :) */
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
80 __asm__ (
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
81 " pushfq # Get original EFLAGS \n"
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
82 " popq %%rax \n"
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
83 " movq %%rax,%%rcx \n"
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
84 " xorl $0x200000,%%eax # Flip ID bit in EFLAGS \n"
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
85 " pushq %%rax # Save new EFLAGS value on stack \n"
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
86 " popfq # Replace current EFLAGS value \n"
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
87 " pushfq # Get new EFLAGS \n"
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
88 " popq %%rax # Store new EFLAGS in EAX \n"
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
89 " xorl %%ecx,%%eax # Can not toggle ID bit, \n"
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
90 " jz 1f # Processor=80486 \n"
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
91 " movl $1,%0 # We have CPUID support \n"
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
92 "1: \n"
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
93 : "=m" (has_CPUID)
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
94 :
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
95 : "%rax", "%rcx"
9eb85a211abd Date: Tue, 30 Mar 2004 18:18:13 -0600
Sam Lantinga <slouken@libsdl.org>
parents: 804
diff changeset
96 );
1442
e3242177fe4a Updated OS/2 build, yay!
Sam Lantinga <slouken@libsdl.org>
parents: 1426
diff changeset
97 #elif (defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__)
749
06cdd106d61c Updated Visual C++ support
Sam Lantinga <slouken@libsdl.org>
parents: 747
diff changeset
98 __asm {
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
99 pushfd ; Get original EFLAGS
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
100 pop eax
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
101 mov ecx, eax
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
102 xor eax, 200000h ; Flip ID bit in EFLAGS
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
103 push eax ; Save new EFLAGS value on stack
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
104 popfd ; Replace current EFLAGS value
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
105 pushfd ; Get new EFLAGS
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
106 pop eax ; Store new EFLAGS in EAX
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
107 xor eax, ecx ; Can not toggle ID bit,
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
108 jz done ; Processor=80486
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
109 mov has_CPUID,1 ; We have CPUID support
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
110 done:
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
111 }
1864
7bea26ad3130 I think this fixes bug #244
Sam Lantinga <slouken@libsdl.org>
parents: 1590
diff changeset
112 #elif defined(__sun) && defined(__i386)
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
113 __asm (
1229
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
114 " pushfl \n"
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
115 " popl %eax \n"
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
116 " movl %eax,%ecx \n"
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
117 " xorl $0x200000,%eax \n"
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
118 " pushl %eax \n"
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
119 " popfl \n"
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
120 " pushfl \n"
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
121 " popl %eax \n"
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
122 " xorl %ecx,%eax \n"
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
123 " jz 1f \n"
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
124 " movl $1,-8(%ebp) \n"
1229
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
125 "1: \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
126 );
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
127 #elif defined(__sun) && defined(__amd64)
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
128 __asm (
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
129 " pushfq \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
130 " popq %rax \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
131 " movq %rax,%rcx \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
132 " xorl $0x200000,%eax \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
133 " pushq %rax \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
134 " popfq \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
135 " pushfq \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
136 " popq %rax \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
137 " xorl %ecx,%eax \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
138 " jz 1f \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
139 " movl $1,-8(%rbp) \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
140 "1: \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
141 );
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
142 #endif
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
143 return has_CPUID;
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
144 }
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
145
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
146 static __inline__ int CPU_getCPUIDFeatures(void)
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
147 {
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
148 int features = 0;
4180
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
149 #if defined(__GNUC__) && defined(i386)
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
150 __asm__ (
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
151 " xorl %%eax,%%eax # Set up for CPUID instruction \n"
4386
dcb26ac38e6b Fixed crash - need to save and restore rbx around cpuid, since the compiler may be assuming the stack pointer isn't being modified when filling in %0.
Sam Lantinga <slouken@libsdl.org>
parents: 4372
diff changeset
152 " pushl %%ebx \n"
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
153 " cpuid # Get and save vendor ID \n"
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
154 " popl %%ebx \n"
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
155 " cmpl $1,%%eax # Make sure 1 is valid input for CPUID\n"
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
156 " jl 1f # We dont have the CPUID instruction\n"
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
157 " xorl %%eax,%%eax \n"
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
158 " incl %%eax \n"
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
159 " pushl %%ebx \n"
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
160 " cpuid # Get family/model/stepping/features\n"
4386
dcb26ac38e6b Fixed crash - need to save and restore rbx around cpuid, since the compiler may be assuming the stack pointer isn't being modified when filling in %0.
Sam Lantinga <slouken@libsdl.org>
parents: 4372
diff changeset
161 " popl %%ebx \n"
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
162 " movl %%edx,%0 \n"
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
163 "1: \n"
784
a2dde6aff60e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 778
diff changeset
164 : "=m" (features)
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
165 :
4372
ca91f36ef3de 1.2 branch: fixed assembly code register clobbering.
Ryan C. Gordon <icculus@icculus.org>
parents: 4245
diff changeset
166 : "%eax", "%ecx", "%edx"
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
167 );
4180
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
168 #elif defined(__GNUC__) && defined(__x86_64__)
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
169 __asm__ (
4386
dcb26ac38e6b Fixed crash - need to save and restore rbx around cpuid, since the compiler may be assuming the stack pointer isn't being modified when filling in %0.
Sam Lantinga <slouken@libsdl.org>
parents: 4372
diff changeset
170 " xorl %%eax,%%eax # Set up for CPUID instruction \n"
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
171 " pushq %%rbx \n"
4180
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
172 " cpuid # Get and save vendor ID \n"
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
173 " popq %%rbx \n"
4180
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
174 " cmpl $1,%%eax # Make sure 1 is valid input for CPUID\n"
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
175 " jl 1f # We dont have the CPUID instruction\n"
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
176 " xorl %%eax,%%eax \n"
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
177 " incl %%eax \n"
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
178 " pushq %%rbx \n"
4180
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
179 " cpuid # Get family/model/stepping/features\n"
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
180 " popq %%rbx \n"
4180
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
181 " movl %%edx,%0 \n"
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
182 "1: \n"
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
183 : "=m" (features)
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
184 :
4372
ca91f36ef3de 1.2 branch: fixed assembly code register clobbering.
Ryan C. Gordon <icculus@icculus.org>
parents: 4245
diff changeset
185 : "%rax", "%rcx", "%rdx"
4180
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
186 );
1442
e3242177fe4a Updated OS/2 build, yay!
Sam Lantinga <slouken@libsdl.org>
parents: 1426
diff changeset
187 #elif (defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__)
749
06cdd106d61c Updated Visual C++ support
Sam Lantinga <slouken@libsdl.org>
parents: 747
diff changeset
188 __asm {
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
189 xor eax, eax ; Set up for CPUID instruction
4386
dcb26ac38e6b Fixed crash - need to save and restore rbx around cpuid, since the compiler may be assuming the stack pointer isn't being modified when filling in %0.
Sam Lantinga <slouken@libsdl.org>
parents: 4372
diff changeset
190 push ebx
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
191 cpuid ; Get and save vendor ID
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
192 pop ebx
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
193 cmp eax, 1 ; Make sure 1 is valid input for CPUID
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
194 jl done ; We dont have the CPUID instruction
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
195 xor eax, eax
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
196 inc eax
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
197 push ebx
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
198 cpuid ; Get family/model/stepping/features
4386
dcb26ac38e6b Fixed crash - need to save and restore rbx around cpuid, since the compiler may be assuming the stack pointer isn't being modified when filling in %0.
Sam Lantinga <slouken@libsdl.org>
parents: 4372
diff changeset
199 pop ebx
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
200 mov features, edx
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
201 done:
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
202 }
1864
7bea26ad3130 I think this fixes bug #244
Sam Lantinga <slouken@libsdl.org>
parents: 1590
diff changeset
203 #elif defined(__sun) && (defined(__i386) || defined(__amd64))
1229
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
204 __asm(
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
205 " xorl %eax,%eax \n"
4386
dcb26ac38e6b Fixed crash - need to save and restore rbx around cpuid, since the compiler may be assuming the stack pointer isn't being modified when filling in %0.
Sam Lantinga <slouken@libsdl.org>
parents: 4372
diff changeset
206 " pushl %ebx \n"
1229
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
207 " cpuid \n"
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
208 " popl %ebx \n"
1229
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
209 " cmpl $1,%eax \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
210 " jl 1f \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
211 " xorl %eax,%eax \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
212 " incl %eax \n"
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
213 " pushl %ebx \n"
1229
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
214 " cpuid \n"
4386
dcb26ac38e6b Fixed crash - need to save and restore rbx around cpuid, since the compiler may be assuming the stack pointer isn't being modified when filling in %0.
Sam Lantinga <slouken@libsdl.org>
parents: 4372
diff changeset
215 " popl %ebx \n"
1229
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
216 #ifdef __i386
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
217 " movl %edx,-8(%ebp) \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
218 #else
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
219 " movl %edx,-8(%rbp) \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
220 #endif
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
221 "1: \n"
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
222 #endif
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
223 return features;
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
224 }
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
225
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
226 static __inline__ int CPU_getCPUIDFeaturesExt(void)
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
227 {
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
228 int features = 0;
4180
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
229 #if defined(__GNUC__) && defined(i386)
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
230 __asm__ (
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
231 " movl $0x80000000,%%eax # Query for extended functions \n"
4386
dcb26ac38e6b Fixed crash - need to save and restore rbx around cpuid, since the compiler may be assuming the stack pointer isn't being modified when filling in %0.
Sam Lantinga <slouken@libsdl.org>
parents: 4372
diff changeset
232 " pushl %%ebx \n"
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
233 " cpuid # Get extended function limit \n"
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
234 " popl %%ebx \n"
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
235 " cmpl $0x80000001,%%eax \n"
787
07760c8854d1 Date: Sat, 24 Jan 2004 14:49:58 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 786
diff changeset
236 " jl 1f # Nope, we dont have function 800000001h\n"
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
237 " movl $0x80000001,%%eax # Setup extended function 800000001h\n"
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
238 " pushl %%ebx \n"
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
239 " cpuid # and get the information \n"
4386
dcb26ac38e6b Fixed crash - need to save and restore rbx around cpuid, since the compiler may be assuming the stack pointer isn't being modified when filling in %0.
Sam Lantinga <slouken@libsdl.org>
parents: 4372
diff changeset
240 " popl %%ebx \n"
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
241 " movl %%edx,%0 \n"
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
242 "1: \n"
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
243 : "=m" (features)
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
244 :
4372
ca91f36ef3de 1.2 branch: fixed assembly code register clobbering.
Ryan C. Gordon <icculus@icculus.org>
parents: 4245
diff changeset
245 : "%eax", "%ecx", "%edx"
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
246 );
4180
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
247 #elif defined(__GNUC__) && defined (__x86_64__)
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
248 __asm__ (
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
249 " movl $0x80000000,%%eax # Query for extended functions \n"
4386
dcb26ac38e6b Fixed crash - need to save and restore rbx around cpuid, since the compiler may be assuming the stack pointer isn't being modified when filling in %0.
Sam Lantinga <slouken@libsdl.org>
parents: 4372
diff changeset
250 " pushq %%rbx \n"
4180
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
251 " cpuid # Get extended function limit \n"
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
252 " popq %%rbx \n"
4180
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
253 " cmpl $0x80000001,%%eax \n"
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
254 " jl 1f # Nope, we dont have function 800000001h\n"
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
255 " movl $0x80000001,%%eax # Setup extended function 800000001h\n"
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
256 " pushq %%rbx \n"
4180
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
257 " cpuid # and get the information \n"
4386
dcb26ac38e6b Fixed crash - need to save and restore rbx around cpuid, since the compiler may be assuming the stack pointer isn't being modified when filling in %0.
Sam Lantinga <slouken@libsdl.org>
parents: 4372
diff changeset
258 " popq %%rbx \n"
4180
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
259 " movl %%edx,%0 \n"
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
260 "1: \n"
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
261 : "=m" (features)
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
262 :
4372
ca91f36ef3de 1.2 branch: fixed assembly code register clobbering.
Ryan C. Gordon <icculus@icculus.org>
parents: 4245
diff changeset
263 : "%rax", "%rcx", "%rdx"
4180
0a9a29fc00c2 Patch from Fedora project to fix crashes with SDL_HasSSE() on amd64.
Ryan C. Gordon <icculus@icculus.org>
parents: 4159
diff changeset
264 );
1442
e3242177fe4a Updated OS/2 build, yay!
Sam Lantinga <slouken@libsdl.org>
parents: 1426
diff changeset
265 #elif (defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__)
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
266 __asm {
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
267 mov eax,80000000h ; Query for extended functions
4386
dcb26ac38e6b Fixed crash - need to save and restore rbx around cpuid, since the compiler may be assuming the stack pointer isn't being modified when filling in %0.
Sam Lantinga <slouken@libsdl.org>
parents: 4372
diff changeset
268 push ebx
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
269 cpuid ; Get extended function limit
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
270 pop ebx
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
271 cmp eax,80000001h
787
07760c8854d1 Date: Sat, 24 Jan 2004 14:49:58 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 786
diff changeset
272 jl done ; Nope, we dont have function 800000001h
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
273 mov eax,80000001h ; Setup extended function 800000001h
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
274 push ebx
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
275 cpuid ; and get the information
4386
dcb26ac38e6b Fixed crash - need to save and restore rbx around cpuid, since the compiler may be assuming the stack pointer isn't being modified when filling in %0.
Sam Lantinga <slouken@libsdl.org>
parents: 4372
diff changeset
276 pop ebx
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
277 mov features,edx
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
278 done:
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
279 }
1229
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
280 #elif defined(__sun) && ( defined(__i386) || defined(__amd64) )
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
281 __asm (
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
282 " movl $0x80000000,%eax \n"
4386
dcb26ac38e6b Fixed crash - need to save and restore rbx around cpuid, since the compiler may be assuming the stack pointer isn't being modified when filling in %0.
Sam Lantinga <slouken@libsdl.org>
parents: 4372
diff changeset
283 " pushl %ebx \n"
1229
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
284 " cpuid \n"
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
285 " popl %ebx \n"
1229
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
286 " cmpl $0x80000001,%eax \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
287 " jl 1f \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
288 " movl $0x80000001,%eax \n"
4387
72d3b4fd918b Missing pop over a jump
Sam Lantinga <slouken@libsdl.org>
parents: 4386
diff changeset
289 " pushl %ebx \n"
1229
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
290 " cpuid \n"
4386
dcb26ac38e6b Fixed crash - need to save and restore rbx around cpuid, since the compiler may be assuming the stack pointer isn't being modified when filling in %0.
Sam Lantinga <slouken@libsdl.org>
parents: 4372
diff changeset
291 " popl %ebx \n"
1229
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
292 #ifdef __i386
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
293 " movl %edx,-8(%ebp) \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
294 #else
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
295 " movl %edx,-8(%rbp) \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
296 #endif
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
297 "1: \n"
1430f5fe092a Patch from Michael Bonfils to add CPUID support for x86 Solaris.
Ryan C. Gordon <icculus@icculus.org>
parents: 1198
diff changeset
298 );
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
299 #endif
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
300 return features;
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
301 }
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
302
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
303 static __inline__ int CPU_haveRDTSC(void)
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
304 {
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
305 if ( CPU_haveCPUID() ) {
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
306 return (CPU_getCPUIDFeatures() & 0x00000010);
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
307 }
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
308 return 0;
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
309 }
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
310
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
311 static __inline__ int CPU_haveMMX(void)
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
312 {
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
313 if ( CPU_haveCPUID() ) {
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
314 return (CPU_getCPUIDFeatures() & 0x00800000);
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
315 }
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
316 return 0;
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
317 }
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
318
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
319 static __inline__ int CPU_haveMMXExt(void)
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
320 {
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
321 if ( CPU_haveCPUID() ) {
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
322 return (CPU_getCPUIDFeaturesExt() & 0x00400000);
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
323 }
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
324 return 0;
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
325 }
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
326
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
327 static __inline__ int CPU_have3DNow(void)
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
328 {
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
329 if ( CPU_haveCPUID() ) {
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
330 return (CPU_getCPUIDFeaturesExt() & 0x80000000);
747
da36f59485da Check for CPUID before checking for 3DNow!
Sam Lantinga <slouken@libsdl.org>
parents: 745
diff changeset
331 }
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
332 return 0;
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
333 }
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
334
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
335 static __inline__ int CPU_have3DNowExt(void)
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
336 {
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
337 if ( CPU_haveCPUID() ) {
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
338 return (CPU_getCPUIDFeaturesExt() & 0x40000000);
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
339 }
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
340 return 0;
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
341 }
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
342
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
343 static __inline__ int CPU_haveSSE(void)
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
344 {
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
345 if ( CPU_haveCPUID() ) {
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
346 return (CPU_getCPUIDFeatures() & 0x02000000);
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
347 }
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
348 return 0;
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
349 }
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
350
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
351 static __inline__ int CPU_haveSSE2(void)
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
352 {
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
353 if ( CPU_haveCPUID() ) {
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
354 return (CPU_getCPUIDFeatures() & 0x04000000);
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
355 }
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
356 return 0;
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
357 }
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
358
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
359 static __inline__ int CPU_haveAltiVec(void)
778
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
360 {
796
dec19b813b04 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 795
diff changeset
361 volatile int altivec = 0;
4386
dcb26ac38e6b Fixed crash - need to save and restore rbx around cpuid, since the compiler may be assuming the stack pointer isn't being modified when filling in %0.
Sam Lantinga <slouken@libsdl.org>
parents: 4372
diff changeset
362 #if defined(__MACOSX__) && (defined(__ppc__) || defined(__ppc64__))
778
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
363 int selectors[2] = { CTL_HW, HW_VECTORUNIT };
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
364 int hasVectorUnit = 0;
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
365 size_t length = sizeof(hasVectorUnit);
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
366 int error = sysctl(selectors, 2, &hasVectorUnit, &length, NULL, 0);
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
367 if( 0 == error )
793
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
368 altivec = (hasVectorUnit != 0);
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1312
diff changeset
369 #elif SDL_ALTIVEC_BLITTERS && HAVE_SETJMP
793
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
370 void (*handler)(int sig);
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
371 handler = signal(SIGILL, illegal_instruction);
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
372 if ( setjmp(jmpbuf) == 0 ) {
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
373 asm volatile ("mtspr 256, %0\n\t"
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
374 "vand %%v0, %%v0, %%v0"
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
375 :
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
376 : "r" (-1));
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
377 altivec = 1;
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
378 }
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
379 signal(SIGILL, handler);
778
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
380 #endif
793
c20f08c4f437 Altivec detection on non-MacOS X systems
Sam Lantinga <slouken@libsdl.org>
parents: 787
diff changeset
381 return altivec;
778
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
382 }
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
383
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
384 static Uint32 SDL_CPUFeatures = 0xFFFFFFFF;
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
385
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
386 static Uint32 SDL_GetCPUFeatures(void)
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
387 {
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
388 if ( SDL_CPUFeatures == 0xFFFFFFFF ) {
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
389 SDL_CPUFeatures = 0;
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
390 if ( CPU_haveRDTSC() ) {
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
391 SDL_CPUFeatures |= CPU_HAS_RDTSC;
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
392 }
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
393 if ( CPU_haveMMX() ) {
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
394 SDL_CPUFeatures |= CPU_HAS_MMX;
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
395 }
786
e1e0a0a94570 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 785
diff changeset
396 if ( CPU_haveMMXExt() ) {
e1e0a0a94570 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 785
diff changeset
397 SDL_CPUFeatures |= CPU_HAS_MMXEXT;
e1e0a0a94570 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 785
diff changeset
398 }
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
399 if ( CPU_have3DNow() ) {
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
400 SDL_CPUFeatures |= CPU_HAS_3DNOW;
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
401 }
786
e1e0a0a94570 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 785
diff changeset
402 if ( CPU_have3DNowExt() ) {
e1e0a0a94570 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 785
diff changeset
403 SDL_CPUFeatures |= CPU_HAS_3DNOWEXT;
e1e0a0a94570 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 785
diff changeset
404 }
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
405 if ( CPU_haveSSE() ) {
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
406 SDL_CPUFeatures |= CPU_HAS_SSE;
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
407 }
786
e1e0a0a94570 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 785
diff changeset
408 if ( CPU_haveSSE2() ) {
e1e0a0a94570 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 785
diff changeset
409 SDL_CPUFeatures |= CPU_HAS_SSE2;
e1e0a0a94570 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 785
diff changeset
410 }
778
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
411 if ( CPU_haveAltiVec() ) {
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
412 SDL_CPUFeatures |= CPU_HAS_ALTIVEC;
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
413 }
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
414 }
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
415 return SDL_CPUFeatures;
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
416 }
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
417
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
418 SDL_bool SDL_HasRDTSC(void)
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
419 {
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
420 if ( SDL_GetCPUFeatures() & CPU_HAS_RDTSC ) {
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
421 return SDL_TRUE;
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
422 }
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
423 return SDL_FALSE;
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
424 }
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
425
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
426 SDL_bool SDL_HasMMX(void)
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
427 {
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
428 if ( SDL_GetCPUFeatures() & CPU_HAS_MMX ) {
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
429 return SDL_TRUE;
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
430 }
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
431 return SDL_FALSE;
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
432 }
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
433
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
434 SDL_bool SDL_HasMMXExt(void)
804
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
435 {
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
436 if ( SDL_GetCPUFeatures() & CPU_HAS_MMXEXT ) {
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
437 return SDL_TRUE;
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
438 }
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
439 return SDL_FALSE;
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
440 }
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
441
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
442 SDL_bool SDL_Has3DNow(void)
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
443 {
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
444 if ( SDL_GetCPUFeatures() & CPU_HAS_3DNOW ) {
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
445 return SDL_TRUE;
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
446 }
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
447 return SDL_FALSE;
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
448 }
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
449
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
450 SDL_bool SDL_Has3DNowExt(void)
804
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
451 {
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
452 if ( SDL_GetCPUFeatures() & CPU_HAS_3DNOWEXT ) {
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
453 return SDL_TRUE;
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
454 }
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
455 return SDL_FALSE;
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
456 }
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
457
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
458 SDL_bool SDL_HasSSE(void)
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
459 {
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
460 if ( SDL_GetCPUFeatures() & CPU_HAS_SSE ) {
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
461 return SDL_TRUE;
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
462 }
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
463 return SDL_FALSE;
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
464 }
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
465
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
466 SDL_bool SDL_HasSSE2(void)
804
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
467 {
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
468 if ( SDL_GetCPUFeatures() & CPU_HAS_SSE2 ) {
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
469 return SDL_TRUE;
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
470 }
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
471 return SDL_FALSE;
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
472 }
b2fda076b02e *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 796
diff changeset
473
1426
ef9a9064bff2 *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 1402
diff changeset
474 SDL_bool SDL_HasAltiVec(void)
778
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
475 {
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
476 if ( SDL_GetCPUFeatures() & CPU_HAS_ALTIVEC ) {
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
477 return SDL_TRUE;
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
478 }
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
479 return SDL_FALSE;
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
480 }
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
481
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
482 #ifdef TEST_MAIN
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
483
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
484 #include <stdio.h>
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
485
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
486 int main()
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
487 {
778
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
488 printf("RDTSC: %d\n", SDL_HasRDTSC());
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
489 printf("MMX: %d\n", SDL_HasMMX());
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
490 printf("MMXExt: %d\n", SDL_HasMMXExt());
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
491 printf("3DNow: %d\n", SDL_Has3DNow());
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
492 printf("3DNowExt: %d\n", SDL_Has3DNowExt());
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
493 printf("SSE: %d\n", SDL_HasSSE());
785
ca06a994f03c Fixed bugs in CPU feature detection and added extended feature detection
Sam Lantinga <slouken@libsdl.org>
parents: 784
diff changeset
494 printf("SSE2: %d\n", SDL_HasSSE2());
778
8ac3f46f9d09 Date: Tue, 6 Jan 2004 12:42:19 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
495 printf("AltiVec: %d\n", SDL_HasAltiVec());
745
71ee03909f42 Greatly simplified the SDL CPU info code
Sam Lantinga <slouken@libsdl.org>
parents: 739
diff changeset
496 return 0;
739
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
497 }
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
498
22dbf364c017 Added SDL_HasMMX(), SDL_Has3DNow(), SDL_HasSSE() in SDL_cpuinfo.h
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
499 #endif /* TEST_MAIN */