{"id":816378,"url":"http://patchwork.ozlabs.org/api/patches/816378/?format=json","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=json","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=json","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=json","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"]}