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
|
/*
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 2018-2018 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.zend.com/license/2_00.txt. |
| If you did not receive a copy of the Zend license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@zend.com so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Authors: Xinchen Hui <xinchen.h@zend.com> |
+----------------------------------------------------------------------+
*/
#ifndef ZEND_CPU_INFO_H
#define ZEND_CPU_INFO_H
#define ZEND_CPU_EDX_MASK (1<<31)
typedef enum _zend_cpu_feature {
/* ECX */
ZEND_CPU_FEATURE_SSE3 = (1<<0),
ZEND_CPU_FEATURE_PCLMULQDQ = (1<<1),
ZEND_CPU_FEATURE_DTES64 = (1<<2),
ZEND_CPU_FEATURE_MONITOR = (1<<3),
ZEND_CPU_FEATURE_DSCPL = (1<<4),
ZEND_CPU_FEATURE_VMX = (1<<5),
ZEND_CPU_FEATURE_SMX = (1<<6),
ZEND_CPU_FEATURE_EST = (1<<7),
ZEND_CPU_FEATURE_TM2 = (1<<8),
ZEND_CPU_FEATURE_SSSE3 = (1<<9),
ZEND_CPU_FEATURE_CID = (1<<10),
ZEND_CPU_FEATURE_SDBG = (1<<11),
ZEND_CPU_FEATURE_FMA = (1<<12),
ZEND_CPU_FEATURE_CX16 = (1<<13),
ZEND_CPU_FEATURE_XTPR = (1<<14),
ZEND_CPU_FEATURE_PDCM = (1<<15),
/* reserved = (1<<16),*/
ZEND_CPU_FEATURE_PCID = (1<<17),
ZEND_CPU_FEATURE_DCA = (1<<18),
ZEND_CPU_FEATURE_SSE41 = (1<<19),
ZEND_CPU_FEATURE_SSE42 = (1<<20),
ZEND_CPU_FEATURE_X2APIC = (1<<21),
ZEND_CPU_FEATURE_MOVBE = (1<<22),
ZEND_CPU_FEATURE_POPCNT = (1<<23),
ZEND_CPU_FEATURE_TSC_DEADLINE = (1<<24),
ZEND_CPU_FEATURE_AES = (1<<25),
ZEND_CPU_FEATURE_XSAVE = (1<<26),
ZEND_CPU_FEATURE_OSXSAVE = (1<<27) ,
ZEND_CPU_FEATURE_AVX = (1<<28),
ZEND_CPU_FEATURE_F16C = (1<<29),
ZEND_CPU_FEATURE_RDRAND = (1<<30),
/* intentionally don't support = (1<<31) */
/* EDX */
ZEND_CPU_FEATURE_FPU = (1<<0 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_VME = (1<<1 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_DE = (1<<2 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_PSE = (1<<3 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_TSC = (1<<4 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_MSR = (1<<5 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_PAE = (1<<6 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_MCE = (1<<7 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_CX8 = (1<<8 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_APIC = (1<<9 | ZEND_CPU_EDX_MASK),
/* reserved = (1<<10 | ZEND_CPU_EDX_MASK),*/
ZEND_CPU_FEATURE_SEP = (1<<11 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_MTRR = (1<<12 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_PGE = (1<<13 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_MCA = (1<<14 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_CMOV = (1<<15 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_PAT = (1<<16 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_PSE36 = (1<<17 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_PN = (1<<18 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_CLFLUSH = (1<<19 | ZEND_CPU_EDX_MASK),
/* reserved = (1<<20 | ZEND_CPU_EDX_MASK),*/
ZEND_CPU_FEATURE_DS = (1<<21 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_ACPI = (1<<22 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_MMX = (1<<23 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_FXSR = (1<<24 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_SSE = (1<<25 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_SSE2 = (1<<26 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_SS = (1<<27 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_HT = (1<<28 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_TM = (1<<29 | ZEND_CPU_EDX_MASK),
ZEND_CPU_FEATURE_IA64 = (1<<30 | ZEND_CPU_EDX_MASK)
/*intentionally don't support = (1<<31 | ZEND_CPU_EDX_MASK)*/
} zend_cpu_feature;
ZEND_API int zend_cpu_supports(zend_cpu_feature feature);
#endif
/*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
* indent-tabs-mode: t
* End:
*/
|