| ... | @@ -149,10 +149,14 @@ fn detectIntelProcessor(cpu: *Target.Cpu, family: u32, model: u32, brand_id: u32 | ... | @@ -149,10 +149,14 @@ fn detectIntelProcessor(cpu: *Target.Cpu, family: u32, model: u32, brand_id: u32 |
| 149 | cpu.model = &Target.x86.cpu.broadwell; | 149 | cpu.model = &Target.x86.cpu.broadwell; |
| 150 | return; | 150 | return; |
| 151 | }, | 151 | }, |
| 152 | 0x4e, 0x5e, 0x8e, 0x9e => { | 152 | 0x4e, 0x5e, 0x8e, 0x9e, 0xa5, 0xa6 => { |
| 153 | cpu.model = &Target.x86.cpu.skylake; | 153 | cpu.model = &Target.x86.cpu.skylake; |
| 154 | return; | 154 | return; |
| 155 | }, | 155 | }, |
| | 156 | 0xa7 => { |
| | 157 | cpu.model = &Target.x86.cpu.rocketlake; |
| | 158 | return; |
| | 159 | }, |
| 156 | 0x55 => { | 160 | 0x55 => { |
| 157 | if (Target.x86.featureSetHas(cpu.features, .avx512bf16)) { | 161 | if (Target.x86.featureSetHas(cpu.features, .avx512bf16)) { |
| 158 | cpu.model = &Target.x86.cpu.cooperlake; | 162 | cpu.model = &Target.x86.cpu.cooperlake; |
| ... | @@ -177,6 +181,58 @@ fn detectIntelProcessor(cpu: *Target.Cpu, family: u32, model: u32, brand_id: u32 | ... | @@ -177,6 +181,58 @@ fn detectIntelProcessor(cpu: *Target.Cpu, family: u32, model: u32, brand_id: u32 |
| 177 | cpu.model = &Target.x86.cpu.icelake_server; | 181 | cpu.model = &Target.x86.cpu.icelake_server; |
| 178 | return; | 182 | return; |
| 179 | }, | 183 | }, |
| | 184 | 0x8c, 0x8d => { |
| | 185 | cpu.model = &Target.x86.cpu.tigerlake; |
| | 186 | return; |
| | 187 | }, |
| | 188 | 0x97, 0x9a => { |
| | 189 | cpu.model = &Target.x86.cpu.alderlake; |
| | 190 | return; |
| | 191 | }, |
| | 192 | 0xbe => { |
| | 193 | cpu.model = &Target.x86.cpu.gracemont; |
| | 194 | return; |
| | 195 | }, |
| | 196 | 0xb7, 0xba, 0xbf => { |
| | 197 | cpu.model = &Target.x86.cpu.raptorlake; |
| | 198 | return; |
| | 199 | }, |
| | 200 | 0xaa, 0xac => { |
| | 201 | cpu.model = &Target.x86.cpu.meteorlake; |
| | 202 | return; |
| | 203 | }, |
| | 204 | 0xc5, 0xb5 => { |
| | 205 | cpu.model = &Target.x86.cpu.arrowlake; |
| | 206 | return; |
| | 207 | }, |
| | 208 | 0xc6 => { |
| | 209 | cpu.model = &Target.x86.cpu.arrowlake_s; |
| | 210 | return; |
| | 211 | }, |
| | 212 | 0xbd => { |
| | 213 | cpu.model = &Target.x86.cpu.lunarlake; |
| | 214 | return; |
| | 215 | }, |
| | 216 | 0xcc => { |
| | 217 | cpu.model = &Target.x86.cpu.pantherlake; |
| | 218 | return; |
| | 219 | }, |
| | 220 | 0xad => { |
| | 221 | cpu.model = &Target.x86.cpu.graniterapids; |
| | 222 | return; |
| | 223 | }, |
| | 224 | 0xae => { |
| | 225 | cpu.model = &Target.x86.cpu.graniterapids_d; |
| | 226 | return; |
| | 227 | }, |
| | 228 | 0xcf => { |
| | 229 | cpu.model = &Target.x86.cpu.emeraldrapids; |
| | 230 | return; |
| | 231 | }, |
| | 232 | 0x8f => { |
| | 233 | cpu.model = &Target.x86.cpu.sapphirerapids; |
| | 234 | return; |
| | 235 | }, |
| 180 | 0x1c, 0x26, 0x27, 0x35, 0x36 => { | 236 | 0x1c, 0x26, 0x27, 0x35, 0x36 => { |
| 181 | cpu.model = &Target.x86.cpu.bonnell; | 237 | cpu.model = &Target.x86.cpu.bonnell; |
| 182 | return; | 238 | return; |
| ... | @@ -193,10 +249,22 @@ fn detectIntelProcessor(cpu: *Target.Cpu, family: u32, model: u32, brand_id: u32 | ... | @@ -193,10 +249,22 @@ fn detectIntelProcessor(cpu: *Target.Cpu, family: u32, model: u32, brand_id: u32 |
| 193 | cpu.model = &Target.x86.cpu.goldmont_plus; | 249 | cpu.model = &Target.x86.cpu.goldmont_plus; |
| 194 | return; | 250 | return; |
| 195 | }, | 251 | }, |
| 196 | 0x86 => { | 252 | 0x86, 0x8a, 0x96, 0x9c => { |
| 197 | cpu.model = &Target.x86.cpu.tremont; | 253 | cpu.model = &Target.x86.cpu.tremont; |
| 198 | return; | 254 | return; |
| 199 | }, | 255 | }, |
| | 256 | 0xaf => { |
| | 257 | cpu.model = &Target.x86.cpu.sierraforest; |
| | 258 | return; |
| | 259 | }, |
| | 260 | 0xb6 => { |
| | 261 | cpu.model = &Target.x86.cpu.grandridge; |
| | 262 | return; |
| | 263 | }, |
| | 264 | 0xdd => { |
| | 265 | cpu.model = &Target.x86.cpu.clearwaterforest; |
| | 266 | return; |
| | 267 | }, |
| 200 | 0x57 => { | 268 | 0x57 => { |
| 201 | cpu.model = &Target.x86.cpu.knl; | 269 | cpu.model = &Target.x86.cpu.knl; |
| 202 | return; | 270 | return; |
| ... | @@ -242,7 +310,7 @@ fn detectAMDProcessor(features: Target.Cpu.Feature.Set, family: u32, model: u32) | ... | @@ -242,7 +310,7 @@ fn detectAMDProcessor(features: Target.Cpu.Feature.Set, family: u32, model: u32) |
| 242 | &Target.x86.cpu.k8_sse3 | 310 | &Target.x86.cpu.k8_sse3 |
| 243 | else | 311 | else |
| 244 | &Target.x86.cpu.k8, | 312 | &Target.x86.cpu.k8, |
| 245 | 16 => &Target.x86.cpu.amdfam10, | 313 | 16, 18 => &Target.x86.cpu.amdfam10, |
| 246 | 20 => &Target.x86.cpu.btver1, | 314 | 20 => &Target.x86.cpu.btver1, |
| 247 | 21 => switch (model) { | 315 | 21 => switch (model) { |
| 248 | 0x60...0x7f => &Target.x86.cpu.bdver4, | 316 | 0x60...0x7f => &Target.x86.cpu.bdver4, |
| ... | @@ -252,13 +320,14 @@ fn detectAMDProcessor(features: Target.Cpu.Feature.Set, family: u32, model: u32) | ... | @@ -252,13 +320,14 @@ fn detectAMDProcessor(features: Target.Cpu.Feature.Set, family: u32, model: u32) |
| 252 | }, | 320 | }, |
| 253 | 22 => &Target.x86.cpu.btver2, | 321 | 22 => &Target.x86.cpu.btver2, |
| 254 | 23 => switch (model) { | 322 | 23 => switch (model) { |
| 255 | 0x30...0x3f, 0x71 => &Target.x86.cpu.znver2, | 323 | 0x30...0x3f, 0x47, 0x60...0x6f, 0x70...0x7f, 0x84...0x87, 0x90...0x9f, 0xa0...0xaf => &Target.x86.cpu.znver2, |
| 256 | else => &Target.x86.cpu.znver1, | 324 | else => &Target.x86.cpu.znver1, |
| 257 | }, | 325 | }, |
| 258 | 25 => switch (model) { | 326 | 25 => switch (model) { |
| 259 | 0x10...0x1f, 0x60...0x6f, 0x70...0x77, 0x78...0x7f, 0xa0...0xaf => &Target.x86.cpu.znver4, | 327 | 0x10...0x1f, 0x60...0x6f, 0x70...0x7f, 0xa0...0xaf => &Target.x86.cpu.znver4, |
| 260 | else => &Target.x86.cpu.znver3, | 328 | else => &Target.x86.cpu.znver3, |
| 261 | }, | 329 | }, |
| | 330 | 26 => &Target.x86.cpu.znver5, |
| 262 | else => null, | 331 | else => null, |
| 263 | }; | 332 | }; |
| 264 | } | 333 | } |