From 6ea1d4c8e2405ee422a85d052f2ab7bbb3ec4c48 Mon Sep 17 00:00:00 2001 From: Kurt Cancemi Date: Sun, 24 Apr 2016 00:24:31 -0400 Subject: [PATCH 1/3] Fix PCLMULQDQ, SSE4.1, MOVBE and RDRAND detection on AMD processors --- libcpuid/cpuid_main.c | 4 ++++ libcpuid/recog_intel.c | 4 ---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libcpuid/cpuid_main.c b/libcpuid/cpuid_main.c index f151507..4681228 100644 --- a/libcpuid/cpuid_main.c +++ b/libcpuid/cpuid_main.c @@ -182,17 +182,21 @@ static void load_features_common(struct cpu_raw_data_t* raw, struct cpu_id_t* da }; const struct feature_map_t matchtable_ecx1[] = { { 0, CPU_FEATURE_PNI }, + { 1, CPU_FEATURE_PCLMUL }, { 3, CPU_FEATURE_MONITOR }, { 9, CPU_FEATURE_SSSE3 }, { 12, CPU_FEATURE_FMA3 }, { 13, CPU_FEATURE_CX16 }, { 19, CPU_FEATURE_SSE4_1 }, + { 20, CPU_FEATURE_SSE4_2 }, + { 22, CPU_FEATURE_MOVBE }, { 23, CPU_FEATURE_POPCNT }, { 25, CPU_FEATURE_AES }, { 26, CPU_FEATURE_XSAVE }, { 27, CPU_FEATURE_OSXSAVE }, { 28, CPU_FEATURE_AVX }, { 29, CPU_FEATURE_F16C }, + { 30, CPU_FEATURE_RDRAND }, }; const struct feature_map_t matchtable_ebx7[] = { { 3, CPU_FEATURE_BMI1 }, diff --git a/libcpuid/recog_intel.c b/libcpuid/recog_intel.c index 2bb0757..6de3d67 100644 --- a/libcpuid/recog_intel.c +++ b/libcpuid/recog_intel.c @@ -377,7 +377,6 @@ static void load_intel_features(struct cpu_raw_data_t* raw, struct cpu_id_t* dat { 31, CPU_FEATURE_PBE }, }; const struct feature_map_t matchtable_ecx1[] = { - { 1, CPU_FEATURE_PCLMUL }, { 2, CPU_FEATURE_DTS64 }, { 4, CPU_FEATURE_DS_CPL }, { 5, CPU_FEATURE_VMX }, @@ -388,10 +387,7 @@ static void load_intel_features(struct cpu_raw_data_t* raw, struct cpu_id_t* dat { 14, CPU_FEATURE_XTPR }, { 15, CPU_FEATURE_PDCM }, { 18, CPU_FEATURE_DCA }, - { 20, CPU_FEATURE_SSE4_2 }, { 21, CPU_FEATURE_X2APIC }, - { 22, CPU_FEATURE_MOVBE }, - { 30, CPU_FEATURE_RDRAND }, }; const struct feature_map_t matchtable_edx81[] = { { 20, CPU_FEATURE_XD }, From 5ca7b2deeebd0990b80d6eeb3ff03085b365b2ec Mon Sep 17 00:00:00 2001 From: Kurt Cancemi Date: Sun, 24 Apr 2016 00:26:00 -0400 Subject: [PATCH 2/3] AMD associativity table Dh should contain 96 not 92 --- libcpuid/recog_amd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libcpuid/recog_amd.c b/libcpuid/recog_amd.c index c588382..02d31e1 100644 --- a/libcpuid/recog_amd.c +++ b/libcpuid/recog_amd.c @@ -353,7 +353,7 @@ static void decode_amd_cache_info(struct cpu_raw_data_t* raw, struct cpu_id_t* d { int l3_result; const int assoc_table[16] = { - 0, 1, 2, 0, 4, 0, 8, 0, 16, 0, 32, 48, 64, 92, 128, 255 + 0, 1, 2, 0, 4, 0, 8, 0, 16, 0, 32, 48, 64, 96, 128, 255 }; unsigned n = raw->ext_cpuid[0][0]; From dea8a6006a6484546dd8cd1d885b355a62b74e81 Mon Sep 17 00:00:00 2001 From: Kurt Cancemi Date: Sun, 24 Apr 2016 00:27:42 -0400 Subject: [PATCH 3/3] Fix tests --- tests/amd/bulldozer/bulldozer-x4.test | 2 +- tests/amd/bulldozer/vishera-x4.test | 2 +- tests/amd/k10/magny-cours.test | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/amd/bulldozer/bulldozer-x4.test b/tests/amd/bulldozer/bulldozer-x4.test index 69dc87f..1942f20 100644 --- a/tests/amd/bulldozer/bulldozer-x4.test +++ b/tests/amd/bulldozer/bulldozer-x4.test @@ -90,4 +90,4 @@ intel_fn11[3]=00000000 00000000 00000000 00000000 64 128 (authoritative) Bulldozer X4 -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 ssse3 cx16 sse4_1 syscall 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 100mhzsteps hwpstate constant_tsc xop fma4 cpb +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 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 100mhzsteps hwpstate constant_tsc xop fma4 cpb diff --git a/tests/amd/bulldozer/vishera-x4.test b/tests/amd/bulldozer/vishera-x4.test index b7d8450..3e99cb7 100644 --- a/tests/amd/bulldozer/vishera-x4.test +++ b/tests/amd/bulldozer/vishera-x4.test @@ -90,4 +90,4 @@ intel_fn11[3]=00000000 00000000 00000000 00000000 64 128 (authoritative) Vishera X4 -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 ssse3 cx16 sse4_1 syscall 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 100mhzsteps hwpstate constant_tsc xop fma3 fma4 f16c cpb aperfmperf bmi1 +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 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 100mhzsteps hwpstate constant_tsc xop fma3 fma4 f16c cpb aperfmperf bmi1 diff --git a/tests/amd/k10/magny-cours.test b/tests/amd/k10/magny-cours.test index aa8d283..007b1cc 100644 --- a/tests/amd/k10/magny-cours.test +++ b/tests/amd/k10/magny-cours.test @@ -84,7 +84,7 @@ intel_fn11[3]=00000000 00000000 00000000 00000000 10240 2 16 -92 +96 64 64 64