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 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231
|
/*********************************************************************/
/* Copyright 2009, 2010 The University of Texas at Austin. */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or */
/* without modification, are permitted provided that the following */
/* conditions are met: */
/* */
/* 1. Redistributions of source code must retain the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer. */
/* */
/* 2. Redistributions in binary form must reproduce the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer in the documentation and/or other materials */
/* provided with the distribution. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
/* POSSIBILITY OF SUCH DAMAGE. */
/* */
/* The views and conclusions contained in the software and */
/* documentation are those of the authors and should not be */
/* interpreted as representing official policies, either expressed */
/* or implied, of The University of Texas at Austin. */
/*********************************************************************/
#ifndef CPUID_H
#define CPUID_H
#if defined(__i386__) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64)
#define INTEL_AMD
#endif
#define VENDOR_INTEL 1
#define VENDOR_UMC 2
#define VENDOR_AMD 3
#define VENDOR_CYRIX 4
#define VENDOR_NEXGEN 5
#define VENDOR_CENTAUR 6
#define VENDOR_RISE 7
#define VENDOR_SIS 8
#define VENDOR_TRANSMETA 9
#define VENDOR_NSC 10
#define VENDOR_HYGON 11
#define VENDOR_ZHAOXIN 12
#define VENDOR_UNKNOWN 99
#define BITMASK(a, b, c) ((((a) >> (b)) & (c)))
#define FAMILY_80486 4
#define FAMILY_P5 5
#define FAMILY_P6 6
#define FAMILY_PM 7
#define FAMILY_IA64 8
#ifdef INTEL_AMD
#define GET_EXFAMILY 1
#define GET_EXMODEL 2
#define GET_TYPE 3
#define GET_FAMILY 4
#define GET_MODEL 5
#define GET_APICID 6
#define GET_LCOUNT 7
#define GET_CHUNKS 8
#define GET_STEPPING 9
#define GET_BLANDID 10
#define GET_FEATURE 11
#define GET_NUMSHARE 12
#define GET_NUMCORES 13
#endif
#ifdef __ia64__
#define GET_ARCHREV 1
#define GET_FAMILY 2
#define GET_MODEL 3
#define GET_REVISION 4
#define GET_NUMBER 5
#endif
#define CORE_UNKNOWN 0
#define CORE_80486 1
#define CORE_P5 2
#define CORE_P6 3
#define CORE_KATMAI 4
#define CORE_COPPERMINE 5
#define CORE_NORTHWOOD 6
#define CORE_PRESCOTT 7
#define CORE_BANIAS 8
#define CORE_ATHLON 9
#define CORE_OPTERON 10
#define CORE_BARCELONA 11
#define CORE_VIAC3 12
#define CORE_YONAH 13
#define CORE_CORE2 14
#define CORE_PENRYN 15
#define CORE_DUNNINGTON 16
#define CORE_NEHALEM 17
#define CORE_ATOM 18
#define CORE_NANO 19
#define CORE_SANDYBRIDGE 20
#define CORE_BOBCAT 21
#define CORE_BULLDOZER 22
#define CORE_PILEDRIVER 23
#define CORE_HASWELL 24
#define CORE_STEAMROLLER 25
#define CORE_EXCAVATOR 26
#define CORE_ZEN 27
#define CORE_SKYLAKEX 28
#define CORE_DHYANA 29
#define CORE_COOPERLAKE 30
#define CORE_SAPPHIRERAPIDS 31
#define HAVE_SSE (1 << 0)
#define HAVE_SSE2 (1 << 1)
#define HAVE_SSE3 (1 << 2)
#define HAVE_SSSE3 (1 << 3)
#define HAVE_SSE4_1 (1 << 4)
#define HAVE_SSE4_2 (1 << 5)
#define HAVE_SSE4A (1 << 6)
#define HAVE_SSE5 (1 << 7)
#define HAVE_MMX (1 << 8)
#define HAVE_3DNOW (1 << 9)
#define HAVE_3DNOWEX (1 << 10)
#define HAVE_CMOV (1 << 11)
#define HAVE_PSE (1 << 12)
#define HAVE_CFLUSH (1 << 13)
#define HAVE_HIT (1 << 14)
#define HAVE_MISALIGNSSE (1 << 15)
#define HAVE_128BITFPU (1 << 16)
#define HAVE_FASTMOVU (1 << 17)
#define HAVE_AVX (1 << 18)
#define HAVE_FMA4 (1 << 19)
#define HAVE_FMA3 (1 << 20)
#define HAVE_AVX512VL (1 << 21)
#define HAVE_AVX2 (1 << 22)
#define HAVE_AVX512BF16 (1 << 23)
#define HAVE_AMXBF16 (1 << 24)
#define CACHE_INFO_L1_I 1
#define CACHE_INFO_L1_D 2
#define CACHE_INFO_L2 3
#define CACHE_INFO_L3 4
#define CACHE_INFO_L1_ITB 5
#define CACHE_INFO_L1_DTB 6
#define CACHE_INFO_L1_LITB 7
#define CACHE_INFO_L1_LDTB 8
#define CACHE_INFO_L2_ITB 9
#define CACHE_INFO_L2_DTB 10
#define CACHE_INFO_L2_LITB 11
#define CACHE_INFO_L2_LDTB 12
typedef struct {
int size;
int associative;
int linesize;
int shared;
} cache_info_t;
#define CPUTYPE_UNKNOWN 0
#define CPUTYPE_INTEL_UNKNOWN 1
#define CPUTYPE_UMC_UNKNOWN 2
#define CPUTYPE_AMD_UNKNOWN 3
#define CPUTYPE_CYRIX_UNKNOWN 4
#define CPUTYPE_NEXGEN_UNKNOWN 5
#define CPUTYPE_CENTAUR_UNKNOWN 6
#define CPUTYPE_RISE_UNKNOWN 7
#define CPUTYPE_SIS_UNKNOWN 8
#define CPUTYPE_TRANSMETA_UNKNOWN 9
#define CPUTYPE_NSC_UNKNOWN 10
#define CPUTYPE_80386 11
#define CPUTYPE_80486 12
#define CPUTYPE_PENTIUM 13
#define CPUTYPE_PENTIUM2 14
#define CPUTYPE_PENTIUM3 15
#define CPUTYPE_PENTIUMM 16
#define CPUTYPE_PENTIUM4 17
#define CPUTYPE_CORE2 18
#define CPUTYPE_PENRYN 19
#define CPUTYPE_DUNNINGTON 20
#define CPUTYPE_NEHALEM 21
#define CPUTYPE_ATOM 22
#define CPUTYPE_ITANIUM 23
#define CPUTYPE_ITANIUM2 24
#define CPUTYPE_AMD5X86 25
#define CPUTYPE_AMDK6 26
#define CPUTYPE_ATHLON 27
#define CPUTYPE_DURON 28
#define CPUTYPE_OPTERON 29
#define CPUTYPE_BARCELONA 30
#define CPUTYPE_SHANGHAI 31
#define CPUTYPE_ISTANBUL 32
#define CPUTYPE_CYRIX5X86 33
#define CPUTYPE_CYRIXM1 34
#define CPUTYPE_CYRIXM2 35
#define CPUTYPE_NEXGENNX586 36
#define CPUTYPE_CENTAURC6 37
#define CPUTYPE_RISEMP6 38
#define CPUTYPE_SYS55X 39
#define CPUTYPE_CRUSOETM3X 40
#define CPUTYPE_NSGEODE 41
#define CPUTYPE_VIAC3 42
#define CPUTYPE_NANO 43
#define CPUTYPE_SANDYBRIDGE 44
#define CPUTYPE_BOBCAT 45
#define CPUTYPE_BULLDOZER 46
#define CPUTYPE_PILEDRIVER 47
#define CPUTYPE_HASWELL 48
#define CPUTYPE_STEAMROLLER 49
#define CPUTYPE_EXCAVATOR 50
#define CPUTYPE_ZEN 51
#define CPUTYPE_SKYLAKEX 52
#define CPUTYPE_DHYANA 53
#define CPUTYPE_COOPERLAKE 54
#define CPUTYPE_SAPPHIRERAPIDS 55
#define CPUTYPE_HYGON_UNKNOWN 99
#endif
|