diff --git a/modules/core/include/opencv2/core/cv_cpu_dispatch.h b/modules/core/include/opencv2/core/cv_cpu_dispatch.h index c41c21da60..779039de79 100644 --- a/modules/core/include/opencv2/core/cv_cpu_dispatch.h +++ b/modules/core/include/opencv2/core/cv_cpu_dispatch.h @@ -111,6 +111,12 @@ struct VZeroUpperGuard { #define __CV_AVX_GUARD VZeroUpperGuard __vzeroupper_guard; #endif +#ifdef __CV_AVX_GUARD +#define CV_AVX_GUARD __CV_AVX_GUARD +#else +#define CV_AVX_GUARD +#endif + #endif // __OPENCV_BUILD diff --git a/modules/core/src/stat.simd.hpp b/modules/core/src/stat.simd.hpp index 43867731e3..b75100d3f4 100644 --- a/modules/core/src/stat.simd.hpp +++ b/modules/core/src/stat.simd.hpp @@ -28,6 +28,8 @@ static inline int _mm256_extract_epi32_(__m256i reg, const int i) int normHamming(const uchar* a, int n) { + CV_AVX_GUARD; + int i = 0; int result = 0; #if CV_AVX2 @@ -94,6 +96,8 @@ int normHamming(const uchar* a, int n) int normHamming(const uchar* a, const uchar* b, int n) { + CV_AVX_GUARD; + int i = 0; int result = 0; #if CV_AVX2