diff --git a/libcpuid/libcpuid_internal.h b/libcpuid/libcpuid_internal.h
index 36c99f5..c6c5ad8 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 41d9b73..dba6fb7 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
{ 15, -1, -1, 24, 0, -1, -1, -1, NC, C86_|_7 , 0, "C86 7 (Dhyana)" },
{ 15, -1, -1, 24, 0, -1, -1, -1, NC, C86_|_5 , 0, "C86 5 (Dhyana)" },
@@ -473,13 +486,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/zen+/ryzen7-pinnacle-ridge.test b/tests/amd/zen+/ryzen7-pinnacle-ridge.test
new file mode 100644
index 0000000..387dd9e
--- /dev/null
+++ b/tests/amd/zen+/ryzen7-pinnacle-ridge.test
@@ -0,0 +1,85 @@
+basic_cpuid[0]=0000000d 68747541 444d4163 69746e65
+basic_cpuid[0]=0000000d 68747541 444d4163 69746e65
+basic_cpuid[1]=00800f82 00100800 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]=00800f82 20000000 35c233ff 2fd3fbff
+ext_cpuid[2]=20444d41 657a7952 2037206e 30303732
+ext_cpuid[2]=20444d41 657a7952 2037206e 30303732
+ext_cpuid[3]=69452058 2d746867 65726f43 6f725020
+ext_cpuid[3]=69452058 2d746867 65726f43 6f725020
+ext_cpuid[4]=73736563 2020726f 20202020 00202020
+ext_cpuid[4]=73736563 2020726f 20202020 00202020
+ext_cpuid[5]=ff40ff40 ff40ff40 20080140 40040140
+ext_cpuid[6]=26006400 66006400 02006140 00808140
+ext_cpuid[7]=00000000 0000001b 00000000 00006799
+ext_cpuid[8]=00003030 00000007 0000400f 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 00001fff 00000001
+ext_cpuid[29]=0001c163 03c0003f 00001fff 00000001
+ext_cpuid[30]=00000000 00000100 00000000 00000000
+ext_cpuid[31]=0000000f 0000016f 0000000f 00000000
+--------------------------------------------------------------------------------
+15
+8
+2
+23
+8
+8
+16
+32
+64
+512
+16384
+-1
+8
+8
+16
+-1
+64
+64
+64
+-1
+128 (authoritative)
+Ryzen 7 (Pinnacle Ridge)
+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 cpb aperfmperf avx2 bmi1 bmi2
diff --git a/tests/amd/zen+/threadripper-colfax.test b/tests/amd/zen+/threadripper-colfax.test
new file mode 100644
index 0000000..6d410a6
--- /dev/null
+++ b/tests/amd/zen+/threadripper-colfax.test
@@ -0,0 +1,85 @@
+basic_cpuid[0]=0000000d 68747541 444d4163 69746e65
+basic_cpuid[0]=0000000d 68747541 444d4163 69746e65
+basic_cpuid[1]=00800f82 00400800 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]=00800f82 70000000 35c233ff 2fd3fbff
+ext_cpuid[2]=20444d41 657a7952 6854206e 64616572
+ext_cpuid[2]=20444d41 657a7952 6854206e 64616572
+ext_cpuid[3]=70706972 32207265 57303939 32332058
+ext_cpuid[3]=70706972 32207265 57303939 32332058
+ext_cpuid[4]=726f432d 72502065 7365636f 00726f73
+ext_cpuid[4]=726f432d 72502065 7365636f 00726f73
+ext_cpuid[5]=ff40ff40 ff40ff40 20080140 40040140
+ext_cpuid[6]=36006400 56006400 02006140 0200c140
+ext_cpuid[7]=00000000 0000001b 00000000 00006799
+ext_cpuid[8]=00003030 00001007 0000603f 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 00001fff 00000001
+ext_cpuid[29]=0001c163 03c0003f 00001fff 00000001
+ext_cpuid[30]=00000000 00000100 00000300 00000000
+ext_cpuid[31]=0000000f 0000016f 0000000f 00000001
+--------------------------------------------------------------------------------
+15
+8
+2
+23
+8
+32
+64
+32
+64
+512
+65536
+-1
+8
+8
+64
+-1
+64
+64
+64
+-1
+128 (authoritative)
+Threadripper (Colfax)
+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 cpb aperfmperf avx2 bmi1 bmi2
diff --git a/tests/amd/zen/epyc-naples.test b/tests/amd/zen/epyc-naples.test
new file mode 100644
index 0000000..01ae0dc
--- /dev/null
+++ b/tests/amd/zen/epyc-naples.test
@@ -0,0 +1,85 @@
+basic_cpuid[0]=0000000d 68747541 444d4163 69746e65
+basic_cpuid[0]=0000000d 68747541 444d4163 69746e65
+basic_cpuid[1]=00800f12 00400800 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]=00800f12 40000000 35c233ff 2fd3fbff
+ext_cpuid[2]=20444d41 43595045 35353720 33205031
+ext_cpuid[2]=20444d41 43595045 35353720 33205031
+ext_cpuid[3]=6f432d32 50206572 65636f72 726f7373
+ext_cpuid[3]=6f432d32 50206572 65636f72 726f7373
+ext_cpuid[4]=20202020 20202020 20202020 00202020
+ext_cpuid[4]=20202020 20202020 20202020 00202020
+ext_cpuid[5]=ff40ff40 ff40ff40 20080140 40040140
+ext_cpuid[6]=36006400 56006400 02006140 0200c140
+ext_cpuid[7]=00000000 0000001b 00000000 00006799
+ext_cpuid[8]=00003030 00000007 0000603f 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 00001fff 00000001
+ext_cpuid[29]=0001c163 03c0003f 00001fff 00000001
+ext_cpuid[30]=00000000 00000100 00000300 00000000
+ext_cpuid[31]=0000000f 0000016f 0000000f 00000001
+--------------------------------------------------------------------------------
+15
+1
+2
+23
+1
+32
+64
+32
+64
+512
+65536
+-1
+8
+8
+64
+-1
+64
+64
+64
+-1
+128 (authoritative)
+EPYC (Naples)
+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 cpb aperfmperf avx2 bmi1 bmi2
diff --git a/tests/amd/zen/ryzen3.test b/tests/amd/zen/ryzen3-raven-ridge.test
similarity index 100%
rename from tests/amd/zen/ryzen3.test
rename to tests/amd/zen/ryzen3-raven-ridge.test
diff --git a/tests/amd/zen/ryzen5-raven-ridge.test b/tests/amd/zen/ryzen5-raven-ridge.test
new file mode 100644
index 0000000..b3d50b4
--- /dev/null
+++ b/tests/amd/zen/ryzen5-raven-ridge.test
@@ -0,0 +1,85 @@
+basic_cpuid[0]=0000000d 68747541 444d4163 69746e65
+basic_cpuid[0]=0000000d 68747541 444d4163 69746e65
+basic_cpuid[1]=00810f10 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]=00810f10 20000000 35c233ff 2fd3fbff
+ext_cpuid[2]=20444d41 657a7952 2035206e 30303432
+ext_cpuid[2]=20444d41 657a7952 2035206e 30303432
+ext_cpuid[3]=69772047 52206874 6f656461 6556206e
+ext_cpuid[3]=69772047 52206874 6f656461 6556206e
+ext_cpuid[4]=47206167 68706172 20736369 00202020
+ext_cpuid[4]=47206167 68706172 20736369 00202020
+ext_cpuid[5]=ff40ff40 ff40ff40 20080140 40040140
+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
+1
+0
+23
+17
+4
+8
+32
+64
+512
+4096
+-1
+8
+8
+16
+-1
+64
+64
+64
+-1
+128 (authoritative)
+Ryzen 5 (Raven Ridge)
+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/zen/ryzen5-summit-ridge.test b/tests/amd/zen/ryzen5-summit-ridge.test
new file mode 100644
index 0000000..7bc44f2
--- /dev/null
+++ b/tests/amd/zen/ryzen5-summit-ridge.test
@@ -0,0 +1,85 @@
+basic_cpuid[0]=0000000d 68747541 444d4163 69746e65
+basic_cpuid[0]=0000000d 68747541 444d4163 69746e65
+basic_cpuid[1]=00800f11 00080800 7ed8320b 178bfbff
+basic_cpuid[2]=00000000 00000000 00000000 00000000
+basic_cpuid[3]=00000000 00000000 00000000 00000000
+basic_cpuid[5]=00000040 00000040 00000003 00000000
+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]=00800f11 20000000 35c233ff 2fd3fbff
+ext_cpuid[2]=20444d41 657a7952 2035206e 30303531
+ext_cpuid[2]=20444d41 657a7952 2035206e 30303531
+ext_cpuid[3]=75512058 432d6461 2065726f 636f7250
+ext_cpuid[3]=75512058 432d6461 2065726f 636f7250
+ext_cpuid[4]=6f737365 20202072 20202020 00202020
+ext_cpuid[4]=6f737365 20202072 20202020 00202020
+ext_cpuid[5]=ff40ff40 ff40ff40 20080140 40040140
+ext_cpuid[6]=26006400 66006400 02006140 00808140
+ext_cpuid[7]=00000000 0000001b 00000000 00006599
+ext_cpuid[8]=00003030 00000007 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]=0000c163 03c0003f 00001fff 00000001
+ext_cpuid[29]=0000c163 03c0003f 00001fff 00000001
+ext_cpuid[30]=00000000 00000100 00000000 00000000
+ext_cpuid[31]=00000007 0000016f 0000000f 00000000
+--------------------------------------------------------------------------------
+15
+1
+1
+23
+1
+4
+8
+32
+64
+512
+16384
+-1
+8
+8
+16
+-1
+64
+64
+64
+-1
+128 (authoritative)
+Ryzen 5 (Summit Ridge)
+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/zen/ryzen7.test b/tests/amd/zen/ryzen7-summit-ridge.test
similarity index 100%
rename from tests/amd/zen/ryzen7.test
rename to tests/amd/zen/ryzen7-summit-ridge.test
diff --git a/tests/amd/zen/threadripper-whitehaven.test b/tests/amd/zen/threadripper-whitehaven.test
new file mode 100644
index 0000000..97f6f5d
--- /dev/null
+++ b/tests/amd/zen/threadripper-whitehaven.test
@@ -0,0 +1,85 @@
+basic_cpuid[0]=0000000d 68747541 444d4163 69746e65
+basic_cpuid[0]=0000000d 68747541 444d4163 69746e65
+basic_cpuid[1]=00800f11 00180800 7ed8320b 178bfbff
+basic_cpuid[2]=00000000 00000000 00000000 00000000
+basic_cpuid[3]=00000000 00000000 00000000 00000000
+basic_cpuid[5]=00000040 00000040 00000003 00000000
+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]=00800f11 70000000 35c233ff 2fd3fbff
+ext_cpuid[2]=20444d41 657a7952 6854206e 64616572
+ext_cpuid[2]=20444d41 657a7952 6854206e 64616572
+ext_cpuid[3]=70706972 31207265 58303239 2d323120
+ext_cpuid[3]=70706972 31207265 58303239 2d323120
+ext_cpuid[4]=65726f43 6f725020 73736563 0020726f
+ext_cpuid[4]=65726f43 6f725020 73736563 0020726f
+ext_cpuid[5]=ff40ff40 ff40ff40 20080140 40040140
+ext_cpuid[6]=36006400 56006400 02006140 0100a140
+ext_cpuid[7]=00000000 0000001b 00000000 00006599
+ext_cpuid[8]=00003030 00000007 00005017 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]=00014163 03c0003f 00001fff 00000001
+ext_cpuid[29]=00014163 03c0003f 00001fff 00000001
+ext_cpuid[30]=00000000 00000100 00000100 00000000
+ext_cpuid[31]=00000007 0000016f 0000000f 00000001
+--------------------------------------------------------------------------------
+15
+1
+1
+23
+1
+12
+24
+32
+64
+512
+32768
+-1
+8
+8
+32
+-1
+64
+64
+64
+-1
+128 (authoritative)
+Threadripper (Whitehaven)
+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
diff --git a/tests/convert_instlatx64.c b/tests/convert_instlatx64.c
new file mode 100644
index 0000000..6b6be9f
--- /dev/null
+++ b/tests/convert_instlatx64.c
@@ -0,0 +1,62 @@
+/* This program can be used to convert CPUID Dump from http://instlatx64.atw.hu/
+ * To build: gcc convert_instlatx64.c -o convert_instlatx64
+ * To run: ./convert_instlatx64