diff --git a/crypto/libntrup/src/ntru.cpp b/crypto/libntrup/src/ntru.cpp index c27d38402..c86451b56 100644 --- a/crypto/libntrup/src/ntru.cpp +++ b/crypto/libntrup/src/ntru.cpp @@ -1,24 +1,19 @@ #include -#include - -#include // printf #if __AVX2__ #include #include -std::array< int, 4 > -CPUID(int funcno) -{ - std::array< int, 4 > cpuinfo; - __cpuid(funcno, cpuinfo[0], cpuinfo[1], cpuinfo[2], cpuinfo[3]); - return cpuinfo; -} - bool supports_avx2() { - return CPUID(0).at(0) >= 7 && CPUID(7).at(1) & (1 << 5); + std::array< int, 4 > cpuinfo; + __cpuid(0, cpuinfo[0], cpuinfo[1], cpuinfo[2], cpuinfo[3]); + if (cpuinfo[0] < 7) + return false; + + __cpuid_count(7, 0, cpuinfo[0], cpuinfo[1], cpuinfo[2], cpuinfo[3]); + return cpuinfo[1] & (1 << 5); } #else