@@ -99,8 +99,12 @@ std::string_view ToString(Microarchitecture microarch) {
99
99
return " Intel Tiger Lake" ;
100
100
case Microarchitecture::kIntelAlderLake :
101
101
return " Intel Alder Lake" ;
102
+ case Microarchitecture::kIntelRaptorLake :
103
+ return " Intel Raptor Lake" ;
102
104
case Microarchitecture::kIntelBonnell :
103
105
return " Intel Bonnell" ;
106
+ case Microarchitecture::kIntelSaltwell :
107
+ return " Intel Saltwell" ;
104
108
case Microarchitecture::kIntelSilvermont :
105
109
return " Intel Silvermont" ;
106
110
case Microarchitecture::kIntelAirmont :
@@ -142,80 +146,90 @@ uint8_t CpuidVersionInfo::model() const {
142
146
Microarchitecture CpuidVersionInfo::microarchitecture (Vendor vendor) const {
143
147
switch (vendor) {
144
148
case Vendor::kIntel : {
149
+ // Table largely from https://en.wikichip.org/wiki/intel/cpuid
145
150
switch (family ()) {
146
151
case 0x6 : {
147
152
switch (model ()) {
148
- case 0x0f : // Merom.
149
- case 0x16 : // Merom L.
150
- case 0x17 : // Penryn, Wolfdale, Yorkfield, Harpertown, QC.
151
- case 0x1d : // Dunnington.
153
+ // Big cores
154
+ case 0x0f : // Merom
155
+ case 0x16 : // Merom L
156
+ case 0x17 : // Penryn, Wolfdale, Yorkfield, Harpertown, QC
157
+ case 0x1d : // Dunnington
152
158
return Microarchitecture::kIntelCore2 ;
153
- case 0x1a : // Bloomfield, EP, WS.
154
- case 0x1e : // Lynnfield, Clarksfield.
155
- case 0x1f : // Auburndale, Havendale.
156
- case 0x2e : // EX.
159
+ case 0x1a : // Bloomfield, EP, WS
160
+ case 0x1e : // Lynnfield, Clarksfield
161
+ case 0x1f : // Auburndale, Havendale
162
+ case 0x2e : // EX
157
163
return Microarchitecture::kIntelNehalem ;
158
- case 0x25 : // Arrandale, Clarkdale.
159
- case 0x2c : // Gulftown, EP.
160
- case 0x2f : // EX.
164
+ case 0x25 : // Arrandale, Clarkdale
165
+ case 0x2c : // Gulftown, EP
166
+ case 0x2f : // EX
161
167
return Microarchitecture::kIntelWestmere ;
162
- case 0x2a : // M, H.
163
- case 0x2d : // E, EN, EP.
168
+ case 0x2a : // M, H
169
+ case 0x2d : // E, EN, EP
164
170
return Microarchitecture::kIntelSandyBridge ;
165
171
case 0x3a : // M, H, Gladden
166
- case 0x3e : // E, EN, EP, EX.
172
+ case 0x3e : // E, EN, EP, EX
167
173
return Microarchitecture::kIntelIvyBridge ;
168
- case 0x3c : // S.
169
- case 0x3f : // E, EP, EX.
170
- case 0x45 : // ULT.
171
- case 0x46 : // GT3E.
174
+ case 0x3c : // S
175
+ case 0x3f : // E, EP, EX
176
+ case 0x45 : // ULT
177
+ case 0x46 : // GT3E
172
178
return Microarchitecture::kIntelHaswell ;
173
- case 0x3d : // U, Y, S.
174
- case 0x47 : // H, C, W.
175
- case 0x56 : // DE, Hewitt Lake.
176
- case 0x4f : // E, EP, EX.
179
+ case 0x3d : // U, Y, S
180
+ case 0x47 : // H, C, W
181
+ case 0x56 : // DE, Hewitt Lake
182
+ case 0x4f : // E, EP, EX
177
183
return Microarchitecture::kIntelBroadwell ;
178
- case 0x4e : // Skylake Y, U.
179
- case 0x5e : // Skylake DT, H, S.
180
- // Kaby Lake Y, U; Coffee Lake U; Whiskey Lake U; Amber Lake Y;
181
- // Comet Lake U.
182
- case 0x8e :
183
- // Kaby Lake T, H, S, X; Coffee Lake S, H, E; Comet Lake S, H.
184
- case 0x9e :
184
+ case 0x4e : // Skylake Y, U
185
+ case 0x5e : // Skylake DT, H, S
186
+ case 0x8e : // Kaby Lake Y, U; Coffee Lake U; Whiskey Lake U; Amber Lake Y;
187
+ // Comet Lake U
188
+ case 0x9e : // Kaby Lake T, H, S, X; Coffee Lake S, H, E
189
+ case 0xa5 : // Comet Lake S, H
185
190
return Microarchitecture::kIntelSkylake ;
186
- // Skylake SP, X, DE, W; Cascade Lake SP, X, W; Cooper Lake.
187
- case 0x55 :
191
+ case 0x55 : // Skylake SP, X, DE, W; Cascade Lake SP, X, W; Cooper Lake
188
192
return Microarchitecture::kIntelSkylakeServer ;
189
- case 0x66 : // U.
193
+ case 0x66 : // Cannon Lake U
190
194
return Microarchitecture::kIntelCannonLake ;
191
- case 0x6a :
195
+ case 0x6a : // Ice Lake Server SP
196
+ case 0x6c : // Ice Lake Server DE
197
+ case 0x7d : // Ice Lake Y
198
+ case 0x7e : // Ice Lake U
192
199
return Microarchitecture::kIntelIceLake ;
193
- case 0x8c : // Tiger Lake UP.
194
- case 0x8d : // Tiger Lake H.
200
+ case 0x8c : // Tiger Lake UP
201
+ case 0x8d : // Tiger Lake H
195
202
return Microarchitecture::kIntelTigerLake ;
196
203
case 0x97 : // Alder Lake S
197
204
case 0x9a : // Alder Lake H, P, U
198
205
return Microarchitecture::kIntelAlderLake ;
199
- case 0x1c : // Silverthorne, Diamondville, Pineview.
200
- case 0x26 : // Lincroft.
201
- case 0x27 : // Penwell.
202
- case 0x35 : // Cloverview.
203
- case 0x36 : // Cedarview.
206
+ case 0xb7 : // Raptor Lake S
207
+ return Microarchitecture::kIntelRaptorLake ;
208
+
209
+ // Small cores
210
+ case 0x1c : // Silverthorne, Diamondville, Pineview
211
+ case 0x26 : // Lincroft
204
212
return Microarchitecture::kIntelBonnell ;
205
- case 0x37 : // Bay Trail.
206
- case 0x4a : // Tangier.
207
- case 0x4d : // Avoton, Rangeley.
208
- case 0x5a : // Anniedale.
209
- case 0x5d : // SoFIA.
213
+ case 0x27 : // Penwell
214
+ case 0x35 : // Cloverview
215
+ case 0x36 : // Cedarview
216
+ return Microarchitecture::kIntelSaltwell ;
217
+ case 0x37 : // Bay Trail
218
+ case 0x4a : // Tangier
219
+ case 0x4d : // Avoton, Rangeley
220
+ case 0x5a : // Anniedale
221
+ case 0x5d : // SoFIA
210
222
return Microarchitecture::kIntelSilvermont ;
211
- case 0x4c : // Cherry Trail, Braswell.
223
+ case 0x4c : // Cherry Trail, Braswell
212
224
return Microarchitecture::kIntelAirmont ;
213
- case 0x5c : // Apollo Lake, Broxton.
214
- case 0x5f : // Denverton.
225
+ case 0x5c : // Apollo Lake, Broxton
226
+ case 0x5f : // Denverton
215
227
return Microarchitecture::kIntelGoldmont ;
216
- case 0x7a : // Gemini Lake.
228
+ case 0x7a : // Gemini Lake
217
229
return Microarchitecture::kIntelGoldmontPlus ;
218
- case 0x86 : // Elkhart Lake.
230
+ case 0x8a : // Lakefield
231
+ case 0x96 : // Elkhart Lake
232
+ case 0x9c : // Jasper Lake
219
233
return Microarchitecture::kIntelTremont ;
220
234
}
221
235
return Microarchitecture::kUnknown ;
@@ -224,6 +238,7 @@ Microarchitecture CpuidVersionInfo::microarchitecture(Vendor vendor) const {
224
238
return Microarchitecture::kUnknown ;
225
239
}
226
240
case Vendor::kAmd : {
241
+ // Table largely from https://en.wikichip.org/wiki/amd/cpuid
227
242
switch (family ()) {
228
243
case 0x15 : // Bulldozer/Piledriver/Steamroller/Excavator
229
244
return Microarchitecture::kAmdFamilyBulldozer ;
0 commit comments