1
/* Copyright(C) 2014, Michał Głowienka aka eloaders <eloaders@linux.pl>
3
* This program is free software; you can redistribute it and/or
4
* modify it under the terms of the GNU General Public License
5
* as published by the Free Software Foundation; either version 3
6
* of the License, or (at your option) any later version.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
13
* You should have received a copy of the GNU Library General Public
14
* License along with this program; if not, write to the Free Software
15
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
23
if (!cpuid_present()) { // check for CPUID presence
24
printf("Sorry, your CPU doesn't support CPUID!\n");
27
struct cpu_raw_data_t raw; // contains only raw data
28
struct cpu_id_t data; // contains recognized CPU features data
29
if (cpuid_get_raw_data(&raw) < 0) { // obtain the raw CPUID data
30
printf("Sorry, cannot get the CPUID raw data.\n");
31
printf("Error: %s\n", cpuid_error()); // cpuid_error() gives the last error description
34
if (cpu_identify(&raw, &data) < 0) { // identify the CPU, using the given raw data.
35
printf("Sorrry, CPU identification failed.\n");
36
printf("Error: %s\n", cpuid_error());
41
for (a = 0; a < 5; a++)
44
:"=a"(b) // EAX into b (output)
45
:"0"(a) // a into EAX (input)
46
:"%ebx","%ecx","%edx"); // clobbered registers
48
printf("The code %i gives %i\n", a, b);
50
struct cpu_mark_t mark;
52
cpu_tsc_unmark(&mark);
54
printf(" \"VENDOR_STR\": \"%s\",\n", data.vendor_str); //
55
printf(" \"CPU_CODENAME\": \"%s\",\n", data.cpu_codename); //
56
printf(" \"BRAND_STR\": \"%s\",\n", data.brand_str); //
57
printf(" \"NUM_CORES\": \"%d\",\n", data.num_cores); //
58
printf(" \"NUM_LOGICAL_CPUS\": \"%d\",\n", data.num_logical_cpus); //
59
printf(" \"TOTAL_LOGICAL_CPUS\": \"%d\",\n", data.total_logical_cpus); //
60
printf(" \"FAMILY\": \"%d\",\n", data.family); //
61
printf(" \"MODEL\": \"%d\",\n", data.model); //
62
printf(" \"STEPPING\": \"%d\",\n", data.stepping); //
63
printf(" \"EXT_FAMILY\": \"%d\",\n", data.ext_family); //
64
printf(" \"EXT_MODEL\": \"%d\",\n", data.ext_model); //
65
printf(" \"CPU_CLOCK\": \"%d\",\n", cpu_clock()); //
66
printf(" \"CPU_CLOCK_BY_OS\": \"%d\",\n", cpu_clock_by_os()); //
67
printf(" \"CPU_CLOCK_BY_IC\": \"%d\",\n", cpu_clock_by_ic(200, 0)); //
68
printf(" \"CPU_CLOCK_MEASURE\": \"%d\",\n", cpu_clock_measure(200, 0));//
69
printf(" \"MARK_TSC\": \"%llu\",\n", mark.tsc); //
70
printf(" \"MARK_SYS_CLOCK\": \"%llu\",\n", mark.sys_clock); //
71
printf(" \"Flags\": {\n");
72
printf(" \"1\": {\n");
73
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_MMXEXT] ? "1 ," : "0 ,");
74
printf(" \"NAME\": \"CPU_FEATURE_MMXEXT\",\n");
75
printf(" \"FEATURE\": \"mmxext\",\n");
76
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/MMX_(instruction_set)\",\n");
77
printf(" \"HAVEWEBSITE\": 1 ,\n");
78
printf(" \"DESC\": \"AMD MMX-extended instructions supported\"\n");
80
printf(" \"2\": {\n");
81
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_SSE] ? "1 ," : "0 ,");
82
printf(" \"NAME\": \"CPU_FEATURE_SSE\",\n");
83
printf(" \"FEATURE\": \"sse\",\n");
84
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Streaming_SIMD_Extensions\",\n");
85
printf(" \"HAVEWEBSITE\": 1 ,\n");
86
printf(" \"DESC\": \"Streaming-SIMD Extensions (SSE) supported\"\n");
88
printf(" \"3\": {\n");
89
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_SSE2] ? "1 ," : "0 ,");
90
printf(" \"NAME\": \"CPU_FEATURE_SSE2\",\n");
91
printf(" \"FEATURE\": \"sse2\",\n");
92
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/SSE2\",\n");
93
printf(" \"HAVEWEBSITE\": 1 ,\n");
94
printf(" \"DESC\": \"SSE2 instructions supported\"\n");
96
printf(" \"4\": {\n");
97
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_3DNOW] ? "1 ," : "0 ,");
98
printf(" \"NAME\": \"CPU_FEATURE_3DNOW\",\n");
99
printf(" \"FEATURE\": \"3dnow\",\n");
100
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/3DNow!\",\n");
101
printf(" \"HAVEWEBSITE\": 1 ,\n");
102
printf(" \"DESC\": \"AMD 3DNow! instructions supported\"\n");
104
printf(" \"5\": {\n");
105
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_VME] ? "1 ," : "0 ,");
106
printf(" \"NAME\": \"CPU_FEATURE_VME\",\n");
107
printf(" \"FEATURE\": \"vme\",\n");
108
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Virtual_8086_mode\",\n");
109
printf(" \"HAVEWEBSITE\": 1 ,\n");
110
printf(" \"DESC\": \"Virtual mode extension\"\n");
112
printf(" \"6\": {\n");
113
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_CLFLUSH] ? "1 ," : "0 ,");
114
printf(" \"NAME\": \"CPU_FEATURE_CLFLUSH\",\n");
115
printf(" \"FEATURE\": \"clflush\",\n");
116
printf(" \"WEBSITE\": \"mmxext\",\n");
117
printf(" \"HAVEWEBSITE\": 0 ,\n");
118
printf(" \"DESC\": \"CLFLUSH instruction supported\"\n");
120
printf(" \"7\": {\n");
121
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_SSSE3] ? "1 ," : "0 ,");
122
printf(" \"NAME\": \"CPU_FEATURE_SSSE3\",\n");
123
printf(" \"FEATURE\": \"ssse3\",\n");
124
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/SSE3\",\n");
125
printf(" \"HAVEWEBSITE\": 1 ,\n");
126
printf(" \"DESC\": \"SSSE3 instructionss supported (this is different from SSE3!)\"\n");
128
printf(" \"8\": {\n");
129
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_LM] ? "1 ," : "0 ,");
130
printf(" \"NAME\": \"CPU_FEATURE_LM\",\n");
131
printf(" \"FEATURE\": \"lm\",\n");
132
printf(" \"WEBSITE\": \"mmxext\",\n");
133
printf(" \"HAVEWEBSITE\": 0 ,\n");
134
printf(" \"DESC\": \"Long mode (x86_64/EM64T) supported\"\n");
136
printf(" \"9\": {\n");
137
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_LAHF_LM] ? "1 ," : "0 ,");
138
printf(" \"NAME\": \"CPU_FEATURE_LAHF_LM\",\n");
139
printf(" \"FEATURE\": \"lahf_lm\",\n");
140
printf(" \"WEBSITE\": \"mmxext\",\n");
141
printf(" \"HAVEWEBSITE\": 0 ,\n");
142
printf(" \"DESC\": \"LAHF/SAHF supported in 64-bit mode\"\n");
144
printf(" \"10\": {\n");
145
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_MTRR] ? "1 ," : "0 ,");
146
printf(" \"NAME\": \"CPU_FEATURE_MTRR\",\n");
147
printf(" \"FEATURE\": \"mtrr\",\n");
148
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Memory_type_range_register\",\n");
149
printf(" \"HAVEWEBSITE\": 1 ,\n");
150
printf(" \"DESC\": \"Memory type range registers\"\n");
152
printf(" \"11\": {\n");
153
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_ACPI] ? "1 ," : "0 ,");
154
printf(" \"NAME\": \"CPU_FEATURE_ACPI\",\n");
155
printf(" \"FEATURE\": \"acpi\",\n");
156
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Acpi\",\n");
157
printf(" \"HAVEWEBSITE\": 1 ,\n");
158
printf(" \"DESC\": \"ACPI support (power states)\"\n");
160
printf(" \"12\": {\n");
161
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_VMX] ? "1 ," : "0 ,");
162
printf(" \"NAME\": \"CPU_FEATURE_VMX\",\n");
163
printf(" \"FEATURE\": \"vmx\",\n");
164
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/X86_virtualization\",\n");
165
printf(" \"HAVEWEBSITE\": 1 ,\n");
166
printf(" \"DESC\": \"Virtualization technology supported\"\n");
168
printf(" \"13\": {\n");
169
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_SYSCALL] ? "1 ," : "0 ,");
170
printf(" \"NAME\": \"CPU_FEATURE_SYSCALL\",\n");
171
printf(" \"FEATURE\": \"syscall\",\n");
172
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Syscall\",\n");
173
printf(" \"HAVEWEBSITE\": 1 ,\n");
174
printf(" \"DESC\": \"SYSCALL / SYSRET instructions supported\"\n");
176
printf(" \"14\": {\n");
177
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_DTS64] ? "1 ," : "0 ,");
178
printf(" \"NAME\": \"CPU_FEATURE_DTS64\",\n");
179
printf(" \"FEATURE\": \"dts64\",\n");
180
printf(" \"WEBSITE\": \"mmxext\",\n");
181
printf(" \"HAVEWEBSITE\": 0 ,\n");
182
printf(" \"DESC\": \"64-bit Debug store supported\"\n");
184
printf(" \"15\": {\n");
185
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_FPU] ? "1 ," : "0 ,");
186
printf(" \"NAME\": \"CPU_FEATURE_FPU\",\n");
187
printf(" \"FEATURE\": \"fpu\",\n");
188
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Floating-point_unit\",\n");
189
printf(" \"HAVEWEBSITE\": 1 ,\n");
190
printf(" \"DESC\": \"Floating point unit\"\n");
192
printf(" \"16\": {\n");
193
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_DE] ? "1 ," : "0 ,");
194
printf(" \"NAME\": \"CPU_FEATURE_DE\",\n");
195
printf(" \"FEATURE\": \"de\",\n");
196
printf(" \"WEBSITE\": \"mmxext\",\n");
197
printf(" \"HAVEWEBSITE\": 0 ,\n");
198
printf(" \"DESC\": \"Debugging extension\"\n");
200
printf(" \"17\": {\n");
201
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_VME] ? "1 ," : "0 ,");
202
printf(" \"NAME\": \"CPU_FEATURE_VME\",\n");
203
printf(" \"FEATURE\": \"vme\",\n");
204
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Virtual_8086_mode\",\n");
205
printf(" \"HAVEWEBSITE\": 1 ,\n");
206
printf(" \"DESC\": \"Virtual mode extension\"\n");
208
printf(" \"18\": {\n");
209
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_PSE] ? "1 ," : "0 ,");
210
printf(" \"NAME\": \"CPU_FEATURE_PSE\",\n");
211
printf(" \"FEATURE\": \"pse\",\n");
212
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Page_Size_Extension\",\n");
213
printf(" \"HAVEWEBSITE\": 1 ,\n");
214
printf(" \"DESC\": \"Page size extension\"\n");
216
printf(" \"19\": {\n");
217
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_TSC] ? "1 ," : "0 ,");
218
printf(" \"NAME\": \"CPU_FEATURE_TSC\",\n");
219
printf(" \"FEATURE\": \"tsc\",\n");
220
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Time_Stamp_Counter\",\n");
221
printf(" \"HAVEWEBSITE\": 1 ,\n");
222
printf(" \"DESC\": \"Time-stamp counter\"\n");
224
printf(" \"20\": {\n");
225
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_MSR] ? "1 ," : "0 ,");
226
printf(" \"NAME\": \"CPU_FEATURE_MSR\",\n");
227
printf(" \"FEATURE\": \"msr\",\n");
228
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Model-specific_register\",\n");
229
printf(" \"HAVEWEBSITE\": 1 ,\n");
230
printf(" \"DESC\": \"Model-specific regsisters, RDMSR/WRMSR supported\"\n");
232
printf(" \"21\": {\n");
233
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_PAE] ? "1 ," : "0 ,");
234
printf(" \"NAME\": \"CPU_FEATURE_PAE\",\n");
235
printf(" \"FEATURE\": \"pae\",\n");
236
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Physical_Address_Extension\",\n");
237
printf(" \"HAVEWEBSITE\": 1 ,\n");
238
printf(" \"DESC\": \"Physical address extension\"\n");
240
printf(" \"22\": {\n");
241
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_MCE] ? "1 ," : "0 ,");
242
printf(" \"NAME\": \"CPU_FEATURE_MCE\",\n");
243
printf(" \"FEATURE\": \"mce\",\n");
244
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Machine-check_exception\",\n");
245
printf(" \"HAVEWEBSITE\": 1 ,\n");
246
printf(" \"DESC\": \"Machine check exception\"\n");
248
printf(" \"23\": {\n");
249
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_CX8] ? "1 ," : "0 ,");
250
printf(" \"NAME\": \"CPU_FEATURE_CX8\",\n");
251
printf(" \"FEATURE\": \"cx8\",\n");
252
printf(" \"WEBSITE\": \"mmxext\",\n");
253
printf(" \"HAVEWEBSITE\": 0 ,\n");
254
printf(" \"DESC\": \"CMPXCHG8/CMPXCHG8B instruction supported\"\n");
256
printf(" \"24\": {\n");
257
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_APIC] ? "1 ," : "0 ,");
258
printf(" \"NAME\": \"CPU_FEATURE_APIC\",\n");
259
printf(" \"FEATURE\": \"apic\",\n");
260
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Advanced_Programmable_Interrupt_Controller\",\n");
261
printf(" \"HAVEWEBSITE\": 1 ,\n");
262
printf(" \"DESC\": \"Advanced Programmable Interrupt Controller support\"\n");
264
printf(" \"25\": {\n");
265
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_X2APIC] ? "1 ," : "0 ,");
266
printf(" \"NAME\": \"CPU_FEATURE_X2APIC\",\n");
267
printf(" \"FEATURE\": \"x2apic\",\n");
268
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/X2APIC\",\n");
269
printf(" \"HAVEWEBSITE\": 1 ,\n");
270
printf(" \"DESC\": \"Intel 64 Architecture x2APIC Specification\"\n");
272
printf(" \"26\": {\n");
273
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_SEP] ? "1 ," : "0 ,");
274
printf(" \"NAME\": \"CPU_FEATURE_SEP\",\n");
275
printf(" \"FEATURE\": \"sep\",\n");
276
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Call_gate\",\n");
277
printf(" \"HAVEWEBSITE\": 1 ,\n");
278
printf(" \"DESC\": \"SYSENTER / SYSEXIT instructions supported\"\n");
280
printf(" \"27\": {\n");
281
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_PGE] ? "1 ," : "0 ,");
282
printf(" \"NAME\": \"CPU_FEATURE_PGE\",\n");
283
printf(" \"FEATURE\": \"pge\",\n");
284
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Translation_lookaside_buffer\",\n");
285
printf(" \"HAVEWEBSITE\": 1 ,\n");
286
printf(" \"DESC\": \"Page global enable\"\n");
288
printf(" \"28\": {\n");
289
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_MCA] ? "1 ," : "0 ,");
290
printf(" \"NAME\": \"CPU_FEATURE_MCA\",\n");
291
printf(" \"FEATURE\": \"mca\",\n");
292
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Machine_check_architecture\",\n");
293
printf(" \"HAVEWEBSITE\": 1 ,\n");
294
printf(" \"DESC\": \"Machine check architecture\"\n");
296
printf(" \"29\": {\n");
297
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_CMOV] ? "1 ," : "0 ,");
298
printf(" \"NAME\": \"CPU_FEATURE_CMOV\",\n");
299
printf(" \"FEATURE\": \"cmov\",\n");
300
printf(" \"WEBSITE\": \"mmxext\",\n");
301
printf(" \"HAVEWEBSITE\": 0 ,\n");
302
printf(" \"DESC\": \"CMOVxx instructions supported\"\n");
304
printf(" \"30\": {\n");
305
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_PAT] ? "1 ," : "0 ,");
306
printf(" \"NAME\": \"CPU_FEATURE_PAT\",\n");
307
printf(" \"FEATURE\": \"pat\",\n");
308
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Page_attribute_table\",\n");
309
printf(" \"HAVEWEBSITE\": 1 ,\n");
310
printf(" \"DESC\": \"Page attribute table\"\n");
312
printf(" \"31\": {\n");
313
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_PSE36] ? "1 ," : "0 ,");
314
printf(" \"NAME\": \"CPU_FEATURE_PSE36\",\n");
315
printf(" \"FEATURE\": \"pse36\",\n");
316
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Physical_Address_Extension\",\n");
317
printf(" \"HAVEWEBSITE\": 1 ,\n");
318
printf(" \"DESC\": \"36-bit page address extension\"\n");
320
printf(" \"32\": {\n");
321
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_PN] ? "1 ," : "0 ,");
322
printf(" \"NAME\": \"CPU_FEATURE_PN\",\n");
323
printf(" \"FEATURE\": \"pt\",\n");
324
printf(" \"WEBSITE\": \"mmxext\",\n");
325
printf(" \"HAVEWEBSITE\": 0 ,\n");
326
printf(" \"DESC\": \"Processor serial # implemented (Intel P3 only)\"\n");
328
printf(" \"33\": {\n");
329
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_DTS] ? "1 ," : "0 ,");
330
printf(" \"NAME\": \"CPU_FEATURE_DTS\",\n");
331
printf(" \"FEATURE\": \"dts\",\n");
332
printf(" \"WEBSITE\": \"mmxext\",\n");
333
printf(" \"HAVEWEBSITE\": 0 ,\n");
334
printf(" \"DESC\": \"Debug store supported\"\n");
336
printf(" \"34\": {\n");
337
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_SS] ? "1 ," : "0 ,");
338
printf(" \"NAME\": \"CPU_FEATURE_SS\",\n");
339
printf(" \"FEATURE\": \"ss\",\n");
340
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Ss\",\n");
341
printf(" \"HAVEWEBSITE\": 1 ,\n");
342
printf(" \"DESC\": \"Self-snoop\"\n");
344
printf(" \"35\": {\n");
345
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_TM] ? "1 ," : "0 ,");
346
printf(" \"NAME\": \"CPU_FEATURE_TM\",\n");
347
printf(" \"FEATURE\": \"tm\",\n");
348
printf(" \"WEBSITE\": \"mmxext\",\n");
349
printf(" \"HAVEWEBSITE\": 0 ,\n");
350
printf(" \"DESC\": \"Thermal monitor\"\n");
352
printf(" \"36\": {\n");
353
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_IA64] ? "1 ," : "0 ,");
354
printf(" \"NAME\": \"CPU_FEATURE_IA64\",\n");
355
printf(" \"FEATURE\": \"ia64\",\n");
356
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Ia64\",\n");
357
printf(" \"HAVEWEBSITE\": 1 ,\n");
358
printf(" \"DESC\": \"IA64 supported (Itanium only)\"\n");
360
printf(" \"37\": {\n");
361
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_PBE] ? "1 ," : "0 ,");
362
printf(" \"NAME\": \"CPU_FEATURE_PBE\",\n");
363
printf(" \"FEATURE\": \"pbe\",\n");
364
printf(" \"WEBSITE\": \"mmxext\",\n");
365
printf(" \"HAVEWEBSITE\": 0 ,\n");
366
printf(" \"DESC\": \"Pending-break enable\"\n");
368
printf(" \"38\": {\n");
369
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_PNI] ? "1 ," : "0 ,");
370
printf(" \"NAME\": \"CPU_FEATURE_PNI\",\n");
371
printf(" \"FEATURE\": \"pni\",\n");
372
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/SSE3\",\n");
373
printf(" \"HAVEWEBSITE\": 1 ,\n");
374
printf(" \"DESC\": \"PNI (SSE3) instructions supported\"\n");
376
printf(" \"39\": {\n");
377
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_PCLMUL] ? "1 ," : "0 ,");
378
printf(" \"NAME\": \"CPU_FEATURE_PCLMUL\",\n");
379
printf(" \"FEATURE\": \"pclmul\",\n");
380
printf(" \"WEBSITE\": \"mmxext\",\n");
381
printf(" \"HAVEWEBSITE\": 0 ,\n");
382
printf(" \"DESC\": \"PCLMULQDQ instruction supported\"\n");
384
printf(" \"40\": {\n");
385
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_MONITOR] ? "1 ," : "0 ,");
386
printf(" \"NAME\": \"CPU_FEATURE_MONITOR\",\n");
387
printf(" \"FEATURE\": \"monitor\",\n");
388
printf(" \"WEBSITE\": \"mmxext\",\n");
389
printf(" \"HAVEWEBSITE\": 0 ,\n");
390
printf(" \"DESC\": \"MONITOR / MWAIT supported\"\n");
392
printf(" \"41\": {\n");
393
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_DS_CPL] ? "1 ," : "0 ,");
394
printf(" \"NAME\": \"CPU_FEATURE_DS_CPL\",\n");
395
printf(" \"FEATURE\": \"ds_cpl\",\n");
396
printf(" \"WEBSITE\": \"mmxext\",\n");
397
printf(" \"HAVEWEBSITE\": 0 ,\n");
398
printf(" \"DESC\": \"CPL Qualified Debug Store\"\n");
400
printf(" \"42\": {\n");
401
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_SMX] ? "1 ," : "0 ,");
402
printf(" \"NAME\": \"CPU_FEATURE_SMX\",\n");
403
printf(" \"FEATURE\": \"smx\",\n");
404
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/LaGrande\",\n");
405
printf(" \"HAVEWEBSITE\": 1 ,\n");
406
printf(" \"DESC\": \"Safer mode exceptions\"\n");
408
printf(" \"43\": {\n");
409
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_EST] ? "1 ," : "0 ,");
410
printf(" \"NAME\": \"CPU_FEATURE_EST\",\n");
411
printf(" \"FEATURE\": \"est\",\n");
412
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/SpeedStep\",\n");
413
printf(" \"HAVEWEBSITE\": 1 ,\n");
414
printf(" \"DESC\": \"Enhanced SpeedStep\"\n");
416
printf(" \"44\": {\n");
417
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_TM2] ? "1 ," : "0 ,");
418
printf(" \"NAME\": \"CPU_FEATURE_TM2\",\n");
419
printf(" \"FEATURE\": \"tm2\",\n");
420
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Tm2\",\n");
421
printf(" \"HAVEWEBSITE\": 1 ,\n");
422
printf(" \"DESC\": \"Thermal monitor 2\"\n");
424
printf(" \"45\": {\n");
425
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_CID] ? "1 ," : "0 ,");
426
printf(" \"NAME\": \"CPU_FEATURE_CID\",\n");
427
printf(" \"FEATURE\": \"cid\",\n");
428
printf(" \"WEBSITE\": \"mmxext\",\n");
429
printf(" \"HAVEWEBSITE\": 0 ,\n");
430
printf(" \"DESC\": \"Context ID supported\"\n");
432
printf(" \"46\": {\n");
433
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_CX16] ? "1 ," : "0 ,");
434
printf(" \"NAME\": \"CPU_FEATURE_CX16\",\n");
435
printf(" \"FEATURE\": \"cx16\",\n");
436
printf(" \"WEBSITE\": \"mmxext\",\n");
437
printf(" \"HAVEWEBSITE\": 0 ,\n");
438
printf(" \"DESC\": \"CMPXCHG16B instruction supported\"\n");
440
printf(" \"47\": {\n");
441
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_XTPR] ? "1 ," : "0 ,");
442
printf(" \"NAME\": \"CPU_FEATURE_XTPR\",\n");
443
printf(" \"FEATURE\": \"xtpr\",\n");
444
printf(" \"WEBSITE\": \"mmxext\",\n");
445
printf(" \"HAVEWEBSITE\": 0 ,\n");
446
printf(" \"DESC\": \"Send Task Priority Messages disable\"\n");
448
printf(" \"48\": {\n");
449
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_PDCM] ? "1 ," : "0 ,");
450
printf(" \"NAME\": \"CPU_FEATURE_PDCM\",\n");
451
printf(" \"FEATURE\": \"pdcm\",\n");
452
printf(" \"WEBSITE\": \"mmxext\",\n");
453
printf(" \"HAVEWEBSITE\": 0 ,\n");
454
printf(" \"DESC\": \"Performance capabilities MSR supported\"\n");
456
printf(" \"49\": {\n");
457
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_DCA] ? "1 ," : "0 ,");
458
printf(" \"NAME\": \"CPU_FEATURE_DCA\",\n");
459
printf(" \"FEATURE\": \"dca\",\n");
460
printf(" \"WEBSITE\": \"mmxext\",\n");
461
printf(" \"HAVEWEBSITE\": 0 ,\n");
462
printf(" \"DESC\": \"Direct cache access supported\"\n");
464
printf(" \"50\": {\n");
465
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_SSE4_1] ? "1 ," : "0 ,");
466
printf(" \"NAME\": \"CPU_FEATURE_SSE4_1\",\n");
467
printf(" \"FEATURE\": \"sse4_1\",\n");
468
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/SSE4\",\n");
469
printf(" \"HAVEWEBSITE\": 1 ,\n");
470
printf(" \"DESC\": \"SSE 4.1 instructions supported\"\n");
472
printf(" \"51\": {\n");
473
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_SSE4_2] ? "1 ," : "0 ,");
474
printf(" \"NAME\": \"CPU_FEATURE_SSE4_2\",\n");
475
printf(" \"FEATURE\": \"sse4_2\",\n");
476
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/SSE4\",\n");
477
printf(" \"HAVEWEBSITE\": 1 ,\n");
478
printf(" \"DESC\": \"SSE 4.2 instructions supported\"\n");
480
printf(" \"52\": {\n");
481
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_SYSCALL] ? "1 ," : "0 ,");
482
printf(" \"NAME\": \"CPU_FEATURE_SYSCALL\",\n");
483
printf(" \"FEATURE\": \"syscall\",\n");
484
printf(" \"WEBSITE\": \"mmxext\",\n");
485
printf(" \"HAVEWEBSITE\": 0 ,\n");
486
printf(" \"DESC\": \"SYSCALL / SYSRET instructions supported\"\n");
488
printf(" \"53\": {\n");
489
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_XD] ? "1 ," : "0 ,");
490
printf(" \"NAME\": \"CPU_FEATURE_XD\",\n");
491
printf(" \"FEATURE\": \"xd\",\n");
492
printf(" \"WEBSITE\": \"mmxext\",\n");
493
printf(" \"HAVEWEBSITE\": 0 ,\n");
494
printf(" \"DESC\": \"Execute disable bit supported\"\n");
496
printf(" \"54\": {\n");
497
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_MOVBE] ? "1 ," : "0 ,");
498
printf(" \"NAME\": \"CPU_FEATURE_MOVBE\",\n");
499
printf(" \"FEATURE\": \"movbe\",\n");
500
printf(" \"WEBSITE\": \"mmxext\",\n");
501
printf(" \"HAVEWEBSITE\": 0 ,\n");
502
printf(" \"DESC\": \"MOVBE instruction supported\"\n");
504
printf(" \"55\": {\n");
505
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_POPCNT] ? "1 ," : "0 ,");
506
printf(" \"NAME\": \"CPU_FEATURE_POPCNT\",\n");
507
printf(" \"FEATURE\": \"popcnt\",\n");
508
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Hamming_weight\",\n");
509
printf(" \"HAVEWEBSITE\": 1 ,\n");
510
printf(" \"DESC\": \"POPCNT instruction supported\"\n");
512
printf(" \"56\": {\n");
513
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_AES] ? "1 ," : "0 ,");
514
printf(" \"NAME\": \"CPU_FEATURE_AES\",\n");
515
printf(" \"FEATURE\": \"aes\",\n");
516
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/AES_instruction_set\",\n");
517
printf(" \"HAVEWEBSITE\": 1 ,\n");
518
printf(" \"DESC\": \"AES* instructions supported\"\n");
520
printf(" \"57\": {\n");
521
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_XSAVE] ? "1 ," : "0 ,");
522
printf(" \"NAME\": \"CPU_FEATURE_XSAVE\",\n");
523
printf(" \"FEATURE\": \"xsave\",\n");
524
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Streaming_SIMD_Extensions\",\n");
525
printf(" \"HAVEWEBSITE\": 1 ,\n");
526
printf(" \"DESC\": \"XSAVE/XRSTOR/etc instructions supported\"\n");
528
printf(" \"58\": {\n");
529
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_OSXSAVE] ? "1 ," : "0 ,");
530
printf(" \"NAME\": \"CPU_FEATURE_OSXSAVE\",\n");
531
printf(" \"FEATURE\": \"osxsave\",\n");
532
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Streaming_SIMD_Extensions\",\n");
533
printf(" \"HAVEWEBSITE\": 1 ,\n");
534
printf(" \"DESC\": \"non-privileged copy of OSXSAVE supported\"\n");
536
printf(" \"59\": {\n");
537
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_AVX] ? "1 ," : "0 ,");
538
printf(" \"NAME\": \"CPU_FEATURE_AVX\",\n");
539
printf(" \"FEATURE\": \"avx\",\n");
540
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Advanced_Vector_Extensions\",\n");
541
printf(" \"HAVEWEBSITE\": 1 ,\n");
542
printf(" \"DESC\": \"Advanced vector extensions supported\"\n");
544
printf(" \"60\": {\n");
545
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_3DNOWEXT] ? "1 ," : "0 ,");
546
printf(" \"NAME\": \"CPU_FEATURE_3DNOWEXT\",\n");
547
printf(" \"FEATURE\": \"3dnowext\",\n");
548
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/3DNow!\",\n");
549
printf(" \"HAVEWEBSITE\": 1 ,\n");
550
printf(" \"DESC\": \"AMD 3DNow! extended instructions supported\"\n");
552
printf(" \"61\": {\n");
553
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_NX] ? "1 ," : "0 ,");
554
printf(" \"NAME\": \"CPU_FEATURE_NX\",\n");
555
printf(" \"FEATURE\": \"nx\",\n");
556
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/NX_bit\",\n");
557
printf(" \"HAVEWEBSITE\": 1 ,\n");
558
printf(" \"DESC\": \"No-execute bit supported\"\n");
560
printf(" \"62\": {\n");
561
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_FXSR_OPT] ? "1 ," : "0 ,");
562
printf(" \"NAME\": \"CPU_FEATURE_FXSR_OPT\",\n");
563
printf(" \"FEATURE\": \"opt\",\n");
564
printf(" \"WEBSITE\": \"mmxext\",\n");
565
printf(" \"HAVEWEBSITE\": 0 ,\n");
566
printf(" \"DESC\": \"FFXSR: FXSAVE and FXRSTOR optimizations\"\n");
568
printf(" \"63\": {\n");
569
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_RDTSCP] ? "1 ," : "0 ,");
570
printf(" \"NAME\": \"CPU_FEATURE_RDTSCP\",\n");
571
printf(" \"FEATURE\": \"rdtscp\",\n");
572
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Time_Stamp_Counter\",\n");
573
printf(" \"HAVEWEBSITE\": 1 ,\n");
574
printf(" \"DESC\": \"RDTSCP instruction supported (AMD-only)\"\n");
576
printf(" \"64\": {\n");
577
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_LM] ? "1 ," : "0 ,");
578
printf(" \"NAME\": \"CPU_FEATURE_LM\",\n");
579
printf(" \"FEATURE\": \"lm\",\n");
580
printf(" \"WEBSITE\": \"mmxext\",\n");
581
printf(" \"HAVEWEBSITE\": 0 ,\n");
582
printf(" \"DESC\": \"Long mode (x86_64/EM64T) supported\"\n");
584
printf(" \"65\": {\n");
585
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_LAHF_LM] ? "1 ," : "0 ,");
586
printf(" \"NAME\": \"CPU_FEATURE_LAHF_LM\",\n");
587
printf(" \"FEATURE\": \"lahf_lm\",\n");
588
printf(" \"WEBSITE\": \"mmxext\",\n");
589
printf(" \"HAVEWEBSITE\": 0 ,\n");
590
printf(" \"DESC\": \"LAHF/SAHF supported in 64-bit mode\"\n");
592
printf(" \"66\": {\n");
593
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_CMP_LEGACY] ? "1 ," : "0 ,");
594
printf(" \"NAME\": \"CPU_FEATURE_CMP_LEGACY\",\n");
595
printf(" \"FEATURE\": \"cmp_legacy\",\n");
596
printf(" \"WEBSITE\": \"mmxext\",\n");
597
printf(" \"HAVEWEBSITE\": 0 ,\n");
598
printf(" \"DESC\": \"Core multi-processing legacy mode\"\n");
600
printf(" \"67\": {\n");
601
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_SVM] ? "1 ," : "0 ,");
602
printf(" \"NAME\": \"CPU_FEATURE_SVM\",\n");
603
printf(" \"FEATURE\": \"svm\",\n");
604
printf(" \"WEBSITE\": \"mmxext\",\n");
605
printf(" \"HAVEWEBSITE\": 0 ,\n");
606
printf(" \"DESC\": \"AMD Secure virtual machine\"\n");
608
printf(" \"68\": {\n");
609
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_SSE4A] ? "1 ," : "0 ,");
610
printf(" \"NAME\": \"CPU_FEATURE_SSE4A\",\n");
611
printf(" \"FEATURE\": \"sse4a\",\n");
612
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/SSE4\",\n");
613
printf(" \"HAVEWEBSITE\": 1 ,\n");
614
printf(" \"DESC\": \"SSE 4a from AMD\"\n");
616
printf(" \"69\": {\n");
617
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_MISALIGNSSE] ? "1 ," : "0 ,");
618
printf(" \"NAME\": \"CPU_FEATURE_MISALIGNSSE\",\n");
619
printf(" \"FEATURE\": \"misalignsse\",\n");
620
printf(" \"WEBSITE\": \"mmxext\",\n");
621
printf(" \"HAVEWEBSITE\": 0 ,\n");
622
printf(" \"DESC\": \"Misaligned SSE supported\"\n");
624
printf(" \"70\": {\n");
625
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_ABM] ? "1 ," : "0 ,");
626
printf(" \"NAME\": \"CPU_FEATURE_ABM\",\n");
627
printf(" \"FEATURE\": \"abm\",\n");
628
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Bit_Manipulation_Instruction_Sets\",\n");
629
printf(" \"HAVEWEBSITE\": 1 ,\n");
630
printf(" \"DESC\": \"LZCNT instruction support\"\n");
632
printf(" \"71\": {\n");
633
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_3DNOWPREFETCH] ? "1 ," : "0 ,");
634
printf(" \"NAME\": \"CPU_FEATURE_3DNOWPREFETCH\",\n");
635
printf(" \"FEATURE\": \"3dnowprefetch\",\n");
636
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/3DNow!\",\n");
637
printf(" \"HAVEWEBSITE\": 1 ,\n");
638
printf(" \"DESC\": \"PREFETCH/PREFETCHW support\"\n");
640
printf(" \"72\": {\n");
641
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_OSVW] ? "1 ," : "0 ,");
642
printf(" \"NAME\": \"CPU_FEATURE_OSVW\",\n");
643
printf(" \"FEATURE\": \"osvw\",\n");
644
printf(" \"WEBSITE\": \"mmxext\",\n");
645
printf(" \"HAVEWEBSITE\": 0 ,\n");
646
printf(" \"DESC\": \"OS Visible Workaround (AMD)\"\n");
648
printf(" \"73\": {\n");
649
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_IBS] ? "1 ," : "0 ,");
650
printf(" \"NAME\": \"CPU_FEATURE_IBS\",\n");
651
printf(" \"FEATURE\": \"ibs\",\n");
652
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Hardware_performance_counter\",\n");
653
printf(" \"HAVEWEBSITE\": 1 ,\n");
654
printf(" \"DESC\": \"Instruction-based sampling\"\n");
656
printf(" \"74\": {\n");
657
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_SSE5] ? "1 ," : "0 ,");
658
printf(" \"NAME\": \"CPU_FEATURE_SSE5\",\n");
659
printf(" \"FEATURE\": \"sse5\",\n");
660
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/SSE5\",\n");
661
printf(" \"HAVEWEBSITE\": 1 ,\n");
662
printf(" \"DESC\": \"SSE 5 instructions supported (deprecated, will never be 1)\"\n");
664
printf(" \"75\": {\n");
665
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_SKINIT] ? "1 ," : "0 ,");
666
printf(" \"NAME\": \"CPU_FEATURE_SKINIT\",\n");
667
printf(" \"FEATURE\": \"skinit\",\n");
668
printf(" \"WEBSITE\": \"mmxext\",\n");
669
printf(" \"HAVEWEBSITE\": 0 ,\n");
670
printf(" \"DESC\": \"SKINIT / STGI supported\"\n");
672
printf(" \"76\": {\n");
673
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_WDT] ? "1 ," : "0 ,");
674
printf(" \"NAME\": \"CPU_FEATURE_WDT\",\n");
675
printf(" \"FEATURE\": \"wdt\",\n");
676
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Watchdog_timer\",\n");
677
printf(" \"HAVEWEBSITE\": 1 ,\n");
678
printf(" \"DESC\": \"Watchdog timer support\"\n");
680
printf(" \"77\": {\n");
681
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_TS] ? "1 ," : "0 ,");
682
printf(" \"NAME\": \"CPU_FEATURE_TS\",\n");
683
printf(" \"FEATURE\": \"ts\",\n");
684
printf(" \"WEBSITE\": \"mmxext\",\n");
685
printf(" \"HAVEWEBSITE\": 0 ,\n");
686
printf(" \"DESC\": \"Temperature sensor\"\n");
688
printf(" \"78\": {\n");
689
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_FID] ? "1 ," : "0 ,");
690
printf(" \"NAME\": \"CPU_FEATURE_FID\",\n");
691
printf(" \"FEATURE\": \"fid\",\n");
692
printf(" \"WEBSITE\": \"mmxext\",\n");
693
printf(" \"HAVEWEBSITE\": 0 ,\n");
694
printf(" \"DESC\": \"Frequency ID control\"\n");
696
printf(" \"79\": {\n");
697
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_VID] ? "1 ," : "0 ,");
698
printf(" \"NAME\": \"CPU_FEATURE_VID\",\n");
699
printf(" \"FEATURE\": \"vid\",\n");
700
printf(" \"WEBSITE\": \"mmxext\",\n");
701
printf(" \"HAVEWEBSITE\": 0 ,\n");
702
printf(" \"DESC\": \"Voltage ID control\"\n");
704
printf(" \"80\": {\n");
705
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_TTP] ? "1 ," : "0 ,");
706
printf(" \"NAME\": \"CPU_FEATURE_TTP\",\n");
707
printf(" \"FEATURE\": \"ttp\",\n");
708
printf(" \"WEBSITE\": \"mmxext\",\n");
709
printf(" \"HAVEWEBSITE\": 0 ,\n");
710
printf(" \"DESC\": \"THERMTRIP\"\n");
712
printf(" \"81\": {\n");
713
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_TM_AMD] ? "1 ," : "0 ,");
714
printf(" \"NAME\": \"CPU_FEATURE_TM_AMD\",\n");
715
printf(" \"FEATURE\": \"tm_amd\",\n");
716
printf(" \"WEBSITE\": \"mmxext\",\n");
717
printf(" \"HAVEWEBSITE\": 0 ,\n");
718
printf(" \"DESC\": \"AMD-specified hardware thermal control\"\n");
720
printf(" \"82\": {\n");
721
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_STC] ? "1 ," : "0 ,");
722
printf(" \"NAME\": \"CPU_FEATURE_STC\",\n");
723
printf(" \"FEATURE\": \"stc\",\n");
724
printf(" \"WEBSITE\": \"mmxext\",\n");
725
printf(" \"HAVEWEBSITE\": 0 ,\n");
726
printf(" \"DESC\": \"Software thermal control\"\n");
728
printf(" \"83\": {\n");
729
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_100MHZSTEPS] ? "1 ," : "0 ,");
730
printf(" \"NAME\": \"CPU_FEATURE_100MHZSTEPS\",\n");
731
printf(" \"FEATURE\": \"100mhzsteps\",\n");
732
printf(" \"WEBSITE\": \"mmxext\",\n");
733
printf(" \"HAVEWEBSITE\": 0 ,\n");
734
printf(" \"DESC\": \"100 MHz multiplier control\"\n");
736
printf(" \"84\": {\n");
737
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_HWPSTATE] ? "1 ," : "0 ,");
738
printf(" \"NAME\": \"CPU_FEATURE_HWPSTATE\",\n");
739
printf(" \"FEATURE\": \"hwpstate\",\n");
740
printf(" \"WEBSITE\": \"mmxext\",\n");
741
printf(" \"HAVEWEBSITE\": 0 ,\n");
742
printf(" \"DESC\": \"Hardware P-state control\"\n");
744
printf(" \"85\": {\n");
745
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_CONSTANT_TSC] ? "1 ," : "0 ,");
746
printf(" \"NAME\": \"CPU_FEATURE_CONSTANT_TSC\",\n");
747
printf(" \"FEATURE\": \"constant_tsc\",\n");
748
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Time_Stamp_Counter\",\n");
749
printf(" \"HAVEWEBSITE\": 1 ,\n");
750
printf(" \"DESC\": \"TSC ticks at constant rate\"\n");
752
printf(" \"86\": {\n");
753
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_XOP] ? "1 ," : "0 ,");
754
printf(" \"NAME\": \"CPU_FEATURE_XOP\",\n");
755
printf(" \"FEATURE\": \"xop\",\n");
756
printf(" \"WEBSITE\": \"mmxext\",\n");
757
printf(" \"HAVEWEBSITE\": 0 ,\n");
758
printf(" \"DESC\": \"The XOP instruction set (same as the old CPU_FEATURE_SSE5)\"\n");
760
printf(" \"87\": {\n");
761
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_FMA3] ? "1 ," : "0 ,");
762
printf(" \"NAME\": \"CPU_FEATURE_FMA3\",\n");
763
printf(" \"FEATURE\": \"fma3\",\n");
764
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/FMA_instruction_set\",\n");
765
printf(" \"HAVEWEBSITE\": 1 ,\n");
766
printf(" \"DESC\": \"The FMA3 instruction set\"\n");
768
printf(" \"88\": {\n");
769
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_FMA4] ? "1 ," : "0 ,");
770
printf(" \"NAME\": \"CPU_FEATURE_FMA4\",\n");
771
printf(" \"FEATURE\": \"fma4\",\n");
772
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/FMA_instruction_set\",\n");
773
printf(" \"HAVEWEBSITE\": 1 ,\n");
774
printf(" \"DESC\": \"The FMA4 instruction set\"\n");
776
printf(" \"89\": {\n");
777
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_TBM] ? "1 ," : "0 ,");
778
printf(" \"NAME\": \"CPU_FEATURE_TBM\",\n");
779
printf(" \"FEATURE\": \"tbm\",\n");
780
printf(" \"WEBSITE\": \"mmxext\",\n");
781
printf(" \"HAVEWEBSITE\": 0 ,\n");
782
printf(" \"DESC\": \"Trailing bit manipulation instruction support\"\n");
784
printf(" \"90\": {\n");
785
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_F16C] ? "1 ," : "0 ,");
786
printf(" \"NAME\": \"CPU_FEATURE_F16C\",\n");
787
printf(" \"FEATURE\": \"f16c\",\n");
788
printf(" \"WEBSITE\": \"mmxext\",\n");
789
printf(" \"HAVEWEBSITE\": 0 ,\n");
790
printf(" \"DESC\": \"16-bit FP convert instruction support\"\n");
792
printf(" \"91\": {\n");
793
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_RDRAND] ? "1 ," : "0 ,");
794
printf(" \"NAME\": \"CPU_FEATURE_RDRAND\",\n");
795
printf(" \"FEATURE\": \"rdrand\",\n");
796
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/RdRand\",\n");
797
printf(" \"HAVEWEBSITE\": 1 ,\n");
798
printf(" \"DESC\": \"RdRand instruction\"\n");
800
printf(" \"92\": {\n");
801
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_HT] ? "1 ," : "0 ,");
802
printf(" \"NAME\": \"CPU_FEATURE_HT\",\n");
803
printf(" \"FEATURE\": \"ht\",\n");
804
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Hyper-Threading\",\n");
805
printf(" \"HAVEWEBSITE\": 1 ,\n");
806
printf(" \"DESC\": \"Hyper-threading supported (but might be disabled)\"\n");
808
printf(" \"93\": {\n");
809
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_MMX] ? "1 ," : "0 ,");
810
printf(" \"NAME\": \"CPU_FEATURE_MMX\",\n");
811
printf(" \"FEATURE\": \"mmx\",\n");
812
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/MMX_(instruction_set)\",\n");
813
printf(" \"HAVEWEBSITE\": 1 ,\n");
814
printf(" \"DESC\": \"MMX instruction set supported\"\n");
816
printf(" \"94\": {\n");
817
printf(" \"VALUE\": %s \n", data.flags[CPU_FEATURE_MTRR] ? "1 ," : "0 ,");
818
printf(" \"NAME\": \"CPU_FEATURE_MTRR\",\n");
819
printf(" \"FEATURE\": \"mtrr\",\n");
820
printf(" \"WEBSITE\": \"http://en.wikipedia.org/wiki/Memory_type_range_register\",\n");
821
printf(" \"HAVEWEBSITE\": 1 ,\n");
822
printf(" \"DESC\": \"Memory type range registers\"\n");
825
printf(" \"L1_DATA_CACHE\": \"%d\",\n", data.l1_data_cache);
826
printf(" \"L1_INSTRUCTION_CACHE\": \"%d\",\n", data.l1_instruction_cache);
827
printf(" \"L2_CACHE\": \"%d\",\n", data.l2_cache);
828
printf(" \"L3_CACHE\": \"%d\",\n", data.l3_cache);
829
printf(" \"L1_ASSOC\": \"%d\",\n", data.l1_assoc);
830
printf(" \"L2_ASSOC\": \"%d\",\n", data.l2_assoc);
831
printf(" \"L3_ASSOC\": \"%d\",\n", data.l3_assoc);
832
printf(" \"L1_CACHELINE\": \"%d\",\n", data.l1_cacheline);
833
printf(" \"L2_CACHELINE\": \"%d\",\n", data.l2_cacheline);
834
printf(" \"L3_CACHELINE\": \"%d\",\n", data.l3_cacheline);
835
printf(" \"SSE_SIZE\": \"%d\"\n", data.sse_size);
b'\\ No newline at end of file'