22 #if defined(__x86_64__) || defined(__i386__) || defined(_WIN32) 23 #if !defined(ANDROID_BUILD) 25 #endif // !ANDROID_BUILD 28 #if defined(X86_BUILD) 39 bool SIMDDetect::avx_available_;
40 bool SIMDDetect::avx2_available_;
41 bool SIMDDetect::avx512F_available_;
42 bool SIMDDetect::avx512BW_available_;
44 bool SIMDDetect::sse_available_;
51 SIMDDetect::SIMDDetect() {
52 #if defined(X86_BUILD) 54 unsigned int eax, ebx, ecx, edx;
55 if (__get_cpuid(1, &eax, &ebx, &ecx, &edx) != 0) {
58 sse_available_ = (ecx & 0x00080000) != 0;
59 avx_available_ = (ecx & 0x10000000) != 0;
64 __cpuid_count(7, 0, eax, ebx, ecx, edx);
65 avx2_available_ = (ebx & 0x00000020) != 0;
66 avx512F_available_ = (ebx & 0x00010000) != 0;
67 avx512BW_available_ = (ebx & 0x40000000) != 0;
73 if (cpuInfo[0] >= 1) {
75 sse_available_ = (cpuInfo[2] & 0x00080000) != 0;
76 avx_available_ = (cpuInfo[2] & 0x10000000) != 0;
79 #error "I don't know how to test for SIMD with this compiler"