From 081c354d1730104da78d071506d7472722e59380 Mon Sep 17 00:00:00 2001 From: Xorg Date: Sun, 7 Jul 2019 19:38:46 +0200 Subject: [PATCH] DB: Add AMD Ryzen 3000 --- libcpuid/libcpuid_internal.h | 6 +-- libcpuid/recog_amd.c | 22 ++++++-- tests/amd/zen+/ryzen5-picasso.test | 87 ++++++++++++++++++++++++++++++ tests/amd/zen2/ryzen5-matisse.test | 78 +++++++++++++++++++++++++++ 4 files changed, 186 insertions(+), 7 deletions(-) create mode 100644 tests/amd/zen+/ryzen5-picasso.test create mode 100644 tests/amd/zen2/ryzen5-matisse.test diff --git a/libcpuid/libcpuid_internal.h b/libcpuid/libcpuid_internal.h index 22bee45..e801e28 100644 --- a/libcpuid/libcpuid_internal.h +++ b/libcpuid/libcpuid_internal.h @@ -67,6 +67,7 @@ enum _common_bits_t { _3 = LBIT( 3 ), _5 = LBIT( 4 ), _7 = LBIT( 5 ), + _9 = LBIT( 6 ), }; // additional detection bits for Intel CPUs: @@ -75,9 +76,8 @@ enum _intel_bits_t { CELERON_ = LBIT( 11 ), CORE_ = LBIT( 12 ), _I_ = LBIT( 13 ), - _9 = LBIT( 14 ), - XEON_ = LBIT( 15 ), - ATOM_ = LBIT( 16 ), + XEON_ = LBIT( 14 ), + ATOM_ = LBIT( 15 ), }; typedef enum _intel_bits_t intel_bits_t; diff --git a/libcpuid/recog_amd.c b/libcpuid/recog_amd.c index 52c6120..87ddc85 100644 --- a/libcpuid/recog_amd.c +++ b/libcpuid/recog_amd.c @@ -262,22 +262,35 @@ const struct match_entry_t cpudb_amd[] = { { 15, 0, -1, 22, 48, 2, -1, -1, FUSION_E, 0 , 0, "Mullins X2" }, { 15, 0, -1, 22, 48, 4, -1, -1, FUSION_A, 0 , 0, "Mullins X4" }, - /* Family 17h: Zen Architecture (2017) */ + /* Family 17h: Zen Architecture (2017) => https://en.wikichip.org/wiki/amd/microarchitectures/zen */ { 15, -1, -1, 23, 1, -1, -1, -1, NC, EPYC_ , 0, "EPYC (Naples)" }, { 15, -1, -1, 23, 1, -1, -1, -1, NC, RYZEN_TR_ , 0, "Threadripper (Whitehaven)" }, { 15, -1, -1, 23, 1, -1, -1, -1, NC, RYZEN_|_7 , 0, "Ryzen 7 (Summit Ridge)" }, { 15, -1, -1, 23, 1, -1, -1, -1, NC, RYZEN_|_5 , 0, "Ryzen 5 (Summit Ridge)" }, { 15, -1, -1, 23, 1, -1, -1, -1, NC, RYZEN_|_3 , 0, "Ryzen 3 (Summit Ridge)" }, - /* APUs */ { 15, -1, -1, 23, 17, -1, -1, -1, NC, RYZEN_|_7 , 0, "Ryzen 7 (Raven Ridge)" }, { 15, -1, -1, 23, 17, -1, -1, -1, NC, RYZEN_|_5 , 0, "Ryzen 5 (Raven Ridge)" }, { 15, -1, -1, 23, 17, -1, -1, -1, NC, RYZEN_|_3 , 0, "Ryzen 3 (Raven Ridge)" }, { 15, -1, -1, 23, 17, -1, -1, -1, NC, ATHLON_ , 0, "Athlon (Raven Ridge)" }, - /* 2nd-gen, Zen+ (2018): */ + /* Zen+ (2018) => https://en.wikichip.org/wiki/amd/microarchitectures/zen%2B */ { 15, -1, -1, 23, 8, -1, -1, -1, NC, RYZEN_TR_ , 0, "Threadripper (Colfax)" }, { 15, -1, -1, 23, 8, -1, -1, -1, NC, RYZEN_|_7 , 0, "Ryzen 7 (Pinnacle Ridge)" }, { 15, -1, -1, 23, 8, -1, -1, -1, NC, RYZEN_|_5 , 0, "Ryzen 5 (Pinnacle Ridge)" }, { 15, -1, -1, 23, 8, -1, -1, -1, NC, RYZEN_|_3 , 0, "Ryzen 3 (Pinnacle Ridge)" }, + { 15, -1, -1, 23, 24, -1, -1, -1, NC, RYZEN_|_7 , 0, "Ryzen 7 (Picasso)" }, + { 15, -1, -1, 23, 24, -1, -1, -1, NC, RYZEN_|_5 , 0, "Ryzen 5 (Picasso)" }, + { 15, -1, -1, 23, 24, -1, -1, -1, NC, RYZEN_|_3 , 0, "Ryzen 3 (Picasso)" }, + { 15, -1, -1, 23, 24, -1, -1, -1, NC, ATHLON_ , 0, "Athlon (Picasso)" }, + /* Zen 2 (2019) => https://en.wikichip.org/wiki/amd/microarchitectures/zen_2 */ + { 15, -1, -1, 23, 113, -1, -1, -1, NC, EPYC_ , 0, "EPYC (Rome)" }, + { 15, -1, -1, 23, 113, -1, -1, -1, NC, RYZEN_|_9 , 0, "Ryzen 9 (Matisse)" }, + { 15, -1, -1, 23, 113, -1, -1, -1, NC, RYZEN_|_7 , 0, "Ryzen 7 (Matisse)" }, + { 15, -1, -1, 23, 113, -1, -1, -1, NC, RYZEN_|_5 , 0, "Ryzen 5 (Matisse)" }, + { 15, -1, -1, 23, 113, -1, -1, -1, NC, RYZEN_|_3 , 0, "Ryzen 3 (Matisse)" }, + //{ 15, -1, -1, 23, ??, -1, -1, -1, NC, RYZEN_|_7 , 0, "Ryzen 7 (Renoir)" }, //TBA + //{ 15, -1, -1, 23, ??, -1, -1, -1, NC, RYZEN_|_5 , 0, "Ryzen 5 (Renoir)" }, //TBA + //{ 15, -1, -1, 23, ??, -1, -1, -1, NC, RYZEN_|_3 , 0, "Ryzen 3 (Renoir)" }, //TBA + //{ 15, -1, -1, 23, ??, -1, -1, -1, NC, ATHLON_ , 0, "Athlon (Renoir)" }, //TBA /* Newer Opterons: */ @@ -468,13 +481,14 @@ static struct amd_code_and_bits_t decode_amd_codename_part1(const char *bs) if (amd_has_turion_modelname(bs)) { bits |= TURION_; } - if ((i = match_pattern(bs, "Ryzen [357]")) != 0) { + if ((i = match_pattern(bs, "Ryzen [3579]")) != 0) { bits |= RYZEN_; i--; switch (bs[i + 6]) { case '3': bits |= _3; break; case '5': bits |= _5; break; case '7': bits |= _7; break; + case '9': bits |= _9; break; } } diff --git a/tests/amd/zen+/ryzen5-picasso.test b/tests/amd/zen+/ryzen5-picasso.test new file mode 100644 index 0000000..dbdbb3a --- /dev/null +++ b/tests/amd/zen+/ryzen5-picasso.test @@ -0,0 +1,87 @@ +basic_cpuid[0]=0000000d 68747541 444d4163 69746e65 +basic_cpuid[0]=0000000d 68747541 444d4163 69746e65 +basic_cpuid[1]=00810f81 00080800 7ed8320b 178bfbff +basic_cpuid[2]=00000000 00000000 00000000 00000000 +basic_cpuid[3]=00000000 00000000 00000000 00000000 +basic_cpuid[5]=00000040 00000040 00000003 00000011 +basic_cpuid[6]=00000004 00000000 00000001 00000000 +basic_cpuid[7]=00000000 209c01a9 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[12]=00000000 00000000 00000000 00000000 +basic_cpuid[13]=00000007 00000340 00000340 00000000 +basic_cpuid[13]=00000007 00000340 00000340 00000000 +basic_cpuid[13]=0000000f 00000340 00000000 00000000 +basic_cpuid[13]=0000000f 00000340 00000000 00000000 +basic_cpuid[13]=00000100 00000240 00000000 00000000 +basic_cpuid[13]=00000100 00000240 00000000 00000000 +ext_cpuid[0]=8000001f 68747541 444d4163 69746e65 +ext_cpuid[0]=8000001f 68747541 444d4163 69746e65 +ext_cpuid[1]=00810f81 00000000 35c233ff 2fd3fbff +ext_cpuid[2]=20444d41 657a7952 2035206e 30353533 +ext_cpuid[2]=20444d41 657a7952 2035206e 30353533 +ext_cpuid[3]=69772048 52206874 6f656461 6556206e +ext_cpuid[3]=69772048 52206874 6f656461 6556206e +ext_cpuid[4]=4d206167 6c69626f 66472065 00202078 +ext_cpuid[4]=4d206167 6c69626f 66472065 00202078 +ext_cpuid[5]=ff40ff40 ff40ff40 20080140 40040140 +ext_cpuid[5]=ff40ff40 ff40ff40 20080140 40040140 +ext_cpuid[6]=26006400 66006400 02006140 00208140 +ext_cpuid[6]=26006400 66006400 02006140 00208140 +ext_cpuid[7]=00000000 0000001b 00000000 00006599 +ext_cpuid[8]=00003030 00001007 00004007 00000000 +ext_cpuid[9]=00000000 00000000 00000000 00000000 +ext_cpuid[10]=00000001 00008000 00000000 0001bcff +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]=f040f040 00000000 00000000 00000000 +ext_cpuid[26]=00000003 00000000 00000000 00000000 +ext_cpuid[27]=000003ff 00000000 00000000 00000000 +ext_cpuid[28]=00000000 00000000 00000000 00000000 +ext_cpuid[29]=00004121 01c0003f 0000003f 00000000 +ext_cpuid[29]=00004121 01c0003f 0000003f 00000000 +ext_cpuid[29]=00004122 00c0003f 000000ff 00000000 +ext_cpuid[29]=00004122 00c0003f 000000ff 00000000 +ext_cpuid[29]=00004143 01c0003f 000003ff 00000002 +ext_cpuid[29]=00004143 01c0003f 000003ff 00000002 +ext_cpuid[29]=0001c163 03c0003f 00000fff 00000001 +ext_cpuid[29]=0001c163 03c0003f 00000fff 00000001 +ext_cpuid[30]=00000000 00000100 00000000 00000000 +ext_cpuid[31]=0000000f 0000016f 0000000f 00000000 +-------------------------------------------------------------------------------- +15 +8 +1 +23 +24 +4 +8 +32 +64 +512 +4096 +-1 +8 +8 +16 +-1 +64 +64 +64 +-1 +128 (authoritative) +Ryzen 5 (Picasso) +fpu vme de pse tsc msr pae mce cx8 apic mtrr sep pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht pni pclmul monitor ssse3 cx16 sse4_1 sse4_2 syscall movbe popcnt aes xsave osxsave avx mmxext nx fxsr_opt rdtscp lm lahf_lm cmp_legacy svm abm misalignsse sse4a 3dnowprefetch osvw skinit wdt ts ttp tm_amd hwpstate constant_tsc fma3 f16c rdrand aperfmperf avx2 bmi1 bmi2 diff --git a/tests/amd/zen2/ryzen5-matisse.test b/tests/amd/zen2/ryzen5-matisse.test new file mode 100644 index 0000000..23ed254 --- /dev/null +++ b/tests/amd/zen2/ryzen5-matisse.test @@ -0,0 +1,78 @@ +basic_cpuid[0]=00000010 68747541 444d4163 69746e65 +basic_cpuid[1]=00870f10 000c0800 7ed8320b 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 00000011 +basic_cpuid[6]=00000004 00000000 00000001 00000000 +basic_cpuid[7]=00000000 219c91a9 00400004 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]=00000001 00000002 00000100 00000000 +basic_cpuid[12]=00000000 00000000 00000000 00000000 +basic_cpuid[13]=00000207 00000340 00000380 00000000 +basic_cpuid[13]=0000000f 00000340 00000000 00000000 +basic_cpuid[13]=00000100 00000240 00000000 00000000 +basic_cpuid[14]=00000000 00000000 00000000 00000000 +basic_cpuid[15]=00000000 000000ff 00000000 00000002 +basic_cpuid[16]=00000000 00000002 00000000 00000000 +ext_cpuid[0]=80000020 68747541 444d4163 69746e65 +ext_cpuid[1]=00870f10 20000000 75c237ff 2fd3fbff +ext_cpuid[2]=20444d41 657a7952 2035206e 30303633 +ext_cpuid[3]=432d3620 2065726f 636f7250 6f737365 +ext_cpuid[4]=20202072 20202020 20202020 00202020 +ext_cpuid[5]=ff40ff40 ff40ff40 20080140 20080140 +ext_cpuid[6]=48006400 68006400 02006140 01009140 +ext_cpuid[7]=00000000 0000001b 00000000 00006799 +ext_cpuid[8]=00003030 010ef757 0000700b 00010000 +ext_cpuid[9]=00000000 00000000 00000000 00000000 +ext_cpuid[10]=00000001 00008000 00000000 0013bcff +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]=f040f040 00000000 00000000 00000000 +ext_cpuid[26]=00000006 00000000 00000000 00000000 +ext_cpuid[27]=000003ff 00000000 00000000 00000000 +ext_cpuid[28]=00000000 00000000 00000000 00000000 +ext_cpuid[29]=00004121 01c0003f 0000003f 00000000 +ext_cpuid[29]=00004122 01c0003f 0000003f 00000000 +ext_cpuid[29]=00004143 01c0003f 000003ff 00000002 +ext_cpuid[29]=00014163 03c0003f 00003fff 00000001 +ext_cpuid[30]=00000000 00000100 00000000 00000000 +ext_cpuid[31]=0001000f 0000016f 000001fd 00000001 +-------------------------------------------------------------------------------- +15 +1 +0 +23 +113 +6 +12 +32 +32 +512 +32768 +-1 +8 +8 +0 +-1 +64 +64 +64 +-1 +64 (authoritative) +Ryzen 5 (Matisse) +fpu vme de pse tsc msr pae mce cx8 apic mtrr sep pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht pni pclmul monitor ssse3 cx16 sse4_1 sse4_2 syscall movbe popcnt aes xsave osxsave avx mmxext nx fxsr_opt rdtscp lm lahf_lm cmp_legacy svm abm misalignsse sse4a 3dnowprefetch osvw ibs skinit wdt ts ttp tm_amd hwpstate constant_tsc fma3 f16c rdrand cpb aperfmperf avx2 bmi1 bmi2