From b9c266181bda1c0da5e310b87cd5bb5d663e49d9 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Tue, 17 May 2016 01:19:58 +0200 Subject: [PATCH] fix avx2 feature detection, fixes #395 cpuid needed to get called with EAX = 7 to get the "extended features" (not with EAX = 1 for the "features"). --- src/libsodium/sodium/runtime.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libsodium/sodium/runtime.c b/src/libsodium/sodium/runtime.c index ebcce9ca..c287fa33 100644 --- a/src/libsodium/sodium/runtime.c +++ b/src/libsodium/sodium/runtime.c @@ -168,7 +168,9 @@ _sodium_runtime_intel_cpu_features(CPUFeatures * const cpu_features) #if defined(HAVE_AVX2INTRIN_H) || \ (defined(_MSC_VER) && (defined(_M_X64) || defined(_M_AMD64) || defined(_M_IX86))) if (cpu_features->has_avx) { - cpu_features->has_avx2 = ((cpu_info[1] & CPUID_EBX_AVX2) != 0x0); + unsigned int cpu_info7[4]; + _cpuid(cpu_info7, 0x00000007); + cpu_features->has_avx2 = ((cpu_info7[1] & CPUID_EBX_AVX2) != 0x0); } #endif