1 /*
2  * This file is part of MPlayer.
3  *
4  * MPlayer is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * MPlayer is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License along
15  * with MPlayer; if not, write to the Free Software Foundation, Inc.,
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17  */
18 
19 #ifndef MPLAYER_CPUDETECT_H
20 #define MPLAYER_CPUDETECT_H
21 
22 #define CPUTYPE_I386    3
23 #define CPUTYPE_I486    4
24 #define CPUTYPE_I586    5
25 #define CPUTYPE_I686    6
26 
27 typedef struct cpucaps_s {
28     int cpuType;
29     int cpuModel;
30     int cpuStepping;
31     int hasMMX;
32     int hasMMX2;
33     int has3DNow;
34     int has3DNowExt;
35     int hasSSE;
36     int hasSSE2;
37     int hasSSE3;
38     int hasSSSE3;
39     int hasSSE4;
40     int hasSSE42;
41     int hasSSE4a;
42     int hasAVX;
43     int isX86;
44     unsigned cl_size; /* size of cache line */
45     int hasAltiVec;
46     int hasTSC;
47 } CpuCaps;
48 
49 extern CpuCaps gCpuCaps;
50 
51 void do_cpuid(unsigned int ax, unsigned int *p);
52 
53 void GetCpuCaps(CpuCaps *caps);
54 
55 /* returned value is malloc()'ed so free() it after use */
56 char *GetCpuFriendlyName(unsigned int regs[], unsigned int regs2[]);
57 
58 #endif /* MPLAYER_CPUDETECT_H */
59