diff --git a/cmake/AwsSIMD.cmake b/cmake/AwsSIMD.cmake index 6ba9f236e..48cf32bd1 100644 --- a/cmake/AwsSIMD.cmake +++ b/cmake/AwsSIMD.cmake @@ -25,9 +25,14 @@ if (USE_CPU_EXTENSIONS) set(AVX_CFLAGS "/arch:AVX512 /arch:AVX2") endif() else() - check_c_compiler_flag("-mavx512f -mvpclmulqdq" HAVE_M_AVX512_FLAG) + check_c_compiler_flag("-mavx512vl -mvpclmulqdq" HAVE_M_AVX512_FLAG) if (HAVE_M_AVX512_FLAG) - set(AVX_CFLAGS "-mavx512f -mvpclmulqdq -mpclmul -mavx -mavx2 -msse4.2") + set(AVX_CFLAGS "-mavx512vl -mvpclmulqdq -mpclmul -mavx -mavx2 -msse4.2") + else() + check_c_compiler_flag("-mavx512f -mvpclmulqdq" HAVE_M_AVX512_FLAG) + if (HAVE_M_AVX512_FLAG) + set(AVX_CFLAGS "-mavx512f -mvpclmulqdq -mpclmul -mavx -mavx2 -msse4.2") + endif() endif() endif() diff --git a/source/arch/intel/cpuid.c b/source/arch/intel/cpuid.c index 44fdff078..465fccd17 100644 --- a/source/arch/intel/cpuid.c +++ b/source/arch/intel/cpuid.c @@ -116,8 +116,8 @@ static bool s_has_bmi2(void) { static bool s_has_vpclmulqdq(void) { uint32_t abcd[4]; /* Check VPCLMULQDQ: - * CPUID.(EAX=07H, ECX=0H):ECX.VPCLMULQDQ[bit 20]==1 */ - uint32_t vpclmulqdq_mask = (1 << 20); + * CPUID.(EAX=07H, ECX=0H):ECX.VPCLMULQDQ[bit 10]==1 */ + uint32_t vpclmulqdq_mask = (1 << 10); aws_run_cpuid(7, 0, abcd); if ((abcd[2] & vpclmulqdq_mask) != vpclmulqdq_mask) { return false;