Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Latest commit

 

History

History
151 lines (126 loc) · 3.7 KB

SDL_cpuinfo.h

File metadata and controls

151 lines (126 loc) · 3.7 KB
 
1
2
/*
SDL - Simple DirectMedia Layer
Feb 12, 2011
Feb 12, 2011
3
Copyright (C) 1997-2011 Sam Lantinga
4
5
This library is free software; you can redistribute it and/or
Feb 1, 2006
Feb 1, 2006
6
modify it under the terms of the GNU Lesser General Public
7
License as published by the Free Software Foundation; either
Feb 1, 2006
Feb 1, 2006
8
version 2.1 of the License, or (at your option) any later version.
9
10
11
12
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Feb 1, 2006
Feb 1, 2006
13
Lesser General Public License for more details.
Feb 1, 2006
Feb 1, 2006
15
16
17
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
19
20
21
22
Sam Lantinga
slouken@libsdl.org
*/
Jul 10, 2006
Jul 10, 2006
23
/**
Oct 19, 2009
Oct 19, 2009
24
25
26
* \file SDL_cpuinfo.h
*
* CPU feature detection for SDL.
Jul 10, 2006
Jul 10, 2006
27
*/
28
29
30
31
#ifndef _SDL_cpuinfo_h
#define _SDL_cpuinfo_h
Feb 21, 2006
Feb 21, 2006
32
33
#include "SDL_stdinc.h"
Feb 23, 2011
Feb 23, 2011
34
35
36
37
/* Need to do this here because intrin.h has C++ code in it */
/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */
#if defined(_MSC_VER) && (_MSC_VER >= 1500) && !defined(_WIN32_WCE)
#include <intrin.h>
Mar 8, 2011
Mar 8, 2011
38
#ifndef _WIN64
Feb 23, 2011
Feb 23, 2011
39
40
#define __MMX__
#define __3dNOW__
Mar 8, 2011
Mar 8, 2011
41
#endif
Feb 23, 2011
Feb 23, 2011
42
43
44
45
46
#define __SSE__
#define __SSE2__
#elif defined(__MINGW64_VERSION_MAJOR)
#include <intrin.h>
#else
Feb 23, 2011
Feb 23, 2011
47
48
49
50
51
52
#ifdef __ALTIVEC__
#if HAVE_ALTIVEC_H && !defined(__APPLE_ALTIVEC__)
#include <altivec.h>
#undef pixel
#endif
#endif
Feb 23, 2011
Feb 23, 2011
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#ifdef __MMX__
#include <mmintrin.h>
#endif
#ifdef __3dNOW__
#include <mm3dnow.h>
#endif
#ifdef __SSE__
#include <xmmintrin.h>
#endif
#ifdef __SSE2__
#include <emmintrin.h>
#endif
#endif
67
68
69
#include "begin_code.h"
/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
Jul 10, 2006
Jul 10, 2006
70
/* *INDENT-OFF* */
Jul 10, 2006
Jul 10, 2006
72
/* *INDENT-ON* */
Jan 28, 2011
Jan 28, 2011
75
76
77
78
/* This is a guess for the cacheline size used for padding.
* Most x86 processors have a 64 byte cache line.
* The 64-bit PowerPC processors have a 128 byte cache line.
* We'll use the larger value to be generally safe.
Jan 28, 2011
Jan 28, 2011
79
*/
Jan 28, 2011
Jan 28, 2011
80
#define SDL_CACHELINE_SIZE 128
Jan 28, 2011
Jan 28, 2011
81
Dec 16, 2009
Dec 16, 2009
82
83
84
85
86
/**
* This function returns the number of CPU cores available.
*/
extern DECLSPEC int SDLCALL SDL_GetCPUCount(void);
Jan 28, 2011
Jan 28, 2011
87
88
89
90
91
92
93
94
/**
* This function returns the L1 cache line size of the CPU
*
* This is useful for determining multi-threaded structure padding
* or SIMD prefetch sizes.
*/
extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void);
Oct 19, 2009
Oct 19, 2009
95
96
/**
* This function returns true if the CPU has the RDTSC instruction.
Nov 24, 2003
Nov 24, 2003
97
*/
Feb 24, 2006
Feb 24, 2006
98
extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void);
Nov 24, 2003
Nov 24, 2003
99
Feb 23, 2011
Feb 23, 2011
100
101
102
103
104
/**
* This function returns true if the CPU has AltiVec features.
*/
extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void);
Oct 19, 2009
Oct 19, 2009
105
106
/**
* This function returns true if the CPU has MMX features.
Feb 24, 2006
Feb 24, 2006
108
extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void);
Feb 23, 2011
Feb 23, 2011
110
111
112
113
114
/**
* This function returns true if the CPU has 3DNow! features.
*/
extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void);
Oct 19, 2009
Oct 19, 2009
115
116
/**
* This function returns true if the CPU has SSE features.
Feb 24, 2006
Feb 24, 2006
118
extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void);
Oct 19, 2009
Oct 19, 2009
120
121
/**
* This function returns true if the CPU has SSE2 features.
Jan 24, 2004
Jan 24, 2004
122
*/
Feb 24, 2006
Feb 24, 2006
123
extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void);
Jan 24, 2004
Jan 24, 2004
124
Oct 19, 2009
Oct 19, 2009
125
/**
Feb 11, 2011
Feb 11, 2011
126
127
128
129
130
* This function returns true if the CPU has SSE3 features.
*/
extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void);
/**
Feb 12, 2011
Feb 12, 2011
131
* This function returns true if the CPU has SSE4.1 features.
Jan 6, 2004
Jan 6, 2004
132
*/
Feb 12, 2011
Feb 12, 2011
133
134
135
136
137
138
extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void);
/**
* This function returns true if the CPU has SSE4.2 features.
*/
extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void);
Feb 11, 2011
Feb 11, 2011
139
Jan 6, 2004
Jan 6, 2004
140
141
142
/* Ends C function definitions when using C++ */
#ifdef __cplusplus
Jul 10, 2006
Jul 10, 2006
143
/* *INDENT-OFF* */
Jul 10, 2006
Jul 10, 2006
145
/* *INDENT-ON* */
146
147
148
149
#endif
#include "close_code.h"
#endif /* _SDL_cpuinfo_h */
Jul 10, 2006
Jul 10, 2006
150
151
/* vi: set ts=4 sw=4 expandtab: */