Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/816378/?format=api
{ "id": 816378, "url": "http://patchwork.ozlabs.org/api/patches/816378/?format=api", "web_url": "http://patchwork.ozlabs.org/project/buildroot/patch/1505926667-22593-1-git-send-email-russell.kirmayer@jibo.com/", "project": { "id": 27, "url": "http://patchwork.ozlabs.org/api/projects/27/?format=api", "name": "Buildroot development", "link_name": "buildroot", "list_id": "buildroot.buildroot.org", "list_email": "buildroot@buildroot.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<1505926667-22593-1-git-send-email-russell.kirmayer@jibo.com>", "list_archive_url": null, "date": "2017-09-20T16:57:47", "name": "[155/155] package/opencv3: version bump from 3.2.0 to 3.3.0", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "ea51bc117f14c6b2fdbbe59f69625db1c9ba5cee", "submitter": { "id": 72403, "url": "http://patchwork.ozlabs.org/api/people/72403/?format=api", "name": "Russell kirmayer", "email": "russell.kirmayer@jibo.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/buildroot/patch/1505926667-22593-1-git-send-email-russell.kirmayer@jibo.com/mbox/", "series": [ { "id": 4181, "url": "http://patchwork.ozlabs.org/api/series/4181/?format=api", "web_url": "http://patchwork.ozlabs.org/project/buildroot/list/?series=4181", "date": "2017-09-20T16:57:47", "name": null, "version": 1, "mbox": "http://patchwork.ozlabs.org/series/4181/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/816378/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/816378/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<buildroot-bounces@busybox.net>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "buildroot@lists.busybox.net" ], "Delivered-To": [ "patchwork-incoming@bilbo.ozlabs.org", "buildroot@osuosl.org" ], "Authentication-Results": [ "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=busybox.net\n\t(client-ip=140.211.166.136; helo=silver.osuosl.org;\n\tenvelope-from=buildroot-bounces@busybox.net;\n\treceiver=<UNKNOWN>)", "ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=jibo-com.20150623.gappssmtp.com\n\theader.i=@jibo-com.20150623.gappssmtp.com header.b=\"rf6k12C1\";\n\tdkim-atps=neutral" ], "Received": [ "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xy5hx1Xsgz9sRm\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 21 Sep 2017 03:05:19 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 62C3E30082;\n\tWed, 20 Sep 2017 17:05:17 +0000 (UTC)", "from silver.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id sHUt27YkZ8Pb; Wed, 20 Sep 2017 17:05:06 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby silver.osuosl.org (Postfix) with ESMTP id C5A6C300A9;\n\tWed, 20 Sep 2017 17:05:06 +0000 (UTC)", "from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\tby ash.osuosl.org (Postfix) with ESMTP id 3DDA01C0F61\n\tfor <buildroot@lists.busybox.net>;\n\tWed, 20 Sep 2017 17:05:05 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 3623789836\n\tfor <buildroot@lists.busybox.net>;\n\tWed, 20 Sep 2017 17:05:05 +0000 (UTC)", "from whitealder.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id RKuSqLlvWZXa for <buildroot@lists.busybox.net>;\n\tWed, 20 Sep 2017 17:05:00 +0000 (UTC)", "from mail-qt0-f175.google.com (mail-qt0-f175.google.com\n\t[209.85.216.175])\n\tby whitealder.osuosl.org (Postfix) with ESMTPS id 66CD9897DC\n\tfor <buildroot@buildroot.org>; Wed, 20 Sep 2017 17:05:00 +0000 (UTC)", "by mail-qt0-f175.google.com with SMTP id o13so3479948qtf.1\n\tfor <buildroot@buildroot.org>; Wed, 20 Sep 2017 10:05:00 -0700 (PDT)", "from russellkir.JIBO.LOCAL ([172.85.50.58])\n\tby smtp.gmail.com with ESMTPSA id\n\ts57sm1605430qth.37.2017.09.20.09.57.54\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tWed, 20 Sep 2017 09:57:54 -0700 (PDT)" ], "X-Virus-Scanned": [ "amavisd-new at osuosl.org", "amavisd-new at osuosl.org" ], "X-Greylist": "delayed 00:07:02 by SQLgrey-1.7.6", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=jibo-com.20150623.gappssmtp.com; s=20150623;\n\th=from:to:cc:subject:date:message-id;\n\tbh=HzBp0zbo/sWc5Au/ZovXr+FVTwqtBQrSIeKoBK5II4A=;\n\tb=rf6k12C13+MPjbhCVqYBy2zs7PN8rMZDoxFoGfi8F7oI1PKOTsL0IbsyeY4rzfgmbN\n\th1w8PYjVuREFbyv87LROK5oPYICcsaxKTxfTEtQZ9PD3cGMiEkrnJlv8kWog6WPU6a6M\n\t3CK+vBNNnp6lzDvSqJ+xZC3SI5RzO6ESN+AELeuRXjQ5PaJtU6ibSSSv8yvx8i4Yb5Qg\n\t+ivZStB1rHU0LZlJTOrPTuFSK1jWDI8HTAx+2BWQkPtH7XxEixv/cyFOAPp8mmJgZ7M4\n\tFVo7hc6inqtOu1BQC15+WHO8JrYI7fHUXd7XWQY30x0cO645lbbin6V4Eglioa3Eovdt\n\tuthA==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id;\n\tbh=HzBp0zbo/sWc5Au/ZovXr+FVTwqtBQrSIeKoBK5II4A=;\n\tb=ggM6bmRr0eePJdmNKK/fDg8kzN6P7Mtt0b5yTgXMcSKpGAe1tqN1RPF+BCfkxGgies\n\tJwZDmUiQpzNPIFs+mSQWTwqsb1CzdMd7GvI9TdlU/vOjjU7Ko+PVjbsfh5KNskyIk+II\n\tDOPyvv6+ICORwJS2EH8siU95LgfuqXVe0W8Zo/cqV6xcD4FztoJAuV/es+QpvhoEYk4x\n\tJTwRmsi1xmfEWbTD1Iqe5TUe7qeRxJIEJwLnnWRcgcPRE4O7n3v3mI+LQ1jLu+i7ekSF\n\tDEUNL0yxj4o4WdUucCkc7A1MTHy8cMfCNv2wy42N8OLg/owtfSVBXAgbJ1eUIKStcHBT\n\tQt6Q==", "X-Gm-Message-State": "AHPjjUhpBGLUlahVD/PgoUw1I6Q0CC6E6Iu4VSJNMbqN8wPwspD4cwSP\n\tTEwNZupO23ZBgkHwlVLGTHKE+i+bSCc=", "X-Google-Smtp-Source": "AOwi7QALDqqJWlDwOzPBojgnRiJS5I9YyVYsWieC4BuItv+U8NReuNnbNQ59tZRfaFnbveH+HGq/xQ==", "X-Received": "by 10.200.54.240 with SMTP id b45mr8566691qtc.264.1505926674980; \n\tWed, 20 Sep 2017 09:57:54 -0700 (PDT)", "From": "Russell kirmayer <russell.kirmayer@jibo.com>", "To": "buildroot@buildroot.org", "Date": "Wed, 20 Sep 2017 12:57:47 -0400", "Message-Id": "<1505926667-22593-1-git-send-email-russell.kirmayer@jibo.com>", "X-Mailer": "git-send-email 2.7.4", "Cc": "Russell Kirmayer <russell.kirmayer@jibo.com>", "Subject": "[Buildroot] [PATCH 155/155] package/opencv3: version bump from\n\t3.2.0 to 3.3.0", "X-BeenThere": "buildroot@busybox.net", "X-Mailman-Version": "2.1.18-1", "Precedence": "list", "List-Id": "Discussion and development of buildroot <buildroot.busybox.net>", "List-Unsubscribe": "<http://lists.busybox.net/mailman/options/buildroot>,\n\t<mailto:buildroot-request@busybox.net?subject=unsubscribe>", "List-Archive": "<http://lists.busybox.net/pipermail/buildroot/>", "List-Post": "<mailto:buildroot@busybox.net>", "List-Help": "<mailto:buildroot-request@busybox.net?subject=help>", "List-Subscribe": "<http://lists.busybox.net/mailman/listinfo/buildroot>,\n\t<mailto:buildroot-request@busybox.net?subject=subscribe>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Errors-To": "buildroot-bounces@busybox.net", "Sender": "\"buildroot\" <buildroot-bounces@busybox.net>" }, "content": "From: Russell Kirmayer <russell.kirmayer@jibo.com>\n\nhttps://github.com/opencv/opencv/releases/tag/3.3.0\n\nSigned-off-by: Russell Kirmayer <russell.kirmayer@jibo.com>\n---\n .../0001-cmake-support-multiple-CPU-targets.patch | 2564 --------------------\n package/opencv3/opencv3.hash | 2 +-\n package/opencv3/opencv3.mk | 4 +-\n 3 files changed, 4 insertions(+), 2566 deletions(-)\n delete mode 100644 package/opencv3/0001-cmake-support-multiple-CPU-targets.patch", "diff": "diff --git a/package/opencv3/0001-cmake-support-multiple-CPU-targets.patch b/package/opencv3/0001-cmake-support-multiple-CPU-targets.patch\ndeleted file mode 100644\nindex 017c7bb..0000000\n--- a/package/opencv3/0001-cmake-support-multiple-CPU-targets.patch\n+++ /dev/null\n@@ -1,2564 +0,0 @@\n-From 1c54b13cb29463af514a107c42946abd97b5ca41 Mon Sep 17 00:00:00 2001\n-From: Alexander Alekhin <alexander.alekhin@intel.com>\n-Date: Wed, 7 Sep 2016 18:02:36 +0300\n-Subject: [PATCH] cmake: support multiple CPU targets\n-\n-Backported from: https://github.com/opencv/opencv/commit/e16227b53cabab1caa4b7aba8ff59a630528348f\n-Signed-off-by: Samuel Martin <s.martin49@gmail.com>\n----\n- CMakeLists.txt | 50 +-\n- cmake/OpenCVCompilerOptimizations.cmake | 651 +++++++++++++++++++++\n- cmake/OpenCVCompilerOptions.cmake | 161 +----\n- cmake/OpenCVGenHeaders.cmake | 4 +\n- cmake/OpenCVModule.cmake | 3 +\n- cmake/OpenCVPCHSupport.cmake | 5 +-\n- cmake/OpenCVUtils.cmake | 50 +-\n- cmake/checks/cpu_avx.cpp | 9 +\n- cmake/checks/cpu_avx2.cpp | 10 +\n- cmake/checks/cpu_avx512.cpp | 10 +\n- cmake/checks/cpu_fp16.cpp | 33 ++\n- cmake/checks/cpu_popcnt.cpp | 8 +\n- cmake/checks/cpu_sse.cpp | 2 +\n- cmake/checks/cpu_sse2.cpp | 2 +\n- cmake/checks/cpu_sse3.cpp | 7 +\n- cmake/checks/cpu_sse41.cpp | 6 +\n- cmake/checks/cpu_sse42.cpp | 5 +\n- cmake/checks/cpu_ssse3.cpp | 7 +\n- cmake/checks/fp16.cpp | 33 --\n- cmake/templates/cv_cpu_config.h.in | 5 +\n- cmake/templates/cvconfig.h.in | 13 +\n- .../core/include/opencv2/core/cv_cpu_dispatch.h | 166 ++++++\n- modules/core/include/opencv2/core/cv_cpu_helper.h | 133 +++++\n- modules/core/include/opencv2/core/cvdef.h | 145 +----\n- modules/core/include/opencv2/core/fast_math.hpp | 60 +-\n- modules/core/src/system.cpp | 301 ++++++++--\n- modules/highgui/CMakeLists.txt | 2 +-\n- modules/imgproc/src/imgwarp.cpp | 4 +-\n- modules/objdetect/src/haar.cpp | 5 +-\n- 29 files changed, 1472 insertions(+), 418 deletions(-)\n- create mode 100644 cmake/OpenCVCompilerOptimizations.cmake\n- create mode 100644 cmake/checks/cpu_avx.cpp\n- create mode 100644 cmake/checks/cpu_avx2.cpp\n- create mode 100644 cmake/checks/cpu_avx512.cpp\n- create mode 100644 cmake/checks/cpu_fp16.cpp\n- create mode 100644 cmake/checks/cpu_popcnt.cpp\n- create mode 100644 cmake/checks/cpu_sse.cpp\n- create mode 100644 cmake/checks/cpu_sse2.cpp\n- create mode 100644 cmake/checks/cpu_sse3.cpp\n- create mode 100644 cmake/checks/cpu_sse41.cpp\n- create mode 100644 cmake/checks/cpu_sse42.cpp\n- create mode 100644 cmake/checks/cpu_ssse3.cpp\n- delete mode 100644 cmake/checks/fp16.cpp\n- create mode 100644 cmake/templates/cv_cpu_config.h.in\n- create mode 100644 modules/core/include/opencv2/core/cv_cpu_dispatch.h\n- create mode 100644 modules/core/include/opencv2/core/cv_cpu_helper.h\n-\n-diff --git a/CMakeLists.txt b/CMakeLists.txt\n-index cc45f6f..9c9971e 100644\n---- a/CMakeLists.txt\n-+++ b/CMakeLists.txt\n-@@ -85,6 +85,10 @@ if(POLICY CMP0042)\n- cmake_policy(SET CMP0042 NEW)\n- endif()\n- \n-+if(POLICY CMP0051)\n-+ cmake_policy(SET CMP0051 NEW)\n-+endif()\n-+\n- include(cmake/OpenCVUtils.cmake)\n- \n- # must go before the project command\n-@@ -274,16 +278,6 @@ OCV_OPTION(ENABLE_COVERAGE \"Enable coverage collection with GCov\"\n- OCV_OPTION(ENABLE_OMIT_FRAME_POINTER \"Enable -fomit-frame-pointer for GCC\" ON IF CMAKE_COMPILER_IS_GNUCXX AND NOT (APPLE AND CMAKE_COMPILER_IS_CLANGCXX) )\n- OCV_OPTION(ENABLE_POWERPC \"Enable PowerPC for GCC\" ON IF (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_SYSTEM_PROCESSOR MATCHES powerpc.*) )\n- OCV_OPTION(ENABLE_FAST_MATH \"Enable -ffast-math (not recommended for GCC 4.6.x)\" OFF IF (CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )\n--OCV_OPTION(ENABLE_SSE \"Enable SSE instructions\" ON IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )\n--OCV_OPTION(ENABLE_SSE2 \"Enable SSE2 instructions\" ON IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )\n--OCV_OPTION(ENABLE_SSE3 \"Enable SSE3 instructions\" ON IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX OR CV_ICC) AND (X86 OR X86_64)) )\n--OCV_OPTION(ENABLE_SSSE3 \"Enable SSSE3 instructions\" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )\n--OCV_OPTION(ENABLE_SSE41 \"Enable SSE4.1 instructions\" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX OR CV_ICC) AND (X86 OR X86_64)) )\n--OCV_OPTION(ENABLE_SSE42 \"Enable SSE4.2 instructions\" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )\n--OCV_OPTION(ENABLE_POPCNT \"Enable POPCNT instructions\" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )\n--OCV_OPTION(ENABLE_AVX \"Enable AVX instructions\" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )\n--OCV_OPTION(ENABLE_AVX2 \"Enable AVX2 instructions\" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )\n--OCV_OPTION(ENABLE_FMA3 \"Enable FMA3 instructions\" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )\n- OCV_OPTION(ENABLE_NEON \"Enable NEON instructions\" \"${NEON}\" IF CMAKE_COMPILER_IS_GNUCXX AND (ARM OR AARCH64 OR IOS) )\n- OCV_OPTION(ENABLE_VFPV3 \"Enable VFPv3-D32 instructions\" OFF IF CMAKE_COMPILER_IS_GNUCXX AND (ARM OR AARCH64 OR IOS) )\n- OCV_OPTION(ENABLE_NOISY_WARNINGS \"Show all warnings even if they are too noisy\" OFF )\n-@@ -292,6 +286,9 @@ OCV_OPTION(ANDROID_EXAMPLES_WITH_LIBS \"Build binaries of Android examples with n\n- OCV_OPTION(ENABLE_IMPL_COLLECTION \"Collect implementation data on function call\" OFF )\n- OCV_OPTION(ENABLE_INSTRUMENTATION \"Instrument functions to collect calls trace and performance\" OFF )\n- OCV_OPTION(GENERATE_ABI_DESCRIPTOR \"Generate XML file for abi_compliance_checker tool\" OFF IF UNIX)\n-+OCV_OPTION(CV_ENABLE_INTRINSICS \"Use intrinsic-based optimized code\" ON )\n-+OCV_OPTION(CV_DISABLE_OPTIMIZATION \"Disable explicit optimized code (dispatched code/intrinsics/loop unrolling/etc)\" OFF )\n-+\n- \n- OCV_OPTION(DOWNLOAD_EXTERNAL_TEST_DATA \"Download external test data (Python executable and OPENCV_TEST_DATA_PATH environment variable may be required)\" OFF )\n- \n-@@ -492,6 +489,9 @@ if(CMAKE_GENERATOR MATCHES \"Makefiles|Ninja\" AND \"${CMAKE_BUILD_TYPE}\" STREQUAL\n- set(CMAKE_BUILD_TYPE Release)\n- endif()\n- \n-+# --- Python Support ---\n-+include(cmake/OpenCVDetectPython.cmake)\n-+\n- include(cmake/OpenCVCompilerOptions.cmake)\n- \n- \n-@@ -569,9 +569,6 @@ else()\n- unset(DOXYGEN_FOUND CACHE)\n- endif()\n- \n--# --- Python Support ---\n--include(cmake/OpenCVDetectPython.cmake)\n--\n- # --- Java Support ---\n- include(cmake/OpenCVDetectApacheAnt.cmake)\n- if(ANDROID)\n-@@ -860,6 +857,33 @@ if(NOT CMAKE_GENERATOR MATCHES \"Xcode|Visual Studio\")\n- status(\" Configuration:\" ${CMAKE_BUILD_TYPE})\n- endif()\n- \n-+\n-+# ========================= CPU code generation mode =========================\n-+status(\"\")\n-+status(\" CPU/HW features:\")\n-+status(\" Baseline:\" \"${CPU_BASELINE_FINAL}\")\n-+if(NOT CPU_BASELINE STREQUAL CPU_BASELINE_FINAL)\n-+ status(\" requested:\" \"${CPU_BASELINE}\")\n-+endif()\n-+if(CPU_BASELINE_REQUIRE)\n-+ status(\" required:\" \"${CPU_BASELINE_REQUIRE}\")\n-+endif()\n-+if(CPU_BASELINE_DISABLE)\n-+ status(\" disabled:\" \"${CPU_BASELINE_DISABLE}\")\n-+endif()\n-+if(CPU_DISPATCH_FINAL OR CPU_DISPATCH)\n-+ status(\" Dispatched code generation:\" \"${CPU_DISPATCH_FINAL}\")\n-+ if(NOT CPU_DISPATCH STREQUAL CPU_DISPATCH_FINAL)\n-+ status(\" requested:\" \"${CPU_DISPATCH}\")\n-+ endif()\n-+ if(CPU_DISPATCH_REQUIRE)\n-+ status(\" required:\" \"${CPU_DISPATCH_REQUIRE}\")\n-+ endif()\n-+ foreach(OPT ${CPU_DISPATCH_FINAL})\n-+ status(\" ${OPT} (${CPU_${OPT}_USAGE_COUNT} files):\" \"+ ${CPU_DISPATCH_${OPT}_INCLUDED}\")\n-+ endforeach()\n-+endif()\n-+\n- # ========================== C/C++ options ==========================\n- if(CMAKE_CXX_COMPILER_VERSION)\n- set(OPENCV_COMPILER_STR \"${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} (ver ${CMAKE_CXX_COMPILER_VERSION})\")\n-diff --git a/cmake/OpenCVCompilerOptimizations.cmake b/cmake/OpenCVCompilerOptimizations.cmake\n-new file mode 100644\n-index 0000000..b849f02\n---- /dev/null\n-+++ b/cmake/OpenCVCompilerOptimizations.cmake\n-@@ -0,0 +1,651 @@\n-+# x86/x86-64 arch:\n-+# SSE / SSE2 (always available on 64-bit CPUs)\n-+# SSE3 / SSSE3\n-+# SSE4_1 / SSE4_2 / POPCNT\n-+# AVX / AVX2 / AVX512\n-+# FMA3\n-+\n-+# CPU_{opt}_SUPPORTED=ON/OFF - compiler support (possibly with additional flag)\n-+# CPU_{opt}_IMPLIES=<list>\n-+# CPU_{opt}_FORCE=<list> - subset of \"implies\" list\n-+# CPU_{opt}_FLAGS_ON=\"\"\n-+# CPU_{opt}_FEATURE_ALIAS - mapping to CV_CPU_* HWFeature enum\n-+\n-+# Input variables:\n-+# CPU_BASELINE=<list> - preferred list of baseline optimizations\n-+# CPU_DISPATCH=<list> - preferred list of dispatched optimizations\n-+\n-+# Advanced input variables:\n-+# CPU_BASELINE_REQUIRE=<list> - list of required baseline optimizations\n-+# CPU_DISPATCH_REQUIRE=<list> - list of required dispatched optimizations\n-+# CPU_BASELINE_DISABLE=<list> - list of disabled baseline optimizations\n-+\n-+# Output variables:\n-+# CPU_BASELINE_FINAL=<list> - final list of enabled compiler optimizations\n-+# CPU_DISPATCH_FINAL=<list> - final list of dispatched optimizations\n-+#\n-+# CPU_DISPATCH_FLAGS_${opt} - flags for source files compiled separately (_opt_avx2.cpp)\n-+\n-+set(CPU_ALL_OPTIMIZATIONS \"SSE;SSE2;SSE3;SSSE3;SSE4_1;SSE4_2;POPCNT;AVX;FP16;AVX2;FMA3\") # without AVX512\n-+list(APPEND CPU_ALL_OPTIMIZATIONS NEON VFPV3 FP16)\n-+list(REMOVE_DUPLICATES CPU_ALL_OPTIMIZATIONS)\n-+\n-+ocv_update(CPU_VFPV3_FEATURE_ALIAS \"\")\n-+\n-+\n-+set(HELP_CPU_BASELINE \"Specify list of enabled baseline CPU optimizations\")\n-+set(HELP_CPU_BASELINE_REQUIRE \"Specify list of required baseline CPU optimizations\")\n-+set(HELP_CPU_BASELINE_DISABLE \"Specify list of forbidden baseline CPU optimizations\")\n-+set(HELP_CPU_DISPATCH \"Specify list of dispatched CPU optimizations\")\n-+set(HELP_CPU_DISPATCH_REQUIRE \"Specify list of required dispatched CPU optimizations\")\n-+\n-+foreach(var CPU_BASELINE CPU_BASELINE_REQUIRE CPU_BASELINE_DISABLE CPU_DISPATCH CPU_DISPATCH_REQUIRE)\n-+ if(DEFINED ${var})\n-+ string(REPLACE \",\" \";\" _list \"${${var}}\")\n-+ set(${var} \"${_list}\" CACHE STRING \"${HELP_${var}}\" FORCE)\n-+ endif()\n-+endforeach()\n-+\n-+# process legacy flags\n-+macro(ocv_optimization_process_obsolete_option legacy_flag OPT legacy_warn)\n-+ if(DEFINED ${legacy_flag})\n-+ if(${legacy_warn})\n-+ message(STATUS \"WARNING: Option ${legacy_flag}='${${legacy_flag}}' is deprecated and should not be used anymore\")\n-+ message(STATUS \" Behaviour of this option is not backward compatible\")\n-+ message(STATUS \" Refer to 'CPU_BASELINE'/'CPU_DISPATCH' CMake options documentation\")\n-+ endif()\n-+ if(${legacy_flag})\n-+ if(NOT \";${CPU_BASELINE_REQUIRE};\" MATCHES \";${OPT};\")\n-+ set(CPU_BASELINE_REQUIRE \"${CPU_BASELINE_REQUIRE};${OPT}\" CACHE STRING \"${HELP_CPU_BASELINE_REQUIRE}\" FORCE)\n-+ endif()\n-+ else()\n-+ if(NOT \";${CPU_BASELINE_DISABLE};\" MATCHES \";${OPT};\")\n-+ set(CPU_BASELINE_DISABLE \"${CPU_BASELINE_DISABLE};${OPT}\" CACHE STRING \"${HELP_CPU_BASELINE_DISABLE}\" FORCE)\n-+ endif()\n-+ endif()\n-+ endif()\n-+endmacro()\n-+ocv_optimization_process_obsolete_option(ENABLE_SSE SSE ON)\n-+ocv_optimization_process_obsolete_option(ENABLE_SSE2 SSE2 ON)\n-+ocv_optimization_process_obsolete_option(ENABLE_SSE3 SSE3 ON)\n-+ocv_optimization_process_obsolete_option(ENABLE_SSSE3 SSSE3 ON)\n-+ocv_optimization_process_obsolete_option(ENABLE_SSE41 SSE4_1 ON)\n-+ocv_optimization_process_obsolete_option(ENABLE_SSE42 SSE4_2 ON)\n-+ocv_optimization_process_obsolete_option(ENABLE_POPCNT POPCNT ON)\n-+ocv_optimization_process_obsolete_option(ENABLE_AVX AVX ON)\n-+ocv_optimization_process_obsolete_option(ENABLE_AVX2 AVX2 ON)\n-+ocv_optimization_process_obsolete_option(ENABLE_FMA3 FMA3 ON)\n-+\n-+ocv_optimization_process_obsolete_option(ENABLE_VFPV3 VFPV3 OFF)\n-+ocv_optimization_process_obsolete_option(ENABLE_NEON NEON OFF)\n-+\n-+\n-+macro(ocv_is_optimization_in_list resultvar check_opt)\n-+ set(__checked \"\")\n-+ set(__queue ${ARGN})\n-+ set(${resultvar} 0)\n-+ while(__queue AND NOT ${resultvar})\n-+ list(REMOVE_DUPLICATES __queue)\n-+ set(__queue_current ${__queue})\n-+ set(__queue \"\")\n-+ foreach(OPT ${__queue_current})\n-+ if(\"x${OPT}\" STREQUAL \"x${check_opt}\")\n-+ set(${resultvar} 1)\n-+ break()\n-+ elseif(NOT \";${__checked};\" MATCHES \";${OPT};\")\n-+ list(APPEND __queue ${CPU_${OPT}_IMPLIES})\n-+ endif()\n-+ list(APPEND __checked ${OPT})\n-+ endforeach()\n-+ endwhile()\n-+endmacro()\n-+\n-+macro(ocv_is_optimization_in_force_list resultvar check_opt)\n-+ set(__checked \"\")\n-+ set(__queue ${ARGN})\n-+ set(${resultvar} 0)\n-+ while(__queue AND NOT ${resultvar})\n-+ list(REMOVE_DUPLICATES __queue)\n-+ set(__queue_current ${__queue})\n-+ set(__queue \"\")\n-+ foreach(OPT ${__queue_current})\n-+ if(OPT STREQUAL \"${check_opt}\")\n-+ set(${resultvar} 1)\n-+ break()\n-+ elseif(NOT \";${__checked};\" MATCHES \";${OPT};\")\n-+ list(APPEND __queue ${CPU_${OPT}_FORCE})\n-+ endif()\n-+ list(APPEND __checked ${OPT})\n-+ endforeach()\n-+ endwhile()\n-+endmacro()\n-+\n-+macro(ocv_append_optimization_flag var OPT)\n-+ if(CPU_${OPT}_FLAGS_CONFLICT)\n-+ string(REGEX REPLACE \" ${CPU_${OPT}_FLAGS_CONFLICT}\" \"\" ${var} \" ${${var}}\")\n-+ string(REGEX REPLACE \"^ +\" \"\" ${var} \"${${var}}\")\n-+ endif()\n-+ set(${var} \"${${var}} ${CPU_${OPT}_FLAGS_ON}\")\n-+endmacro()\n-+\n-+# Support GCC -march=native or Intel Compiler -xHost flags\n-+if(\";${CPU_BASELINE};\" MATCHES \";NATIVE;\" OR \";${CPU_BASELINE};\" MATCHES \";HOST;\")\n-+ set(CPU_BASELINE_DETECT ON)\n-+ set(_add_native_flag ON)\n-+elseif(\";${CPU_BASELINE};\" MATCHES \";DETECT;\")\n-+ set(CPU_BASELINE_DETECT ON)\n-+elseif(\" ${CMAKE_CXX_FLAGS} \" MATCHES \" -march=native | -xHost | /QxHost \")\n-+ if(DEFINED CPU_BASELINE)\n-+ message(STATUS \"CPU: Detected '-march=native' or '-xHost' compiler flag. Force CPU_BASELINE=DETECT.\")\n-+ endif()\n-+ set(CPU_BASELINE \"DETECT\" CACHE STRING \"${HELP_CPU_BASELINE}\")\n-+ set(CPU_BASELINE_DETECT ON)\n-+endif()\n-+\n-+if(X86 OR X86_64)\n-+ ocv_update(CPU_KNOWN_OPTIMIZATIONS \"SSE;SSE2;SSE3;SSSE3;SSE4_1;POPCNT;SSE4_2;FP16;FMA3;AVX;AVX2;AVX512\")\n-+\n-+ ocv_update(CPU_SSE_TEST_FILE \"${OpenCV_SOURCE_DIR}/cmake/checks/cpu_sse.cpp\")\n-+ ocv_update(CPU_SSE2_TEST_FILE \"${OpenCV_SOURCE_DIR}/cmake/checks/cpu_sse2.cpp\")\n-+ ocv_update(CPU_SSE3_TEST_FILE \"${OpenCV_SOURCE_DIR}/cmake/checks/cpu_sse3.cpp\")\n-+ ocv_update(CPU_SSSE3_TEST_FILE \"${OpenCV_SOURCE_DIR}/cmake/checks/cpu_ssse3.cpp\")\n-+ ocv_update(CPU_SSE4_1_TEST_FILE \"${OpenCV_SOURCE_DIR}/cmake/checks/cpu_sse41.cpp\")\n-+ ocv_update(CPU_SSE4_2_TEST_FILE \"${OpenCV_SOURCE_DIR}/cmake/checks/cpu_sse42.cpp\")\n-+ ocv_update(CPU_POPCNT_TEST_FILE \"${OpenCV_SOURCE_DIR}/cmake/checks/cpu_popcnt.cpp\")\n-+ ocv_update(CPU_AVX_TEST_FILE \"${OpenCV_SOURCE_DIR}/cmake/checks/cpu_avx.cpp\")\n-+ ocv_update(CPU_AVX2_TEST_FILE \"${OpenCV_SOURCE_DIR}/cmake/checks/cpu_avx2.cpp\")\n-+ ocv_update(CPU_FP16_TEST_FILE \"${OpenCV_SOURCE_DIR}/cmake/checks/cpu_fp16.cpp\")\n-+ ocv_update(CPU_AVX512_TEST_FILE \"${OpenCV_SOURCE_DIR}/cmake/checks/cpu_avx512.cpp\")\n-+\n-+ if(NOT OPENCV_CPU_OPT_IMPLIES_IGNORE)\n-+ ocv_update(CPU_AVX512_IMPLIES \"AVX2\")\n-+ ocv_update(CPU_AVX512_FORCE \"\") # Don't force other optimizations\n-+ ocv_update(CPU_AVX2_IMPLIES \"AVX;FMA3;FP16\")\n-+ ocv_update(CPU_FMA3_IMPLIES \"AVX2\")\n-+ ocv_update(CPU_FMA3_FORCE \"\") # Don't force other optimizations\n-+ ocv_update(CPU_FP16_IMPLIES \"AVX\")\n-+ ocv_update(CPU_FP16_FORCE \"\") # Don't force other optimizations\n-+ ocv_update(CPU_AVX_IMPLIES \"SSE4_2\")\n-+ ocv_update(CPU_SSE4_2_IMPLIES \"SSE4_1;POPCNT\")\n-+ ocv_update(CPU_POPCNT_IMPLIES \"SSE4_1\")\n-+ ocv_update(CPU_POPCNT_FORCE \"\") # Don't force other optimizations\n-+ ocv_update(CPU_SSE4_1_IMPLIES \"SSE3;SSSE3\")\n-+ ocv_update(CPU_SSSE3_IMPLIES \"SSE3\")\n-+ ocv_update(CPU_SSE3_IMPLIES \"SSE2\")\n-+ ocv_update(CPU_SSE2_IMPLIES \"SSE\")\n-+ endif()\n-+\n-+ if(CV_ICC)\n-+ macro(ocv_intel_compiler_optimization_option name unix_flags msvc_flags)\n-+ ocv_update(CPU_${name}_FLAGS_NAME \"${name}\")\n-+ if(MSVC)\n-+ set(enable_flags \"${msvc_flags}\")\n-+ set(flags_conflict \"/arch:[^ ]+\")\n-+ else()\n-+ set(enable_flags \"${unix_flags}\")\n-+ set(flags_conflict \"-msse[^ ]*|-mssse3|-mavx[^ ]*|-march[^ ]+\")\n-+ endif()\n-+ ocv_update(CPU_${name}_FLAGS_ON \"${enable_flags}\")\n-+ if(flags_conflict)\n-+ ocv_update(CPU_${name}_FLAGS_CONFLICT \"${flags_conflict}\")\n-+ endif()\n-+ endmacro()\n-+ ocv_intel_compiler_optimization_option(AVX2 \"-march=core-avx2\" \"/arch:CORE-AVX2\")\n-+ ocv_intel_compiler_optimization_option(FP16 \"-mavx\" \"/arch:AVX\")\n-+ ocv_intel_compiler_optimization_option(AVX \"-mavx\" \"/arch:AVX\")\n-+ ocv_intel_compiler_optimization_option(FMA3 \"\" \"\")\n-+ ocv_intel_compiler_optimization_option(POPCNT \"\" \"\")\n-+ ocv_intel_compiler_optimization_option(SSE4_2 \"-msse4.2\" \"/arch:SSE4.2\")\n-+ ocv_intel_compiler_optimization_option(SSE4_1 \"-msse4.1\" \"/arch:SSE4.1\")\n-+ ocv_intel_compiler_optimization_option(SSE3 \"-msse3\" \"/arch:SSE3\")\n-+ ocv_intel_compiler_optimization_option(SSSE3 \"-mssse3\" \"/arch:SSSE3\")\n-+ ocv_intel_compiler_optimization_option(SSE2 \"-msse2\" \"/arch:SSE2\")\n-+ if(NOT X86_64) # x64 compiler doesn't support /arch:sse\n-+ ocv_intel_compiler_optimization_option(SSE \"-msse\" \"/arch:SSE\")\n-+ endif()\n-+ #ocv_intel_compiler_optimization_option(AVX512 \"-march=core-avx512\")\n-+ elseif(CMAKE_COMPILER_IS_GNUCXX)\n-+ ocv_update(CPU_AVX2_FLAGS_ON \"-mavx2\")\n-+ ocv_update(CPU_FP16_FLAGS_ON \"-mf16c\")\n-+ ocv_update(CPU_AVX_FLAGS_ON \"-mavx\")\n-+ ocv_update(CPU_FMA3_FLAGS_ON \"-mfma\")\n-+ ocv_update(CPU_POPCNT_FLAGS_ON \"-mpopcnt\")\n-+ ocv_update(CPU_SSE4_2_FLAGS_ON \"-msse4.2\")\n-+ ocv_update(CPU_SSE4_1_FLAGS_ON \"-msse4.1\")\n-+ ocv_update(CPU_SSE3_FLAGS_ON \"-msse3\")\n-+ ocv_update(CPU_SSSE3_FLAGS_ON \"-mssse3\")\n-+ ocv_update(CPU_SSE2_FLAGS_ON \"-msse2\")\n-+ ocv_update(CPU_SSE_FLAGS_ON \"-msse\")\n-+ if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS \"5.0\")\n-+ ocv_update(CPU_AVX512_FLAGS_ON \"-mavx512f -mavx512pf -mavx512er -mavx512cd -mavx512vl -mavx512bw -mavx512dq -mavx512ifma -mavx512vbmi\")\n-+ endif()\n-+ elseif(MSVC)\n-+ ocv_update(CPU_AVX2_FLAGS_ON \"/arch:AVX2\")\n-+ ocv_update(CPU_AVX_FLAGS_ON \"/arch:AVX\")\n-+ if(NOT MSVC64)\n-+ # 64-bit MSVC compiler uses SSE/SSE2 by default\n-+ ocv_update(CPU_SSE_FLAGS_ON \"/arch:SSE\")\n-+ ocv_update(CPU_SSE_SUPPORTED ON)\n-+ ocv_update(CPU_SSE2_FLAGS_ON \"/arch:SSE2\")\n-+ ocv_update(CPU_SSE2_SUPPORTED ON)\n-+ else()\n-+ ocv_update(CPU_SSE_SUPPORTED ON)\n-+ ocv_update(CPU_SSE2_SUPPORTED ON)\n-+ endif()\n-+ # Other instruction sets are supported by default since MSVC 2008 at least\n-+ else()\n-+ message(WARNING \"TODO: Unsupported compiler\")\n-+ endif()\n-+\n-+ if(NOT DEFINED CPU_DISPATCH)\n-+ set(CPU_DISPATCH \"SSE4_1;AVX;FP16;AVX2\" CACHE STRING \"${HELP_CPU_DISPATCH}\")\n-+ endif()\n-+\n-+ if(NOT DEFINED CPU_BASELINE)\n-+ if(X86_64)\n-+ set(CPU_BASELINE \"SSSE3\" CACHE STRING \"${HELP_CPU_BASELINE}\")\n-+ else()\n-+ set(CPU_BASELINE \"SSE2\" CACHE STRING \"${HELP_CPU_BASELINE}\")\n-+ endif()\n-+ endif()\n-+\n-+elseif(ARM OR AARCH64)\n-+ ocv_update(CPU_FP16_TEST_FILE \"${OpenCV_SOURCE_DIR}/cmake/checks/cpu_fp16.cpp\")\n-+ if(NOT AARCH64)\n-+ ocv_update(CPU_KNOWN_OPTIMIZATIONS \"VFPV3;NEON;FP16\")\n-+ ocv_update(CPU_NEON_FLAGS_ON \"-mfpu=neon\")\n-+ ocv_update(CPU_VFPV3_FLAGS_ON \"-mfpu=vfpv3\")\n-+ ocv_update(CPU_FP16_FLAGS_ON \"-mfpu=neon-fp16\")\n-+ set(CPU_BASELINE \"DETECT\" CACHE STRING \"${HELP_CPU_BASELINE}\")\n-+ else()\n-+ ocv_update(CPU_KNOWN_OPTIMIZATIONS \"NEON;FP16\")\n-+ ocv_update(CPU_NEON_FLAGS_ON \"\")\n-+ set(CPU_BASELINE \"NEON\" CACHE STRING \"${HELP_CPU_BASELINE}\")\n-+ endif()\n-+endif()\n-+\n-+# Helper values for cmake-gui\n-+set(CPU_BASELINE \"DETECT\" CACHE STRING \"${HELP_CPU_BASELINE}\")\n-+set(CPU_DISPATCH \"\" CACHE STRING \"${HELP_CPU_DISPATCH}\")\n-+set_property(CACHE CPU_BASELINE PROPERTY STRINGS \"\" ${CPU_KNOWN_OPTIMIZATIONS})\n-+set_property(CACHE CPU_DISPATCH PROPERTY STRINGS \"\" ${CPU_KNOWN_OPTIMIZATIONS})\n-+\n-+set(CPU_BASELINE_FLAGS \"\")\n-+\n-+set(CPU_BASELINE_FINAL \"\")\n-+set(CPU_DISPATCH_FINAL \"\")\n-+\n-+macro(ocv_check_compiler_optimization OPT)\n-+ if(NOT DEFINED CPU_${OPT}_SUPPORTED)\n-+ if((DEFINED CPU_${OPT}_FLAGS_ON AND NOT \"x${CPU_${OPT}_FLAGS_ON}\" STREQUAL \"x\") OR CPU_${OPT}_TEST_FILE)\n-+ set(_varname \"\")\n-+ if(CPU_${OPT}_TEST_FILE)\n-+ set(__available 0)\n-+ if(CPU_BASELINE_DETECT)\n-+ set(_varname \"HAVE_CPU_${OPT}_SUPPORT\")\n-+ ocv_check_compiler_flag(CXX \"${CPU_BASELINE_FLAGS}\" \"${_varname}\" \"${CPU_${OPT}_TEST_FILE}\")\n-+ if(${_varname})\n-+ list(APPEND CPU_BASELINE_FINAL ${OPT})\n-+ set(__available 1)\n-+ endif()\n-+ endif()\n-+ if(NOT __available)\n-+ if(NOT \"x${CPU_${OPT}_FLAGS_NAME}\" STREQUAL \"x\")\n-+ set(_varname \"HAVE_CPU_${CPU_${OPT}_FLAGS_NAME}\")\n-+ set(_compile_flags \"${CPU_BASELINE_FLAGS}\")\n-+ ocv_append_optimization_flag(_compile_flags ${OPT})\n-+ ocv_check_compiler_flag(CXX \"${_compile_flags}\" \"${_varname}\" \"${CPU_${OPT}_TEST_FILE}\")\n-+ elseif(NOT \"x${CPU_${OPT}_FLAGS_ON}\" STREQUAL \"x\")\n-+ ocv_check_flag_support(CXX \"${CPU_${OPT}_FLAGS_ON}\" _varname \"\" \"${CPU_${OPT}_TEST_FILE}\")\n-+ else()\n-+ set(_varname \"HAVE_CPU_${OPT}_SUPPORT\")\n-+ set(_compile_flags \"${CPU_BASELINE_FLAGS}\")\n-+ ocv_append_optimization_flag(_compile_flags ${OPT})\n-+ ocv_check_compiler_flag(CXX \"${_compile_flags}\" \"${_varname}\" \"${CPU_${OPT}_TEST_FILE}\")\n-+ endif()\n-+ endif()\n-+ else()\n-+ ocv_check_flag_support(CXX \"${CPU_${OPT}_FLAGS_ON}\" _varname \"\")\n-+ endif()\n-+ if(_varname AND ${_varname})\n-+ set(CPU_${OPT}_SUPPORTED ON)\n-+ elseif(NOT CPU_${OPT}_SUPPORTED)\n-+ message(STATUS \"${OPT} is not supported by C++ compiler\")\n-+ endif()\n-+ else()\n-+ set(CPU_${OPT}_SUPPORTED ON)\n-+ endif()\n-+ endif()\n-+endmacro()\n-+\n-+foreach(OPT ${CPU_KNOWN_OPTIMIZATIONS})\n-+ set(CPU_${OPT}_USAGE_COUNT 0 CACHE INTERNAL \"\" FORCE)\n-+ if(NOT DEFINED CPU_${OPT}_FORCE)\n-+ set(CPU_${OPT}_FORCE \"${CPU_${OPT}_IMPLIES}\")\n-+ endif()\n-+endforeach()\n-+\n-+if(_add_native_flag)\n-+ set(_varname \"HAVE_CPU_NATIVE_SUPPORT\")\n-+ ocv_check_compiler_flag(CXX \"-march=native\" \"${_varname}\" \"\")\n-+ if(_varname)\n-+ set(CPU_BASELINE_FLAGS \"${CPU_BASELINE_FLAGS} -march=native\")\n-+ else()\n-+ set(_varname \"HAVE_CPU_HOST_SUPPORT\")\n-+ if(MSVC)\n-+ set(_flag \"/QxHost\")\n-+ else()\n-+ set(_flag \"-xHost\")\n-+ endif()\n-+ ocv_check_compiler_flag(CXX \"${_flag}\" \"${_varname}\" \"\")\n-+ if(_varname)\n-+ set(CPU_BASELINE_FLAGS \"${CPU_BASELINE_FLAGS} ${flag}\")\n-+ endif()\n-+ endif()\n-+endif()\n-+\n-+foreach(OPT ${CPU_KNOWN_OPTIMIZATIONS})\n-+ set(__is_disabled 0)\n-+ foreach(OPT2 ${CPU_BASELINE_DISABLE})\n-+ ocv_is_optimization_in_list(__is_disabled ${OPT2} ${OPT})\n-+ if(__is_disabled)\n-+ break()\n-+ endif()\n-+ endforeach()\n-+ if(__is_disabled)\n-+ set(__is_from_baseline 0)\n-+ else()\n-+ ocv_is_optimization_in_list(__is_from_baseline ${OPT} ${CPU_BASELINE_REQUIRE})\n-+ if(NOT __is_from_baseline)\n-+ ocv_is_optimization_in_list(__is_from_baseline ${OPT} ${CPU_BASELINE})\n-+ endif()\n-+ endif()\n-+ ocv_is_optimization_in_list(__is_from_dispatch ${OPT} ${CPU_DISPATCH_REQUIRE})\n-+ if(NOT __is_from_dispatch)\n-+ ocv_is_optimization_in_list(__is_from_dispatch ${OPT} ${CPU_DISPATCH})\n-+ endif()\n-+ if(__is_from_dispatch OR __is_from_baseline OR CPU_BASELINE_DETECT)\n-+ ocv_check_compiler_optimization(${OPT})\n-+ endif()\n-+ if(CPU_BASELINE_DETECT AND NOT __is_from_baseline AND NOT __is_disabled)\n-+ ocv_is_optimization_in_list(__is_from_baseline ${OPT} ${CPU_BASELINE_FINAL})\n-+ endif()\n-+ if(CPU_${OPT}_SUPPORTED)\n-+ if(\";${CPU_DISPATCH};\" MATCHES \";${OPT};\" AND NOT __is_from_baseline)\n-+ list(APPEND CPU_DISPATCH_FINAL ${OPT})\n-+ elseif(__is_from_baseline AND NOT CPU_BASELINE_DETECT)\n-+ list(APPEND CPU_BASELINE_FINAL ${OPT})\n-+ ocv_append_optimization_flag(CPU_BASELINE_FLAGS ${OPT})\n-+ endif()\n-+ endif()\n-+endforeach()\n-+\n-+foreach(OPT ${CPU_BASELINE_REQUIRE})\n-+ if(NOT \";${CPU_BASELINE_FINAL};\" MATCHES \";${OPT};\")\n-+ message(SEND_ERROR \"Required baseline optimization is not supported: ${OPT} (CPU_BASELINE_REQUIRE=${CPU_BASELINE_REQUIRE})\")\n-+ endif()\n-+endforeach()\n-+\n-+foreach(OPT ${CPU_BASELINE})\n-+ if(OPT STREQUAL \"DETECT\" OR OPT STREQUAL \"HOST\" OR OPT STREQUAL \"NATIVE\")\n-+ # nothing\n-+ elseif(NOT \";${CPU_BASELINE_FINAL};\" MATCHES \";${OPT};\")\n-+ message(STATUS \"Optimization ${OPT} is not available, skipped\")\n-+ endif()\n-+endforeach()\n-+\n-+foreach(OPT ${CPU_DISPATCH_REQUIRE})\n-+ if(\";${CPU_DISPATCH_FINAL};\" MATCHES \";${OPT};\")\n-+ # OK\n-+ elseif(\";${CPU_BASELINE_FINAL};\" MATCHES \";${OPT};\")\n-+ message(SEND_ERROR \"Dispatched optimization ${OPT} is in baseline list (CPU_DISPATCH_REQUIRE=${CPU_DISPATCH_REQUIRE})\")\n-+ else()\n-+ message(SEND_ERROR \"Required dispatch optimization is not supported: ${OPT} (CPU_DISPATCH_REQUIRE=${CPU_DISPATCH_REQUIRE})\")\n-+ endif()\n-+endforeach()\n-+\n-+foreach(OPT ${CPU_DISPATCH})\n-+ if(\";${CPU_DISPATCH_FINAL};\" MATCHES \";${OPT};\")\n-+ # OK\n-+ elseif(\";${CPU_BASELINE_FINAL};\" MATCHES \";${OPT};\")\n-+ # OK\n-+ else()\n-+ message(STATUS \"Dispatch optimization ${OPT} is not available, skipped\")\n-+ endif()\n-+endforeach()\n-+\n-+#message(STATUS \"CPU_BASELINE_FINAL=${CPU_BASELINE_FINAL}\")\n-+#message(STATUS \"CPU_DISPATCH_FINAL=${CPU_DISPATCH_FINAL}\")\n-+\n-+#if(CPU_DISPATCH_FINAL AND NOT PYTHON_DEFAULT_EXECUTABLE)\n-+# message(FATAL_ERROR \"Python is required for CPU dispatched optimization support\")\n-+#endif()\n-+\n-+macro(ocv_compiler_optimization_options)\n-+ set(__flags \"${OPENCV_EXTRA_CXX_FLAGS} ${CPU_BASELINE_FLAGS}\")\n-+ if(NOT __flags STREQUAL CACHED_CPU_BASELINE_FLAGS)\n-+ set(CACHED_CPU_BASELINE_FLAGS \"${__flags}\" CACHE INTERNAL \"\" FORCE)\n-+ ocv_clear_vars(HAVE_CPU_BASELINE_FLAGS)\n-+ endif()\n-+ ocv_check_compiler_flag(CXX \"${__flags}\" HAVE_CPU_BASELINE_FLAGS)\n-+ if(NOT HAVE_CPU_BASELINE_FLAGS)\n-+ message(FATAL_ERROR \"Compiler doesn't support baseline optimization flags: ${CPU_BASELINE_FLAGS}\")\n-+ endif()\n-+ add_extra_compiler_option_force(\"${CPU_BASELINE_FLAGS}\")\n-+\n-+ foreach(OPT ${CPU_DISPATCH_FINAL})\n-+ set(__dispatch_flags \"\")\n-+ set(__dispatch_definitions \"\")\n-+ set(__dispatch_opts \"\")\n-+ set(__dispatch_opts_force \"\")\n-+ foreach(OPT2 ${CPU_KNOWN_OPTIMIZATIONS})\n-+ if(NOT CPU_${OPT2}_SUPPORTED)\n-+ #continue()\n-+ else()\n-+ ocv_is_optimization_in_list(__is_from_baseline ${OPT2} ${CPU_BASELINE_FINAL})\n-+ if(NOT __is_from_baseline)\n-+ ocv_is_optimization_in_list(__is_active ${OPT2} ${OPT})\n-+ if(__is_active)\n-+ ocv_append_optimization_flag(__dispatch_flags ${OPT2})\n-+ list(APPEND __dispatch_definitions \"CV_CPU_COMPILE_${OPT2}=1\")\n-+ list(APPEND __dispatch_opts \"${OPT2}\")\n-+ endif()\n-+ ocv_is_optimization_in_force_list(__is_force ${OPT2} ${OPT})\n-+ if(__is_force)\n-+ list(APPEND __dispatch_opts_force \"${OPT2}\")\n-+ endif()\n-+ endif()\n-+ endif()\n-+ endforeach()\n-+ set(__flags \"${OPENCV_EXTRA_CXX_FLAGS} ${__dispatch_flags}\")\n-+ if(NOT __flags STREQUAL CACHED_CPU_DISPATCH_${OPT}_FLAGS)\n-+ set(CACHED_CPU_DISPATCH_${OPT}_FLAGS \"${__flags}\" CACHE INTERNAL \"\" FORCE)\n-+ ocv_clear_vars(HAVE_CPU_DISPATCH_FLAGS_${OPT})\n-+ endif()\n-+ ocv_check_compiler_flag(CXX \"${__flags}\" HAVE_CPU_DISPATCH_FLAGS_${OPT})\n-+ if(NOT HAVE_CPU_DISPATCH_FLAGS_${OPT})\n-+ message(FATAL_ERROR \"Compiler doesn't support optimization flags for ${OPT} dispatch mode: ${__dispatch_flags}\")\n-+ endif()\n-+ set(CPU_DISPATCH_FLAGS_${OPT} \"${__dispatch_flags}\")\n-+ set(CPU_DISPATCH_DEFINITIONS_${OPT} \"${__dispatch_definitions}\")\n-+ set(CPU_DISPATCH_${OPT}_INCLUDED \"${__dispatch_opts}\")\n-+ set(CPU_DISPATCH_${OPT}_FORCED \"${__dispatch_opts_force}\")\n-+ endforeach()\n-+\n-+ if(ENABLE_POWERPC)\n-+ add_extra_compiler_option(\"-mcpu=G3 -mtune=G5\")\n-+ endif()\n-+ if(ARM)\n-+ add_extra_compiler_option(\"-mfp16-format=ieee\")\n-+ endif(ARM)\n-+ if(ENABLE_NEON)\n-+ add_extra_compiler_option(\"-mfpu=neon\")\n-+ endif()\n-+ if(ENABLE_VFPV3 AND NOT ENABLE_NEON)\n-+ add_extra_compiler_option(\"-mfpu=vfpv3\")\n-+ endif()\n-+endmacro()\n-+\n-+macro(ocv_compiler_optimization_options_finalize)\n-+ if(CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64))\n-+ if(NOT APPLE AND CMAKE_SIZEOF_VOID_P EQUAL 4)\n-+ if(OPENCV_EXTRA_CXX_FLAGS MATCHES \"-m(sse2|avx)\")\n-+ add_extra_compiler_option(-mfpmath=sse) # !! important - be on the same wave with x64 compilers\n-+ else()\n-+ add_extra_compiler_option(-mfpmath=387)\n-+ endif()\n-+ endif()\n-+ endif()\n-+\n-+ if(MSVC)\n-+ # Generate Intrinsic Functions\n-+ set(OPENCV_EXTRA_FLAGS \"${OPENCV_EXTRA_FLAGS} /Oi\")\n-+\n-+ if((X86 OR X86_64) AND CMAKE_SIZEOF_VOID_P EQUAL 4 AND \";${CPU_BASELINE_FINAL};\" MATCHES \";SSE;\")\n-+ set(OPENCV_EXTRA_FLAGS \"${OPENCV_EXTRA_FLAGS} /fp:fast\") # !! important - be on the same wave with x64 compilers\n-+ endif()\n-+ endif(MSVC)\n-+endmacro()\n-+\n-+macro(ocv_compiler_optimization_process_sources SOURCES_VAR_NAME LIBS_VAR_NAME TARGET_BASE_NAME)\n-+ set(__result \"\")\n-+ set(__result_libs \"\")\n-+ foreach(OPT ${CPU_DISPATCH_FINAL})\n-+ set(__result_${OPT} \"\")\n-+ endforeach()\n-+ foreach(fname ${${SOURCES_VAR_NAME}})\n-+ string(TOLOWER \"${fname}\" fname_LOWER)\n-+ if(fname_LOWER MATCHES \"[.]opt_.*[.]cpp$\")\n-+ if(CV_DISABLE_OPTIMIZATION OR NOT CV_ENABLE_INTRINSICS)\n-+ message(STATUS \"Excluding from source files list: ${fname}\")\n-+ #continue()\n-+ else()\n-+ set(__opt_found 0)\n-+ foreach(OPT ${CPU_BASELINE_FINAL})\n-+ string(TOLOWER \"${OPT}\" OPT_LOWER)\n-+ if(fname_LOWER MATCHES \"_${OPT_LOWER}[.]cpp$\")\n-+#message(\"${fname} BASELINE-${OPT}\")\n-+ set(__opt_found 1)\n-+ list(APPEND __result \"${fname}\")\n-+ break()\n-+ endif()\n-+ endforeach()\n-+ foreach(OPT ${CPU_DISPATCH_FINAL})\n-+ foreach(OPT2 ${CPU_DISPATCH_${OPT}_FORCED})\n-+ string(TOLOWER \"${OPT2}\" OPT2_LOWER)\n-+ if(fname_LOWER MATCHES \"_${OPT2_LOWER}[.]cpp$\")\n-+ list(APPEND __result_${OPT} \"${fname}\")\n-+ math(EXPR CPU_${OPT}_USAGE_COUNT \"${CPU_${OPT}_USAGE_COUNT}+1\")\n-+ set(CPU_${OPT}_USAGE_COUNT \"${CPU_${OPT}_USAGE_COUNT}\" CACHE INTERNAL \"\" FORCE)\n-+#message(\"${fname} ${OPT}\")\n-+#message(\" ${CPU_DISPATCH_${OPT}_INCLUDED}\")\n-+#message(\" ${CPU_DISPATCH_DEFINITIONS_${OPT}}\")\n-+#message(\" ${CPU_DISPATCH_FLAGS_${OPT}}\")\n-+ set(__opt_found 1)\n-+ break()\n-+ endif()\n-+ endforeach()\n-+ if(__opt_found)\n-+ set(__opt_found 1)\n-+ break()\n-+ endif()\n-+ endforeach()\n-+ if(NOT __opt_found)\n-+ message(STATUS \"Excluding from source files list: ${fname}\")\n-+ endif()\n-+ endif()\n-+ else()\n-+ list(APPEND __result \"${fname}\")\n-+ endif()\n-+ endforeach()\n-+\n-+ foreach(OPT ${CPU_DISPATCH_FINAL})\n-+ if(__result_${OPT})\n-+#message(\"${OPT}: ${__result_${OPT}}\")\n-+ if(CMAKE_GENERATOR MATCHES \"^Visual\")\n-+ # extra flags are added before common flags, so switching between optimizations doesn't work correctly\n-+ # Also CMAKE_CXX_FLAGS doesn't work (it is directory-based, so add_subdirectory is required)\n-+ add_library(${TARGET_BASE_NAME}_${OPT} OBJECT ${__result_${OPT}})\n-+ ocv_append_dependant_targets(${TARGET_BASE_NAME} ${TARGET_BASE_NAME}_${OPT})\n-+ set_target_properties(${TARGET_BASE_NAME}_${OPT} PROPERTIES COMPILE_DEFINITIONS \"${CPU_DISPATCH_DEFINITIONS_${OPT}}\")\n-+ set_target_properties(${TARGET_BASE_NAME}_${OPT} PROPERTIES COMPILE_FLAGS \"${CPU_DISPATCH_FLAGS_${OPT}}\")\n-+ #list(APPEND __result_libs ${TARGET_BASE_NAME}_${OPT})\n-+ list(APPEND __result \"$<TARGET_OBJECTS:${TARGET_BASE_NAME}_${OPT}>\")\n-+ else()\n-+ foreach(fname ${__result_${OPT}})\n-+ set_source_files_properties(\"${fname}\" PROPERTIES COMPILE_DEFINITIONS \"${CPU_DISPATCH_DEFINITIONS_${OPT}}\")\n-+ set_source_files_properties(\"${fname}\" PROPERTIES COMPILE_FLAGS \"${CPU_DISPATCH_FLAGS_${OPT}}\")\n-+ endforeach()\n-+ list(APPEND __result ${__result_${OPT}})\n-+ endif()\n-+ endif()\n-+ endforeach()\n-+ set(${SOURCES_VAR_NAME} \"${__result}\")\n-+ list(APPEND ${LIBS_VAR_NAME} ${__result_libs})\n-+endmacro()\n-+\n-+macro(ocv_compiler_optimization_fill_cpu_config)\n-+ set(OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE \"\")\n-+ foreach(OPT ${CPU_BASELINE_FINAL})\n-+ set(OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE \"${OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE}\n-+#define CV_CPU_COMPILE_${OPT} 1\n-+#define CV_CPU_BASELINE_COMPILE_${OPT} 1\n-+\")\n-+ endforeach()\n-+\n-+ set(OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE \"${OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE}\n-+#define CV_CPU_BASELINE_FEATURES 0 \\\\\")\n-+ foreach(OPT ${CPU_BASELINE_FINAL})\n-+ if(NOT DEFINED CPU_${OPT}_FEATURE_ALIAS OR NOT \"x${CPU_${OPT}_FEATURE_ALIAS}\" STREQUAL \"x\")\n-+ set(OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE \"${OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE}\n-+ , CV_CPU_${OPT} \\\\\")\n-+ endif()\n-+ endforeach()\n-+ set(OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE \"${OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE}\\n\")\n-+\n-+ set(__dispatch_modes \"\")\n-+ foreach(OPT ${CPU_DISPATCH_FINAL})\n-+ list(APPEND __dispatch_modes ${CPU_DISPATCH_${OPT}_FORCE} ${OPT})\n-+ endforeach()\n-+ list(REMOVE_DUPLICATES __dispatch_modes)\n-+ set(OPENCV_CPU_DISPATCH_DEFINITIONS_CONFIGMAKE \"\")\n-+ foreach(OPT ${__dispatch_modes})\n-+ set(OPENCV_CPU_DISPATCH_DEFINITIONS_CONFIGMAKE \"${OPENCV_CPU_DISPATCH_DEFINITIONS_CONFIGMAKE}\n-+#define CV_CPU_DISPATCH_COMPILE_${OPT} 1\")\n-+ endforeach()\n-+\n-+ set(OPENCV_CPU_CONTROL_DEFINITIONS_CONFIGMAKE \"// AUTOGENERATED, DO NOT EDIT\\n\")\n-+ foreach(OPT ${CPU_ALL_OPTIMIZATIONS})\n-+ if(NOT DEFINED CPU_${OPT}_FEATURE_ALIAS OR NOT \"x${CPU_${OPT}_FEATURE_ALIAS}\" STREQUAL \"x\")\n-+ set(OPENCV_CPU_CONTROL_DEFINITIONS_CONFIGMAKE \"${OPENCV_CPU_CONTROL_DEFINITIONS_CONFIGMAKE}\n-+#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_${OPT}\n-+# define CV_CPU_HAS_SUPPORT_${OPT} 1\n-+# define CV_CPU_CALL_${OPT}(...) return __VA_ARGS__\n-+#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_${OPT}\n-+# define CV_CPU_HAS_SUPPORT_${OPT} (cv::checkHardwareSupport(CV_CPU_${OPT}))\n-+# define CV_CPU_CALL_${OPT}(...) if (CV_CPU_HAS_SUPPORT_${OPT}) return __VA_ARGS__\n-+#else\n-+# define CV_CPU_HAS_SUPPORT_${OPT} 0\n-+# define CV_CPU_CALL_${OPT}(...)\n-+#endif\n-+\")\n-+ endif()\n-+ endforeach()\n-+\n-+ set(__file \"${CMAKE_SOURCE_DIR}/modules/core/include/opencv2/core/cv_cpu_helper.h\")\n-+ if(EXISTS \"${__file}\")\n-+ file(READ \"${__file}\" __content)\n-+ endif()\n-+ if(__content STREQUAL OPENCV_CPU_CONTROL_DEFINITIONS_CONFIGMAKE)\n-+ #message(STATUS \"${__file} contains same content\")\n-+ else()\n-+ file(WRITE \"${__file}\" \"${OPENCV_CPU_CONTROL_DEFINITIONS_CONFIGMAKE}\")\n-+ message(WARNING \"${__file} is updated\")\n-+ endif()\n-+endmacro()\n-+\n-+if(CV_DISABLE_OPTIMIZATION OR CV_ICC)\n-+ ocv_update(CV_ENABLE_UNROLLED 0)\n-+else()\n-+ ocv_update(CV_ENABLE_UNROLLED 1)\n-+endif()\n-diff --git a/cmake/OpenCVCompilerOptions.cmake b/cmake/OpenCVCompilerOptions.cmake\n-index 5bb0479..0eb68b6 100644\n---- a/cmake/OpenCVCompilerOptions.cmake\n-+++ b/cmake/OpenCVCompilerOptions.cmake\n-@@ -31,24 +31,21 @@ endif()\n- if(MINGW OR (X86 AND UNIX AND NOT APPLE))\n- # mingw compiler is known to produce unstable SSE code with -O3 hence we are trying to use -O2 instead\n- if(CMAKE_COMPILER_IS_GNUCXX)\n-- foreach(flags CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_DEBUG)\n-- string(REPLACE \"-O3\" \"-O2\" ${flags} \"${${flags}}\")\n-- endforeach()\n-- endif()\n--\n-- if(CMAKE_COMPILER_IS_GNUCC)\n-- foreach(flags CMAKE_C_FLAGS CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_DEBUG)\n-+ foreach(flags\n-+ CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_DEBUG\n-+ CMAKE_C_FLAGS CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_DEBUG)\n- string(REPLACE \"-O3\" \"-O2\" ${flags} \"${${flags}}\")\n- endforeach()\n- endif()\n- endif()\n- \n- if(MSVC)\n-- string(REGEX REPLACE \"^ *| * $\" \"\" CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS}\")\n-- string(REGEX REPLACE \"^ *| * $\" \"\" CMAKE_CXX_FLAGS_INIT \"${CMAKE_CXX_FLAGS_INIT}\")\n-+ string(STRIP \"${CMAKE_CXX_FLAGS}\" CMAKE_CXX_FLAGS)\n-+ string(STRIP \"${CMAKE_CXX_FLAGS_INIT}\" CMAKE_CXX_FLAGS_INIT)\n- if(CMAKE_CXX_FLAGS STREQUAL CMAKE_CXX_FLAGS_INIT)\n- # override cmake default exception handling option\n-- string(REPLACE \"/EHsc\" \"/EHa\" CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS}\")\n-+ string(REPLACE \"/EHsc\" \"\" CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS}\")\n-+ set(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} /EHa\")\n- set(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS}\" CACHE STRING \"Flags used by the compiler during all build types.\" FORCE)\n- endif()\n- endif()\n-@@ -63,9 +60,6 @@ set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE \"\")\n- set(OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG \"\")\n- \n- macro(add_extra_compiler_option option)\n-- if(CMAKE_BUILD_TYPE)\n-- set(CMAKE_TRY_COMPILE_CONFIGURATION ${CMAKE_BUILD_TYPE})\n-- endif()\n- ocv_check_flag_support(CXX \"${option}\" _varname \"${OPENCV_EXTRA_CXX_FLAGS} ${ARGN}\")\n- if(${_varname})\n- set(OPENCV_EXTRA_CXX_FLAGS \"${OPENCV_EXTRA_CXX_FLAGS} ${option}\")\n-@@ -77,6 +71,12 @@ macro(add_extra_compiler_option option)\n- endif()\n- endmacro()\n- \n-+macro(add_extra_compiler_option_force option)\n-+ set(OPENCV_EXTRA_CXX_FLAGS \"${OPENCV_EXTRA_CXX_FLAGS} ${option}\")\n-+ set(OPENCV_EXTRA_C_FLAGS \"${OPENCV_EXTRA_C_FLAGS} ${option}\")\n-+endmacro()\n-+\n-+\n- # Gets environment variable and puts its value to the corresponding preprocessor definition\n- # Useful for WINRT that has no access to environment variables\n- macro(add_env_definitions option)\n-@@ -102,7 +102,11 @@ if(MINGW)\n- endif()\n- \n- if(CV_ICC AND NOT ENABLE_FAST_MATH)\n-- add_extra_compiler_option(\"-fp-model precise\")\n-+ if(MSVC)\n-+ add_extra_compiler_option(\"/fp:precise\")\n-+ else()\n-+ add_extra_compiler_option(\"-fp-model precise\")\n-+ endif()\n- endif()\n- \n- if(CMAKE_COMPILER_IS_GNUCXX)\n-@@ -141,7 +145,7 @@ if(CMAKE_COMPILER_IS_GNUCXX)\n- endif()\n- \n- # We need pthread's\n-- if(UNIX AND NOT ANDROID AND NOT (APPLE AND CMAKE_COMPILER_IS_CLANGCXX))\n-+ if(UNIX AND NOT ANDROID AND NOT (APPLE AND CMAKE_COMPILER_IS_CLANGCXX)) # TODO\n- add_extra_compiler_option(-pthread)\n- endif()\n- \n-@@ -170,83 +174,6 @@ if(CMAKE_COMPILER_IS_GNUCXX)\n- if(ENABLE_FAST_MATH)\n- add_extra_compiler_option(-ffast-math)\n- endif()\n-- if(ENABLE_POWERPC)\n-- add_extra_compiler_option(\"-mcpu=G3 -mtune=G5\")\n-- endif()\n-- if(ENABLE_SSE)\n-- add_extra_compiler_option(-msse)\n-- endif()\n-- if(ENABLE_SSE2)\n-- add_extra_compiler_option(-msse2)\n-- elseif(X86 OR X86_64)\n-- add_extra_compiler_option(-mno-sse2)\n-- endif()\n-- if(ARM)\n-- add_extra_compiler_option(\"-mfp16-format=ieee\")\n-- endif(ARM)\n-- if(ENABLE_NEON)\n-- add_extra_compiler_option(\"-mfpu=neon\")\n-- endif()\n-- if(ENABLE_VFPV3 AND NOT ENABLE_NEON)\n-- add_extra_compiler_option(\"-mfpu=vfpv3\")\n-- endif()\n--\n-- # SSE3 and further should be disabled under MingW because it generates compiler errors\n-- if(NOT MINGW)\n-- if(ENABLE_AVX)\n-- add_extra_compiler_option(-mavx)\n-- elseif(X86 OR X86_64)\n-- add_extra_compiler_option(-mno-avx)\n-- endif()\n-- if(ENABLE_AVX2)\n-- add_extra_compiler_option(-mavx2)\n--\n-- if(ENABLE_FMA3)\n-- add_extra_compiler_option(-mfma)\n-- endif()\n-- endif()\n--\n-- # GCC depresses SSEx instructions when -mavx is used. Instead, it generates new AVX instructions or AVX equivalence for all SSEx instructions when needed.\n-- if(NOT OPENCV_EXTRA_CXX_FLAGS MATCHES \"-mavx\")\n-- if(ENABLE_SSE3)\n-- add_extra_compiler_option(-msse3)\n-- elseif(X86 OR X86_64)\n-- add_extra_compiler_option(-mno-sse3)\n-- endif()\n--\n-- if(ENABLE_SSSE3)\n-- add_extra_compiler_option(-mssse3)\n-- elseif(X86 OR X86_64)\n-- add_extra_compiler_option(-mno-ssse3)\n-- endif()\n--\n-- if(ENABLE_SSE41)\n-- add_extra_compiler_option(-msse4.1)\n-- elseif(X86 OR X86_64)\n-- add_extra_compiler_option(-mno-sse4.1)\n-- endif()\n--\n-- if(ENABLE_SSE42)\n-- add_extra_compiler_option(-msse4.2)\n-- elseif(X86 OR X86_64)\n-- add_extra_compiler_option(-mno-sse4.2)\n-- endif()\n--\n-- if(ENABLE_POPCNT)\n-- add_extra_compiler_option(-mpopcnt)\n-- endif()\n-- endif()\n-- endif(NOT MINGW)\n--\n-- if(X86 OR X86_64)\n-- if(NOT APPLE AND CMAKE_SIZEOF_VOID_P EQUAL 4)\n-- if(OPENCV_EXTRA_CXX_FLAGS MATCHES \"-m(sse2|avx)\")\n-- add_extra_compiler_option(-mfpmath=sse)# !! important - be on the same wave with x64 compilers\n-- else()\n-- add_extra_compiler_option(-mfpmath=387)\n-- endif()\n-- endif()\n-- endif()\n- \n- # Profiling?\n- if(ENABLE_PROFILING)\n-@@ -257,7 +184,7 @@ if(CMAKE_COMPILER_IS_GNUCXX)\n- string(REPLACE \"-fomit-frame-pointer\" \"\" ${flags} \"${${flags}}\")\n- string(REPLACE \"-ffunction-sections\" \"\" ${flags} \"${${flags}}\")\n- endforeach()\n-- elseif(NOT APPLE AND NOT ANDROID)\n-+ elseif(NOT ((IOS OR ANDROID) AND NOT BUILD_SHARED_LIBS))\n- # Remove unreferenced functions: function level linking\n- add_extra_compiler_option(-ffunction-sections)\n- endif()\n-@@ -296,41 +223,6 @@ if(MSVC)\n- set(OPENCV_EXTRA_FLAGS_RELEASE \"${OPENCV_EXTRA_FLAGS_RELEASE} /Zi\")\n- endif()\n- \n-- if(ENABLE_AVX2 AND NOT MSVC_VERSION LESS 1800)\n-- set(OPENCV_EXTRA_FLAGS \"${OPENCV_EXTRA_FLAGS} /arch:AVX2\")\n-- endif()\n-- if(ENABLE_AVX AND NOT MSVC_VERSION LESS 1600 AND NOT OPENCV_EXTRA_FLAGS MATCHES \"/arch:\")\n-- set(OPENCV_EXTRA_FLAGS \"${OPENCV_EXTRA_FLAGS} /arch:AVX\")\n-- endif()\n--\n-- if(ENABLE_SSE4_1 AND CV_ICC AND NOT OPENCV_EXTRA_FLAGS MATCHES \"/arch:\")\n-- set(OPENCV_EXTRA_FLAGS \"${OPENCV_EXTRA_FLAGS} /arch:SSE4.1\")\n-- endif()\n--\n-- if(ENABLE_SSE3 AND CV_ICC AND NOT OPENCV_EXTRA_FLAGS MATCHES \"/arch:\")\n-- set(OPENCV_EXTRA_FLAGS \"${OPENCV_EXTRA_FLAGS} /arch:SSE3\")\n-- endif()\n--\n-- if(NOT MSVC64)\n-- # 64-bit MSVC compiler uses SSE/SSE2 by default\n-- if(ENABLE_SSE2 AND NOT OPENCV_EXTRA_FLAGS MATCHES \"/arch:\")\n-- set(OPENCV_EXTRA_FLAGS \"${OPENCV_EXTRA_FLAGS} /arch:SSE2\")\n-- endif()\n-- if(ENABLE_SSE AND NOT OPENCV_EXTRA_FLAGS MATCHES \"/arch:\")\n-- set(OPENCV_EXTRA_FLAGS \"${OPENCV_EXTRA_FLAGS} /arch:SSE\")\n-- endif()\n-- endif()\n--\n-- if(ENABLE_SSE OR ENABLE_SSE2 OR ENABLE_SSE3 OR ENABLE_SSE4_1 OR ENABLE_AVX OR ENABLE_AVX2)\n-- set(OPENCV_EXTRA_FLAGS \"${OPENCV_EXTRA_FLAGS} /Oi\")\n-- endif()\n--\n-- if(X86 OR X86_64)\n-- if(CMAKE_SIZEOF_VOID_P EQUAL 4 AND ENABLE_SSE2)\n-- set(OPENCV_EXTRA_FLAGS \"${OPENCV_EXTRA_FLAGS} /fp:fast\") # !! important - be on the same wave with x64 compilers\n-- endif()\n-- endif()\n--\n- if(OPENCV_WARNINGS_ARE_ERRORS)\n- set(OPENCV_EXTRA_FLAGS \"${OPENCV_EXTRA_FLAGS} /WX\")\n- endif()\n-@@ -353,6 +245,16 @@ if(NOT BUILD_SHARED_LIBS AND CMAKE_COMPILER_IS_GNUCXX AND NOT ANDROID)\n- set(OPENCV_EXTRA_FLAGS \"-fPIC ${OPENCV_EXTRA_FLAGS}\")\n- endif()\n- \n-+include(cmake/OpenCVCompilerOptimizations.cmake)\n-+\n-+if(COMMAND ocv_compiler_optimization_options)\n-+ ocv_compiler_optimization_options()\n-+endif()\n-+\n-+if(COMMAND ocv_compiler_optimization_options_finalize)\n-+ ocv_compiler_optimization_options_finalize()\n-+endif()\n-+\n- # Add user supplied extra options (optimization, etc...)\n- # ==========================================================\n- set(OPENCV_EXTRA_FLAGS \"${OPENCV_EXTRA_FLAGS}\" CACHE INTERNAL \"Extra compiler options\")\n-@@ -370,6 +272,7 @@ if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_OPENCV_GCC_VERSION_NUM GREATER 399)\n- add_extra_compiler_option(-fvisibility-inlines-hidden)\n- endif()\n- \n-+# TODO !!!!!\n- if(NOT OPENCV_FP16_DISABLE AND NOT IOS)\n- if(ARM AND ENABLE_NEON)\n- set(FP16_OPTION \"-mfpu=neon-fp16\")\n-@@ -378,7 +281,7 @@ if(NOT OPENCV_FP16_DISABLE AND NOT IOS)\n- endif()\n- try_compile(__VALID_FP16\n- \"${OpenCV_BINARY_DIR}\"\n-- \"${OpenCV_SOURCE_DIR}/cmake/checks/fp16.cpp\"\n-+ \"${OpenCV_SOURCE_DIR}/cmake/checks/cpu_fp16.cpp\"\n- COMPILE_DEFINITIONS \"-DCHECK_FP16\" \"${FP16_OPTION}\"\n- OUTPUT_VARIABLE TRY_OUT\n- )\n-diff --git a/cmake/OpenCVGenHeaders.cmake b/cmake/OpenCVGenHeaders.cmake\n-index 2988979..477b910 100644\n---- a/cmake/OpenCVGenHeaders.cmake\n-+++ b/cmake/OpenCVGenHeaders.cmake\n-@@ -3,6 +3,10 @@ configure_file(\"${OpenCV_SOURCE_DIR}/cmake/templates/cvconfig.h.in\" \"${OPENCV_CO\n- configure_file(\"${OpenCV_SOURCE_DIR}/cmake/templates/cvconfig.h.in\" \"${OPENCV_CONFIG_FILE_INCLUDE_DIR}/opencv2/cvconfig.h\")\n- install(FILES \"${OPENCV_CONFIG_FILE_INCLUDE_DIR}/cvconfig.h\" DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2 COMPONENT dev)\n- \n-+# platform-specific config file\n-+ocv_compiler_optimization_fill_cpu_config()\n-+configure_file(\"${OpenCV_SOURCE_DIR}/cmake/templates/cv_cpu_config.h.in\" \"${OPENCV_CONFIG_FILE_INCLUDE_DIR}/cv_cpu_config.h\")\n-+\n- # ----------------------------------------------------------------------------\n- # opencv_modules.hpp based on actual modules list\n- # ----------------------------------------------------------------------------\n-diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake\n-index 742a287..3e98bf5 100644\n---- a/cmake/OpenCVModule.cmake\n-+++ b/cmake/OpenCVModule.cmake\n-@@ -65,6 +65,7 @@ foreach(mod ${OPENCV_MODULES_BUILD} ${OPENCV_MODULES_DISABLED_USER} ${OPENCV_MOD\n- unset(OPENCV_MODULE_${mod}_PRIVATE_OPT_DEPS CACHE)\n- unset(OPENCV_MODULE_${mod}_LINK_DEPS CACHE)\n- unset(OPENCV_MODULE_${mod}_WRAPPERS CACHE)\n-+ unset(OPENCV_DEPENDANT_TARGETS_${mod} CACHE)\n- endforeach()\n- \n- # clean modules info which needs to be recalculated\n-@@ -641,6 +642,8 @@ macro(ocv_set_module_sources)\n- # use full paths for module to be independent from the module location\n- ocv_convert_to_full_paths(OPENCV_MODULE_${the_module}_HEADERS)\n- \n-+ ocv_compiler_optimization_process_sources(OPENCV_MODULE_${the_module}_SOURCES OPENCV_MODULE_${the_module}_DEPS_EXT ${the_module})\n-+\n- set(OPENCV_MODULE_${the_module}_HEADERS ${OPENCV_MODULE_${the_module}_HEADERS} CACHE INTERNAL \"List of header files for ${the_module}\")\n- set(OPENCV_MODULE_${the_module}_SOURCES ${OPENCV_MODULE_${the_module}_SOURCES} CACHE INTERNAL \"List of source files for ${the_module}\")\n- endmacro()\n-diff --git a/cmake/OpenCVPCHSupport.cmake b/cmake/OpenCVPCHSupport.cmake\n-index 90437cb..45968e7 100644\n---- a/cmake/OpenCVPCHSupport.cmake\n-+++ b/cmake/OpenCVPCHSupport.cmake\n-@@ -326,7 +326,10 @@ MACRO(ADD_NATIVE_PRECOMPILED_HEADER _targetName _input)\n- \n- get_target_property(_sources ${_targetName} SOURCES)\n- foreach(src ${_sources})\n-- if(NOT \"${src}\" MATCHES \"\\\\.mm$\")\n-+ if(NOT \"${src}\" MATCHES \"\\\\.mm$\"\n-+ AND NOT \"${src}\" MATCHES \"\\\\.h$\" AND NOT \"${src}\" MATCHES \"\\\\.hpp$\" # header files\n-+ AND NOT \"${src}\" MATCHES \"^\\$\" # CMake generator expressions\n-+ )\n- get_source_file_property(oldProps \"${src}\" COMPILE_FLAGS)\n- if(NOT oldProps)\n- set(newProperties \"/Yu\\\"${_input}\\\" /FI\\\"${_input}\\\"\")\n-diff --git a/cmake/OpenCVUtils.cmake b/cmake/OpenCVUtils.cmake\n-index cdf257d..8a5ee28 100644\n---- a/cmake/OpenCVUtils.cmake\n-+++ b/cmake/OpenCVUtils.cmake\n-@@ -37,7 +37,11 @@ endmacro()\n- \n- macro(ocv_update VAR)\n- if(NOT DEFINED ${VAR})\n-- set(${VAR} ${ARGN})\n-+ if(\"x${ARGN}\" STREQUAL \"x\")\n-+ set(${VAR} \"\")\n-+ else()\n-+ set(${VAR} ${ARGN})\n-+ endif()\n- else()\n- #ocv_debug_message(\"Preserve old value for ${VAR}: ${${VAR}}\")\n- endif()\n-@@ -151,8 +155,15 @@ function(ocv_append_target_property target prop)\n- endif()\n- endfunction()\n- \n-+function(ocv_append_dependant_targets target)\n-+ #ocv_debug_message(\"ocv_append_dependant_targets(${target} ${ARGN})\")\n-+ _ocv_fix_target(target)\n-+ set(OPENCV_DEPENDANT_TARGETS_${target} \"${OPENCV_DEPENDANT_TARGETS_${target}};${ARGN}\" CACHE INTERNAL \"\" FORCE)\n-+endfunction()\n-+\n- # adds include directories in such way that directories from the OpenCV source tree go first\n- function(ocv_target_include_directories target)\n-+ #ocv_debug_message(\"ocv_target_include_directories(${target} ${ARGN})\")\n- _ocv_fix_target(target)\n- set(__params \"\")\n- if(CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS \"6.0\" AND\n-@@ -173,6 +184,11 @@ function(ocv_target_include_directories target)\n- else()\n- if(TARGET ${target})\n- target_include_directories(${target} PRIVATE ${__params})\n-+ if(OPENCV_DEPENDANT_TARGETS_${target})\n-+ foreach(t ${OPENCV_DEPENDANT_TARGETS_${target}})\n-+ target_include_directories(${t} PRIVATE ${__params})\n-+ endforeach()\n-+ endif()\n- else()\n- set(__new_inc \"${OCV_TARGET_INCLUDE_DIRS_${target}};${__params}\")\n- set(OCV_TARGET_INCLUDE_DIRS_${target} \"${__new_inc}\" CACHE INTERNAL \"\")\n-@@ -205,8 +221,11 @@ set(OCV_COMPILER_FAIL_REGEX\n- )\n- \n- MACRO(ocv_check_compiler_flag LANG FLAG RESULT)\n-+ set(_fname \"${ARGN}\")\n- if(NOT DEFINED ${RESULT})\n-- if(\"_${LANG}_\" MATCHES \"_CXX_\")\n-+ if(_fname)\n-+ # nothing\n-+ elseif(\"_${LANG}_\" MATCHES \"_CXX_\")\n- set(_fname \"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.cxx\")\n- if(\"${CMAKE_CXX_FLAGS} ${FLAG} \" MATCHES \"-Werror \" OR \"${CMAKE_CXX_FLAGS} ${FLAG} \" MATCHES \"-Werror=unknown-pragmas \")\n- FILE(WRITE \"${_fname}\" \"int main() { return 0; }\\n\")\n-@@ -231,7 +250,13 @@ MACRO(ocv_check_compiler_flag LANG FLAG RESULT)\n- unset(_fname)\n- endif()\n- if(_fname)\n-- MESSAGE(STATUS \"Performing Test ${RESULT}\")\n-+ if(NOT \"x${ARGN}\" STREQUAL \"x\")\n-+ file(RELATIVE_PATH __msg \"${CMAKE_SOURCE_DIR}\" \"${ARGN}\")\n-+ set(__msg \" (check file: ${__msg})\")\n-+ else()\n-+ set(__msg \"\")\n-+ endif()\n-+ MESSAGE(STATUS \"Performing Test ${RESULT}${__msg}\")\n- TRY_COMPILE(${RESULT}\n- \"${CMAKE_BINARY_DIR}\"\n- \"${_fname}\"\n-@@ -278,7 +303,11 @@ MACRO(ocv_check_compiler_flag LANG FLAG RESULT)\n- endif()\n- ENDMACRO()\n- \n--macro(ocv_check_flag_support lang flag varname)\n-+macro(ocv_check_flag_support lang flag varname base_options)\n-+ if(CMAKE_BUILD_TYPE)\n-+ set(CMAKE_TRY_COMPILE_CONFIGURATION ${CMAKE_BUILD_TYPE})\n-+ endif()\n-+\n- if(\"_${lang}_\" MATCHES \"_CXX_\")\n- set(_lang CXX)\n- elseif(\"_${lang}_\" MATCHES \"_C_\")\n-@@ -293,7 +322,7 @@ macro(ocv_check_flag_support lang flag varname)\n- string(REGEX REPLACE \"^(/|-)\" \"HAVE_${_lang}_\" ${varname} \"${${varname}}\")\n- string(REGEX REPLACE \" -|-|=| |\\\\.\" \"_\" ${varname} \"${${varname}}\")\n- \n-- ocv_check_compiler_flag(\"${_lang}\" \"${ARGN} ${flag}\" ${${varname}})\n-+ ocv_check_compiler_flag(\"${_lang}\" \"${base_options} ${flag}\" ${${varname}} ${ARGN})\n- endmacro()\n- \n- # turns off warnings\n-@@ -327,7 +356,7 @@ macro(ocv_warnings_disable)\n- string(REPLACE \"${warning}\" \"\" ${var} \"${${var}}\")\n- string(REPLACE \"-W\" \"-Wno-\" warning \"${warning}\")\n- endif()\n-- ocv_check_flag_support(${var} \"${warning}\" _varname)\n-+ ocv_check_flag_support(${var} \"${warning}\" _varname \"\")\n- if(${_varname})\n- set(${var} \"${${var}} ${warning}\")\n- endif()\n-@@ -342,7 +371,7 @@ macro(ocv_warnings_disable)\n- else()\n- string(REPLACE \"-wd\" \"-Qwd\" warning \"${warning}\")\n- endif()\n-- ocv_check_flag_support(${var} \"${warning}\" _varname)\n-+ ocv_check_flag_support(${var} \"${warning}\" _varname \"\")\n- if(${_varname})\n- set(${var} \"${${var}} ${warning}\")\n- endif()\n-@@ -357,7 +386,7 @@ macro(ocv_warnings_disable)\n- endmacro()\n- \n- macro(add_apple_compiler_options the_module)\n-- ocv_check_flag_support(OBJCXX \"-fobjc-exceptions\" HAVE_OBJC_EXCEPTIONS)\n-+ ocv_check_flag_support(OBJCXX \"-fobjc-exceptions\" HAVE_OBJC_EXCEPTIONS \"\")\n- if(HAVE_OBJC_EXCEPTIONS)\n- foreach(source ${OPENCV_MODULE_${the_module}_SOURCES})\n- if(\"${source}\" MATCHES \"\\\\.mm$\")\n-@@ -892,6 +921,11 @@ function(_ocv_append_target_includes target)\n- if (TARGET ${target}_object)\n- target_include_directories(${target}_object PRIVATE ${OCV_TARGET_INCLUDE_DIRS_${target}})\n- endif()\n-+ if(OPENCV_DEPENDANT_TARGETS_${target})\n-+ foreach(t ${OPENCV_DEPENDANT_TARGETS_${target}})\n-+ target_include_directories(${t} PRIVATE ${OCV_TARGET_INCLUDE_DIRS_${target}})\n-+ endforeach()\n-+ endif()\n- unset(OCV_TARGET_INCLUDE_DIRS_${target} CACHE)\n- endif()\n- endfunction()\n-diff --git a/cmake/checks/cpu_avx.cpp b/cmake/checks/cpu_avx.cpp\n-new file mode 100644\n-index 0000000..05536f4\n---- /dev/null\n-+++ b/cmake/checks/cpu_avx.cpp\n-@@ -0,0 +1,9 @@\n-+#if !defined __AVX__ // MSVC supports this flag since MSVS 2013\n-+#error \"__AVX__ define is missing\"\n-+#endif\n-+#include <immintrin.h>\n-+void test()\n-+{\n-+ __m256 a = _mm256_set1_ps(0.0f);\n-+}\n-+int main() { return 0; }\n-diff --git a/cmake/checks/cpu_avx2.cpp b/cmake/checks/cpu_avx2.cpp\n-new file mode 100644\n-index 0000000..3ab1143\n---- /dev/null\n-+++ b/cmake/checks/cpu_avx2.cpp\n-@@ -0,0 +1,10 @@\n-+#if !defined __AVX2__ // MSVC supports this flag since MSVS 2013\n-+#error \"__AVX2__ define is missing\"\n-+#endif\n-+#include <immintrin.h>\n-+void test()\n-+{\n-+ int data[8] = {0,0,0,0, 0,0,0,0};\n-+ __m256i a = _mm256_loadu_si256((const __m256i *)data);\n-+}\n-+int main() { return 0; }\n-diff --git a/cmake/checks/cpu_avx512.cpp b/cmake/checks/cpu_avx512.cpp\n-new file mode 100644\n-index 0000000..d0898ab\n---- /dev/null\n-+++ b/cmake/checks/cpu_avx512.cpp\n-@@ -0,0 +1,10 @@\n-+#if defined __AVX512__ || defined __AVX512F__\n-+#include <immintrin.h>\n-+void test()\n-+{\n-+ __m512i zmm = _mm512_setzero_si512();\n-+}\n-+#else\n-+#error \"AVX512 is not supported\"\n-+#endif\n-+int main() { return 0; }\n-diff --git a/cmake/checks/cpu_fp16.cpp b/cmake/checks/cpu_fp16.cpp\n-new file mode 100644\n-index 0000000..6951f1c\n---- /dev/null\n-+++ b/cmake/checks/cpu_fp16.cpp\n-@@ -0,0 +1,33 @@\n-+#include <stdio.h>\n-+\n-+#if defined __F16C__ || (defined _MSC_VER && _MSC_VER >= 1700) || (defined __INTEL_COMPILER && defined __AVX__)\n-+#include <immintrin.h>\n-+int test()\n-+{\n-+ const float src[] = { 0.0f, 0.0f, 0.0f, 0.0f };\n-+ short dst[8];\n-+ __m128 v_src = _mm_load_ps(src);\n-+ __m128i v_dst = _mm_cvtps_ph(v_src, 0);\n-+ _mm_storel_epi64((__m128i*)dst, v_dst);\n-+ return (int)dst[0];\n-+}\n-+#elif defined __GNUC__ && (defined __arm__ || defined __aarch64__)\n-+#include \"arm_neon.h\"\n-+int test()\n-+{\n-+ const float src[] = { 0.0f, 0.0f, 0.0f, 0.0f };\n-+ short dst[8];\n-+ float32x4_t v_src = *(float32x4_t*)src;\n-+ float16x4_t v_dst = vcvt_f16_f32(v_src);\n-+ *(float16x4_t*)dst = v_dst;\n-+ return (int)dst[0];\n-+}\n-+#else\n-+#error \"FP16 is not supported\"\n-+#endif\n-+\n-+int main()\n-+{\n-+ printf(\"%d\\n\", test());\n-+ return 0;\n-+}\n-diff --git a/cmake/checks/cpu_popcnt.cpp b/cmake/checks/cpu_popcnt.cpp\n-new file mode 100644\n-index 0000000..f55c9f3\n---- /dev/null\n-+++ b/cmake/checks/cpu_popcnt.cpp\n-@@ -0,0 +1,8 @@\n-+#include <nmmintrin.h>\n-+#ifndef _MSC_VER\n-+#include <popcntintrin.h>\n-+#endif\n-+int main() {\n-+ int i = _mm_popcnt_u64(1);\n-+ return 0;\n-+}\n-diff --git a/cmake/checks/cpu_sse.cpp b/cmake/checks/cpu_sse.cpp\n-new file mode 100644\n-index 0000000..c6269ac\n---- /dev/null\n-+++ b/cmake/checks/cpu_sse.cpp\n-@@ -0,0 +1,2 @@\n-+#include <xmmintrin.h>\n-+int main() { return 0; }\n-diff --git a/cmake/checks/cpu_sse2.cpp b/cmake/checks/cpu_sse2.cpp\n-new file mode 100644\n-index 0000000..68a69f8\n---- /dev/null\n-+++ b/cmake/checks/cpu_sse2.cpp\n-@@ -0,0 +1,2 @@\n-+#include <emmintrin.h>\n-+int main() { return 0; }\n-diff --git a/cmake/checks/cpu_sse3.cpp b/cmake/checks/cpu_sse3.cpp\n-new file mode 100644\n-index 0000000..98ce219\n---- /dev/null\n-+++ b/cmake/checks/cpu_sse3.cpp\n-@@ -0,0 +1,7 @@\n-+#include <pmmintrin.h>\n-+int main() {\n-+ __m128 u, v;\n-+ u = _mm_set1_ps(0.0f);\n-+ v = _mm_moveldup_ps(u); // SSE3\n-+ return 0;\n-+}\n-diff --git a/cmake/checks/cpu_sse41.cpp b/cmake/checks/cpu_sse41.cpp\n-new file mode 100644\n-index 0000000..ddd835b\n---- /dev/null\n-+++ b/cmake/checks/cpu_sse41.cpp\n-@@ -0,0 +1,6 @@\n-+#include <smmintrin.h>\n-+int main() {\n-+ __m128i a = _mm_setzero_si128(), b = _mm_setzero_si128();\n-+ __m128i c = _mm_packus_epi32(a, b);\n-+ return 0;\n-+}\n-diff --git a/cmake/checks/cpu_sse42.cpp b/cmake/checks/cpu_sse42.cpp\n-new file mode 100644\n-index 0000000..56f5665\n---- /dev/null\n-+++ b/cmake/checks/cpu_sse42.cpp\n-@@ -0,0 +1,5 @@\n-+#include <nmmintrin.h>\n-+int main() {\n-+ int i = _mm_popcnt_u64(1);\n-+ return 0;\n-+}\n-diff --git a/cmake/checks/cpu_ssse3.cpp b/cmake/checks/cpu_ssse3.cpp\n-new file mode 100644\n-index 0000000..e583199\n---- /dev/null\n-+++ b/cmake/checks/cpu_ssse3.cpp\n-@@ -0,0 +1,7 @@\n-+#include <tmmintrin.h>\n-+const double v = 0;\n-+int main() {\n-+ __m128i a = _mm_setzero_si128();\n-+ __m128i b = _mm_abs_epi32(a);\n-+ return 0;\n-+}\n-diff --git a/cmake/checks/fp16.cpp b/cmake/checks/fp16.cpp\n-deleted file mode 100644\n-index c77c844..0000000\n---- a/cmake/checks/fp16.cpp\n-+++ /dev/null\n-@@ -1,33 +0,0 @@\n--#include <stdio.h>\n--\n--#if defined __F16C__ || (defined _MSC_VER && _MSC_VER >= 1700)\n--#include <immintrin.h>\n--int test()\n--{\n-- const float src[] = { 0.0f, 0.0f, 0.0f, 0.0f };\n-- short dst[8];\n-- __m128 v_src = _mm_load_ps(src);\n-- __m128i v_dst = _mm_cvtps_ph(v_src, 0);\n-- _mm_storel_epi64((__m128i*)dst, v_dst);\n-- return (int)dst[0];\n--}\n--#elif defined __GNUC__ && (defined __arm__ || defined __aarch64__)\n--#include \"arm_neon.h\"\n--int test()\n--{\n-- const float src[] = { 0.0f, 0.0f, 0.0f, 0.0f };\n-- short dst[8];\n-- float32x4_t v_src = *(float32x4_t*)src;\n-- float16x4_t v_dst = vcvt_f16_f32(v_src);\n-- *(float16x4_t*)dst = v_dst;\n-- return (int)dst[0];\n--}\n--#else\n--#error \"FP16 is not supported\"\n--#endif\n--\n--int main()\n--{\n-- printf(\"%d\\n\", test());\n-- return 0;\n--}\n-diff --git a/cmake/templates/cv_cpu_config.h.in b/cmake/templates/cv_cpu_config.h.in\n-new file mode 100644\n-index 0000000..27b2731\n---- /dev/null\n-+++ b/cmake/templates/cv_cpu_config.h.in\n-@@ -0,0 +1,5 @@\n-+// OpenCV CPU baseline features\n-+@OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE@\n-+\n-+// OpenCV supported CPU dispatched features\n-+@OPENCV_CPU_DISPATCH_DEFINITIONS_CONFIGMAKE@\n-diff --git a/cmake/templates/cvconfig.h.in b/cmake/templates/cvconfig.h.in\n-index 05add9e..658d12c 100644\n---- a/cmake/templates/cvconfig.h.in\n-+++ b/cmake/templates/cvconfig.h.in\n-@@ -1,6 +1,15 @@\n-+#ifndef OPENCV_CVCONFIG_H_INCLUDED\n-+#define OPENCV_CVCONFIG_H_INCLUDED\n-+\n- /* OpenCV compiled as static or dynamic libs */\n- #cmakedefine BUILD_SHARED_LIBS\n- \n-+/* OpenCV intrinsics optimized code */\n-+#cmakedefine CV_ENABLE_INTRINSICS\n-+\n-+/* OpenCV additional optimized code */\n-+#cmakedefine CV_DISABLE_OPTIMIZATION\n-+\n- /* Compile for 'real' NVIDIA GPU architectures */\n- #define CUDA_ARCH_BIN \"${OPENCV_CUDA_ARCH_BIN}\"\n- \n-@@ -206,3 +215,7 @@\n- \n- /* OpenVX */\n- #cmakedefine HAVE_OPENVX\n-+\n-+\n-+\n-+#endif // OPENCV_CVCONFIG_H_INCLUDED\n-diff --git a/modules/core/include/opencv2/core/cv_cpu_dispatch.h b/modules/core/include/opencv2/core/cv_cpu_dispatch.h\n-new file mode 100644\n-index 0000000..9a8537f\n---- /dev/null\n-+++ b/modules/core/include/opencv2/core/cv_cpu_dispatch.h\n-@@ -0,0 +1,166 @@\n-+// This file is part of OpenCV project.\n-+// It is subject to the license terms in the LICENSE file found in the top-level directory\n-+// of this distribution and at http://opencv.org/license.html.\n-+\n-+#if defined __OPENCV_BUILD \\\n-+\n-+#include \"cv_cpu_config.h\"\n-+#include \"cv_cpu_helper.h\"\n-+\n-+#if defined CV_ENABLE_INTRINSICS \\\n-+ && !defined CV_DISABLE_OPTIMIZATION \\\n-+ && !defined __CUDACC__ /* do not include SSE/AVX/NEON headers for NVCC compiler */ \\\n-+\n-+#ifdef CV_CPU_COMPILE_SSE2\n-+# include <emmintrin.h>\n-+# define CV_MMX 1\n-+# define CV_SSE 1\n-+# define CV_SSE2 1\n-+#endif\n-+#ifdef CV_CPU_COMPILE_SSE3\n-+# include <pmmintrin.h>\n-+# define CV_SSE3 1\n-+#endif\n-+#ifdef CV_CPU_COMPILE_SSSE3\n-+# include <tmmintrin.h>\n-+# define CV_SSSE3 1\n-+#endif\n-+#ifdef CV_CPU_COMPILE_SSE4_1\n-+# include <smmintrin.h>\n-+# define CV_SSE4_1 1\n-+#endif\n-+#ifdef CV_CPU_COMPILE_SSE4_2\n-+# include <nmmintrin.h>\n-+# define CV_SSE4_2 1\n-+#endif\n-+#ifdef CV_CPU_COMPILE_POPCNT\n-+# ifdef _MSC_VER\n-+# include <nmmintrin.h>\n-+# if defined(_M_X64)\n-+# define CV_POPCNT_U64 _mm_popcnt_u64\n-+# endif\n-+# define CV_POPCNT_U32 _mm_popcnt_u32\n-+# else\n-+# include <popcntintrin.h>\n-+# if defined(__x86_64__)\n-+# define CV_POPCNT_U64 __builtin_popcountll\n-+# endif\n-+# define CV_POPCNT_U32 __builtin_popcount\n-+# endif\n-+# define CV_POPCNT 1\n-+#endif\n-+#ifdef CV_CPU_COMPILE_AVX\n-+# include <immintrin.h>\n-+# define CV_AVX 1\n-+#endif\n-+#ifdef CV_CPU_COMPILE_AVX2\n-+# include <immintrin.h>\n-+# define CV_AVX2 1\n-+#endif\n-+#ifdef CV_CPU_COMPILE_FMA3\n-+# define CV_FMA3 1\n-+#endif\n-+\n-+#if (defined WIN32 || defined _WIN32) && defined(_M_ARM)\n-+# include <Intrin.h>\n-+# include <arm_neon.h>\n-+# define CV_NEON 1\n-+#elif defined(__ARM_NEON__) || (defined (__ARM_NEON) && defined(__aarch64__))\n-+# include <arm_neon.h>\n-+# define CV_NEON 1\n-+#endif\n-+\n-+#if defined(__ARM_NEON__) || defined(__aarch64__)\n-+# include <arm_neon.h>\n-+#endif\n-+\n-+#endif // CV_ENABLE_INTRINSICS && !CV_DISABLE_OPTIMIZATION && !__CUDACC__\n-+\n-+#endif // __OPENCV_BUILD\n-+\n-+\n-+\n-+#if !defined __OPENCV_BUILD // Compatibility code\n-+\n-+#if defined __SSE2__ || defined _M_X64 || (defined _M_IX86_FP && _M_IX86_FP >= 2)\n-+# include <emmintrin.h>\n-+# define CV_MMX 1\n-+# define CV_SSE 1\n-+# define CV_SSE2 1\n-+#elif (defined WIN32 || defined _WIN32) && defined(_M_ARM)\n-+# include <Intrin.h>\n-+# include <arm_neon.h>\n-+# define CV_NEON 1\n-+#elif defined(__ARM_NEON__) || (defined (__ARM_NEON) && defined(__aarch64__))\n-+# include <arm_neon.h>\n-+# define CV_NEON 1\n-+#endif\n-+\n-+#endif // !__OPENCV_BUILD (Compatibility code)\n-+\n-+\n-+\n-+#ifndef CV_MMX\n-+# define CV_MMX 0\n-+#endif\n-+#ifndef CV_SSE\n-+# define CV_SSE 0\n-+#endif\n-+#ifndef CV_SSE2\n-+# define CV_SSE2 0\n-+#endif\n-+#ifndef CV_SSE3\n-+# define CV_SSE3 0\n-+#endif\n-+#ifndef CV_SSSE3\n-+# define CV_SSSE3 0\n-+#endif\n-+#ifndef CV_SSE4_1\n-+# define CV_SSE4_1 0\n-+#endif\n-+#ifndef CV_SSE4_2\n-+# define CV_SSE4_2 0\n-+#endif\n-+#ifndef CV_POPCNT\n-+# define CV_POPCNT 0\n-+#endif\n-+#ifndef CV_AVX\n-+# define CV_AVX 0\n-+#endif\n-+#ifndef CV_AVX2\n-+# define CV_AVX2 0\n-+#endif\n-+#ifndef CV_FMA3\n-+# define CV_FMA3 0\n-+#endif\n-+#ifndef CV_AVX_512F\n-+# define CV_AVX_512F 0\n-+#endif\n-+#ifndef CV_AVX_512BW\n-+# define CV_AVX_512BW 0\n-+#endif\n-+#ifndef CV_AVX_512CD\n-+# define CV_AVX_512CD 0\n-+#endif\n-+#ifndef CV_AVX_512DQ\n-+# define CV_AVX_512DQ 0\n-+#endif\n-+#ifndef CV_AVX_512ER\n-+# define CV_AVX_512ER 0\n-+#endif\n-+#ifndef CV_AVX_512IFMA512\n-+# define CV_AVX_512IFMA512 0\n-+#endif\n-+#ifndef CV_AVX_512PF\n-+# define CV_AVX_512PF 0\n-+#endif\n-+#ifndef CV_AVX_512VBMI\n-+# define CV_AVX_512VBMI 0\n-+#endif\n-+#ifndef CV_AVX_512VL\n-+# define CV_AVX_512VL 0\n-+#endif\n-+\n-+#ifndef CV_NEON\n-+# define CV_NEON 0\n-+#endif\n-diff --git a/modules/core/include/opencv2/core/cv_cpu_helper.h b/modules/core/include/opencv2/core/cv_cpu_helper.h\n-new file mode 100644\n-index 0000000..cb755d6\n---- /dev/null\n-+++ b/modules/core/include/opencv2/core/cv_cpu_helper.h\n-@@ -0,0 +1,133 @@\n-+// AUTOGENERATED, DO NOT EDIT\n-+\n-+#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE\n-+# define CV_CPU_HAS_SUPPORT_SSE 1\n-+# define CV_CPU_CALL_SSE(...) return __VA_ARGS__\n-+#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE\n-+# define CV_CPU_HAS_SUPPORT_SSE (cv::checkHardwareSupport(CV_CPU_SSE))\n-+# define CV_CPU_CALL_SSE(...) if (CV_CPU_HAS_SUPPORT_SSE) return __VA_ARGS__\n-+#else\n-+# define CV_CPU_HAS_SUPPORT_SSE 0\n-+# define CV_CPU_CALL_SSE(...)\n-+#endif\n-+\n-+#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE2\n-+# define CV_CPU_HAS_SUPPORT_SSE2 1\n-+# define CV_CPU_CALL_SSE2(...) return __VA_ARGS__\n-+#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE2\n-+# define CV_CPU_HAS_SUPPORT_SSE2 (cv::checkHardwareSupport(CV_CPU_SSE2))\n-+# define CV_CPU_CALL_SSE2(...) if (CV_CPU_HAS_SUPPORT_SSE2) return __VA_ARGS__\n-+#else\n-+# define CV_CPU_HAS_SUPPORT_SSE2 0\n-+# define CV_CPU_CALL_SSE2(...)\n-+#endif\n-+\n-+#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE3\n-+# define CV_CPU_HAS_SUPPORT_SSE3 1\n-+# define CV_CPU_CALL_SSE3(...) return __VA_ARGS__\n-+#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE3\n-+# define CV_CPU_HAS_SUPPORT_SSE3 (cv::checkHardwareSupport(CV_CPU_SSE3))\n-+# define CV_CPU_CALL_SSE3(...) if (CV_CPU_HAS_SUPPORT_SSE3) return __VA_ARGS__\n-+#else\n-+# define CV_CPU_HAS_SUPPORT_SSE3 0\n-+# define CV_CPU_CALL_SSE3(...)\n-+#endif\n-+\n-+#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSSE3\n-+# define CV_CPU_HAS_SUPPORT_SSSE3 1\n-+# define CV_CPU_CALL_SSSE3(...) return __VA_ARGS__\n-+#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSSE3\n-+# define CV_CPU_HAS_SUPPORT_SSSE3 (cv::checkHardwareSupport(CV_CPU_SSSE3))\n-+# define CV_CPU_CALL_SSSE3(...) if (CV_CPU_HAS_SUPPORT_SSSE3) return __VA_ARGS__\n-+#else\n-+# define CV_CPU_HAS_SUPPORT_SSSE3 0\n-+# define CV_CPU_CALL_SSSE3(...)\n-+#endif\n-+\n-+#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE4_1\n-+# define CV_CPU_HAS_SUPPORT_SSE4_1 1\n-+# define CV_CPU_CALL_SSE4_1(...) return __VA_ARGS__\n-+#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE4_1\n-+# define CV_CPU_HAS_SUPPORT_SSE4_1 (cv::checkHardwareSupport(CV_CPU_SSE4_1))\n-+# define CV_CPU_CALL_SSE4_1(...) if (CV_CPU_HAS_SUPPORT_SSE4_1) return __VA_ARGS__\n-+#else\n-+# define CV_CPU_HAS_SUPPORT_SSE4_1 0\n-+# define CV_CPU_CALL_SSE4_1(...)\n-+#endif\n-+\n-+#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE4_2\n-+# define CV_CPU_HAS_SUPPORT_SSE4_2 1\n-+# define CV_CPU_CALL_SSE4_2(...) return __VA_ARGS__\n-+#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE4_2\n-+# define CV_CPU_HAS_SUPPORT_SSE4_2 (cv::checkHardwareSupport(CV_CPU_SSE4_2))\n-+# define CV_CPU_CALL_SSE4_2(...) if (CV_CPU_HAS_SUPPORT_SSE4_2) return __VA_ARGS__\n-+#else\n-+# define CV_CPU_HAS_SUPPORT_SSE4_2 0\n-+# define CV_CPU_CALL_SSE4_2(...)\n-+#endif\n-+\n-+#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_POPCNT\n-+# define CV_CPU_HAS_SUPPORT_POPCNT 1\n-+# define CV_CPU_CALL_POPCNT(...) return __VA_ARGS__\n-+#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_POPCNT\n-+# define CV_CPU_HAS_SUPPORT_POPCNT (cv::checkHardwareSupport(CV_CPU_POPCNT))\n-+# define CV_CPU_CALL_POPCNT(...) if (CV_CPU_HAS_SUPPORT_POPCNT) return __VA_ARGS__\n-+#else\n-+# define CV_CPU_HAS_SUPPORT_POPCNT 0\n-+# define CV_CPU_CALL_POPCNT(...)\n-+#endif\n-+\n-+#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX\n-+# define CV_CPU_HAS_SUPPORT_AVX 1\n-+# define CV_CPU_CALL_AVX(...) return __VA_ARGS__\n-+#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX\n-+# define CV_CPU_HAS_SUPPORT_AVX (cv::checkHardwareSupport(CV_CPU_AVX))\n-+# define CV_CPU_CALL_AVX(...) if (CV_CPU_HAS_SUPPORT_AVX) return __VA_ARGS__\n-+#else\n-+# define CV_CPU_HAS_SUPPORT_AVX 0\n-+# define CV_CPU_CALL_AVX(...)\n-+#endif\n-+\n-+#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_FP16\n-+# define CV_CPU_HAS_SUPPORT_FP16 1\n-+# define CV_CPU_CALL_FP16(...) return __VA_ARGS__\n-+#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_FP16\n-+# define CV_CPU_HAS_SUPPORT_FP16 (cv::checkHardwareSupport(CV_CPU_FP16))\n-+# define CV_CPU_CALL_FP16(...) if (CV_CPU_HAS_SUPPORT_FP16) return __VA_ARGS__\n-+#else\n-+# define CV_CPU_HAS_SUPPORT_FP16 0\n-+# define CV_CPU_CALL_FP16(...)\n-+#endif\n-+\n-+#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX2\n-+# define CV_CPU_HAS_SUPPORT_AVX2 1\n-+# define CV_CPU_CALL_AVX2(...) return __VA_ARGS__\n-+#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX2\n-+# define CV_CPU_HAS_SUPPORT_AVX2 (cv::checkHardwareSupport(CV_CPU_AVX2))\n-+# define CV_CPU_CALL_AVX2(...) if (CV_CPU_HAS_SUPPORT_AVX2) return __VA_ARGS__\n-+#else\n-+# define CV_CPU_HAS_SUPPORT_AVX2 0\n-+# define CV_CPU_CALL_AVX2(...)\n-+#endif\n-+\n-+#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_FMA3\n-+# define CV_CPU_HAS_SUPPORT_FMA3 1\n-+# define CV_CPU_CALL_FMA3(...) return __VA_ARGS__\n-+#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_FMA3\n-+# define CV_CPU_HAS_SUPPORT_FMA3 (cv::checkHardwareSupport(CV_CPU_FMA3))\n-+# define CV_CPU_CALL_FMA3(...) if (CV_CPU_HAS_SUPPORT_FMA3) return __VA_ARGS__\n-+#else\n-+# define CV_CPU_HAS_SUPPORT_FMA3 0\n-+# define CV_CPU_CALL_FMA3(...)\n-+#endif\n-+\n-+#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_NEON\n-+# define CV_CPU_HAS_SUPPORT_NEON 1\n-+# define CV_CPU_CALL_NEON(...) return __VA_ARGS__\n-+#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_NEON\n-+# define CV_CPU_HAS_SUPPORT_NEON (cv::checkHardwareSupport(CV_CPU_NEON))\n-+# define CV_CPU_CALL_NEON(...) if (CV_CPU_HAS_SUPPORT_NEON) return __VA_ARGS__\n-+#else\n-+# define CV_CPU_HAS_SUPPORT_NEON 0\n-+# define CV_CPU_CALL_NEON(...)\n-+#endif\n-diff --git a/modules/core/include/opencv2/core/cvdef.h b/modules/core/include/opencv2/core/cvdef.h\n-index 699b166..0a46e02 100644\n---- a/modules/core/include/opencv2/core/cvdef.h\n-+++ b/modules/core/include/opencv2/core/cvdef.h\n-@@ -48,6 +48,10 @@\n- //! @addtogroup core_utils\n- //! @{\n- \n-+#ifdef __OPENCV_BUILD\n-+#include \"cvconfig.h\"\n-+#endif\n-+\n- #if !defined _CRT_SECURE_NO_DEPRECATE && defined _MSC_VER && _MSC_VER > 1300\n- # define _CRT_SECURE_NO_DEPRECATE /* to avoid multiple Visual Studio warnings */\n- #endif\n-@@ -59,10 +63,6 @@\n- #undef abs\n- #undef Complex\n- \n--#if !defined _CRT_SECURE_NO_DEPRECATE && defined _MSC_VER && _MSC_VER > 1300\n--# define _CRT_SECURE_NO_DEPRECATE /* to avoid multiple Visual Studio warnings */\n--#endif\n--\n- #include <limits.h>\n- #include \"opencv2/core/hal/interface.h\"\n- \n-@@ -88,7 +88,7 @@\n- # endif\n- #endif\n- \n--#if defined CV_ICC && !defined CV_ENABLE_UNROLLED\n-+#if defined CV_DISABLE_OPTIMIZATION || (defined CV_ICC && !defined CV_ENABLE_UNROLLED)\n- # define CV_ENABLE_UNROLLED 0\n- #else\n- # define CV_ENABLE_UNROLLED 1\n-@@ -161,142 +161,9 @@ enum CpuFeatures {\n- CPU_NEON = 100\n- };\n- \n--// do not include SSE/AVX/NEON headers for NVCC compiler\n--#ifndef __CUDACC__\n--\n--#if defined __SSE2__ || defined _M_X64 || (defined _M_IX86_FP && _M_IX86_FP >= 2)\n--# include <emmintrin.h>\n--# define CV_MMX 1\n--# define CV_SSE 1\n--# define CV_SSE2 1\n--# if defined __SSE3__ || (defined _MSC_VER && _MSC_VER >= 1500)\n--# include <pmmintrin.h>\n--# define CV_SSE3 1\n--# endif\n--# if defined __SSSE3__ || (defined _MSC_VER && _MSC_VER >= 1500)\n--# include <tmmintrin.h>\n--# define CV_SSSE3 1\n--# endif\n--# if defined __SSE4_1__ || (defined _MSC_VER && _MSC_VER >= 1500)\n--# include <smmintrin.h>\n--# define CV_SSE4_1 1\n--# endif\n--# if defined __SSE4_2__ || (defined _MSC_VER && _MSC_VER >= 1500)\n--# include <nmmintrin.h>\n--# define CV_SSE4_2 1\n--# endif\n--# if defined __POPCNT__ || (defined _MSC_VER && _MSC_VER >= 1500)\n--# ifdef _MSC_VER\n--# include <nmmintrin.h>\n--# else\n--# include <popcntintrin.h>\n--# endif\n--# define CV_POPCNT 1\n--# endif\n--# if defined __AVX__ || (defined _MSC_VER && _MSC_VER >= 1600 && 0)\n--// MS Visual Studio 2010 (2012?) has no macro pre-defined to identify the use of /arch:AVX\n--// See: http://connect.microsoft.com/VisualStudio/feedback/details/605858/arch-avx-should-define-a-predefined-macro-in-x64-and-set-a-unique-value-for-m-ix86-fp-in-win32\n--# include <immintrin.h>\n--# define CV_AVX 1\n--# if defined(_XCR_XFEATURE_ENABLED_MASK)\n--# define __xgetbv() _xgetbv(_XCR_XFEATURE_ENABLED_MASK)\n--# else\n--# define __xgetbv() 0\n--# endif\n--# endif\n--# if defined __AVX2__ || (defined _MSC_VER && _MSC_VER >= 1800 && 0)\n--# include <immintrin.h>\n--# define CV_AVX2 1\n--# if defined __FMA__\n--# define CV_FMA3 1\n--# endif\n--# endif\n--#endif\n--\n--#if (defined WIN32 || defined _WIN32) && defined(_M_ARM)\n--# include <Intrin.h>\n--# include <arm_neon.h>\n--# define CV_NEON 1\n--# define CPU_HAS_NEON_FEATURE (true)\n--#elif defined(__ARM_NEON__) || (defined (__ARM_NEON) && defined(__aarch64__))\n--# include <arm_neon.h>\n--# define CV_NEON 1\n--#endif\n--\n--#if defined __GNUC__ && defined __arm__ && (defined __ARM_PCS_VFP || defined __ARM_VFPV3__ || defined __ARM_NEON__) && !defined __SOFTFP__\n--# define CV_VFP 1\n--#endif\n--\n--#endif // __CUDACC__\n--\n--#ifndef CV_POPCNT\n--#define CV_POPCNT 0\n--#endif\n--#ifndef CV_MMX\n--# define CV_MMX 0\n--#endif\n--#ifndef CV_SSE\n--# define CV_SSE 0\n--#endif\n--#ifndef CV_SSE2\n--# define CV_SSE2 0\n--#endif\n--#ifndef CV_SSE3\n--# define CV_SSE3 0\n--#endif\n--#ifndef CV_SSSE3\n--# define CV_SSSE3 0\n--#endif\n--#ifndef CV_SSE4_1\n--# define CV_SSE4_1 0\n--#endif\n--#ifndef CV_SSE4_2\n--# define CV_SSE4_2 0\n--#endif\n--#ifndef CV_AVX\n--# define CV_AVX 0\n--#endif\n--#ifndef CV_AVX2\n--# define CV_AVX2 0\n--#endif\n--#ifndef CV_FMA3\n--# define CV_FMA3 0\n--#endif\n--#ifndef CV_AVX_512F\n--# define CV_AVX_512F 0\n--#endif\n--#ifndef CV_AVX_512BW\n--# define CV_AVX_512BW 0\n--#endif\n--#ifndef CV_AVX_512CD\n--# define CV_AVX_512CD 0\n--#endif\n--#ifndef CV_AVX_512DQ\n--# define CV_AVX_512DQ 0\n--#endif\n--#ifndef CV_AVX_512ER\n--# define CV_AVX_512ER 0\n--#endif\n--#ifndef CV_AVX_512IFMA512\n--# define CV_AVX_512IFMA512 0\n--#endif\n--#ifndef CV_AVX_512PF\n--# define CV_AVX_512PF 0\n--#endif\n--#ifndef CV_AVX_512VBMI\n--# define CV_AVX_512VBMI 0\n--#endif\n--#ifndef CV_AVX_512VL\n--# define CV_AVX_512VL 0\n--#endif\n- \n--#ifndef CV_NEON\n--# define CV_NEON 0\n--#endif\n-+#include \"cv_cpu_dispatch.h\"\n- \n--#ifndef CV_VFP\n--# define CV_VFP 0\n--#endif\n- \n- /* fundamental constants */\n- #define CV_PI 3.1415926535897932384626433832795\n-diff --git a/modules/core/include/opencv2/core/fast_math.hpp b/modules/core/include/opencv2/core/fast_math.hpp\n-index c76936a..31c1062 100644\n---- a/modules/core/include/opencv2/core/fast_math.hpp\n-+++ b/modules/core/include/opencv2/core/fast_math.hpp\n-@@ -47,6 +47,12 @@\n- \n- #include \"opencv2/core/cvdef.h\"\n- \n-+#if ((defined _MSC_VER && defined _M_X64) || (defined __GNUC__ && defined __x86_64__ \\\n-+ && defined __SSE2__ && !defined __APPLE__)) && !defined(__CUDACC__)\n-+#include <emmintrin.h>\n-+#endif\n-+\n-+\n- //! @addtogroup core_utils\n- //! @{\n- \n-@@ -66,7 +72,7 @@\n- # include \"tegra_round.hpp\"\n- #endif\n- \n--#if CV_VFP\n-+#if defined __GNUC__ && defined __arm__ && (defined __ARM_PCS_VFP || defined __ARM_VFPV3__ || defined __ARM_NEON__) && !defined __SOFTFP__\n- // 1. general scheme\n- #define ARM_ROUND(_value, _asm_string) \\\n- int res; \\\n-@@ -82,7 +88,7 @@\n- #endif\n- // 3. version for float\n- #define ARM_ROUND_FLT(value) ARM_ROUND(value, \"vcvtr.s32.f32 %[temp], %[value]\\n vmov %[res], %[temp]\")\n--#endif // CV_VFP\n-+#endif\n- \n- /** @brief Rounds floating-point number to the nearest integer\n- \n-@@ -93,7 +99,7 @@ CV_INLINE int\n- cvRound( double value )\n- {\n- #if ((defined _MSC_VER && defined _M_X64) || (defined __GNUC__ && defined __x86_64__ \\\n-- && defined __SSE2__ && !defined __APPLE__)) && !defined(__CUDACC__)\n-+ && defined __SSE2__ && !defined __APPLE__) || CV_SSE2) && !defined(__CUDACC__)\n- __m128d t = _mm_set_sd( value );\n- return _mm_cvtsd_si32(t);\n- #elif defined _MSC_VER && defined _M_IX86\n-@@ -108,7 +114,7 @@ cvRound( double value )\n- defined __GNUC__) && defined HAVE_TEGRA_OPTIMIZATION\n- TEGRA_ROUND_DBL(value);\n- #elif defined CV_ICC || defined __GNUC__\n--# if CV_VFP\n-+# if defined ARM_ROUND_DBL\n- ARM_ROUND_DBL(value);\n- # else\n- return (int)lrint(value);\n-@@ -130,18 +136,8 @@ cvRound( double value )\n- */\n- CV_INLINE int cvFloor( double value )\n- {\n--#if (defined _MSC_VER && defined _M_X64 || (defined __GNUC__ && defined __SSE2__ && !defined __APPLE__)) && !defined(__CUDACC__)\n-- __m128d t = _mm_set_sd( value );\n-- int i = _mm_cvtsd_si32(t);\n-- return i - _mm_movemask_pd(_mm_cmplt_sd(t, _mm_cvtsi32_sd(t,i)));\n--#elif defined __GNUC__\n- int i = (int)value;\n- return i - (i > value);\n--#else\n-- int i = cvRound(value);\n-- float diff = (float)(value - i);\n-- return i - (diff < 0);\n--#endif\n- }\n- \n- /** @brief Rounds floating-point number to the nearest integer not smaller than the original.\n-@@ -153,18 +149,8 @@ CV_INLINE int cvFloor( double value )\n- */\n- CV_INLINE int cvCeil( double value )\n- {\n--#if (defined _MSC_VER && defined _M_X64 || (defined __GNUC__ && defined __SSE2__&& !defined __APPLE__)) && !defined(__CUDACC__)\n-- __m128d t = _mm_set_sd( value );\n-- int i = _mm_cvtsd_si32(t);\n-- return i + _mm_movemask_pd(_mm_cmplt_sd(_mm_cvtsi32_sd(t,i), t));\n--#elif defined __GNUC__\n- int i = (int)value;\n- return i + (i < value);\n--#else\n-- int i = cvRound(value);\n-- float diff = (float)(i - value);\n-- return i + (diff < 0);\n--#endif\n- }\n- \n- /** @brief Determines if the argument is Not A Number.\n-@@ -200,8 +186,8 @@ CV_INLINE int cvIsInf( double value )\n- /** @overload */\n- CV_INLINE int cvRound(float value)\n- {\n--#if ((defined _MSC_VER && defined _M_X64) || (defined __GNUC__ && defined __x86_64__ && \\\n-- defined __SSE2__ && !defined __APPLE__)) && !defined(__CUDACC__)\n-+#if ((defined _MSC_VER && defined _M_X64) || (defined __GNUC__ && defined __x86_64__ \\\n-+ && defined __SSE2__ && !defined __APPLE__) || CV_SSE2) && !defined(__CUDACC__)\n- __m128 t = _mm_set_ss( value );\n- return _mm_cvtss_si32(t);\n- #elif defined _MSC_VER && defined _M_IX86\n-@@ -216,7 +202,7 @@ CV_INLINE int cvRound(float value)\n- defined __GNUC__) && defined HAVE_TEGRA_OPTIMIZATION\n- TEGRA_ROUND_FLT(value);\n- #elif defined CV_ICC || defined __GNUC__\n--# if CV_VFP\n-+# if defined ARM_ROUND_FLT\n- ARM_ROUND_FLT(value);\n- # else\n- return (int)lrintf(value);\n-@@ -237,18 +223,8 @@ CV_INLINE int cvRound( int value )\n- /** @overload */\n- CV_INLINE int cvFloor( float value )\n- {\n--#if (defined _MSC_VER && defined _M_X64 || (defined __GNUC__ && defined __SSE2__ && !defined __APPLE__)) && !defined(__CUDACC__)\n-- __m128 t = _mm_set_ss( value );\n-- int i = _mm_cvtss_si32(t);\n-- return i - _mm_movemask_ps(_mm_cmplt_ss(t, _mm_cvtsi32_ss(t,i)));\n--#elif defined __GNUC__\n- int i = (int)value;\n- return i - (i > value);\n--#else\n-- int i = cvRound(value);\n-- float diff = (float)(value - i);\n-- return i - (diff < 0);\n--#endif\n- }\n- \n- /** @overload */\n-@@ -260,18 +236,8 @@ CV_INLINE int cvFloor( int value )\n- /** @overload */\n- CV_INLINE int cvCeil( float value )\n- {\n--#if (defined _MSC_VER && defined _M_X64 || (defined __GNUC__ && defined __SSE2__&& !defined __APPLE__)) && !defined(__CUDACC__)\n-- __m128 t = _mm_set_ss( value );\n-- int i = _mm_cvtss_si32(t);\n-- return i + _mm_movemask_ps(_mm_cmplt_ss(_mm_cvtsi32_ss(t,i), t));\n--#elif defined __GNUC__\n- int i = (int)value;\n- return i + (i < value);\n--#else\n-- int i = cvRound(value);\n-- float diff = (float)(i - value);\n-- return i + (diff < 0);\n--#endif\n- }\n- \n- /** @overload */\n-diff --git a/modules/core/src/system.cpp b/modules/core/src/system.cpp\n-index 3c8f39d..a983838 100644\n---- a/modules/core/src/system.cpp\n-+++ b/modules/core/src/system.cpp\n-@@ -237,24 +237,81 @@ void Exception::formatMessage()\n- msg = format(\"%s:%d: error: (%d) %s\\n\", file.c_str(), line, code, err.c_str());\n- }\n- \n-+static const char* g_hwFeatureNames[CV_HARDWARE_MAX_FEATURE] = { NULL };\n-+\n-+static const char* getHWFeatureName(int id)\n-+{\n-+ return (id < CV_HARDWARE_MAX_FEATURE) ? g_hwFeatureNames[id] : NULL;\n-+}\n-+static const char* getHWFeatureNameSafe(int id)\n-+{\n-+ const char* name = getHWFeatureName(id);\n-+ return name ? name : \"Unknown feature\";\n-+}\n-+\n- struct HWFeatures\n- {\n- enum { MAX_FEATURE = CV_HARDWARE_MAX_FEATURE };\n- \n-- HWFeatures(void)\n-+ HWFeatures(bool run_initialize = false)\n- {\n-- memset( have, 0, sizeof(have) );\n-- x86_family = 0;\n-+ memset( have, 0, sizeof(have[0]) * MAX_FEATURE );\n-+ if (run_initialize)\n-+ initialize();\n- }\n- \n-- static HWFeatures initialize(void)\n-+ static void initializeNames()\n- {\n-- HWFeatures f;\n-+ for (int i = 0; i < CV_HARDWARE_MAX_FEATURE; i++)\n-+ {\n-+ g_hwFeatureNames[i] = 0;\n-+ }\n-+ g_hwFeatureNames[CPU_MMX] = \"MMX\";\n-+ g_hwFeatureNames[CPU_SSE] = \"SSE\";\n-+ g_hwFeatureNames[CPU_SSE2] = \"SSE2\";\n-+ g_hwFeatureNames[CPU_SSE3] = \"SSE3\";\n-+ g_hwFeatureNames[CPU_SSSE3] = \"SSSE3\";\n-+ g_hwFeatureNames[CPU_SSE4_1] = \"SSE4.1\";\n-+ g_hwFeatureNames[CPU_SSE4_2] = \"SSE4.2\";\n-+ g_hwFeatureNames[CPU_POPCNT] = \"POPCNT\";\n-+ g_hwFeatureNames[CPU_FP16] = \"FP16\";\n-+ g_hwFeatureNames[CPU_AVX] = \"AVX\";\n-+ g_hwFeatureNames[CPU_AVX2] = \"AVX2\";\n-+ g_hwFeatureNames[CPU_FMA3] = \"FMA3\";\n-+\n-+ g_hwFeatureNames[CPU_AVX_512F] = \"AVX512F\";\n-+ g_hwFeatureNames[CPU_AVX_512BW] = \"AVX512BW\";\n-+ g_hwFeatureNames[CPU_AVX_512CD] = \"AVX512CD\";\n-+ g_hwFeatureNames[CPU_AVX_512DQ] = \"AVX512DQ\";\n-+ g_hwFeatureNames[CPU_AVX_512ER] = \"AVX512ER\";\n-+ g_hwFeatureNames[CPU_AVX_512IFMA512] = \"AVX512IFMA\";\n-+ g_hwFeatureNames[CPU_AVX_512PF] = \"AVX512PF\";\n-+ g_hwFeatureNames[CPU_AVX_512VBMI] = \"AVX512VBMI\";\n-+ g_hwFeatureNames[CPU_AVX_512VL] = \"AVX512VL\";\n-+\n-+ g_hwFeatureNames[CPU_NEON] = \"NEON\";\n-+ }\n-+\n-+ void initialize(void)\n-+ {\n-+#ifndef WINRT\n-+ if (getenv(\"OPENCV_DUMP_CONFIG\"))\n-+ {\n-+ fprintf(stderr, \"\\nOpenCV build configuration is:\\n%s\\n\",\n-+ cv::getBuildInformation().c_str());\n-+ }\n-+#endif\n-+\n-+ initializeNames();\n-+\n- int cpuid_data[4] = { 0, 0, 0, 0 };\n-+ int cpuid_data_ex[4] = { 0, 0, 0, 0 };\n- \n- #if defined _MSC_VER && (defined _M_IX86 || defined _M_X64)\n-+ #define OPENCV_HAVE_X86_CPUID 1\n- __cpuid(cpuid_data, 1);\n- #elif defined __GNUC__ && (defined __i386__ || defined __x86_64__)\n-+ #define OPENCV_HAVE_X86_CPUID 1\n- #ifdef __x86_64__\n- asm __volatile__\n- (\n-@@ -278,33 +335,36 @@ struct HWFeatures\n- #endif\n- #endif\n- \n-- f.x86_family = (cpuid_data[0] >> 8) & 15;\n-- if( f.x86_family >= 6 )\n-+ #ifdef OPENCV_HAVE_X86_CPUID\n-+ int x86_family = (cpuid_data[0] >> 8) & 15;\n-+ if( x86_family >= 6 )\n- {\n-- f.have[CV_CPU_MMX] = (cpuid_data[3] & (1 << 23)) != 0;\n-- f.have[CV_CPU_SSE] = (cpuid_data[3] & (1<<25)) != 0;\n-- f.have[CV_CPU_SSE2] = (cpuid_data[3] & (1<<26)) != 0;\n-- f.have[CV_CPU_SSE3] = (cpuid_data[2] & (1<<0)) != 0;\n-- f.have[CV_CPU_SSSE3] = (cpuid_data[2] & (1<<9)) != 0;\n-- f.have[CV_CPU_FMA3] = (cpuid_data[2] & (1<<12)) != 0;\n-- f.have[CV_CPU_SSE4_1] = (cpuid_data[2] & (1<<19)) != 0;\n-- f.have[CV_CPU_SSE4_2] = (cpuid_data[2] & (1<<20)) != 0;\n-- f.have[CV_CPU_POPCNT] = (cpuid_data[2] & (1<<23)) != 0;\n-- f.have[CV_CPU_AVX] = (((cpuid_data[2] & (1<<28)) != 0)&&((cpuid_data[2] & (1<<27)) != 0));//OS uses XSAVE_XRSTORE and CPU support AVX\n-- f.have[CV_CPU_FP16] = (cpuid_data[2] & (1<<29)) != 0;\n-+ have[CV_CPU_MMX] = (cpuid_data[3] & (1<<23)) != 0;\n-+ have[CV_CPU_SSE] = (cpuid_data[3] & (1<<25)) != 0;\n-+ have[CV_CPU_SSE2] = (cpuid_data[3] & (1<<26)) != 0;\n-+ have[CV_CPU_SSE3] = (cpuid_data[2] & (1<<0)) != 0;\n-+ have[CV_CPU_SSSE3] = (cpuid_data[2] & (1<<9)) != 0;\n-+ have[CV_CPU_FMA3] = (cpuid_data[2] & (1<<12)) != 0;\n-+ have[CV_CPU_SSE4_1] = (cpuid_data[2] & (1<<19)) != 0;\n-+ have[CV_CPU_SSE4_2] = (cpuid_data[2] & (1<<20)) != 0;\n-+ have[CV_CPU_POPCNT] = (cpuid_data[2] & (1<<23)) != 0;\n-+ have[CV_CPU_AVX] = (cpuid_data[2] & (1<<28)) != 0;\n-+ have[CV_CPU_FP16] = (cpuid_data[2] & (1<<29)) != 0;\n- \n- // make the second call to the cpuid command in order to get\n- // information about extended features like AVX2\n- #if defined _MSC_VER && (defined _M_IX86 || defined _M_X64)\n-- __cpuidex(cpuid_data, 7, 0);\n-+ #define OPENCV_HAVE_X86_CPUID_EX 1\n-+ __cpuidex(cpuid_data_ex, 7, 0);\n- #elif defined __GNUC__ && (defined __i386__ || defined __x86_64__)\n-+ #define OPENCV_HAVE_X86_CPUID_EX 1\n- #ifdef __x86_64__\n- asm __volatile__\n- (\n- \"movl $7, %%eax\\n\\t\"\n- \"movl $0, %%ecx\\n\\t\"\n- \"cpuid\\n\\t\"\n-- :[eax]\"=a\"(cpuid_data[0]),[ebx]\"=b\"(cpuid_data[1]),[ecx]\"=c\"(cpuid_data[2]),[edx]\"=d\"(cpuid_data[3])\n-+ :[eax]\"=a\"(cpuid_data_ex[0]),[ebx]\"=b\"(cpuid_data_ex[1]),[ecx]\"=c\"(cpuid_data_ex[2]),[edx]\"=d\"(cpuid_data_ex[3])\n- :\n- : \"cc\"\n- );\n-@@ -317,29 +377,76 @@ struct HWFeatures\n- \"cpuid\\n\\t\"\n- \"movl %%ebx, %0\\n\\t\"\n- \"popl %%ebx\\n\\t\"\n-- : \"=r\"(cpuid_data[1]), \"=c\"(cpuid_data[2])\n-+ : \"=r\"(cpuid_data_ex[1]), \"=c\"(cpuid_data_ex[2])\n- :\n- : \"cc\"\n- );\n- #endif\n- #endif\n-- f.have[CV_CPU_AVX2] = (cpuid_data[1] & (1<<5)) != 0;\n--\n-- f.have[CV_CPU_AVX_512F] = (cpuid_data[1] & (1<<16)) != 0;\n-- f.have[CV_CPU_AVX_512DQ] = (cpuid_data[1] & (1<<17)) != 0;\n-- f.have[CV_CPU_AVX_512IFMA512] = (cpuid_data[1] & (1<<21)) != 0;\n-- f.have[CV_CPU_AVX_512PF] = (cpuid_data[1] & (1<<26)) != 0;\n-- f.have[CV_CPU_AVX_512ER] = (cpuid_data[1] & (1<<27)) != 0;\n-- f.have[CV_CPU_AVX_512CD] = (cpuid_data[1] & (1<<28)) != 0;\n-- f.have[CV_CPU_AVX_512BW] = (cpuid_data[1] & (1<<30)) != 0;\n-- f.have[CV_CPU_AVX_512VL] = (cpuid_data[1] & (1<<31)) != 0;\n-- f.have[CV_CPU_AVX_512VBMI] = (cpuid_data[2] & (1<<1)) != 0;\n-+\n-+ #ifdef OPENCV_HAVE_X86_CPUID_EX\n-+ have[CV_CPU_AVX2] = (cpuid_data_ex[1] & (1<<5)) != 0;\n-+\n-+ have[CV_CPU_AVX_512F] = (cpuid_data_ex[1] & (1<<16)) != 0;\n-+ have[CV_CPU_AVX_512DQ] = (cpuid_data_ex[1] & (1<<17)) != 0;\n-+ have[CV_CPU_AVX_512IFMA512] = (cpuid_data_ex[1] & (1<<21)) != 0;\n-+ have[CV_CPU_AVX_512PF] = (cpuid_data_ex[1] & (1<<26)) != 0;\n-+ have[CV_CPU_AVX_512ER] = (cpuid_data_ex[1] & (1<<27)) != 0;\n-+ have[CV_CPU_AVX_512CD] = (cpuid_data_ex[1] & (1<<28)) != 0;\n-+ have[CV_CPU_AVX_512BW] = (cpuid_data_ex[1] & (1<<30)) != 0;\n-+ have[CV_CPU_AVX_512VL] = (cpuid_data_ex[1] & (1<<31)) != 0;\n-+ have[CV_CPU_AVX_512VBMI] = (cpuid_data_ex[2] & (1<<1)) != 0;\n-+ #else\n-+ CV_UNUSED(cpuid_data_ex);\n-+ #endif\n-+\n-+ bool have_AVX_OS_support = true;\n-+ bool have_AVX512_OS_support = true;\n-+ if (!(cpuid_data[2] & (1<<27)))\n-+ have_AVX_OS_support = false; // OS uses XSAVE_XRSTORE and CPU support AVX\n-+ else\n-+ {\n-+ int xcr0 = 0;\n-+ #ifdef _XCR_XFEATURE_ENABLED_MASK // requires immintrin.h\n-+ xcr0 = (int)_xgetbv(_XCR_XFEATURE_ENABLED_MASK);\n-+ #elif defined __GNUC__ && (defined __i386__ || defined __x86_64__)\n-+ __asm__ (\"xgetbv\" : \"=a\" (xcr0) : \"c\" (0) : \"%edx\" );\n-+ #endif\n-+ if ((xcr0 & 0x6) != 0x6)\n-+ have_AVX_OS_support = false; // YMM registers\n-+ if ((xcr0 & 0xe6) != 0xe6)\n-+ have_AVX512_OS_support = false; // ZMM registers\n-+ }\n-+\n-+ if (!have_AVX_OS_support)\n-+ {\n-+ have[CV_CPU_AVX] = false;\n-+ have[CV_CPU_FP16] = false;\n-+ have[CV_CPU_AVX2] = false;\n-+ have[CV_CPU_FMA3] = false;\n-+ }\n-+ if (!have_AVX_OS_support || !have_AVX512_OS_support)\n-+ {\n-+ have[CV_CPU_AVX_512F] = false;\n-+ have[CV_CPU_AVX_512BW] = false;\n-+ have[CV_CPU_AVX_512CD] = false;\n-+ have[CV_CPU_AVX_512DQ] = false;\n-+ have[CV_CPU_AVX_512ER] = false;\n-+ have[CV_CPU_AVX_512IFMA512] = false;\n-+ have[CV_CPU_AVX_512PF] = false;\n-+ have[CV_CPU_AVX_512VBMI] = false;\n-+ have[CV_CPU_AVX_512VL] = false;\n-+ }\n- }\n-+ #else\n-+ CV_UNUSED(cpuid_data);\n-+ CV_UNUSED(cpuid_data_ex);\n-+ #endif // OPENCV_HAVE_X86_CPUID\n- \n- #if defined ANDROID || defined __linux__\n- #ifdef __aarch64__\n-- f.have[CV_CPU_NEON] = true;\n-- f.have[CV_CPU_FP16] = true;\n-+ have[CV_CPU_NEON] = true;\n-+ have[CV_CPU_FP16] = true;\n- #elif defined __arm__\n- int cpufile = open(\"/proc/self/auxv\", O_RDONLY);\n- \n-@@ -352,8 +459,8 @@ struct HWFeatures\n- {\n- if (auxv.a_type == AT_HWCAP)\n- {\n-- f.have[CV_CPU_NEON] = (auxv.a_un.a_val & 4096) != 0;\n-- f.have[CV_CPU_FP16] = (auxv.a_un.a_val & 2) != 0;\n-+ have[CV_CPU_NEON] = (auxv.a_un.a_val & 4096) != 0;\n-+ have[CV_CPU_FP16] = (auxv.a_un.a_val & 2) != 0;\n- break;\n- }\n- }\n-@@ -363,21 +470,133 @@ struct HWFeatures\n- #endif\n- #elif (defined __clang__ || defined __APPLE__)\n- #if (defined __ARM_NEON__ || (defined __ARM_NEON && defined __aarch64__))\n-- f.have[CV_CPU_NEON] = true;\n-+ have[CV_CPU_NEON] = true;\n- #endif\n- #if (defined __ARM_FP && (((__ARM_FP & 0x2) != 0) && defined __ARM_NEON__))\n-- f.have[CV_CPU_FP16] = true;\n-+ have[CV_CPU_FP16] = true;\n- #endif\n- #endif\n- \n-- return f;\n-+ int baseline_features[] = { CV_CPU_BASELINE_FEATURES };\n-+ if (!checkFeatures(baseline_features, sizeof(baseline_features) / sizeof(baseline_features[0])))\n-+ {\n-+ fprintf(stderr, \"\\n\"\n-+ \"******************************************************************\\n\"\n-+ \"* FATAL ERROR: *\\n\"\n-+ \"* This OpenCV build doesn't support current CPU/HW configuration *\\n\"\n-+ \"* *\\n\"\n-+ \"* Use OPENCV_DUMP_CONFIG=1 environment variable for details *\\n\"\n-+ \"******************************************************************\\n\");\n-+ fprintf(stderr, \"\\nRequired baseline features:\\n\");\n-+ checkFeatures(baseline_features, sizeof(baseline_features) / sizeof(baseline_features[0]), true);\n-+ CV_ErrorNoReturn(cv::Error::StsAssert, \"Missing support for required CPU baseline features. Check OpenCV build configuration and required CPU/HW setup.\");\n-+ }\n-+\n-+ readSettings(baseline_features, sizeof(baseline_features) / sizeof(baseline_features[0]));\n-+ }\n-+\n-+ bool checkFeatures(const int* features, int count, bool dump = false)\n-+ {\n-+ bool result = true;\n-+ for (int i = 0; i < count; i++)\n-+ {\n-+ int feature = features[i];\n-+ if (feature)\n-+ {\n-+ if (have[feature])\n-+ {\n-+ if (dump) fprintf(stderr, \"%s - OK\\n\", getHWFeatureNameSafe(feature));\n-+ }\n-+ else\n-+ {\n-+ result = false;\n-+ if (dump) fprintf(stderr, \"%s - NOT AVAILABLE\\n\", getHWFeatureNameSafe(feature));\n-+ }\n-+ }\n-+ }\n-+ return result;\n-+ }\n-+\n-+ static inline bool isSymbolSeparator(char c)\n-+ {\n-+ return c == ',' || c == ';' || c == '-';\n-+ }\n-+\n-+ void readSettings(const int* baseline_features, int baseline_count)\n-+ {\n-+ bool dump = true;\n-+ const char* disabled_features =\n-+#ifndef WINRT\n-+ getenv(\"OPENCV_CPU_DISABLE\");\n-+#else\n-+ NULL;\n-+#endif\n-+ if (disabled_features && disabled_features[0] != 0)\n-+ {\n-+ const char* start = disabled_features;\n-+ for (;;)\n-+ {\n-+ while (start[0] != 0 && isSymbolSeparator(start[0]))\n-+ {\n-+ start++;\n-+ }\n-+ if (start[0] == 0)\n-+ break;\n-+ const char* end = start;\n-+ while (end[0] != 0 && !isSymbolSeparator(end[0]))\n-+ {\n-+ end++;\n-+ }\n-+ if (end == start)\n-+ continue;\n-+ cv::String feature(start, end);\n-+ start = end;\n-+\n-+ CV_Assert(feature.size() > 0);\n-+\n-+ bool found = false;\n-+ for (int i = 0; i < CV_HARDWARE_MAX_FEATURE; i++)\n-+ {\n-+ if (!g_hwFeatureNames[i]) continue;\n-+ size_t len = strlen(g_hwFeatureNames[i]);\n-+ if (len != feature.size()) continue;\n-+ if (feature.compare(g_hwFeatureNames[i]) == 0)\n-+ {\n-+ bool isBaseline = false;\n-+ for (int k = 0; k < baseline_count; k++)\n-+ {\n-+ if (baseline_features[k] == i)\n-+ {\n-+ isBaseline = true;\n-+ break;\n-+ }\n-+ }\n-+ if (isBaseline)\n-+ {\n-+ if (dump) fprintf(stderr, \"OPENCV: Trying to disable baseline CPU feature: '%s'. This has very limited effect, because code optimizations for this feature are executed unconditionally in the most cases.\\n\", getHWFeatureNameSafe(i));\n-+ }\n-+ if (!have[i])\n-+ {\n-+ if (dump) fprintf(stderr, \"OPENCV: Trying to disable unavailable CPU feature on the current platform: '%s'.\\n\", getHWFeatureNameSafe(i));\n-+ }\n-+ have[i] = false;\n-+\n-+ found = true;\n-+ break;\n-+ }\n-+ }\n-+ if (!found)\n-+ {\n-+ if (dump) fprintf(stderr, \"OPENCV: Trying to disable unknown CPU feature: '%s'.\\n\", feature.c_str());\n-+ }\n-+ }\n-+ }\n- }\n- \n-- int x86_family;\n- bool have[MAX_FEATURE+1];\n- };\n- \n--static HWFeatures featuresEnabled = HWFeatures::initialize(), featuresDisabled = HWFeatures();\n-+static HWFeatures featuresEnabled(true), featuresDisabled = HWFeatures(false);\n- static HWFeatures* currentFeatures = &featuresEnabled;\n- \n- bool checkHardwareSupport(int feature)\n-diff --git a/modules/highgui/CMakeLists.txt b/modules/highgui/CMakeLists.txt\n-index eb56177..6d9c650 100644\n---- a/modules/highgui/CMakeLists.txt\n-+++ b/modules/highgui/CMakeLists.txt\n-@@ -65,7 +65,7 @@ elseif(HAVE_QT)\n- \n- list(APPEND HIGHGUI_LIBRARIES ${QT_LIBRARIES})\n- list(APPEND highgui_srcs ${CMAKE_CURRENT_LIST_DIR}/src/window_QT.cpp ${_MOC_OUTFILES} ${_RCC_OUTFILES})\n-- ocv_check_flag_support(CXX -Wno-missing-declarations _have_flag)\n-+ ocv_check_flag_support(CXX -Wno-missing-declarations _have_flag \"\")\n- if(${_have_flag})\n- set_source_files_properties(${_RCC_OUTFILES} PROPERTIES COMPILE_FLAGS -Wno-missing-declarations)\n- endif()\n-diff --git a/modules/imgproc/src/imgwarp.cpp b/modules/imgproc/src/imgwarp.cpp\n-index 0fa5202..dcf2e44 100644\n---- a/modules/imgproc/src/imgwarp.cpp\n-+++ b/modules/imgproc/src/imgwarp.cpp\n-@@ -1649,7 +1649,7 @@ struct VResizeLanczos4\n- {\n- CastOp castOp;\n- VecOp vecOp;\n-- int k, x = vecOp((const uchar**)src, (uchar*)dst, (const uchar*)beta, width);\n-+ int x = vecOp((const uchar**)src, (uchar*)dst, (const uchar*)beta, width);\n- #if CV_ENABLE_UNROLLED\n- for( ; x <= width - 4; x += 4 )\n- {\n-@@ -1657,7 +1657,7 @@ struct VResizeLanczos4\n- const WT* S = src[0];\n- WT s0 = S[x]*b, s1 = S[x+1]*b, s2 = S[x+2]*b, s3 = S[x+3]*b;\n- \n-- for( k = 1; k < 8; k++ )\n-+ for( int k = 1; k < 8; k++ )\n- {\n- b = beta[k]; S = src[k];\n- s0 += S[x]*b; s1 += S[x+1]*b;\n-diff --git a/modules/objdetect/src/haar.cpp b/modules/objdetect/src/haar.cpp\n-index 51843fa..bb37ee9 100644\n---- a/modules/objdetect/src/haar.cpp\n-+++ b/modules/objdetect/src/haar.cpp\n-@@ -824,10 +824,7 @@ cvRunHaarClassifierCascadeSum( const CvHaarClassifierCascade* _cascade,\n- CvPoint pt, double& stage_sum, int start_stage )\n- {\n- #ifdef CV_HAAR_USE_AVX\n-- bool haveAVX = false;\n-- if(cv::checkHardwareSupport(CV_CPU_AVX))\n-- if(__xgetbv()&0x6)// Check if the OS will save the YMM registers\n-- haveAVX = true;\n-+ bool haveAVX = cv::checkHardwareSupport(CV_CPU_AVX);\n- #else\n- # ifdef CV_HAAR_USE_SSE\n- bool haveSSE2 = cv::checkHardwareSupport(CV_CPU_SSE2);\n--- \n-2.7.4\n-\ndiff --git a/package/opencv3/opencv3.hash b/package/opencv3/opencv3.hash\nindex 6720028..6f8fcd8 100644\n--- a/package/opencv3/opencv3.hash\n+++ b/package/opencv3/opencv3.hash\n@@ -1,2 +1,2 @@\n # Locally calculated\n-sha256 b9d62dfffb8130d59d587627703d5f3e6252dce4a94c1955784998da7a39dd35 opencv3-3.2.0.tar.gz\n+sha256 8bb312b9d9fd17336dc1f8b3ac82f021ca50e2034afc866098866176d985adc6 opencv3-3.3.0.tar.gz\ndiff --git a/package/opencv3/opencv3.mk b/package/opencv3/opencv3.mk\nindex 6df5705..57363d4 100644\n--- a/package/opencv3/opencv3.mk\n+++ b/package/opencv3/opencv3.mk\n@@ -4,12 +4,14 @@\n #\n ################################################################################\n \n-OPENCV3_VERSION = 3.2.0\n+OPENCV3_VERSION = 3.3.0\n OPENCV3_SITE = $(call github,opencv,opencv,$(OPENCV3_VERSION))\n OPENCV3_INSTALL_STAGING = YES\n OPENCV3_LICENSE = BSD-3-Clause\n OPENCV3_LICENSE_FILES = LICENSE\n \n+OPENCV3_SUPPORTS_IN_SOURCE_BUILD = NO\n+\n # Uses __atomic_fetch_add_4\n ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\n OPENCV3_CONF_OPTS += -DCMAKE_CXX_FLAGS=\"$(TARGET_CXXFLAGS) -latomic\"\n", "prefixes": [ "155/155" ] }