From f1c250d6cf616f6fd07d9c2a6279da8795578c66 Mon Sep 17 00:00:00 2001 From: Veselin Georgiev Date: Fri, 15 Oct 2010 08:37:54 +0000 Subject: [PATCH] Support for Lynnfield i7s, and better detection of Athlon Propus. Also, added newer Athlon II X3s (Rana) git-svn-id: https://svn.code.sf.net/p/libcpuid/code/HEAD/libcpuid@89 3b4be424-7ac5-41d7-8526-f4ddcb85d872 --- libcpuid/recog_amd.c | 19 +-- libcpuid/recog_intel.c | 1 + tests/tests_stash.txt | 279 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 291 insertions(+), 8 deletions(-) diff --git a/libcpuid/recog_amd.c b/libcpuid/recog_amd.c index e8c9919..77235cd 100644 --- a/libcpuid/recog_amd.c +++ b/libcpuid/recog_amd.c @@ -52,7 +52,6 @@ enum _amd_code_t { OPTERON_800_DUALCORE, MOBILE_TURION, ATHLON_64, - ATHLON_64_X2, ATHLON_64_FX, TURION_64, TURION_X2, @@ -61,6 +60,8 @@ enum _amd_code_t { SEMPRON_DUALCORE, PHENOM, PHENOM2, + ATHLON_64_X2, + ATHLON_64_X3, ATHLON_64_X4, }; typedef enum _amd_code_t amd_code_t; @@ -224,15 +225,18 @@ const struct match_entry_t cpudb_amd[] = { /* Phenom II derivates: */ { 15, 4, -1, 16, -1, 4, -1, -1, NO_CODE , 0, "Phenom (Deneb-based)" }, { 15, 4, -1, 16, -1, 1, 1024, -1, SEMPRON , 0, "Sempron (Sargas)" }, - { 15, 4, -1, 16, -1, 2, 1024, -1, ATHLON_64_X2 , 0, "Athlon II X2 (Regor)" }, { 15, 4, -1, 16, -1, 2, 512, -1, PHENOM2 , 0, "Phenom II X2 (Callisto)" }, { 15, 4, -1, 16, -1, 3, 512, -1, PHENOM2 , 0, "Phenom II X3 (Heka)" }, { 15, 4, -1, 16, -1, 4, 512, -1, PHENOM2 , 0, "Phenom II X4" }, { 15, 4, -1, 16, 4, 4, 512, -1, PHENOM2 , 0, "Phenom II X4 (Deneb)" }, + { 15, 5, -1, 16, 5, 4, 512, -1, PHENOM2 , 0, "Phenom II X4 (Deneb)" }, { 15, 4, -1, 16, 10, 4, 512, -1, PHENOM2 , 0, "Phenom II X4 (Zosma)" }, { 15, 4, -1, 16, 10, 6, 512, -1, PHENOM2 , 0, "Phenom II X6 (Thuban)" }, - { 15, 5, -1, 16, -1, 4, 512, -1, ATHLON_64_X4 , 0, "Athlon II X4 (Propus)" }, + { 15, 4, -1, 16, -1, 2, 1024, -1, ATHLON_64_X2 , 0, "Athlon II X2 (Regor)" }, + { 15, 4, -1, 16, -1, 2, 512, -1, ATHLON_64_X2 , 0, "Athlon II X2 (Regor)" }, + { 15, 5, -1, 16, 5, 3, 512, -1, ATHLON_64_X3 , 0, "Athlon II X3 (Rana)" }, + { 15, 5, -1, 16, 5, 4, 512, -1, ATHLON_64_X4 , 0, "Athlon II X4 (Propus)" }, }; @@ -356,12 +360,13 @@ static int amd_has_turion_modelname(const char *bs) static amd_code_t decode_amd_codename_part1(const char *bs) { - int is_dual = 0, is_quad = 0; + int is_dual = 0, is_quad = 0, is_tri = 0; if (strstr(bs, "Dual Core") || strstr(bs, "Dual-Core") || strstr(bs, " X2 ")) is_dual = 1; if (strstr(bs, " X4 ")) is_quad = 1; + if (strstr(bs, " X3 ")) is_tri = 1; if (strstr(bs, "Opteron")) { return is_dual ? OPTERON_DUALCORE : OPTERON_SINGLE; } @@ -374,14 +379,12 @@ static amd_code_t decode_amd_codename_part1(const char *bs) } if (strstr(bs, "Athlon(tm) 64 FX")) return ATHLON_64_FX; if (strstr(bs, "Athlon(tm) FX")) return ATHLON_FX; - if (strstr(bs, "Athlon(tm) 64")) { + if (strstr(bs, "Athlon(tm) 64") || strstr(bs, "Athlon(tm) II X") || match_pattern(bs, "Athlon(tm) X#")) { if (is_quad) return ATHLON_64_X4; if (is_dual) return ATHLON_64_X2; + if (is_tri) return ATHLON_64_X3; return ATHLON_64; } - if (strstr(bs, "Athlon(tm) X2")) { - return ATHLON_64_X2; - } if (strstr(bs, "Turion")) { return is_dual ? TURION_X2 : TURION_64; } diff --git a/libcpuid/recog_intel.c b/libcpuid/recog_intel.c index e1ebc67..e06a4f1 100644 --- a/libcpuid/recog_intel.c +++ b/libcpuid/recog_intel.c @@ -254,6 +254,7 @@ const struct match_entry_t cpudb_intel[] = { { 6, 10, -1, -1, 26, 1, -1, -1, CORE_I7 , 0, "Intel Core i7" }, { 6, 10, -1, -1, 26, 4, -1, -1, CORE_I7 , 0, "Bloomfield (Core i7)" }, + { 6, 10, -1, -1, 30, 4, -1, -1, CORE_I7 , 0, "Lynnfield (Core i7)" }, { 6, 10, -1, -1, 26, 4, -1, -1, XEON_I7 , 0, "Xeon (Bloomfield)" }, { 6, 10, -1, -1, 26, 4, -1, -1, XEON_GAINESTOWN , 0, "Xeon (Gainestown)" }, diff --git a/tests/tests_stash.txt b/tests/tests_stash.txt index 0ced965..793d30d 100644 --- a/tests/tests_stash.txt +++ b/tests/tests_stash.txt @@ -4423,3 +4423,282 @@ intel_fn11[3]=00000000 00000000 00000000 00000000 Phenom II X6 (Thuban) fpu vme de pse tsc msr pae mce cx8 apic mtrr sep pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht pni monitor cx16 syscall popcnt mmxext 3dnow 3dnowext nx fxsr_opt rdtscp lm lahf_lm cmp_legacy svm abm misalignsse sse4a 3dnowprefetch osvw ibs skinit wdt ts ttp tm_amd stc 100mhzsteps hwpstate constant_tsc -------------------------------------------------------------------------------- +basic_cpuid[0]=00000005 68747541 444d4163 69746e65 +basic_cpuid[1]=00100f52 00040800 00802009 178bfbff +basic_cpuid[2]=00000000 00000000 00000000 00000000 +basic_cpuid[3]=00000000 00000000 00000000 00000000 +basic_cpuid[4]=00000000 00000000 00000000 00000000 +basic_cpuid[5]=00000040 00000040 00000003 00000000 +basic_cpuid[6]=00000000 00000000 00000000 00000000 +basic_cpuid[7]=00000000 00000000 00000000 00000000 +basic_cpuid[8]=00000000 00000000 00000000 00000000 +basic_cpuid[9]=00000000 00000000 00000000 00000000 +basic_cpuid[10]=00000000 00000000 00000000 00000000 +basic_cpuid[11]=00000000 00000000 00000000 00000000 +basic_cpuid[12]=00000000 00000000 00000000 00000000 +basic_cpuid[13]=00000000 00000000 00000000 00000000 +basic_cpuid[14]=00000000 00000000 00000000 00000000 +basic_cpuid[15]=00000000 00000000 00000000 00000000 +basic_cpuid[16]=00000000 00000000 00000000 00000000 +basic_cpuid[17]=00000000 00000000 00000000 00000000 +basic_cpuid[18]=00000000 00000000 00000000 00000000 +basic_cpuid[19]=00000000 00000000 00000000 00000000 +basic_cpuid[20]=00000000 00000000 00000000 00000000 +basic_cpuid[21]=00000000 00000000 00000000 00000000 +basic_cpuid[22]=00000000 00000000 00000000 00000000 +basic_cpuid[23]=00000000 00000000 00000000 00000000 +basic_cpuid[24]=00000000 00000000 00000000 00000000 +basic_cpuid[25]=00000000 00000000 00000000 00000000 +basic_cpuid[26]=00000000 00000000 00000000 00000000 +basic_cpuid[27]=00000000 00000000 00000000 00000000 +basic_cpuid[28]=00000000 00000000 00000000 00000000 +basic_cpuid[29]=00000000 00000000 00000000 00000000 +basic_cpuid[30]=00000000 00000000 00000000 00000000 +basic_cpuid[31]=00000000 00000000 00000000 00000000 +ext_cpuid[0]=8000001b 68747541 444d4163 69746e65 +ext_cpuid[1]=00100f52 10005146 000037ff efd3fbff +ext_cpuid[2]=20444d41 6c687441 74286e6f 5820296d +ext_cpuid[3]=32362034 72502030 7365636f 00726f73 +ext_cpuid[4]=00000000 00000000 00000000 00000000 +ext_cpuid[5]=ff30ff10 ff30ff20 40020140 40020140 +ext_cpuid[6]=20800000 42004200 02008140 00000000 +ext_cpuid[7]=00000000 00000000 00000000 000001f9 +ext_cpuid[8]=00003030 00000000 00002003 00000000 +ext_cpuid[9]=00000000 00000000 00000000 00000000 +ext_cpuid[10]=00000001 00000040 00000000 0000000f +ext_cpuid[11]=00000000 00000000 00000000 00000000 +ext_cpuid[12]=00000000 00000000 00000000 00000000 +ext_cpuid[13]=00000000 00000000 00000000 00000000 +ext_cpuid[14]=00000000 00000000 00000000 00000000 +ext_cpuid[15]=00000000 00000000 00000000 00000000 +ext_cpuid[16]=00000000 00000000 00000000 00000000 +ext_cpuid[17]=00000000 00000000 00000000 00000000 +ext_cpuid[18]=00000000 00000000 00000000 00000000 +ext_cpuid[19]=00000000 00000000 00000000 00000000 +ext_cpuid[20]=00000000 00000000 00000000 00000000 +ext_cpuid[21]=00000000 00000000 00000000 00000000 +ext_cpuid[22]=00000000 00000000 00000000 00000000 +ext_cpuid[23]=00000000 00000000 00000000 00000000 +ext_cpuid[24]=00000000 00000000 00000000 00000000 +ext_cpuid[25]=f0300000 60100000 00000000 00000000 +ext_cpuid[26]=00000003 00000000 00000000 00000000 +ext_cpuid[27]=0000001f 00000000 00000000 00000000 +ext_cpuid[28]=00000000 00000000 00000000 00000000 +ext_cpuid[29]=00000000 00000000 00000000 00000000 +ext_cpuid[30]=00000000 00000000 00000000 00000000 +ext_cpuid[31]=00000000 00000000 00000000 00000000 +intel_fn4[0]=00000000 00000000 00000000 00000000 +intel_fn4[1]=00000000 00000000 00000000 00000000 +intel_fn4[2]=00000000 00000000 00000000 00000000 +intel_fn4[3]=00000000 00000000 00000000 00000000 +intel_fn11[0]=00000000 00000000 00000000 00000000 +intel_fn11[1]=00000000 00000000 00000000 00000000 +intel_fn11[2]=00000000 00000000 00000000 00000000 +intel_fn11[3]=00000000 00000000 00000000 00000000 +-------------------------------------------------------------------------------- +15 +5 +2 +16 +5 +4 +4 +64 +64 +512 +0 +2 +16 +-1 +64 +64 +-1 +Athlon II X4 (Propus) +fpu vme de pse tsc msr pae mce cx8 apic mtrr sep pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht pni monitor cx16 syscall popcnt mmxext 3dnow 3dnowext nx fxsr_opt rdtscp lm lahf_lm cmp_legacy svm abm misalignsse sse4a 3dnowprefetch osvw ibs skinit wdt ts ttp tm_amd stc 100mhzsteps hwpstate constant_tsc +-------------------------------------------------------------------------------- +basic_cpuid[0]=0000000b 756e6547 6c65746e 49656e69 +basic_cpuid[1]=000106e5 00100800 0098e3fd bfebfbff +basic_cpuid[2]=55035a01 00f0b2e4 00000000 09ca212c +basic_cpuid[3]=00000000 00000000 00000000 00000000 +basic_cpuid[4]=1c004121 01c0003f 0000003f 00000000 +basic_cpuid[5]=00000040 00000040 00000003 00001120 +basic_cpuid[6]=00000003 00000002 00000001 00000000 +basic_cpuid[7]=00000000 00000000 00000000 00000000 +basic_cpuid[8]=00000000 00000000 00000000 00000000 +basic_cpuid[9]=00000000 00000000 00000000 00000000 +basic_cpuid[10]=07300403 00000044 00000000 00000603 +basic_cpuid[11]=00000001 00000002 00000100 00000000 +basic_cpuid[12]=00000001 00000002 00000100 00000000 +basic_cpuid[13]=00000001 00000002 00000100 00000000 +basic_cpuid[14]=00000001 00000002 00000100 00000000 +basic_cpuid[15]=00000001 00000002 00000100 00000000 +basic_cpuid[16]=00000001 00000002 00000100 00000000 +basic_cpuid[17]=00000001 00000002 00000100 00000000 +basic_cpuid[18]=00000001 00000002 00000100 00000000 +basic_cpuid[19]=00000001 00000002 00000100 00000000 +basic_cpuid[20]=00000001 00000002 00000100 00000000 +basic_cpuid[21]=00000001 00000002 00000100 00000000 +basic_cpuid[22]=00000001 00000002 00000100 00000000 +basic_cpuid[23]=00000001 00000002 00000100 00000000 +basic_cpuid[24]=00000001 00000002 00000100 00000000 +basic_cpuid[25]=00000001 00000002 00000100 00000000 +basic_cpuid[26]=00000001 00000002 00000100 00000000 +basic_cpuid[27]=00000001 00000002 00000100 00000000 +basic_cpuid[28]=00000001 00000002 00000100 00000000 +basic_cpuid[29]=00000001 00000002 00000100 00000000 +basic_cpuid[30]=00000001 00000002 00000100 00000000 +basic_cpuid[31]=00000001 00000002 00000100 00000000 +ext_cpuid[0]=80000008 00000000 00000000 00000000 +ext_cpuid[1]=00000000 00000000 00000001 28100000 +ext_cpuid[2]=65746e49 2952286c 726f4320 4d542865 +ext_cpuid[3]=37692029 55504320 20202020 20202020 +ext_cpuid[4]=30363820 20402020 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]=00000001 00000002 00000100 00000000 +ext_cpuid[10]=00000001 00000002 00000100 00000000 +ext_cpuid[11]=00000001 00000002 00000100 00000000 +ext_cpuid[12]=00000001 00000002 00000100 00000000 +ext_cpuid[13]=00000001 00000002 00000100 00000000 +ext_cpuid[14]=00000001 00000002 00000100 00000000 +ext_cpuid[15]=00000001 00000002 00000100 00000000 +ext_cpuid[16]=00000001 00000002 00000100 00000000 +ext_cpuid[17]=00000001 00000002 00000100 00000000 +ext_cpuid[18]=00000001 00000002 00000100 00000000 +ext_cpuid[19]=00000001 00000002 00000100 00000000 +ext_cpuid[20]=00000001 00000002 00000100 00000000 +ext_cpuid[21]=00000001 00000002 00000100 00000000 +ext_cpuid[22]=00000001 00000002 00000100 00000000 +ext_cpuid[23]=00000001 00000002 00000100 00000000 +ext_cpuid[24]=00000001 00000002 00000100 00000000 +ext_cpuid[25]=00000001 00000002 00000100 00000000 +ext_cpuid[26]=00000001 00000002 00000100 00000000 +ext_cpuid[27]=00000001 00000002 00000100 00000000 +ext_cpuid[28]=00000001 00000002 00000100 00000000 +ext_cpuid[29]=00000001 00000002 00000100 00000000 +ext_cpuid[30]=00000001 00000002 00000100 00000000 +ext_cpuid[31]=00000001 00000002 00000100 00000000 +intel_fn4[0]=1c004121 01c0003f 0000003f 00000000 +intel_fn4[1]=1c004122 00c0003f 0000007f 00000000 +intel_fn4[2]=1c004143 01c0003f 000001ff 00000000 +intel_fn4[3]=1c03c163 03c0003f 00001fff 00000002 +intel_fn11[0]=00000001 00000002 00000100 00000000 +intel_fn11[1]=00000004 00000008 00000201 00000000 +intel_fn11[2]=00000000 00000000 00000002 00000000 +intel_fn11[3]=00000000 00000000 00000003 00000000 +-------------------------------------------------------------------------------- +6 +14 +5 +6 +30 +4 +8 +32 +32 +256 +8192 +8 +8 +16 +64 +64 +64 +Lynnfield (Core i7) +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 dts64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 xd popcnt lm lahf_lm +-------------------------------------------------------------------------------- +basic_cpuid[0]=00000005 68747541 444d4163 69746e65 +basic_cpuid[1]=00100f52 00040800 00802009 178bfbff +basic_cpuid[2]=00000000 00000000 00000000 00000000 +basic_cpuid[3]=00000000 00000000 00000000 00000000 +basic_cpuid[4]=00000000 00000000 00000000 00000000 +basic_cpuid[5]=00000040 00000040 00000003 00000000 +basic_cpuid[6]=00000000 00000000 00000000 00000000 +basic_cpuid[7]=00000000 00000000 00000000 00000000 +basic_cpuid[8]=00000000 00000000 00000000 00000000 +basic_cpuid[9]=00000000 00000000 00000000 00000000 +basic_cpuid[10]=00000000 00000000 00000000 00000000 +basic_cpuid[11]=00000000 00000000 00000000 00000000 +basic_cpuid[12]=00000000 00000000 00000000 00000000 +basic_cpuid[13]=00000000 00000000 00000000 00000000 +basic_cpuid[14]=00000000 00000000 00000000 00000000 +basic_cpuid[15]=00000000 00000000 00000000 00000000 +basic_cpuid[16]=00000000 00000000 00000000 00000000 +basic_cpuid[17]=00000000 00000000 00000000 00000000 +basic_cpuid[18]=00000000 00000000 00000000 00000000 +basic_cpuid[19]=00000000 00000000 00000000 00000000 +basic_cpuid[20]=00000000 00000000 00000000 00000000 +basic_cpuid[21]=00000000 00000000 00000000 00000000 +basic_cpuid[22]=00000000 00000000 00000000 00000000 +basic_cpuid[23]=00000000 00000000 00000000 00000000 +basic_cpuid[24]=00000000 00000000 00000000 00000000 +basic_cpuid[25]=00000000 00000000 00000000 00000000 +basic_cpuid[26]=00000000 00000000 00000000 00000000 +basic_cpuid[27]=00000000 00000000 00000000 00000000 +basic_cpuid[28]=00000000 00000000 00000000 00000000 +basic_cpuid[29]=00000000 00000000 00000000 00000000 +basic_cpuid[30]=00000000 00000000 00000000 00000000 +basic_cpuid[31]=00000000 00000000 00000000 00000000 +ext_cpuid[0]=8000001b 68747541 444d4163 69746e65 +ext_cpuid[1]=00100f52 10005146 000037ff efd3fbff +ext_cpuid[2]=20444d41 6c687441 74286e6f 4920296d +ext_cpuid[3]=34582049 30323620 6f725020 73736563 +ext_cpuid[4]=0000726f 00000000 00000000 00000000 +ext_cpuid[5]=ff30ff10 ff30ff20 40020140 40020140 +ext_cpuid[6]=20800000 42004200 02008140 00000000 +ext_cpuid[7]=00000000 00000000 00000000 000001f9 +ext_cpuid[8]=00003030 00000000 00002003 00000000 +ext_cpuid[9]=00000000 00000000 00000000 00000000 +ext_cpuid[10]=00000001 00000040 00000000 0000000f +ext_cpuid[11]=00000000 00000000 00000000 00000000 +ext_cpuid[12]=00000000 00000000 00000000 00000000 +ext_cpuid[13]=00000000 00000000 00000000 00000000 +ext_cpuid[14]=00000000 00000000 00000000 00000000 +ext_cpuid[15]=00000000 00000000 00000000 00000000 +ext_cpuid[16]=00000000 00000000 00000000 00000000 +ext_cpuid[17]=00000000 00000000 00000000 00000000 +ext_cpuid[18]=00000000 00000000 00000000 00000000 +ext_cpuid[19]=00000000 00000000 00000000 00000000 +ext_cpuid[20]=00000000 00000000 00000000 00000000 +ext_cpuid[21]=00000000 00000000 00000000 00000000 +ext_cpuid[22]=00000000 00000000 00000000 00000000 +ext_cpuid[23]=00000000 00000000 00000000 00000000 +ext_cpuid[24]=00000000 00000000 00000000 00000000 +ext_cpuid[25]=f0300000 60100000 00000000 00000000 +ext_cpuid[26]=00000003 00000000 00000000 00000000 +ext_cpuid[27]=0000001f 00000000 00000000 00000000 +ext_cpuid[28]=00000000 00000000 00000000 00000000 +ext_cpuid[29]=00000000 00000000 00000000 00000000 +ext_cpuid[30]=00000000 00000000 00000000 00000000 +ext_cpuid[31]=00000000 00000000 00000000 00000000 +intel_fn4[0]=00000000 00000000 00000000 00000000 +intel_fn4[1]=00000000 00000000 00000000 00000000 +intel_fn4[2]=00000000 00000000 00000000 00000000 +intel_fn4[3]=00000000 00000000 00000000 00000000 +intel_fn11[0]=00000000 00000000 00000000 00000000 +intel_fn11[1]=00000000 00000000 00000000 00000000 +intel_fn11[2]=00000000 00000000 00000000 00000000 +intel_fn11[3]=00000000 00000000 00000000 00000000 +-------------------------------------------------------------------------------- +15 +5 +2 +16 +5 +4 +4 +64 +64 +512 +0 +2 +16 +-1 +64 +64 +-1 +Athlon II X4 (Propus) +fpu vme de pse tsc msr pae mce cx8 apic mtrr sep pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht pni monitor cx16 syscall popcnt mmxext 3dnow 3dnowext nx fxsr_opt rdtscp lm lahf_lm cmp_legacy svm abm misalignsse sse4a 3dnowprefetch osvw ibs skinit wdt ts ttp tm_amd stc 100mhzsteps hwpstate constant_tsc +--------------------------------------------------------------------------------