|
1 | | -/* |
| 1 | +/** |
2 | 2 | * @author Bénédikt Tran |
3 | | - * @seealso Tools/cpuinfo/cpuid_features_gen.py |
| 3 | + * @seealso @file Tools/cpuinfo/cpuid_features_gen.py |
4 | 4 | * |
5 | 5 | * The enumeration describes masks to apply on CPUID output registers. |
6 | 6 | * |
7 | | - * Member names are Py_CPUID_MASK_<REGISTER>_L<LEAF>[S<SUBLEAF>]_<FEATURE>, |
| 7 | + * Member names are _Py_CPUID_MASK_<REGISTER>_L<LEAF>[S<SUBLEAF>]_<FEATURE>, |
8 | 8 | * where <> (resp. []) denotes a required (resp. optional) group and: |
9 | 9 | * |
10 | 10 | * - REGISTER is EAX, EBX, ECX or EDX, |
@@ -35,68 +35,59 @@ extern "C" { |
35 | 35 |
|
36 | 36 | #include "Python.h" |
37 | 37 |
|
38 | | -// fmt: off |
39 | 38 | /*[python input] |
40 | | -import importlib |
41 | | -import os |
42 | | -import sys |
43 | | -
|
44 | | -ROOT = os.getcwd() |
45 | | -TOOL = os.path.join(ROOT, "Tools/cpuinfo/cpuid_features_gen.py") |
46 | | -TOOL = os.path.realpath(TOOL) |
47 | | -
|
48 | | -if not os.path.exists(TOOL): |
49 | | - raise FileNotFoundError(TOOL) |
50 | | -
|
51 | | -sys.path.insert(0, os.path.dirname(os.path.dirname(TOOL))) |
52 | | -module = importlib.import_module("cpuinfo.cpuid_features_gen") |
53 | | -print(module.generate_cpuid_features_enum("py_cpuid_feature_mask")) |
| 39 | +import os, sys |
| 40 | +sys.path.insert(0, os.path.realpath(os.path.join(os.getcwd(), "Tools"))) |
| 41 | +from cpuinfo.cpuid_features_gen import generate_cpuid_features_enum |
| 42 | +print(generate_cpuid_features_enum("_Py_cpuid_feature_mask")) |
54 | 43 | [python start generated code]*/ |
55 | | -typedef enum py_cpuid_feature_mask { |
| 44 | +// fmt: off |
| 45 | +/** Enumeration for CPUID features */ |
| 46 | +enum _Py_cpuid_feature_mask_e { |
56 | 47 | /* CPUID (LEAF=1, SUBLEAF=0) [ECX] */ |
57 | | - Py_CPUID_MASK_ECX_L1_SSE3 = 0x00000001, // bit = 0 |
58 | | - Py_CPUID_MASK_ECX_L1_PCLMULQDQ = 0x00000002, // bit = 1 |
59 | | - Py_CPUID_MASK_ECX_L1_SSSE3 = 0x00000200, // bit = 9 |
60 | | - Py_CPUID_MASK_ECX_L1_FMA = 0x00001000, // bit = 12 |
61 | | - Py_CPUID_MASK_ECX_L1_SSE4_1 = 0x00080000, // bit = 19 |
62 | | - Py_CPUID_MASK_ECX_L1_SSE4_2 = 0x00100000, // bit = 20 |
63 | | - Py_CPUID_MASK_ECX_L1_POPCNT = 0x00800000, // bit = 23 |
64 | | - Py_CPUID_MASK_ECX_L1_XSAVE = 0x04000000, // bit = 26 |
65 | | - Py_CPUID_MASK_ECX_L1_OSXSAVE = 0x08000000, // bit = 27 |
66 | | - Py_CPUID_MASK_ECX_L1_AVX = 0x10000000, // bit = 28 |
| 48 | + _Py_CPUID_MASK_ECX_L1_SSE3 = 0x00000001, // bit = 0 |
| 49 | + _Py_CPUID_MASK_ECX_L1_PCLMULQDQ = 0x00000002, // bit = 1 |
| 50 | + _Py_CPUID_MASK_ECX_L1_SSSE3 = 0x00000200, // bit = 9 |
| 51 | + _Py_CPUID_MASK_ECX_L1_FMA = 0x00001000, // bit = 12 |
| 52 | + _Py_CPUID_MASK_ECX_L1_SSE4_1 = 0x00080000, // bit = 19 |
| 53 | + _Py_CPUID_MASK_ECX_L1_SSE4_2 = 0x00100000, // bit = 20 |
| 54 | + _Py_CPUID_MASK_ECX_L1_POPCNT = 0x00800000, // bit = 23 |
| 55 | + _Py_CPUID_MASK_ECX_L1_XSAVE = 0x04000000, // bit = 26 |
| 56 | + _Py_CPUID_MASK_ECX_L1_OSXSAVE = 0x08000000, // bit = 27 |
| 57 | + _Py_CPUID_MASK_ECX_L1_AVX = 0x10000000, // bit = 28 |
67 | 58 | /* CPUID (LEAF=1, SUBLEAF=0) [EDX] */ |
68 | | - Py_CPUID_MASK_EDX_L1_CMOV = 0x00008000, // bit = 15 |
69 | | - Py_CPUID_MASK_EDX_L1_SSE = 0x02000000, // bit = 25 |
70 | | - Py_CPUID_MASK_EDX_L1_SSE2 = 0x04000000, // bit = 26 |
| 59 | + _Py_CPUID_MASK_EDX_L1_CMOV = 0x00008000, // bit = 15 |
| 60 | + _Py_CPUID_MASK_EDX_L1_SSE = 0x02000000, // bit = 25 |
| 61 | + _Py_CPUID_MASK_EDX_L1_SSE2 = 0x04000000, // bit = 26 |
71 | 62 | /* CPUID (LEAF=7, SUBLEAF=0) [EBX] */ |
72 | | - Py_CPUID_MASK_EBX_L7_AVX2 = 0x00000020, // bit = 5 |
73 | | - Py_CPUID_MASK_EBX_L7_AVX512_F = 0x00010000, // bit = 16 |
74 | | - Py_CPUID_MASK_EBX_L7_AVX512_DQ = 0x00020000, // bit = 17 |
75 | | - Py_CPUID_MASK_EBX_L7_AVX512_IFMA = 0x00200000, // bit = 21 |
76 | | - Py_CPUID_MASK_EBX_L7_AVX512_PF = 0x04000000, // bit = 26 |
77 | | - Py_CPUID_MASK_EBX_L7_AVX512_ER = 0x08000000, // bit = 27 |
78 | | - Py_CPUID_MASK_EBX_L7_AVX512_CD = 0x10000000, // bit = 28 |
79 | | - Py_CPUID_MASK_EBX_L7_AVX512_BW = 0x40000000, // bit = 30 |
80 | | - Py_CPUID_MASK_EBX_L7_AVX512_VL = 0x80000000, // bit = 31 |
| 63 | + _Py_CPUID_MASK_EBX_L7_AVX2 = 0x00000020, // bit = 5 |
| 64 | + _Py_CPUID_MASK_EBX_L7_AVX512_F = 0x00010000, // bit = 16 |
| 65 | + _Py_CPUID_MASK_EBX_L7_AVX512_DQ = 0x00020000, // bit = 17 |
| 66 | + _Py_CPUID_MASK_EBX_L7_AVX512_IFMA = 0x00200000, // bit = 21 |
| 67 | + _Py_CPUID_MASK_EBX_L7_AVX512_PF = 0x04000000, // bit = 26 |
| 68 | + _Py_CPUID_MASK_EBX_L7_AVX512_ER = 0x08000000, // bit = 27 |
| 69 | + _Py_CPUID_MASK_EBX_L7_AVX512_CD = 0x10000000, // bit = 28 |
| 70 | + _Py_CPUID_MASK_EBX_L7_AVX512_BW = 0x40000000, // bit = 30 |
| 71 | + _Py_CPUID_MASK_EBX_L7_AVX512_VL = 0x80000000, // bit = 31 |
81 | 72 | /* CPUID (LEAF=7, SUBLEAF=0) [ECX] */ |
82 | | - Py_CPUID_MASK_ECX_L7_AVX512_VBMI = 0x00000002, // bit = 1 |
83 | | - Py_CPUID_MASK_ECX_L7_AVX512_VBMI2 = 0x00000040, // bit = 6 |
84 | | - Py_CPUID_MASK_ECX_L7_AVX512_VNNI = 0x00000800, // bit = 11 |
85 | | - Py_CPUID_MASK_ECX_L7_AVX512_BITALG = 0x00001000, // bit = 12 |
86 | | - Py_CPUID_MASK_ECX_L7_AVX512_VPOPCNTDQ = 0x00004000, // bit = 14 |
| 73 | + _Py_CPUID_MASK_ECX_L7_AVX512_VBMI = 0x00000002, // bit = 1 |
| 74 | + _Py_CPUID_MASK_ECX_L7_AVX512_VBMI2 = 0x00000040, // bit = 6 |
| 75 | + _Py_CPUID_MASK_ECX_L7_AVX512_VNNI = 0x00000800, // bit = 11 |
| 76 | + _Py_CPUID_MASK_ECX_L7_AVX512_BITALG = 0x00001000, // bit = 12 |
| 77 | + _Py_CPUID_MASK_ECX_L7_AVX512_VPOPCNTDQ = 0x00004000, // bit = 14 |
87 | 78 | /* CPUID (LEAF=7, SUBLEAF=0) [EDX] */ |
88 | | - Py_CPUID_MASK_EDX_L7_AVX512_4VNNIW = 0x00000004, // bit = 2 |
89 | | - Py_CPUID_MASK_EDX_L7_AVX512_4FMAPS = 0x00000008, // bit = 3 |
90 | | - Py_CPUID_MASK_EDX_L7_AVX512_VP2INTERSECT = 0x00000100, // bit = 8 |
| 79 | + _Py_CPUID_MASK_EDX_L7_AVX512_4VNNIW = 0x00000004, // bit = 2 |
| 80 | + _Py_CPUID_MASK_EDX_L7_AVX512_4FMAPS = 0x00000008, // bit = 3 |
| 81 | + _Py_CPUID_MASK_EDX_L7_AVX512_VP2INTERSECT = 0x00000100, // bit = 8 |
91 | 82 | /* CPUID (LEAF=7, SUBLEAF=1) [EAX] */ |
92 | | - Py_CPUID_MASK_EAX_L7S1_AVX_VNNI = 0x00000010, // bit = 4 |
93 | | - Py_CPUID_MASK_EAX_L7S1_AVX_IFMA = 0x00800000, // bit = 23 |
| 83 | + _Py_CPUID_MASK_EAX_L7S1_AVX_VNNI = 0x00000010, // bit = 4 |
| 84 | + _Py_CPUID_MASK_EAX_L7S1_AVX_IFMA = 0x00800000, // bit = 23 |
94 | 85 | /* CPUID (LEAF=7, SUBLEAF=1) [EDX] */ |
95 | | - Py_CPUID_MASK_EDX_L7S1_AVX_VNNI_INT8 = 0x00000010, // bit = 4 |
96 | | - Py_CPUID_MASK_EDX_L7S1_AVX_NE_CONVERT = 0x00000020, // bit = 5 |
97 | | - Py_CPUID_MASK_EDX_L7S1_AVX_VNNI_INT16 = 0x00000400, // bit = 10 |
98 | | -} py_cpuid_feature_mask; |
99 | | -/*[python end generated code: output=c4460242e465fa91 input=61d2b5f1bc368b94]*/ |
| 86 | + _Py_CPUID_MASK_EDX_L7S1_AVX_VNNI_INT8 = 0x00000010, // bit = 4 |
| 87 | + _Py_CPUID_MASK_EDX_L7S1_AVX_NE_CONVERT = 0x00000020, // bit = 5 |
| 88 | + _Py_CPUID_MASK_EDX_L7S1_AVX_VNNI_INT16 = 0x00000400, // bit = 10 |
| 89 | +}; |
100 | 90 | // fmt: on |
| 91 | +/*[python end generated code: output=8e58b0997d69bbf8 input=fce00935f64021f9]*/ |
101 | 92 |
|
102 | 93 | #endif // !Py_INTERNAL_CPUINFO_CPUID_FEATURES_H |
0 commit comments