Skip to content

Commit

Permalink
Fixed issue #81: Misdiagnosis microarchitecture for i3-3220T
Browse files Browse the repository at this point in the history
It's a mystery to me why this CPU doesn't have RdRand.
A quick-n-dirty workaround is inserted to fix that.
  • Loading branch information
anrieff committed Feb 10, 2017
1 parent fa87a5e commit 86bf8e8
Show file tree
Hide file tree
Showing 2 changed files with 103 additions and 1 deletion.
4 changes: 3 additions & 1 deletion libcpuid/recog_intel.c
Expand Up @@ -644,7 +644,9 @@ static intel_code_t get_brand_code(struct cpu_id_t* data)
core_ix_base = CORE_I3;

/* if it has RdRand, then it is at least Ivy Bridge */
if (data->flags[CPU_FEATURE_RDRAND])
/* the second check is to catch a weird case, where an "Core(TM) i3-3220T" apparently
* didn't have RdRand, see issue #81 */
if (data->flags[CPU_FEATURE_RDRAND] || (data->ext_family == 6 && data->ext_model == 58))
core_ix_base = CORE_IVY3;
/* if it has FMA, then it is at least Haswell */
if (data->flags[CPU_FEATURE_FMA3])
Expand Down
100 changes: 100 additions & 0 deletions tests/intel/ivy/i3.test
@@ -0,0 +1,100 @@
basic_cpuid[0]=0000000d 756e6547 6c65746e 49656e69
basic_cpuid[1]=000306a9 03100800 3d9ae3bf bfebfbff
basic_cpuid[2]=76035a01 00f0b2ff 00000000 00ca0000
basic_cpuid[3]=00000000 00000000 00000000 00000000
basic_cpuid[4]=1c004121 01c0003f 0000003f 00000000
basic_cpuid[5]=00000040 00000040 00000003 00001120
basic_cpuid[6]=00000075 00000002 00000009 00000000
basic_cpuid[7]=00000000 00000281 00000000 00000000
basic_cpuid[8]=00000000 00000000 00000000 00000000
basic_cpuid[9]=00000000 00000000 00000000 00000000
basic_cpuid[10]=07300403 00000000 00000000 00000603
basic_cpuid[11]=00000001 00000002 00000100 00000003
basic_cpuid[12]=00000000 00000000 00000000 00000000
basic_cpuid[13]=00000007 00000340 00000340 00000000
basic_cpuid[14]=00000007 00000340 00000340 00000000
basic_cpuid[15]=00000007 00000340 00000340 00000000
basic_cpuid[16]=00000007 00000340 00000340 00000000
basic_cpuid[17]=00000007 00000340 00000340 00000000
basic_cpuid[18]=00000007 00000340 00000340 00000000
basic_cpuid[19]=00000007 00000340 00000340 00000000
basic_cpuid[20]=00000007 00000340 00000340 00000000
basic_cpuid[21]=00000007 00000340 00000340 00000000
basic_cpuid[22]=00000007 00000340 00000340 00000000
basic_cpuid[23]=00000007 00000340 00000340 00000000
basic_cpuid[24]=00000007 00000340 00000340 00000000
basic_cpuid[25]=00000007 00000340 00000340 00000000
basic_cpuid[26]=00000007 00000340 00000340 00000000
basic_cpuid[27]=00000007 00000340 00000340 00000000
basic_cpuid[28]=00000007 00000340 00000340 00000000
basic_cpuid[29]=00000007 00000340 00000340 00000000
basic_cpuid[30]=00000007 00000340 00000340 00000000
basic_cpuid[31]=00000007 00000340 00000340 00000000
ext_cpuid[0]=80000008 00000000 00000000 00000000
ext_cpuid[1]=00000000 00000000 00000001 28100800
ext_cpuid[2]=20202020 49202020 6c65746e 20295228
ext_cpuid[3]=65726f43 294d5428 2d336920 30323233
ext_cpuid[4]=50432054 20402055 30382e32 007a4847
ext_cpuid[5]=00000000 00000000 00000000 00000000
ext_cpuid[6]=00000000 00000000 01006040 00000000
ext_cpuid[7]=00000000 00000000 00000000 00000100
ext_cpuid[8]=00003024 00000000 00000000 00000000
ext_cpuid[9]=00000007 00000340 00000340 00000000
ext_cpuid[10]=00000007 00000340 00000340 00000000
ext_cpuid[11]=00000007 00000340 00000340 00000000
ext_cpuid[12]=00000007 00000340 00000340 00000000
ext_cpuid[13]=00000007 00000340 00000340 00000000
ext_cpuid[14]=00000007 00000340 00000340 00000000
ext_cpuid[15]=00000007 00000340 00000340 00000000
ext_cpuid[16]=00000007 00000340 00000340 00000000
ext_cpuid[17]=00000007 00000340 00000340 00000000
ext_cpuid[18]=00000007 00000340 00000340 00000000
ext_cpuid[19]=00000007 00000340 00000340 00000000
ext_cpuid[20]=00000007 00000340 00000340 00000000
ext_cpuid[21]=00000007 00000340 00000340 00000000
ext_cpuid[22]=00000007 00000340 00000340 00000000
ext_cpuid[23]=00000007 00000340 00000340 00000000
ext_cpuid[24]=00000007 00000340 00000340 00000000
ext_cpuid[25]=00000007 00000340 00000340 00000000
ext_cpuid[26]=00000007 00000340 00000340 00000000
ext_cpuid[27]=00000007 00000340 00000340 00000000
ext_cpuid[28]=00000007 00000340 00000340 00000000
ext_cpuid[29]=00000007 00000340 00000340 00000000
ext_cpuid[30]=00000007 00000340 00000340 00000000
ext_cpuid[31]=00000007 00000340 00000340 00000000
intel_fn4[0]=1c004121 01c0003f 0000003f 00000000
intel_fn4[1]=1c004122 01c0003f 0000003f 00000000
intel_fn4[2]=1c004143 01c0003f 000001ff 00000000
intel_fn4[3]=1c03c163 02c0003f 00000fff 00000006
intel_fn4[4]=00000000 00000000 00000000 00000000
intel_fn4[5]=00000000 00000000 00000000 00000000
intel_fn4[6]=00000000 00000000 00000000 00000000
intel_fn4[7]=00000000 00000000 00000000 00000000
intel_fn11[0]=00000001 00000002 00000100 00000003
intel_fn11[1]=00000004 00000004 00000201 00000003
intel_fn11[2]=00000000 00000000 00000002 00000003
intel_fn11[3]=00000000 00000000 00000003 00000003
--------------------------------------------------------------------------------
6
10
9
6
58
2
4
32
32
256
3072
-1
8
8
12
-1
64
64
64
-1
128 (non-authoritative)
Ivy Bridge (Core i3)
fpu vme de pse tsc msr pae mce cx8 apic mtrr sep pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe pni pclmul dts64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 syscall xd popcnt xsave osxsave avx rdtscp lm lahf_lm constant_tsc f16c

0 comments on commit 86bf8e8

Please sign in to comment.