aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/a02421.html
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&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a>  | <span class="search"><u>S</u>earch&nbsp;for&nbsp;<input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div>
<h1>NLMISC::CCpuInfo___ Struct Reference</h1><code>#include &lt;<a class="el" href="a05616.html">cpu_info.h</a>&gt;</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&nbsp;</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&nbsp;</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&nbsp;</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">(&nbsp;</td>
          <td class="md" nowrap valign="top">void&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [static]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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 -&gt; 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">(&nbsp;</td>
          <td class="md" nowrap valign="top">void&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [static]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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">(&nbsp;</td>
          <td class="md" nowrap valign="top">void&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [static]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>