diff --git a/modules/core/src/system.cpp b/modules/core/src/system.cpp index fcb9ea45ef601d6dc31d26327c95eec3deebe7c9..ad688a6c689559eb3c57ac0d1874e1525d4062cc 100644 --- a/modules/core/src/system.cpp +++ b/modules/core/src/system.cpp @@ -2429,6 +2429,13 @@ public: ippTopFeatures = ippCPUID_SSE42; pIppLibInfo = ippiGetLibVersion(); + + // workaround: https://github.com/opencv/opencv/issues/12959 + std::string ippName(pIppLibInfo->Name ? pIppLibInfo->Name : ""); + if (ippName.find("SSE4.2") != std::string::npos) + { + ippTopFeatures = ippCPUID_SSE42; + } } public: @@ -2468,16 +2475,12 @@ int getIppFeatures() #endif } -unsigned long long getIppTopFeatures(); - +#ifdef HAVE_IPP unsigned long long getIppTopFeatures() { -#ifdef HAVE_IPP return getIPPSingleton().ippTopFeatures; -#else - return 0; -#endif } +#endif void setIppStatus(int status, const char * const _funcname, const char * const _filename, int _line) { diff --git a/modules/ts/src/ts.cpp b/modules/ts/src/ts.cpp index bad799dc4dfe76442f0e20eb8cb064d8f3eb8bf0..13f5eff2513f2b98d5f535b5d47639129e150c7b 100644 --- a/modules/ts/src/ts.cpp +++ b/modules/ts/src/ts.cpp @@ -1122,7 +1122,9 @@ void SystemInfoCollector::OnTestProgramStart(const testing::UnitTest&) } recordPropertyVerbose("cv_cpu_features", "CPU features", cv::getCPUFeaturesLine()); #ifdef HAVE_IPP - recordPropertyVerbose("cv_ipp_version", "Intel(R) IPP version", cv::ipp::useIPP() ? cv::ipp::getIppVersion() : "disabled"); + recordPropertyVerbose("cv_ipp_version", "Intel(R) IPP version", cv::ipp::useIPP() ? cv::ipp::getIppVersion() : "disabled"); + if (cv::ipp::useIPP()) + recordPropertyVerbose("cv_ipp_features", "Intel(R) IPP features code", cv::format("0x%llx", cv::ipp::getIppTopFeatures())); #endif #ifdef HAVE_OPENCL cv::dumpOpenCLInformation();