blob: e00ae963a9d84d4fdd92a30471c8b0ef32e5c3bb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>NeL: NLMISC::CCpuInfo___ struct Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.6 -->
<div class="qindex"> <form class="search" action="search.php" method="get">
<a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related Pages</a> | <span class="search"><u>S</u>earch for <input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div>
<h1>NLMISC::CCpuInfo___ Struct Reference</h1><code>#include <<a class="el" href="a05616.html">cpu_info.h</a>></code>
<p>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This helps to know wether cpu has some features such as mmx, sse ... <dl compact><dt><b>Author:</b></dt><dd>Nicolas Vizerie <p>
Nevrax France </dd></dl>
<dl compact><dt><b>Date:</b></dt><dd>2001 </dd></dl>
<p>
<p>
Definition at line <a class="el" href="a05616.html#l00041">41</a> of file <a class="el" href="a05616.html">cpu_info.h</a>.<table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a02421.html#NLMISC_1_1CCpuInfo______e0">hasCPUID</a> (void)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a02421.html#NLMISC_1_1CCpuInfo______e1">hasMMX</a> (void)</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a02421.html#NLMISC_1_1CCpuInfo______e2">hasSSE</a> (void)</td></tr>
</table>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="NLMISC_1_1CCpuInfo______e0" doxytag="NLMISC::CCpuInfo___::hasCPUID" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> bool NLMISC::CCpuInfo___::hasCPUID </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">void </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap><code> [static]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
test wether the cpuid instruction is supported (always false on non intel architectures)
<p>
Definition at line <a class="el" href="a05615.html#l00108">108</a> of file <a class="el" href="a05615.html">cpu_info.cpp</a>.
<p>
References <a class="el" href="a05981.html#l00100">uint32</a>.
<p>
<div class="fragment"><pre>00109 {
00110 <span class="preprocessor"> #ifdef NL_OS_WINDOWS</span>
00111 <span class="preprocessor"></span> <a class="code" href="a04558.html#a11">uint32</a> result;
00112 __asm
00113 {
00114 pushad
00115 pushfd
00116 <span class="comment">// If ID bit of EFLAGS can change, then cpuid is available</span>
00117 pushfd
00118 pop eax <span class="comment">// Get EFLAG</span>
00119 mov ecx,eax
00120 xor eax,0x200000 <span class="comment">// Flip ID bit</span>
00121 push eax
00122 popfd <span class="comment">// Write EFLAGS</span>
00123 pushfd
00124 pop eax <span class="comment">// read back EFLAG</span>
00125 xor eax,ecx
00126 je noCpuid <span class="comment">// no flip -> no CPUID instr.</span>
00127
00128 popfd <span class="comment">// restore state</span>
00129 popad
00130 mov result, 1
00131 jmp CPUIDPresent
00132
00133 noCpuid:
00134 popfd <span class="comment">// restore state</span>
00135 popad
00136 mov result, 0
00137 CPUIDPresent:
00138 }
00139 <span class="keywordflow">return</span> result == 1;
00140 <span class="preprocessor"> #else</span>
00141 <span class="preprocessor"></span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
00142 <span class="preprocessor"> #endif</span>
00143 <span class="preprocessor"></span>}
</pre></div> </td>
</tr>
</table>
<a class="anchor" name="NLMISC_1_1CCpuInfo______e1" doxytag="NLMISC::CCpuInfo___::hasMMX" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> bool NLMISC::CCpuInfo___::hasMMX </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">void </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap><code> [static]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
helps to know wether the processor features mmx instruction set This is initialized at started, so its fast (always false on not 0x86 architecture ...)
<p>
Definition at line <a class="el" href="a05615.html#l00144">144</a> of file <a class="el" href="a05615.html">cpu_info.cpp</a>.
<p>
References <a class="el" href="a05615.html#l00105">NLMISC::HasMMX</a>.
<p>
<div class="fragment"><pre>00144 { <span class="keywordflow">return</span> <a class="code" href="a05378.html#a5">HasMMX</a>; }
</pre></div> </td>
</tr>
</table>
<a class="anchor" name="NLMISC_1_1CCpuInfo______e2" doxytag="NLMISC::CCpuInfo___::hasSSE" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> bool NLMISC::CCpuInfo___::hasSSE </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">void </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap><code> [static]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
helps to know wether the processor has streaming SIMD instructions (the OS must supports it) This is initialized at started, so its fast (always false on not 0x86 architecture ...)
<p>
Definition at line <a class="el" href="a05615.html#l00145">145</a> of file <a class="el" href="a05615.html">cpu_info.cpp</a>.
<p>
References <a class="el" href="a05615.html#l00106">NLMISC::HasSSE</a>.
<p>
<div class="fragment"><pre>00145 { <span class="keywordflow">return</span> <a class="code" href="a05378.html#a6">HasSSE</a>; }
</pre></div> </td>
</tr>
</table>
<hr>The documentation for this struct was generated from the following files:<ul>
<li><a class="el" href="a05616.html">cpu_info.h</a><li><a class="el" href="a05615.html">cpu_info.cpp</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 13:07:09 2004 for NeL by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
</a>1.3.6 </small></address>
</body>
</html>
|